Merge tag 'v3.10.55' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / include / mach / mt_mon.h
1 #ifndef __MT_MON_H__
2 #define __MT_MON_H__
3
4 #include "mach/pmu_v7.h"
5 #include <linux/threads.h>
6
7 struct 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 };
59 typedef 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
69 extern void set_mt65xx_mon_period(long time_ns);
70 extern long get_mt65xx_mon_period(void);
71 extern void set_mt65xx_mon_manual_start(unsigned int bStart);
72 extern unsigned int get_mt65xx_mon_manual_start(void);
73 extern void set_mt65xx_mon_mode(MonitorMode mode);
74 extern MonitorMode get_mt65xx_mon_mode(void);
75
76 struct l2c_cfg{
77 u32 l2c_evt[2];
78 };
79
80
81 struct 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
95 int register_monitor(struct mtk_monitor **mtk_mon, MonitorMode mode);
96 void unregister_monitor(struct mtk_monitor **mtk_mon);
97
98 #endif /* !__MT65XX_MON_H__ */