12 #include "hpm_soc_ip_feature.h"
13 #include "hpm_lobs_regs.h"
22 #define LOBS_UNLOCK_KEY 0xc5acce55u
24 #define LOBS_PIN_DO(x) (x * 3)
25 #define LOBS_PIN_OE(x) (x * 3 + 1)
26 #define LOBS_PIN_DI(x) (x * 3 + 2)
63 #if defined(HPM_IP_FEATURE_LOBS_SAMPLE_RATE_EXT) && HPM_IP_FEATURE_LOBS_SAMPLE_RATE_EXT
64 lobs_sample_1_per_10 = 9,
65 lobs_sample_1_per_50 = 49,
66 lobs_sample_1_per_100 = 99,
67 lobs_sample_1_per_500 = 499,
68 lobs_sample_1_per_1000 = 999,
139 #if defined(HPM_IP_FEATURE_LOBS_IRQ_CTRL) && (HPM_IP_FEATURE_LOBS_IRQ_CTRL)
145 lobs_irq_final_mask = LOBS_IRQ_EN_FINAL_EN_MASK,
146 lobs_irq_full_mask = LOBS_IRQ_EN_FULL_EN_MASK,
150 #if defined(HPM_IP_FEATURE_LOBS_COMP_LOGIC) && (HPM_IP_FEATURE_LOBS_COMP_LOGIC)
156 lobs_cmp_logic_and = 0,
161 #if defined(HPM_IP_FEATURE_LOBS_TRIG_ADDR) && (HPM_IP_FEATURE_LOBS_TRIG_ADDR)
167 lobs_trig_addr_idx_1 = 0,
168 lobs_trig_addr_idx_2,
169 lobs_trig_addr_idx_3,
170 lobs_trig_addr_idx_4,
171 } lobs_trig_addr_idx_t;
192 uint8_t sample_sig_bit[4];
193 bool sample_sig_en[4];
206 uint8_t cmp_sig_bit[4];
208 bool cmp_golden_value[4];
209 #if defined(HPM_IP_FEATURE_LOBS_COMP_LOGIC) && (HPM_IP_FEATURE_LOBS_COMP_LOGIC)
210 lobs_cmp_logic_t cmp_logic;
224 uint32_t u32_data[3];
410 #if defined(HPM_IP_FEATURE_LOBS_IRQ_CTRL) && (HPM_IP_FEATURE_LOBS_IRQ_CTRL)
417 static inline void lobs_set_irq_enable(
LOBS_Type *lobs, uint32_t mask)
419 lobs->IRQ_EN |= mask;
428 static inline void lobs_set_irq_disable(
LOBS_Type *lobs, uint32_t mask)
430 lobs->IRQ_EN &= ~mask;
439 static inline uint32_t lobs_get_irq_enable_status(
LOBS_Type *lobs)
450 static inline uint32_t lobs_get_irq_status(
LOBS_Type *lobs)
452 return lobs->IRQ_STS;
461 static inline void lobs_clear_irq_flag(
LOBS_Type *lobs, uint32_t mask)
463 lobs->IRQ_STS = mask;
511 #if defined(HPM_IP_FEATURE_LOBS_TRIG_ADDR) && (HPM_IP_FEATURE_LOBS_TRIG_ADDR)
519 uint32_t lobs_get_trig_address(
LOBS_Type *lobs, lobs_trig_addr_idx_t idx);
#define LOBS_STREAMCTRL_FULL_CLEAR_MASK
Definition: hpm_lobs_regs.h:91
#define LOBS_CTRL_RUN_MASK
Definition: hpm_lobs_regs.h:68
#define LOBS_CTSR_FINALSTATE_GET(x)
Definition: hpm_lobs_regs.h:165
#define LOBS_PTACTION_TRACE_MASK
Definition: hpm_lobs_regs.h:128
#define LOBS_STATE_ACTION_TRACE_MASK
Definition: hpm_lobs_regs.h:467
#define LOBS_STATE_ACTION_TRACE_SET(x)
Definition: hpm_lobs_regs.h:469
#define LOBS_CTRL_RUN_SET(x)
Definition: hpm_lobs_regs.h:70
#define LOBS_PTACTION_TRACE_SET(x)
Definition: hpm_lobs_regs.h:130
lobs_next_state_t
next state
Definition: hpm_lobs_drv.h:130
lobs_burst_t
burst selection
Definition: hpm_lobs_drv.h:76
void lobs_deinit(LOBS_Type *lobs)
lobs deinit
Definition: hpm_lobs_drv.c:11
lobs_state_sel_t
state selection
Definition: hpm_lobs_drv.h:95
static bool lobs_is_trace_finish(LOBS_Type *lobs)
check lobs trace finish
Definition: hpm_lobs_drv.h:405
static void lobs_set_enable(LOBS_Type *lobs, bool enable)
set lobs enable or disable
Definition: hpm_lobs_drv.h:358
static void lobs_set_pre_trig_enable(LOBS_Type *lobs, bool enable)
set lobs pre-trig enable or disable
Definition: hpm_lobs_drv.h:369
lobs_cmp_mode_t
compare mode
Definition: hpm_lobs_drv.h:107
lobs_two_group_sel_t
two group selection
Definition: hpm_lobs_drv.h:86
void lobs_two_group_mode_config(LOBS_Type *lobs, lobs_two_group_sel_t group, lobs_two_group_mode_config_t *config)
lobs two group mode config
Definition: hpm_lobs_drv.c:46
void lobs_state_config(LOBS_Type *lobs, lobs_state_sel_t state, lobs_state_config_t *config)
lobs state config
Definition: hpm_lobs_drv.c:69
static void lobs_set_state_enable(LOBS_Type *lobs, lobs_state_sel_t state, bool enable)
set lobs state enable or disable
Definition: hpm_lobs_drv.h:381
lobs_sample_rate_t
sample rate selection
Definition: hpm_lobs_drv.h:59
lobs_signal_group_t
signal group number
Definition: hpm_lobs_drv.h:32
lobs_state_chg_condition_t
compare condition
Definition: hpm_lobs_drv.h:116
lobs_group_mode_t
group mode selection
Definition: hpm_lobs_drv.h:50
void lobs_ctrl_config(LOBS_Type *lobs, lobs_ctrl_config_t *config)
lobs control config
Definition: hpm_lobs_drv.c:22
static uint32_t lobs_get_final_address(LOBS_Type *lobs)
get lobs final address
Definition: hpm_lobs_drv.h:393
static void lobs_clear_fifo_overflow_flag(LOBS_Type *lobs)
clear lobs fifo overflow flag
Definition: hpm_lobs_drv.h:472
#define LOBS_UNLOCK_KEY
Definition: hpm_lobs_drv.h:22
static void lobs_unlock(LOBS_Type *lobs)
set lobs unlock
Definition: hpm_lobs_drv.h:337
static void lobs_lock(LOBS_Type *lobs)
set lobs lock
Definition: hpm_lobs_drv.h:347
@ lobs_next_state_finish
Definition: hpm_lobs_drv.h:131
@ lobs_next_state_4
Definition: hpm_lobs_drv.h:136
@ lobs_next_state_0
Definition: hpm_lobs_drv.h:132
@ lobs_next_state_1
Definition: hpm_lobs_drv.h:133
@ lobs_next_state_2
Definition: hpm_lobs_drv.h:134
@ lobs_next_state_3
Definition: hpm_lobs_drv.h:135
@ lobs_burst_8
Definition: hpm_lobs_drv.h:78
@ lobs_burst_4
Definition: hpm_lobs_drv.h:77
@ lobs_burst_16
Definition: hpm_lobs_drv.h:79
@ lobs_state_2
Definition: hpm_lobs_drv.h:98
@ lobs_state_3
Definition: hpm_lobs_drv.h:99
@ lobs_state_0
Definition: hpm_lobs_drv.h:96
@ lobs_state_4
Definition: hpm_lobs_drv.h:100
@ lobs_state_1
Definition: hpm_lobs_drv.h:97
@ lobs_sig_cmp_mode
Definition: hpm_lobs_drv.h:108
@ lobs_cnt_cmp_mode
Definition: hpm_lobs_drv.h:109
@ lobs_two_group_1
Definition: hpm_lobs_drv.h:87
@ lobs_two_group_2
Definition: hpm_lobs_drv.h:88
@ lobs_sample_1_per_6
Definition: hpm_lobs_drv.h:61
@ lobs_sample_1_per_5
Definition: hpm_lobs_drv.h:60
@ lobs_sample_1_per_7
Definition: hpm_lobs_drv.h:62
@ lobs_signal_group_PV
Definition: hpm_lobs_drv.h:39
@ lobs_signal_group_PW
Definition: hpm_lobs_drv.h:40
@ lobs_signal_group_PD
Definition: hpm_lobs_drv.h:36
@ lobs_signal_group_PZ
Definition: hpm_lobs_drv.h:43
@ lobs_signal_group_PY
Definition: hpm_lobs_drv.h:42
@ lobs_signal_group_PA
Definition: hpm_lobs_drv.h:33
@ lobs_signal_group_PB
Definition: hpm_lobs_drv.h:34
@ lobs_signal_group_PX
Definition: hpm_lobs_drv.h:41
@ lobs_signal_group_PF
Definition: hpm_lobs_drv.h:38
@ lobs_signal_group_PC
Definition: hpm_lobs_drv.h:35
@ lobs_signal_group_PE
Definition: hpm_lobs_drv.h:37
@ lobs_sig_greater_equal_golden
Definition: hpm_lobs_drv.h:120
@ lobs_sig_less_golden
Definition: hpm_lobs_drv.h:122
@ lobs_sig_not_equal_golden
Definition: hpm_lobs_drv.h:121
@ lobs_sig_equal_golden
Definition: hpm_lobs_drv.h:118
@ lobs_sig_greater_golden
Definition: hpm_lobs_drv.h:119
@ lobs_sig_less_equal_golden
Definition: hpm_lobs_drv.h:123
@ lobs_cnt_matched
Definition: hpm_lobs_drv.h:117
@ lobs_one_group_96_bits
Definition: hpm_lobs_drv.h:51
@ lobs_two_group_8_bits
Definition: hpm_lobs_drv.h:52
Definition: hpm_lobs_regs.h:12
__RW uint32_t LAR
Definition: hpm_lobs_regs.h:56
__RW uint32_t FINALADDR
Definition: hpm_lobs_regs.h:25
__R uint32_t CTSR
Definition: hpm_lobs_regs.h:20
__RW uint32_t PTACTION
Definition: hpm_lobs_regs.h:16
struct LOBS_Type::@674 STATE[5]
__RW uint32_t CTRL
Definition: hpm_lobs_regs.h:13
__RW uint32_t ACTION
Definition: hpm_lobs_regs.h:39
__RW uint32_t STREAMCTRL
Definition: hpm_lobs_regs.h:15
ctrl config structure
Definition: hpm_lobs_drv.h:178
uint32_t start_addr
Definition: hpm_lobs_drv.h:181
lobs_sample_rate_t sample_rate
Definition: hpm_lobs_drv.h:180
uint32_t end_addr
Definition: hpm_lobs_drv.h:182
lobs_group_mode_t group_mode
Definition: hpm_lobs_drv.h:179
two group mode config structure
Definition: hpm_lobs_drv.h:200
lobs_state_chg_condition_t state_chg_condition
Definition: hpm_lobs_drv.h:203
uint32_t cmp_counter
Definition: hpm_lobs_drv.h:205
lobs_cmp_mode_t cmp_mode
Definition: hpm_lobs_drv.h:202
lobs_next_state_t next_state
Definition: hpm_lobs_drv.h:204
lobs_signal_group_t sig_group_num
Definition: hpm_lobs_drv.h:201
trace data structure
Definition: hpm_lobs_drv.h:218
uint32_t pin14_oe
Definition: hpm_lobs_drv.h:270
uint32_t pin00_oe
Definition: hpm_lobs_drv.h:227
uint32_t pin18_oe
Definition: hpm_lobs_drv.h:282
uint32_t pin08_do
Definition: hpm_lobs_drv.h:250
uint32_t pin09_oe
Definition: hpm_lobs_drv.h:254
uint32_t pin28_oe
Definition: hpm_lobs_drv.h:313
uint32_t pin19_oe
Definition: hpm_lobs_drv.h:285
uint32_t pin13_di
Definition: hpm_lobs_drv.h:268
uint32_t pin28_di
Definition: hpm_lobs_drv.h:314
uint32_t pin31_di
Definition: hpm_lobs_drv.h:323
uint32_t pin16_do
Definition: hpm_lobs_drv.h:275
uint32_t pin13_oe
Definition: hpm_lobs_drv.h:267
uint32_t pin08_di
Definition: hpm_lobs_drv.h:252
uint32_t pin02_do
Definition: hpm_lobs_drv.h:232
uint32_t pin29_oe
Definition: hpm_lobs_drv.h:316
uint32_t pin24_do
Definition: hpm_lobs_drv.h:300
uint32_t pin25_di
Definition: hpm_lobs_drv.h:305
uint32_t pin05_oe
Definition: hpm_lobs_drv.h:242
uint32_t pin10_do
Definition: hpm_lobs_drv.h:256
uint32_t pin17_do
Definition: hpm_lobs_drv.h:278
uint32_t pin20_oe
Definition: hpm_lobs_drv.h:288
uint32_t pin16_oe
Definition: hpm_lobs_drv.h:276
uint32_t pin19_di
Definition: hpm_lobs_drv.h:286
uint32_t pin04_oe
Definition: hpm_lobs_drv.h:239
uint32_t pin26_di
Definition: hpm_lobs_drv.h:308
uint32_t pin16_di
Definition: hpm_lobs_drv.h:277
uint32_t pin30_di
Definition: hpm_lobs_drv.h:320
uint32_t pin12_oe
Definition: hpm_lobs_drv.h:264
uint32_t pin22_di
Definition: hpm_lobs_drv.h:296
uint32_t pin24_oe
Definition: hpm_lobs_drv.h:301
uint32_t pin25_do
Definition: hpm_lobs_drv.h:303
uint32_t pin21_do
Definition: hpm_lobs_drv.h:290
uint32_t pin31_do
Definition: hpm_lobs_drv.h:321
uint32_t pin21_oe
Definition: hpm_lobs_drv.h:292
uint32_t pin19_do
Definition: hpm_lobs_drv.h:284
uint32_t pin28_do
Definition: hpm_lobs_drv.h:312
uint32_t pin26_oe
Definition: hpm_lobs_drv.h:307
uint32_t pin06_do
Definition: hpm_lobs_drv.h:244
uint32_t pin17_oe
Definition: hpm_lobs_drv.h:279
uint32_t pin06_di
Definition: hpm_lobs_drv.h:246
uint32_t pin27_di
Definition: hpm_lobs_drv.h:311
uint32_t pin22_oe
Definition: hpm_lobs_drv.h:295
uint8_t cnt_H
Definition: hpm_lobs_drv.h:222
uint32_t pin10_di
Definition: hpm_lobs_drv.h:259
uint32_t pin25_oe
Definition: hpm_lobs_drv.h:304
uint32_t pin29_di
Definition: hpm_lobs_drv.h:317
uint32_t pin23_oe
Definition: hpm_lobs_drv.h:298
uint32_t pin23_do
Definition: hpm_lobs_drv.h:297
uint32_t pin05_do
Definition: hpm_lobs_drv.h:241
uint32_t pin18_do
Definition: hpm_lobs_drv.h:281
uint8_t header
Definition: hpm_lobs_drv.h:219
uint32_t pin07_di
Definition: hpm_lobs_drv.h:249
uint32_t pin24_di
Definition: hpm_lobs_drv.h:302
uint32_t pin26_do
Definition: hpm_lobs_drv.h:306
uint32_t pin03_oe
Definition: hpm_lobs_drv.h:236
uint32_t pin11_di
Definition: hpm_lobs_drv.h:262
uint32_t pin05_di
Definition: hpm_lobs_drv.h:243
uint32_t pin11_oe
Definition: hpm_lobs_drv.h:261
uint32_t pin01_oe
Definition: hpm_lobs_drv.h:230
uint32_t pin08_oe
Definition: hpm_lobs_drv.h:251
uint32_t pin31_oe
Definition: hpm_lobs_drv.h:322
uint32_t pin01_do
Definition: hpm_lobs_drv.h:229
uint32_t pin22_do
Definition: hpm_lobs_drv.h:294
uint32_t pin07_oe
Definition: hpm_lobs_drv.h:248
uint32_t pin00_do
Definition: hpm_lobs_drv.h:226
uint32_t pin11_do
Definition: hpm_lobs_drv.h:260
uint32_t pin15_oe
Definition: hpm_lobs_drv.h:273
uint32_t pin09_di
Definition: hpm_lobs_drv.h:255
uint32_t pin07_do
Definition: hpm_lobs_drv.h:247
uint32_t pin27_do
Definition: hpm_lobs_drv.h:309
uint32_t pin23_di
Definition: hpm_lobs_drv.h:299
uint32_t pin18_di
Definition: hpm_lobs_drv.h:283
uint32_t pin12_di
Definition: hpm_lobs_drv.h:265
uint32_t pin17_di
Definition: hpm_lobs_drv.h:280
uint32_t pin03_do
Definition: hpm_lobs_drv.h:235
uint32_t pin06_oe
Definition: hpm_lobs_drv.h:245
uint32_t pin20_do
Definition: hpm_lobs_drv.h:287
uint32_t pin14_di
Definition: hpm_lobs_drv.h:271
uint32_t pin10_oe
Definition: hpm_lobs_drv.h:257
uint32_t pin27_oe
Definition: hpm_lobs_drv.h:310
uint32_t pin01_di
Definition: hpm_lobs_drv.h:231
uint32_t pin15_di
Definition: hpm_lobs_drv.h:274
uint32_t pin21_di
Definition: hpm_lobs_drv.h:293
uint8_t cnt_L
Definition: hpm_lobs_drv.h:220
uint32_t pin04_do
Definition: hpm_lobs_drv.h:238
uint32_t pin15_do
Definition: hpm_lobs_drv.h:272
uint32_t pin00_di
Definition: hpm_lobs_drv.h:228
uint32_t pin30_oe
Definition: hpm_lobs_drv.h:319
uint32_t pin29_do
Definition: hpm_lobs_drv.h:315
uint32_t pin09_do
Definition: hpm_lobs_drv.h:253
uint32_t pin04_di
Definition: hpm_lobs_drv.h:240
uint32_t pin02_di
Definition: hpm_lobs_drv.h:234
uint32_t pin13_do
Definition: hpm_lobs_drv.h:266
uint32_t pin03_di
Definition: hpm_lobs_drv.h:237
uint8_t cnt_M
Definition: hpm_lobs_drv.h:221
uint32_t pin20_di
Definition: hpm_lobs_drv.h:289
uint32_t pin12_do
Definition: hpm_lobs_drv.h:263
uint32_t pin30_do
Definition: hpm_lobs_drv.h:318
uint32_t pin14_do
Definition: hpm_lobs_drv.h:269
uint32_t pin02_oe
Definition: hpm_lobs_drv.h:233
two group mode config structure
Definition: hpm_lobs_drv.h:189
bool group_enable
Definition: hpm_lobs_drv.h:190
lobs_signal_group_t sig_group_num
Definition: hpm_lobs_drv.h:191