Commit | Line | Data |
---|---|---|
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 | ||
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__ */ |