Merge tag 'v3.10.55' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / include / mach / mt_mon.h
CommitLineData
6fa3eb70
S
1#ifndef __MT_MON_H__
2#define __MT_MON_H__
3
4#include "mach/pmu_v7.h"
5#include <linux/threads.h>
6
7struct mt_mon_log
8{
9
10 __u32 cpu_cyc[NR_CPUS];
11 __u32 cpu_cnt0[NR_CPUS];
12 __u32 cpu_cnt1[NR_CPUS];
13 __u32 cpu_cnt2[NR_CPUS];
14 __u32 cpu_cnt3[NR_CPUS];
15
16 __u32 BM_BCNT;
17 __u32 BM_TACT;
18 __u32 BM_TSCT;
19 __u32 BM_WACT;
20 __u32 BM_WSCT;
21 __u32 BM_BACT;
22 __u32 BM_BSCT;
23 __u32 BM_TSCT2;
24 __u32 BM_WSCT2;
25 __u32 BM_TSCT3;
26 __u32 BM_WSCT3;
27 __u32 BM_WSCT4;
28 __u32 BM_TTYPE1;
29 __u32 BM_TTYPE2;
30 __u32 BM_TTYPE3;
31 __u32 BM_TTYPE4;
32 __u32 BM_TTYPE5;
33#if 0
34 __u32 BM_TTYPE6;
35 __u32 BM_TTYPE7;
36#endif
37 __u32 BM_TTYPE9;
38 __u32 BM_TTYPE10;
39 __u32 BM_TTYPE11;
40 __u32 BM_TTYPE12;
41 __u32 BM_TTYPE13;
42#if 0
43 __u32 BM_TTYPE14;
44 __u32 BM_TTYPE15;
45#endif
46
47 /* 6582 doesn't have MCI */
48#if 0
49 __u32 MCI_CNT0;
50 __u32 MCI_CNT1;
51#endif
52 __u32 BM_TPCT1;
53
54 __u32 DRAMC_PageHit;
55 __u32 DRAMC_PageMiss;
56 __u32 DRAMC_Interbank;
57 __u32 DRAMC_Idle;
58};
59typedef enum
60{
61 MODE_MANUAL_USER,
62 MODE_MANUAL_KERNEL,
63 MODE_SCHED_SWITCH,
64 MODE_PERIODIC,
65 MODE_MANUAL_TRACER,
66 MODE_FREE
67} MonitorMode;
68
69extern void set_mt65xx_mon_period(long time_ns);
70extern long get_mt65xx_mon_period(void);
71extern void set_mt65xx_mon_manual_start(unsigned int bStart);
72extern unsigned int get_mt65xx_mon_manual_start(void);
73extern void set_mt65xx_mon_mode(MonitorMode mode);
74extern MonitorMode get_mt65xx_mon_mode(void);
75
76struct l2c_cfg{
77 u32 l2c_evt[2];
78};
79
80
81struct mtk_monitor {
82 int (*init)(void);
83 int (*deinit)(void);
84 int (*enable)(void);
85 int (*disable)(void);
86 unsigned int (*mon_log)(void *);
87 void (*set_pmu)(struct pmu_cfg *p_cfg);
88 void (*get_pmu)(struct pmu_cfg *p_cfg);
89 void (*set_l2c)(struct l2c_cfg *l_cfg);
90 void (*get_l2c)(struct l2c_cfg *l_cfg);
91 void (*set_bm_rw)(int type);
92 struct mt_mon_log *log_buff;
93};
94
95int register_monitor(struct mtk_monitor **mtk_mon, MonitorMode mode);
96void unregister_monitor(struct mtk_monitor **mtk_mon);
97
98#endif /* !__MT65XX_MON_H__ */