1 /* 2 * Copyright (c) 2021-2024 HPMicro 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 9 #ifndef HPM_CLC_H 10 #define HPM_CLC_H 11 12 typedef struct { 13 struct { 14 __RW uint32_t MODE; /* 0x0: mode ctrl */ 15 __RW uint32_t ADC_EXPECT; /* 0x4: adc expect */ 16 __RW uint32_t ADC_CHAN; /* 0x8: adc used channel */ 17 __RW uint32_t ADC_OFFSET; /* 0xC: adc used offset */ 18 __RW uint32_t EADC_LOWTH; /* 0x10: eadc_lowth value used in error adc cofficient selection */ 19 __RW uint32_t EADC_HIGHTH; /* 0x14: eadc_highth value used in error adc cofficient selection */ 20 __RW uint32_t EADC_MIDLOWTH; /* 0x18: eadc_midlowth value used in error adc cofficient selection */ 21 __RW uint32_t EADC_MIDHIGHTH; /* 0x1C: eadc_midhighth value used in error adc cofficient selection */ 22 __RW uint32_t P2Z2_CLAMP_LO; /* 0x20: 2p2z output clamp low threshold */ 23 __RW uint32_t P2Z2_CLAMP_HI; /* 0x24: 2p2z output clamp high threshold */ 24 __RW uint32_t P3Z3_CLAMP_LO; /* 0x28: 3p3z output clamp low threshold */ 25 __RW uint32_t P3Z3_CLAMP_HI; /* 0x2C: 3p3z output clamp high threshold */ 26 __R uint8_t RESERVED0[16]; /* 0x30 - 0x3F: Reserved */ 27 struct { 28 __RW uint32_t COEFF_B0; /* 0x40: zone b0 */ 29 __RW uint32_t COEFF_B1; /* 0x44: zone b1 */ 30 __RW uint32_t COEFF_B2; /* 0x48: zone b2 */ 31 __RW uint32_t COEFF_B3; /* 0x4C: zone b3 */ 32 __RW uint32_t COEFF_A0; /* 0x50: zone a0 */ 33 __RW uint32_t COEFF_A1; /* 0x54: zone a1 */ 34 __RW uint32_t COEFF_A2; /* 0x58: zone a2 */ 35 __RW uint32_t COEFF_KS; /* 0x5C: zone kscaling */ 36 } COEFF[3]; 37 __RW uint32_t PWM_PERIOD; /* 0xA0: pwm_period */ 38 __R uint32_t OUTPUT_VALUE; /* 0xA4: output value */ 39 __R uint32_t TIMESTAMP; /* 0xA8: adc timestamp used */ 40 __RW uint32_t EADC_CURR; /* 0xAC: error adc latest value */ 41 __RW uint32_t EADC_PRE0; /* 0xB0: error adc previous0 value */ 42 __RW uint32_t EADC_PRE1; /* 0xB4: error adc previous1 value */ 43 __RW uint32_t P2Z2_CURR; /* 0xB8: 2p2z latest value */ 44 __RW uint32_t P2Z2_PRE0; /* 0xBC: 2p2z previous0 value */ 45 __R uint8_t RESERVED1[4]; /* 0xC0 - 0xC3: Reserved */ 46 __RW uint32_t P3Z3_CURR; /* 0xC4: 3p3z latest value */ 47 __R uint8_t RESERVED2[4]; /* 0xC8 - 0xCB: Reserved */ 48 __RW uint32_t P3Z3_FORBID_LO; /* 0xCC: 3p3z output forbid low threshold */ 49 __RW uint32_t P3Z3_FORBID_MD; /* 0xD0: 3p3z output forbid middle threshold */ 50 __RW uint32_t P3Z3_FORBID_HI; /* 0xD4: 3p3z output forbid high threshold */ 51 __R uint8_t RESERVED3[8]; /* 0xD8 - 0xDF: Reserved */ 52 __RW uint32_t ADC_SW; /* 0xE0: adc software inject value */ 53 __R uint8_t RESERVED4[24]; /* 0xE4 - 0xFB: Reserved */ 54 __W uint32_t STATUS; /* 0xFC: irq_status */ 55 } VDVQ_CHAN[2]; 56 __W uint32_t DQ_ADC_SW_READY; /* 0x200: enable d/q chan software inject adc value */ 57 } CLC_Type; 58 59 60 /* Bitfield definition for register of struct array VDVQ_CHAN: MODE */ 61 /* 62 * ENABLE_CLC (RW) 63 * 64 * enable CLC 65 */ 66 #define CLC_VDVQ_CHAN_MODE_ENABLE_CLC_MASK (0x80000000UL) 67 #define CLC_VDVQ_CHAN_MODE_ENABLE_CLC_SHIFT (31U) 68 #define CLC_VDVQ_CHAN_MODE_ENABLE_CLC_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_MODE_ENABLE_CLC_SHIFT) & CLC_VDVQ_CHAN_MODE_ENABLE_CLC_MASK) 69 #define CLC_VDVQ_CHAN_MODE_ENABLE_CLC_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_MODE_ENABLE_CLC_MASK) >> CLC_VDVQ_CHAN_MODE_ENABLE_CLC_SHIFT) 70 71 /* 72 * MASK_MODE (RW) 73 * 74 * open mode: CLC keep working even if bad irq status ocurred 75 */ 76 #define CLC_VDVQ_CHAN_MODE_MASK_MODE_MASK (0x1000000UL) 77 #define CLC_VDVQ_CHAN_MODE_MASK_MODE_SHIFT (24U) 78 #define CLC_VDVQ_CHAN_MODE_MASK_MODE_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_MODE_MASK_MODE_SHIFT) & CLC_VDVQ_CHAN_MODE_MASK_MODE_MASK) 79 #define CLC_VDVQ_CHAN_MODE_MASK_MODE_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_MODE_MASK_MODE_MASK) >> CLC_VDVQ_CHAN_MODE_MASK_MODE_SHIFT) 80 81 /* 82 * DQ_MODE (RW) 83 * 84 * dq mode 85 */ 86 #define CLC_VDVQ_CHAN_MODE_DQ_MODE_MASK (0x10000UL) 87 #define CLC_VDVQ_CHAN_MODE_DQ_MODE_SHIFT (16U) 88 #define CLC_VDVQ_CHAN_MODE_DQ_MODE_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_MODE_DQ_MODE_SHIFT) & CLC_VDVQ_CHAN_MODE_DQ_MODE_MASK) 89 #define CLC_VDVQ_CHAN_MODE_DQ_MODE_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_MODE_DQ_MODE_MASK) >> CLC_VDVQ_CHAN_MODE_DQ_MODE_SHIFT) 90 91 /* 92 * ENABLE_IRQ (RW) 93 * 94 * enable irq: 95 * irq_data_in_forbid , // 10 96 * irq_forb_err_boundary , // 9 97 * irq_p3z3_over_lo , // 8 98 * irq_p3z3_over_hi , // 7 99 * irq_p3z3_err_boundary , // 6 100 * irq_z2_over_sf , // 5 101 * irq_z2_over_lo , // 4 102 * irq_z2_over_hi , // 3 103 * irq_z2_err_boundary , // 2 104 * irq_coef_err_boundary , // 1 105 * irq_valid_clc // 0 106 */ 107 #define CLC_VDVQ_CHAN_MODE_ENABLE_IRQ_MASK (0x7FFU) 108 #define CLC_VDVQ_CHAN_MODE_ENABLE_IRQ_SHIFT (0U) 109 #define CLC_VDVQ_CHAN_MODE_ENABLE_IRQ_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_MODE_ENABLE_IRQ_SHIFT) & CLC_VDVQ_CHAN_MODE_ENABLE_IRQ_MASK) 110 #define CLC_VDVQ_CHAN_MODE_ENABLE_IRQ_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_MODE_ENABLE_IRQ_MASK) >> CLC_VDVQ_CHAN_MODE_ENABLE_IRQ_SHIFT) 111 112 /* Bitfield definition for register of struct array VDVQ_CHAN: ADC_EXPECT */ 113 /* 114 * ADC_EXPECT (RW) 115 * 116 * adc expect value 117 */ 118 #define CLC_VDVQ_CHAN_ADC_EXPECT_ADC_EXPECT_MASK (0xFFFFFFFFUL) 119 #define CLC_VDVQ_CHAN_ADC_EXPECT_ADC_EXPECT_SHIFT (0U) 120 #define CLC_VDVQ_CHAN_ADC_EXPECT_ADC_EXPECT_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_ADC_EXPECT_ADC_EXPECT_SHIFT) & CLC_VDVQ_CHAN_ADC_EXPECT_ADC_EXPECT_MASK) 121 #define CLC_VDVQ_CHAN_ADC_EXPECT_ADC_EXPECT_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_ADC_EXPECT_ADC_EXPECT_MASK) >> CLC_VDVQ_CHAN_ADC_EXPECT_ADC_EXPECT_SHIFT) 122 123 /* Bitfield definition for register of struct array VDVQ_CHAN: ADC_CHAN */ 124 /* 125 * ADC_CHAN (RW) 126 * 127 * adc used chan ID 128 */ 129 #define CLC_VDVQ_CHAN_ADC_CHAN_ADC_CHAN_MASK (0x1FU) 130 #define CLC_VDVQ_CHAN_ADC_CHAN_ADC_CHAN_SHIFT (0U) 131 #define CLC_VDVQ_CHAN_ADC_CHAN_ADC_CHAN_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_ADC_CHAN_ADC_CHAN_SHIFT) & CLC_VDVQ_CHAN_ADC_CHAN_ADC_CHAN_MASK) 132 #define CLC_VDVQ_CHAN_ADC_CHAN_ADC_CHAN_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_ADC_CHAN_ADC_CHAN_MASK) >> CLC_VDVQ_CHAN_ADC_CHAN_ADC_CHAN_SHIFT) 133 134 /* Bitfield definition for register of struct array VDVQ_CHAN: ADC_OFFSET */ 135 /* 136 * ADC_OFFSET (RW) 137 * 138 * adc used offset 139 */ 140 #define CLC_VDVQ_CHAN_ADC_OFFSET_ADC_OFFSET_MASK (0xFFFFFFFFUL) 141 #define CLC_VDVQ_CHAN_ADC_OFFSET_ADC_OFFSET_SHIFT (0U) 142 #define CLC_VDVQ_CHAN_ADC_OFFSET_ADC_OFFSET_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_ADC_OFFSET_ADC_OFFSET_SHIFT) & CLC_VDVQ_CHAN_ADC_OFFSET_ADC_OFFSET_MASK) 143 #define CLC_VDVQ_CHAN_ADC_OFFSET_ADC_OFFSET_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_ADC_OFFSET_ADC_OFFSET_MASK) >> CLC_VDVQ_CHAN_ADC_OFFSET_ADC_OFFSET_SHIFT) 144 145 /* Bitfield definition for register of struct array VDVQ_CHAN: EADC_LOWTH */ 146 /* 147 * EADC_LOWTH (RW) 148 * 149 * if error adc not bigger than eadc_lowth or not less than eadc_highth, use zone 2 cofficient;if not less than midlowth and not bigger than midhighth, use zone 0 cofficient;otherwire, use zone 1 cofficient 150 */ 151 #define CLC_VDVQ_CHAN_EADC_LOWTH_EADC_LOWTH_MASK (0xFFFFFFFFUL) 152 #define CLC_VDVQ_CHAN_EADC_LOWTH_EADC_LOWTH_SHIFT (0U) 153 #define CLC_VDVQ_CHAN_EADC_LOWTH_EADC_LOWTH_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_EADC_LOWTH_EADC_LOWTH_SHIFT) & CLC_VDVQ_CHAN_EADC_LOWTH_EADC_LOWTH_MASK) 154 #define CLC_VDVQ_CHAN_EADC_LOWTH_EADC_LOWTH_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_EADC_LOWTH_EADC_LOWTH_MASK) >> CLC_VDVQ_CHAN_EADC_LOWTH_EADC_LOWTH_SHIFT) 155 156 /* Bitfield definition for register of struct array VDVQ_CHAN: EADC_HIGHTH */ 157 /* 158 * EADC_HIGHTH (RW) 159 * 160 * if error adc not bigger than eadc_lowth or not less than eadc_highth, use zone 2 cofficient;if not less than midlowth and not bigger than midhighth, use zone 0 cofficient;otherwire, use zone 1 cofficient 161 */ 162 #define CLC_VDVQ_CHAN_EADC_HIGHTH_EADC_HIGHTH_MASK (0xFFFFFFFFUL) 163 #define CLC_VDVQ_CHAN_EADC_HIGHTH_EADC_HIGHTH_SHIFT (0U) 164 #define CLC_VDVQ_CHAN_EADC_HIGHTH_EADC_HIGHTH_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_EADC_HIGHTH_EADC_HIGHTH_SHIFT) & CLC_VDVQ_CHAN_EADC_HIGHTH_EADC_HIGHTH_MASK) 165 #define CLC_VDVQ_CHAN_EADC_HIGHTH_EADC_HIGHTH_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_EADC_HIGHTH_EADC_HIGHTH_MASK) >> CLC_VDVQ_CHAN_EADC_HIGHTH_EADC_HIGHTH_SHIFT) 166 167 /* Bitfield definition for register of struct array VDVQ_CHAN: EADC_MIDLOWTH */ 168 /* 169 * EADC_MIDLOWTH (RW) 170 * 171 * if error adc not bigger than eadc_lowth or not less than eadc_highth, use zone 2 cofficient;if not less than midlowth and not bigger than midhighth, use zone 0 cofficient;otherwire, use zone 1 cofficient 172 */ 173 #define CLC_VDVQ_CHAN_EADC_MIDLOWTH_EADC_MIDLOWTH_MASK (0xFFFFFFFFUL) 174 #define CLC_VDVQ_CHAN_EADC_MIDLOWTH_EADC_MIDLOWTH_SHIFT (0U) 175 #define CLC_VDVQ_CHAN_EADC_MIDLOWTH_EADC_MIDLOWTH_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_EADC_MIDLOWTH_EADC_MIDLOWTH_SHIFT) & CLC_VDVQ_CHAN_EADC_MIDLOWTH_EADC_MIDLOWTH_MASK) 176 #define CLC_VDVQ_CHAN_EADC_MIDLOWTH_EADC_MIDLOWTH_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_EADC_MIDLOWTH_EADC_MIDLOWTH_MASK) >> CLC_VDVQ_CHAN_EADC_MIDLOWTH_EADC_MIDLOWTH_SHIFT) 177 178 /* Bitfield definition for register of struct array VDVQ_CHAN: EADC_MIDHIGHTH */ 179 /* 180 * EADC_MIDHIGHTH (RW) 181 * 182 * if error adc not bigger than eadc_lowth or not less than eadc_highth, use zone 2 cofficient;if not less than midlowth and not bigger than midhighth, use zone 0 cofficient;otherwire, use zone 1 cofficient 183 */ 184 #define CLC_VDVQ_CHAN_EADC_MIDHIGHTH_EADC_MIDHIGHTH_MASK (0xFFFFFFFFUL) 185 #define CLC_VDVQ_CHAN_EADC_MIDHIGHTH_EADC_MIDHIGHTH_SHIFT (0U) 186 #define CLC_VDVQ_CHAN_EADC_MIDHIGHTH_EADC_MIDHIGHTH_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_EADC_MIDHIGHTH_EADC_MIDHIGHTH_SHIFT) & CLC_VDVQ_CHAN_EADC_MIDHIGHTH_EADC_MIDHIGHTH_MASK) 187 #define CLC_VDVQ_CHAN_EADC_MIDHIGHTH_EADC_MIDHIGHTH_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_EADC_MIDHIGHTH_EADC_MIDHIGHTH_MASK) >> CLC_VDVQ_CHAN_EADC_MIDHIGHTH_EADC_MIDHIGHTH_SHIFT) 188 189 /* Bitfield definition for register of struct array VDVQ_CHAN: P2Z2_CLAMP_LO */ 190 /* 191 * 2P2Z_CLAMP_LO (RW) 192 * 193 * 2p2z output clamp low threshold 194 */ 195 #define CLC_VDVQ_CHAN_P2Z2_CLAMP_LO_2P2Z_CLAMP_LO_MASK (0xFFFFFFFFUL) 196 #define CLC_VDVQ_CHAN_P2Z2_CLAMP_LO_2P2Z_CLAMP_LO_SHIFT (0U) 197 #define CLC_VDVQ_CHAN_P2Z2_CLAMP_LO_2P2Z_CLAMP_LO_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P2Z2_CLAMP_LO_2P2Z_CLAMP_LO_SHIFT) & CLC_VDVQ_CHAN_P2Z2_CLAMP_LO_2P2Z_CLAMP_LO_MASK) 198 #define CLC_VDVQ_CHAN_P2Z2_CLAMP_LO_2P2Z_CLAMP_LO_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P2Z2_CLAMP_LO_2P2Z_CLAMP_LO_MASK) >> CLC_VDVQ_CHAN_P2Z2_CLAMP_LO_2P2Z_CLAMP_LO_SHIFT) 199 200 /* Bitfield definition for register of struct array VDVQ_CHAN: P2Z2_CLAMP_HI */ 201 /* 202 * 2P2Z_CLAMP_HI (RW) 203 * 204 * 2p2z output clamp high threshold 205 */ 206 #define CLC_VDVQ_CHAN_P2Z2_CLAMP_HI_2P2Z_CLAMP_HI_MASK (0xFFFFFFFFUL) 207 #define CLC_VDVQ_CHAN_P2Z2_CLAMP_HI_2P2Z_CLAMP_HI_SHIFT (0U) 208 #define CLC_VDVQ_CHAN_P2Z2_CLAMP_HI_2P2Z_CLAMP_HI_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P2Z2_CLAMP_HI_2P2Z_CLAMP_HI_SHIFT) & CLC_VDVQ_CHAN_P2Z2_CLAMP_HI_2P2Z_CLAMP_HI_MASK) 209 #define CLC_VDVQ_CHAN_P2Z2_CLAMP_HI_2P2Z_CLAMP_HI_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P2Z2_CLAMP_HI_2P2Z_CLAMP_HI_MASK) >> CLC_VDVQ_CHAN_P2Z2_CLAMP_HI_2P2Z_CLAMP_HI_SHIFT) 210 211 /* Bitfield definition for register of struct array VDVQ_CHAN: P3Z3_CLAMP_LO */ 212 /* 213 * 3P3Z_CLAMP_LO (RW) 214 * 215 * 3p3z output clamp low threshold 216 */ 217 #define CLC_VDVQ_CHAN_P3Z3_CLAMP_LO_3P3Z_CLAMP_LO_MASK (0xFFFFFFFFUL) 218 #define CLC_VDVQ_CHAN_P3Z3_CLAMP_LO_3P3Z_CLAMP_LO_SHIFT (0U) 219 #define CLC_VDVQ_CHAN_P3Z3_CLAMP_LO_3P3Z_CLAMP_LO_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P3Z3_CLAMP_LO_3P3Z_CLAMP_LO_SHIFT) & CLC_VDVQ_CHAN_P3Z3_CLAMP_LO_3P3Z_CLAMP_LO_MASK) 220 #define CLC_VDVQ_CHAN_P3Z3_CLAMP_LO_3P3Z_CLAMP_LO_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P3Z3_CLAMP_LO_3P3Z_CLAMP_LO_MASK) >> CLC_VDVQ_CHAN_P3Z3_CLAMP_LO_3P3Z_CLAMP_LO_SHIFT) 221 222 /* Bitfield definition for register of struct array VDVQ_CHAN: P3Z3_CLAMP_HI */ 223 /* 224 * 3P3Z_CLAMP_HI (RW) 225 * 226 * 3p3z output clamp high threshold 227 */ 228 #define CLC_VDVQ_CHAN_P3Z3_CLAMP_HI_3P3Z_CLAMP_HI_MASK (0xFFFFFFFFUL) 229 #define CLC_VDVQ_CHAN_P3Z3_CLAMP_HI_3P3Z_CLAMP_HI_SHIFT (0U) 230 #define CLC_VDVQ_CHAN_P3Z3_CLAMP_HI_3P3Z_CLAMP_HI_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P3Z3_CLAMP_HI_3P3Z_CLAMP_HI_SHIFT) & CLC_VDVQ_CHAN_P3Z3_CLAMP_HI_3P3Z_CLAMP_HI_MASK) 231 #define CLC_VDVQ_CHAN_P3Z3_CLAMP_HI_3P3Z_CLAMP_HI_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P3Z3_CLAMP_HI_3P3Z_CLAMP_HI_MASK) >> CLC_VDVQ_CHAN_P3Z3_CLAMP_HI_3P3Z_CLAMP_HI_SHIFT) 232 233 /* Bitfield definition for register of struct array VDVQ_CHAN: COEFF_B0 */ 234 /* 235 * COEFF_B0 (RW) 236 * 237 * coefficient b0 238 */ 239 #define CLC_VDVQ_CHAN_COEFF_COEFF_B0_COEFF_B0_MASK (0xFFFFFFFFUL) 240 #define CLC_VDVQ_CHAN_COEFF_COEFF_B0_COEFF_B0_SHIFT (0U) 241 #define CLC_VDVQ_CHAN_COEFF_COEFF_B0_COEFF_B0_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_COEFF_COEFF_B0_COEFF_B0_SHIFT) & CLC_VDVQ_CHAN_COEFF_COEFF_B0_COEFF_B0_MASK) 242 #define CLC_VDVQ_CHAN_COEFF_COEFF_B0_COEFF_B0_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_COEFF_COEFF_B0_COEFF_B0_MASK) >> CLC_VDVQ_CHAN_COEFF_COEFF_B0_COEFF_B0_SHIFT) 243 244 /* Bitfield definition for register of struct array VDVQ_CHAN: COEFF_B1 */ 245 /* 246 * COEFF_B1 (RW) 247 * 248 * coefficient b1 249 */ 250 #define CLC_VDVQ_CHAN_COEFF_COEFF_B1_COEFF_B1_MASK (0xFFFFFFFFUL) 251 #define CLC_VDVQ_CHAN_COEFF_COEFF_B1_COEFF_B1_SHIFT (0U) 252 #define CLC_VDVQ_CHAN_COEFF_COEFF_B1_COEFF_B1_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_COEFF_COEFF_B1_COEFF_B1_SHIFT) & CLC_VDVQ_CHAN_COEFF_COEFF_B1_COEFF_B1_MASK) 253 #define CLC_VDVQ_CHAN_COEFF_COEFF_B1_COEFF_B1_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_COEFF_COEFF_B1_COEFF_B1_MASK) >> CLC_VDVQ_CHAN_COEFF_COEFF_B1_COEFF_B1_SHIFT) 254 255 /* Bitfield definition for register of struct array VDVQ_CHAN: COEFF_B2 */ 256 /* 257 * COEFF_B2 (RW) 258 * 259 * coefficient b2 260 */ 261 #define CLC_VDVQ_CHAN_COEFF_COEFF_B2_COEFF_B2_MASK (0xFFFFFFFFUL) 262 #define CLC_VDVQ_CHAN_COEFF_COEFF_B2_COEFF_B2_SHIFT (0U) 263 #define CLC_VDVQ_CHAN_COEFF_COEFF_B2_COEFF_B2_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_COEFF_COEFF_B2_COEFF_B2_SHIFT) & CLC_VDVQ_CHAN_COEFF_COEFF_B2_COEFF_B2_MASK) 264 #define CLC_VDVQ_CHAN_COEFF_COEFF_B2_COEFF_B2_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_COEFF_COEFF_B2_COEFF_B2_MASK) >> CLC_VDVQ_CHAN_COEFF_COEFF_B2_COEFF_B2_SHIFT) 265 266 /* Bitfield definition for register of struct array VDVQ_CHAN: COEFF_B3 */ 267 /* 268 * COEFF_B3 (RW) 269 * 270 * coefficient b3 271 */ 272 #define CLC_VDVQ_CHAN_COEFF_COEFF_B3_COEFF_B3_MASK (0xFFFFFFFFUL) 273 #define CLC_VDVQ_CHAN_COEFF_COEFF_B3_COEFF_B3_SHIFT (0U) 274 #define CLC_VDVQ_CHAN_COEFF_COEFF_B3_COEFF_B3_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_COEFF_COEFF_B3_COEFF_B3_SHIFT) & CLC_VDVQ_CHAN_COEFF_COEFF_B3_COEFF_B3_MASK) 275 #define CLC_VDVQ_CHAN_COEFF_COEFF_B3_COEFF_B3_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_COEFF_COEFF_B3_COEFF_B3_MASK) >> CLC_VDVQ_CHAN_COEFF_COEFF_B3_COEFF_B3_SHIFT) 276 277 /* Bitfield definition for register of struct array VDVQ_CHAN: COEFF_A0 */ 278 /* 279 * COEFF_A0 (RW) 280 * 281 * coefficient a0 282 */ 283 #define CLC_VDVQ_CHAN_COEFF_COEFF_A0_COEFF_A0_MASK (0xFFFFFFFFUL) 284 #define CLC_VDVQ_CHAN_COEFF_COEFF_A0_COEFF_A0_SHIFT (0U) 285 #define CLC_VDVQ_CHAN_COEFF_COEFF_A0_COEFF_A0_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_COEFF_COEFF_A0_COEFF_A0_SHIFT) & CLC_VDVQ_CHAN_COEFF_COEFF_A0_COEFF_A0_MASK) 286 #define CLC_VDVQ_CHAN_COEFF_COEFF_A0_COEFF_A0_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_COEFF_COEFF_A0_COEFF_A0_MASK) >> CLC_VDVQ_CHAN_COEFF_COEFF_A0_COEFF_A0_SHIFT) 287 288 /* Bitfield definition for register of struct array VDVQ_CHAN: COEFF_A1 */ 289 /* 290 * COEFF_A1 (RW) 291 * 292 * coefficient a1 293 */ 294 #define CLC_VDVQ_CHAN_COEFF_COEFF_A1_COEFF_A1_MASK (0xFFFFFFFFUL) 295 #define CLC_VDVQ_CHAN_COEFF_COEFF_A1_COEFF_A1_SHIFT (0U) 296 #define CLC_VDVQ_CHAN_COEFF_COEFF_A1_COEFF_A1_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_COEFF_COEFF_A1_COEFF_A1_SHIFT) & CLC_VDVQ_CHAN_COEFF_COEFF_A1_COEFF_A1_MASK) 297 #define CLC_VDVQ_CHAN_COEFF_COEFF_A1_COEFF_A1_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_COEFF_COEFF_A1_COEFF_A1_MASK) >> CLC_VDVQ_CHAN_COEFF_COEFF_A1_COEFF_A1_SHIFT) 298 299 /* Bitfield definition for register of struct array VDVQ_CHAN: COEFF_A2 */ 300 /* 301 * COEFF_A2 (RW) 302 * 303 * coefficient a2 304 */ 305 #define CLC_VDVQ_CHAN_COEFF_COEFF_A2_COEFF_A2_MASK (0xFFFFFFFFUL) 306 #define CLC_VDVQ_CHAN_COEFF_COEFF_A2_COEFF_A2_SHIFT (0U) 307 #define CLC_VDVQ_CHAN_COEFF_COEFF_A2_COEFF_A2_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_COEFF_COEFF_A2_COEFF_A2_SHIFT) & CLC_VDVQ_CHAN_COEFF_COEFF_A2_COEFF_A2_MASK) 308 #define CLC_VDVQ_CHAN_COEFF_COEFF_A2_COEFF_A2_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_COEFF_COEFF_A2_COEFF_A2_MASK) >> CLC_VDVQ_CHAN_COEFF_COEFF_A2_COEFF_A2_SHIFT) 309 310 /* Bitfield definition for register of struct array VDVQ_CHAN: COEFF_KS */ 311 /* 312 * COEFF_KSCALING (RW) 313 * 314 * coefficient kscaling 315 */ 316 #define CLC_VDVQ_CHAN_COEFF_COEFF_KS_COEFF_KSCALING_MASK (0x1FU) 317 #define CLC_VDVQ_CHAN_COEFF_COEFF_KS_COEFF_KSCALING_SHIFT (0U) 318 #define CLC_VDVQ_CHAN_COEFF_COEFF_KS_COEFF_KSCALING_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_COEFF_COEFF_KS_COEFF_KSCALING_SHIFT) & CLC_VDVQ_CHAN_COEFF_COEFF_KS_COEFF_KSCALING_MASK) 319 #define CLC_VDVQ_CHAN_COEFF_COEFF_KS_COEFF_KSCALING_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_COEFF_COEFF_KS_COEFF_KSCALING_MASK) >> CLC_VDVQ_CHAN_COEFF_COEFF_KS_COEFF_KSCALING_SHIFT) 320 321 /* Bitfield definition for register of struct array VDVQ_CHAN: PWM_PERIOD */ 322 /* 323 * PWM_PERIOD (RW) 324 * 325 * pwm_period 326 */ 327 #define CLC_VDVQ_CHAN_PWM_PERIOD_PWM_PERIOD_MASK (0xFFFFFFFFUL) 328 #define CLC_VDVQ_CHAN_PWM_PERIOD_PWM_PERIOD_SHIFT (0U) 329 #define CLC_VDVQ_CHAN_PWM_PERIOD_PWM_PERIOD_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_PWM_PERIOD_PWM_PERIOD_SHIFT) & CLC_VDVQ_CHAN_PWM_PERIOD_PWM_PERIOD_MASK) 330 #define CLC_VDVQ_CHAN_PWM_PERIOD_PWM_PERIOD_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_PWM_PERIOD_PWM_PERIOD_MASK) >> CLC_VDVQ_CHAN_PWM_PERIOD_PWM_PERIOD_SHIFT) 331 332 /* Bitfield definition for register of struct array VDVQ_CHAN: OUTPUT_VALUE */ 333 /* 334 * OUTPUT_VALUE (RO) 335 * 336 * output_value 337 */ 338 #define CLC_VDVQ_CHAN_OUTPUT_VALUE_OUTPUT_VALUE_MASK (0xFFFFFFFFUL) 339 #define CLC_VDVQ_CHAN_OUTPUT_VALUE_OUTPUT_VALUE_SHIFT (0U) 340 #define CLC_VDVQ_CHAN_OUTPUT_VALUE_OUTPUT_VALUE_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_OUTPUT_VALUE_OUTPUT_VALUE_MASK) >> CLC_VDVQ_CHAN_OUTPUT_VALUE_OUTPUT_VALUE_SHIFT) 341 342 /* Bitfield definition for register of struct array VDVQ_CHAN: TIMESTAMP */ 343 /* 344 * TIMESTAMP (RO) 345 * 346 * timestamp 347 */ 348 #define CLC_VDVQ_CHAN_TIMESTAMP_TIMESTAMP_MASK (0xFFFFFFFFUL) 349 #define CLC_VDVQ_CHAN_TIMESTAMP_TIMESTAMP_SHIFT (0U) 350 #define CLC_VDVQ_CHAN_TIMESTAMP_TIMESTAMP_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_TIMESTAMP_TIMESTAMP_MASK) >> CLC_VDVQ_CHAN_TIMESTAMP_TIMESTAMP_SHIFT) 351 352 /* Bitfield definition for register of struct array VDVQ_CHAN: EADC_CURR */ 353 /* 354 * EADC_CURR (RW) 355 * 356 * error adc latest value 357 */ 358 #define CLC_VDVQ_CHAN_EADC_CURR_EADC_CURR_MASK (0xFFFFFFFFUL) 359 #define CLC_VDVQ_CHAN_EADC_CURR_EADC_CURR_SHIFT (0U) 360 #define CLC_VDVQ_CHAN_EADC_CURR_EADC_CURR_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_EADC_CURR_EADC_CURR_SHIFT) & CLC_VDVQ_CHAN_EADC_CURR_EADC_CURR_MASK) 361 #define CLC_VDVQ_CHAN_EADC_CURR_EADC_CURR_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_EADC_CURR_EADC_CURR_MASK) >> CLC_VDVQ_CHAN_EADC_CURR_EADC_CURR_SHIFT) 362 363 /* Bitfield definition for register of struct array VDVQ_CHAN: EADC_PRE0 */ 364 /* 365 * EADC_PRE0 (RW) 366 * 367 * error adc previous 0 value 368 */ 369 #define CLC_VDVQ_CHAN_EADC_PRE0_EADC_PRE0_MASK (0xFFFFFFFFUL) 370 #define CLC_VDVQ_CHAN_EADC_PRE0_EADC_PRE0_SHIFT (0U) 371 #define CLC_VDVQ_CHAN_EADC_PRE0_EADC_PRE0_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_EADC_PRE0_EADC_PRE0_SHIFT) & CLC_VDVQ_CHAN_EADC_PRE0_EADC_PRE0_MASK) 372 #define CLC_VDVQ_CHAN_EADC_PRE0_EADC_PRE0_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_EADC_PRE0_EADC_PRE0_MASK) >> CLC_VDVQ_CHAN_EADC_PRE0_EADC_PRE0_SHIFT) 373 374 /* Bitfield definition for register of struct array VDVQ_CHAN: EADC_PRE1 */ 375 /* 376 * EADC_PRE1 (RW) 377 * 378 * error adc previous 1 value 379 */ 380 #define CLC_VDVQ_CHAN_EADC_PRE1_EADC_PRE1_MASK (0xFFFFFFFFUL) 381 #define CLC_VDVQ_CHAN_EADC_PRE1_EADC_PRE1_SHIFT (0U) 382 #define CLC_VDVQ_CHAN_EADC_PRE1_EADC_PRE1_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_EADC_PRE1_EADC_PRE1_SHIFT) & CLC_VDVQ_CHAN_EADC_PRE1_EADC_PRE1_MASK) 383 #define CLC_VDVQ_CHAN_EADC_PRE1_EADC_PRE1_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_EADC_PRE1_EADC_PRE1_MASK) >> CLC_VDVQ_CHAN_EADC_PRE1_EADC_PRE1_SHIFT) 384 385 /* Bitfield definition for register of struct array VDVQ_CHAN: P2Z2_CURR */ 386 /* 387 * 2P2Z_CURR (RW) 388 * 389 * 2p2z latest value 390 */ 391 #define CLC_VDVQ_CHAN_P2Z2_CURR_2P2Z_CURR_MASK (0xFFFFFFFFUL) 392 #define CLC_VDVQ_CHAN_P2Z2_CURR_2P2Z_CURR_SHIFT (0U) 393 #define CLC_VDVQ_CHAN_P2Z2_CURR_2P2Z_CURR_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P2Z2_CURR_2P2Z_CURR_SHIFT) & CLC_VDVQ_CHAN_P2Z2_CURR_2P2Z_CURR_MASK) 394 #define CLC_VDVQ_CHAN_P2Z2_CURR_2P2Z_CURR_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P2Z2_CURR_2P2Z_CURR_MASK) >> CLC_VDVQ_CHAN_P2Z2_CURR_2P2Z_CURR_SHIFT) 395 396 /* Bitfield definition for register of struct array VDVQ_CHAN: P2Z2_PRE0 */ 397 /* 398 * 2P2Z_PRE0 (RW) 399 * 400 * 2p2z previous 0 value 401 */ 402 #define CLC_VDVQ_CHAN_P2Z2_PRE0_2P2Z_PRE0_MASK (0xFFFFFFFFUL) 403 #define CLC_VDVQ_CHAN_P2Z2_PRE0_2P2Z_PRE0_SHIFT (0U) 404 #define CLC_VDVQ_CHAN_P2Z2_PRE0_2P2Z_PRE0_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P2Z2_PRE0_2P2Z_PRE0_SHIFT) & CLC_VDVQ_CHAN_P2Z2_PRE0_2P2Z_PRE0_MASK) 405 #define CLC_VDVQ_CHAN_P2Z2_PRE0_2P2Z_PRE0_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P2Z2_PRE0_2P2Z_PRE0_MASK) >> CLC_VDVQ_CHAN_P2Z2_PRE0_2P2Z_PRE0_SHIFT) 406 407 /* Bitfield definition for register of struct array VDVQ_CHAN: P3Z3_CURR */ 408 /* 409 * 3P3Z_CURR (RW) 410 * 411 * 3p3z latest value 412 */ 413 #define CLC_VDVQ_CHAN_P3Z3_CURR_3P3Z_CURR_MASK (0xFFFFFFFFUL) 414 #define CLC_VDVQ_CHAN_P3Z3_CURR_3P3Z_CURR_SHIFT (0U) 415 #define CLC_VDVQ_CHAN_P3Z3_CURR_3P3Z_CURR_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P3Z3_CURR_3P3Z_CURR_SHIFT) & CLC_VDVQ_CHAN_P3Z3_CURR_3P3Z_CURR_MASK) 416 #define CLC_VDVQ_CHAN_P3Z3_CURR_3P3Z_CURR_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P3Z3_CURR_3P3Z_CURR_MASK) >> CLC_VDVQ_CHAN_P3Z3_CURR_3P3Z_CURR_SHIFT) 417 418 /* Bitfield definition for register of struct array VDVQ_CHAN: P3Z3_FORBID_LO */ 419 /* 420 * 3P3Z_FORBID_LO (RW) 421 * 422 * 3p3z output forbid low threshold 423 */ 424 #define CLC_VDVQ_CHAN_P3Z3_FORBID_LO_3P3Z_FORBID_LO_MASK (0xFFFFFFFFUL) 425 #define CLC_VDVQ_CHAN_P3Z3_FORBID_LO_3P3Z_FORBID_LO_SHIFT (0U) 426 #define CLC_VDVQ_CHAN_P3Z3_FORBID_LO_3P3Z_FORBID_LO_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P3Z3_FORBID_LO_3P3Z_FORBID_LO_SHIFT) & CLC_VDVQ_CHAN_P3Z3_FORBID_LO_3P3Z_FORBID_LO_MASK) 427 #define CLC_VDVQ_CHAN_P3Z3_FORBID_LO_3P3Z_FORBID_LO_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P3Z3_FORBID_LO_3P3Z_FORBID_LO_MASK) >> CLC_VDVQ_CHAN_P3Z3_FORBID_LO_3P3Z_FORBID_LO_SHIFT) 428 429 /* Bitfield definition for register of struct array VDVQ_CHAN: P3Z3_FORBID_MD */ 430 /* 431 * 3P3Z_FORBID_MD (RW) 432 * 433 * 3p3z output forbid middle threshold 434 */ 435 #define CLC_VDVQ_CHAN_P3Z3_FORBID_MD_3P3Z_FORBID_MD_MASK (0xFFFFFFFFUL) 436 #define CLC_VDVQ_CHAN_P3Z3_FORBID_MD_3P3Z_FORBID_MD_SHIFT (0U) 437 #define CLC_VDVQ_CHAN_P3Z3_FORBID_MD_3P3Z_FORBID_MD_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P3Z3_FORBID_MD_3P3Z_FORBID_MD_SHIFT) & CLC_VDVQ_CHAN_P3Z3_FORBID_MD_3P3Z_FORBID_MD_MASK) 438 #define CLC_VDVQ_CHAN_P3Z3_FORBID_MD_3P3Z_FORBID_MD_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P3Z3_FORBID_MD_3P3Z_FORBID_MD_MASK) >> CLC_VDVQ_CHAN_P3Z3_FORBID_MD_3P3Z_FORBID_MD_SHIFT) 439 440 /* Bitfield definition for register of struct array VDVQ_CHAN: P3Z3_FORBID_HI */ 441 /* 442 * 3P3Z_FORBID_HI (RW) 443 * 444 * 3p3z output forbid high threshold 445 */ 446 #define CLC_VDVQ_CHAN_P3Z3_FORBID_HI_3P3Z_FORBID_HI_MASK (0xFFFFFFFFUL) 447 #define CLC_VDVQ_CHAN_P3Z3_FORBID_HI_3P3Z_FORBID_HI_SHIFT (0U) 448 #define CLC_VDVQ_CHAN_P3Z3_FORBID_HI_3P3Z_FORBID_HI_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_P3Z3_FORBID_HI_3P3Z_FORBID_HI_SHIFT) & CLC_VDVQ_CHAN_P3Z3_FORBID_HI_3P3Z_FORBID_HI_MASK) 449 #define CLC_VDVQ_CHAN_P3Z3_FORBID_HI_3P3Z_FORBID_HI_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_P3Z3_FORBID_HI_3P3Z_FORBID_HI_MASK) >> CLC_VDVQ_CHAN_P3Z3_FORBID_HI_3P3Z_FORBID_HI_SHIFT) 450 451 /* Bitfield definition for register of struct array VDVQ_CHAN: ADC_SW */ 452 /* 453 * ADC_SW (RW) 454 * 455 * adc software inject value 456 */ 457 #define CLC_VDVQ_CHAN_ADC_SW_ADC_SW_MASK (0xFFFFFFFFUL) 458 #define CLC_VDVQ_CHAN_ADC_SW_ADC_SW_SHIFT (0U) 459 #define CLC_VDVQ_CHAN_ADC_SW_ADC_SW_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_ADC_SW_ADC_SW_SHIFT) & CLC_VDVQ_CHAN_ADC_SW_ADC_SW_MASK) 460 #define CLC_VDVQ_CHAN_ADC_SW_ADC_SW_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_ADC_SW_ADC_SW_MASK) >> CLC_VDVQ_CHAN_ADC_SW_ADC_SW_SHIFT) 461 462 /* Bitfield definition for register of struct array VDVQ_CHAN: STATUS */ 463 /* 464 * STATUS (W1C) 465 * 466 * status, write 1 to clear it. : 467 * irq_data_in_forbid , // 10 468 * irq_forb_err_boundary , // 9 469 * irq_p3z3_over_lo , // 8 470 * irq_p3z3_over_hi , // 7 471 * irq_p3z3_err_boundary , // 6 472 * irq_z2_over_sf , // 5 473 * irq_z2_over_lo , // 4 474 * irq_z2_over_hi , // 3 475 * irq_z2_err_boundary , // 2 476 * irq_coef_err_boundary , // 1 477 * irq_valid_clc // 0 478 */ 479 #define CLC_VDVQ_CHAN_STATUS_STATUS_MASK (0x7FFU) 480 #define CLC_VDVQ_CHAN_STATUS_STATUS_SHIFT (0U) 481 #define CLC_VDVQ_CHAN_STATUS_STATUS_SET(x) (((uint32_t)(x) << CLC_VDVQ_CHAN_STATUS_STATUS_SHIFT) & CLC_VDVQ_CHAN_STATUS_STATUS_MASK) 482 #define CLC_VDVQ_CHAN_STATUS_STATUS_GET(x) (((uint32_t)(x) & CLC_VDVQ_CHAN_STATUS_STATUS_MASK) >> CLC_VDVQ_CHAN_STATUS_STATUS_SHIFT) 483 484 /* Bitfield definition for register: DQ_ADC_SW_READY */ 485 /* 486 * DQ_ADC_SW_READY (W1C) 487 * 488 * enable d/q chan software inject adc value 489 */ 490 #define CLC_DQ_ADC_SW_READY_DQ_ADC_SW_READY_MASK (0x1U) 491 #define CLC_DQ_ADC_SW_READY_DQ_ADC_SW_READY_SHIFT (0U) 492 #define CLC_DQ_ADC_SW_READY_DQ_ADC_SW_READY_SET(x) (((uint32_t)(x) << CLC_DQ_ADC_SW_READY_DQ_ADC_SW_READY_SHIFT) & CLC_DQ_ADC_SW_READY_DQ_ADC_SW_READY_MASK) 493 #define CLC_DQ_ADC_SW_READY_DQ_ADC_SW_READY_GET(x) (((uint32_t)(x) & CLC_DQ_ADC_SW_READY_DQ_ADC_SW_READY_MASK) >> CLC_DQ_ADC_SW_READY_DQ_ADC_SW_READY_SHIFT) 494 495 496 497 /* COEFF register group index macro definition */ 498 #define CLC_COEFF_0 (0UL) 499 #define CLC_COEFF_1 (1UL) 500 #define CLC_COEFF_2 (2UL) 501 502 /* VDVQ_CHAN register group index macro definition */ 503 #define CLC_VDVQ_CHAN_VD (0UL) 504 #define CLC_VDVQ_CHAN_VQ (1UL) 505 506 507 #endif /* HPM_CLC_H */ 508