1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Intel SOC Telemetry Driver Header File
4 * Copyright (C) 2015, Intel Corporation.
7 #ifndef INTEL_TELEMETRY_H
8 #define INTEL_TELEMETRY_H
10 #define TELEM_MAX_EVENTS_SRAM 28
11 #define TELEM_MAX_OS_ALLOCATED_EVENTS 20
19 struct telemetry_evtlog
{
24 struct telemetry_evtconfig
{
25 /* Array of Event-IDs to Enable */
28 /* Number of Events (<29) in evtmap */
35 struct telemetry_evtmap
{
40 struct telemetry_unit_config
{
41 struct telemetry_evtmap
*telem_evts
;
52 struct telemetry_plt_config
{
53 struct telemetry_unit_config pss_config
;
54 struct telemetry_unit_config ioss_config
;
55 struct mutex telem_trace_lock
;
56 struct mutex telem_lock
;
60 struct telemetry_core_ops
{
61 int (*get_sampling_period
)(u8
*pss_min_period
, u8
*pss_max_period
,
62 u8
*ioss_min_period
, u8
*ioss_max_period
);
64 int (*get_eventconfig
)(struct telemetry_evtconfig
*pss_evtconfig
,
65 struct telemetry_evtconfig
*ioss_evtconfig
,
66 int pss_len
, int ioss_len
);
68 int (*update_events
)(struct telemetry_evtconfig pss_evtconfig
,
69 struct telemetry_evtconfig ioss_evtconfig
);
71 int (*set_sampling_period
)(u8 pss_period
, u8 ioss_period
);
73 int (*get_trace_verbosity
)(enum telemetry_unit telem_unit
,
76 int (*set_trace_verbosity
)(enum telemetry_unit telem_unit
,
79 int (*raw_read_eventlog
)(enum telemetry_unit telem_unit
,
80 struct telemetry_evtlog
*evtlog
,
81 int len
, int log_all_evts
);
83 int (*read_eventlog
)(enum telemetry_unit telem_unit
,
84 struct telemetry_evtlog
*evtlog
,
85 int len
, int log_all_evts
);
87 int (*add_events
)(u8 num_pss_evts
, u8 num_ioss_evts
,
88 u32
*pss_evtmap
, u32
*ioss_evtmap
);
90 int (*reset_events
)(void);
93 int telemetry_set_pltdata(const struct telemetry_core_ops
*ops
,
94 struct telemetry_plt_config
*pltconfig
);
96 int telemetry_clear_pltdata(void);
98 int telemetry_pltconfig_valid(void);
100 int telemetry_get_evtname(enum telemetry_unit telem_unit
,
101 const char **name
, int len
);
103 int telemetry_update_events(struct telemetry_evtconfig pss_evtconfig
,
104 struct telemetry_evtconfig ioss_evtconfig
);
106 int telemetry_add_events(u8 num_pss_evts
, u8 num_ioss_evts
,
107 u32
*pss_evtmap
, u32
*ioss_evtmap
);
109 int telemetry_reset_events(void);
111 int telemetry_get_eventconfig(struct telemetry_evtconfig
*pss_config
,
112 struct telemetry_evtconfig
*ioss_config
,
113 int pss_len
, int ioss_len
);
115 int telemetry_read_events(enum telemetry_unit telem_unit
,
116 struct telemetry_evtlog
*evtlog
, int len
);
118 int telemetry_raw_read_events(enum telemetry_unit telem_unit
,
119 struct telemetry_evtlog
*evtlog
, int len
);
121 int telemetry_read_eventlog(enum telemetry_unit telem_unit
,
122 struct telemetry_evtlog
*evtlog
, int len
);
124 int telemetry_raw_read_eventlog(enum telemetry_unit telem_unit
,
125 struct telemetry_evtlog
*evtlog
, int len
);
127 int telemetry_get_sampling_period(u8
*pss_min_period
, u8
*pss_max_period
,
128 u8
*ioss_min_period
, u8
*ioss_max_period
);
130 int telemetry_set_sampling_period(u8 pss_period
, u8 ioss_period
);
132 int telemetry_set_trace_verbosity(enum telemetry_unit telem_unit
,
135 int telemetry_get_trace_verbosity(enum telemetry_unit telem_unit
,
138 #endif /* INTEL_TELEMETRY_H */