@@ -79,188 +79,188 @@ using ADC_FIELDS = mss::adc::fields;
79
79
// pair<REG,DATA>
80
80
static const std::vector<std::pair<uint8_t , uint8_t >> ADC1_CH_INIT =
81
81
{
82
- // 29 : Set channels to auto sequencing, all channels
82
+ // 33 : Set channels to auto sequencing, all channels
83
83
{ADC_REGS::AUTO_SEQ_CH_SEL, ADC_FIELDS::AUTO_SEQ_CH_SEL_ALL_AUTO_SEQUENCING},
84
- // 30 : Set auto sequence mode
84
+ // 34 : Set auto sequence mode
85
85
{ADC_REGS::SEQUENCE_CFG, ADC_FIELDS::SEQUENCE_CFG_AUTO_SEQUENCE},
86
86
87
87
// CH 1
88
- // 31 : Keep upper limit at max, enable hysteresis
88
+ // 35 : Keep upper limit at max, enable hysteresis
89
89
{ADC_REGS::HYSTERESIS_CH1, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
90
90
91
- // 32 : Keep default, may skip if not multibyte writing
91
+ // 36 : Keep default, may skip if not multibyte writing
92
92
{ADC_REGS::HIGH_TH_CH1, ADC_FIELDS::HIGH_TH_DEFAULT},
93
93
94
- // 33 : Set up so alert must persist for 4 consecutive readings
94
+ // 37 : Set up so alert must persist for 4 consecutive readings
95
95
{ADC_REGS::EVENT_COUNT_CH1, ADC_FIELDS::EVENT_COUNT_ADC1_CH1_ALERT_4_CONSECUTIVE_READINGS},
96
96
97
- // 34 : 1AB_VLOC (VDDR1) Low Threshold = 0.643 V
97
+ // 38 : 1AB_VLOC (VDDR1) Low Threshold = 0.643 V
98
98
{ADC_REGS::LOW_TH_CH1, ADC_FIELDS::LOW_TH_CH1_1AB_VLOC_LOW_THRESHOLD_643mv},
99
99
100
100
// CH 2
101
- // 35 : Keep upper limit at max, enable hysteresis
101
+ // 39 : Keep upper limit at max, enable hysteresis
102
102
{ADC_REGS::HYSTERESIS_CH2, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
103
103
104
- // 36 : Keep default, may skip if not multibyte writing
104
+ // 40 : Keep default, may skip if not multibyte writing
105
105
{ADC_REGS::HIGH_TH_CH2, ADC_FIELDS::HIGH_TH_DEFAULT},
106
106
107
- // 37 : Set up so alert must persist for 4 consecutive readings
107
+ // 41 : Set up so alert must persist for 4 consecutive readings
108
108
{ADC_REGS::EVENT_COUNT_CH2, ADC_FIELDS::EVENT_COUNT_ADC1_CH2_ALERT_4_CONSECUTIVE_READINGS},
109
109
110
- // 38 : 1C_VLOC (VIO) Low Threshold = 0.476 V
110
+ // 42 : 1C_VLOC (VIO) Low Threshold = 0.476 V
111
111
{ADC_REGS::LOW_TH_CH2, ADC_FIELDS::LOW_TH_CH2_1C_VLOC_LOW_THRESHOLD_476mv},
112
112
113
113
// CH3
114
- // 39 : Keep upper limit at max, enable hysteresis
114
+ // 43 : Keep upper limit at max, enable hysteresis
115
115
{ADC_REGS::HYSTERESIS_CH3, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
116
116
117
- // 40 : Keep default, may skip if not multibyte writing
117
+ // 44 : Keep default, may skip if not multibyte writing
118
118
{ADC_REGS::HIGH_TH_CH3, ADC_FIELDS::HIGH_TH_DEFAULT},
119
119
120
- // 41 : Set up so alert must persist for 4 consecutive readings
120
+ // 45 : Set up so alert must persist for 4 consecutive readings
121
121
{ADC_REGS::EVENT_COUNT_CH3, ADC_FIELDS::EVENT_COUNT_ADC1_CH3_ALERT_4_CONSECUTIVE_READINGS},
122
122
123
- // 42 : 1D_VLOC/2 (VPP) Low Threshold = 0.733 V
123
+ // 46 : 1D_VLOC/2 (VPP) Low Threshold = 0.733 V
124
124
{ADC_REGS::LOW_TH_CH3, ADC_FIELDS::LOW_TH_CH3_1D_VLOC_LOW_THRESHOLD_733mv},
125
125
126
126
// CH 4
127
- // 43 : Keep upper limit at max, enable hysteresis
127
+ // 47 : Keep upper limit at max, enable hysteresis
128
128
{ADC_REGS::HYSTERESIS_CH4, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
129
129
130
- // 44 : Keep default, may skip if not multibyte writing
130
+ // 48 : Keep default, may skip if not multibyte writing
131
131
{ADC_REGS::HIGH_TH_CH4, ADC_FIELDS::HIGH_TH_DEFAULT},
132
132
133
- // 45 : Set up so alert must persist for 4 consecutive readings
133
+ // 49 : Set up so alert must persist for 4 consecutive readings
134
134
{ADC_REGS::EVENT_COUNT_CH4, ADC_FIELDS::EVENT_COUNT_ADC1_CH4_ALERT_4_CONSECUTIVE_READINGS},
135
135
136
- // 46 : 2C_VLOC (VIO) Low Threshold = 0.476 V
136
+ // 50 : 2C_VLOC (VIO) Low Threshold = 0.476 V
137
137
{ADC_REGS::LOW_TH_CH4, ADC_FIELDS::LOW_TH_CH4_2C_VLOC_LOW_THRESHOLD_476mv},
138
138
139
139
// CH 5
140
- // 47 : Keep upper limit at max, enable hysteresis
140
+ // 51 : Keep upper limit at max, enable hysteresis
141
141
{ADC_REGS::HYSTERESIS_CH5, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
142
142
143
- // 48 : Keep default, may skip if not multibyte writing
143
+ // 52 : Keep default, may skip if not multibyte writing
144
144
{ADC_REGS::HIGH_TH_CH5, ADC_FIELDS::HIGH_TH_DEFAULT},
145
145
146
- // 49 : Set up so alert must persist for 4 consecutive readings
146
+ // 53 : Set up so alert must persist for 4 consecutive readings
147
147
{ADC_REGS::EVENT_COUNT_CH5, ADC_FIELDS::EVENT_COUNT_ADC1_CH5_ALERT_4_CONSECUTIVE_READINGS},
148
148
149
- // 50 : 2D_VLOC/2 (VPP) Low Threshold = 0.733 V
149
+ // 54 : 2D_VLOC/2 (VPP) Low Threshold = 0.733 V
150
150
{ADC_REGS::LOW_TH_CH5, ADC_FIELDS::LOW_TH_CH5_2D_VLOC_LOW_THRESHOLD_733mv},
151
151
152
152
// CH 7
153
- // 51 : Keep upper limit at max, enable hysteresis
153
+ // 55 : Keep upper limit at max, enable hysteresis
154
154
{ADC_REGS::HYSTERESIS_CH7, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
155
155
156
- // 52 : Keep default, may skip if not multibyte writing
156
+ // 56 : Keep default, may skip if not multibyte writing
157
157
{ADC_REGS::HIGH_TH_CH7, ADC_FIELDS::HIGH_TH_DEFAULT},
158
158
159
- // 53 : Set up so alert must persist for 4 consecutive readings
159
+ // 57 : Set up so alert must persist for 4 consecutive readings
160
160
{ADC_REGS::EVENT_COUNT_CH7, ADC_FIELDS::EVENT_COUNT_ADC1_CH7_ALERT_4_CONSECUTIVE_READINGS},
161
161
162
- // 54 : 2AB_VLOC Low (VDDR1) Threshold = 0.643 V
162
+ // 58 : 2AB_VLOC Low (VDDR1) Threshold = 0.643 V
163
163
{ADC_REGS::LOW_TH_CH7, ADC_FIELDS::LOW_TH_CH7_2AB_VLOC_LOW_THRESHOLD_643mv},
164
164
165
165
// Finalize
166
- // 55 : Set channels to trigger an alert, only local voltages
166
+ // 59 : Set channels to trigger an alert, only local voltages
167
167
{ADC_REGS::ALERT_CH_SEL, ADC_FIELDS::ALERT_CH_SEL_ADC1_LOCAL_VOLTAGES_ALERT},
168
168
169
- // 56 : Set alert pin function to remain active high (not pulsed)
169
+ // 60 : Set alert pin function to remain active high (not pulsed)
170
170
{ADC_REGS::ALERT_PIN_CFG, ADC_FIELDS::ALERT_PIN_CFG_ACTIVE_HIGH},
171
171
172
- // 57 : Setup autonomous conversions and sampling speed
172
+ // 61 : Setup autonomous conversions and sampling speed
173
173
{ADC_REGS::OPMODE_CFG, ADC_FIELDS::OPMODE_CFG_AUTONOMOUS},
174
174
175
- // 58 : Set over sampling, 8 samples
175
+ // 62 : Set over sampling, 8 samples
176
176
{ADC_REGS::OSR_CFG, ADC_FIELDS::OSR_CFG_8_SAMPLE_OVERSAMPLING},
177
177
178
- // 59 : Enable digital window comparator and stats
178
+ // 63 : Enable digital window comparator and stats
179
179
{ADC_REGS::GENERAL_CFG, ADC_FIELDS::GENERAL_CFG_EN_DIGITAL_WINDOW_COMPARATOR_AND_STATS},
180
180
181
- // 60 : Enable Channel sequencing
181
+ // 64 : Enable Channel sequencing
182
182
{ADC_REGS::SEQUENCE_CFG, ADC_FIELDS::SEQUENCE_CFG_CHANNEL_SEQUENCING}
183
183
};
184
184
185
185
// ADC2 register sequence
186
186
// pair<REG,DATA>
187
187
static const std::vector<std::pair<uint8_t , uint8_t >> ADC2_CH_INIT =
188
188
{
189
- // 61 : Set channels to auto sequencing, all channels
189
+ // 65 : Set channels to auto sequencing, all channels
190
190
{ADC_REGS::AUTO_SEQ_CH_SEL, ADC_FIELDS::AUTO_SEQ_CH_SEL_ALL_AUTO_SEQUENCING},
191
191
192
- // 62 : Set auto sequence mode
192
+ // 66 : Set auto sequence mode
193
193
{ADC_REGS::SEQUENCE_CFG, ADC_FIELDS::SEQUENCE_CFG_AUTO_SEQUENCE},
194
194
195
195
// CH 2
196
- // 63 : Keep upper limit at max, enable hysteresis
196
+ // 67 : Keep upper limit at max, enable hysteresis
197
197
{ADC_REGS::HYSTERESIS_CH2, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
198
198
199
- // 64 : Keep default, may skip if not multibyte writing
199
+ // 68 : Keep default, may skip if not multibyte writing
200
200
{ADC_REGS::HIGH_TH_CH2, ADC_FIELDS::HIGH_TH_DEFAULT},
201
201
202
- // 65 : Set up so alert must persist for 4 consecutive readings
202
+ // 69 : Set up so alert must persist for 4 consecutive readings
203
203
{ADC_REGS::EVENT_COUNT_CH2, ADC_FIELDS::EVENT_COUNT_ADC2_CH2_ALERT_4_CONSECUTIVE_READINGS},
204
204
205
- // 66 : 3C_VLOC (VDD) Low Threshold = 0.391 V
205
+ // 70 : 3C_VLOC (VDD) Low Threshold = 0.391 V
206
206
{ADC_REGS::LOW_TH_CH2, ADC_FIELDS::LOW_TH_CH2_3C_VLOC_LOW_THRESHOLD_391mv},
207
207
208
208
// CH 3
209
- // 67 : Keep upper limit at max, enable hysteresis
209
+ // 71 : Keep upper limit at max, enable hysteresis
210
210
{ADC_REGS::HYSTERESIS_CH3, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
211
211
212
- // 68 : Keep default, may skip if not multibyte writing
212
+ // 72 : Keep default, may skip if not multibyte writing
213
213
{ADC_REGS::HIGH_TH_CH3, ADC_FIELDS::HIGH_TH_DEFAULT},
214
214
215
- // 69 : Set up so alert must persist for 4 consecutive readings
215
+ // 73 : Set up so alert must persist for 4 consecutive readings
216
216
{ADC_REGS::EVENT_COUNT_CH3, ADC_FIELDS::EVENT_COUNT_ADC2_CH3_ALERT_4_CONSECUTIVE_READINGS},
217
217
218
- // 70 : 4AB_VLOC (VDDR2) Low Threshold = 0.643 V
218
+ // 74 : 4AB_VLOC (VDDR2) Low Threshold = 0.643 V
219
219
{ADC_REGS::LOW_TH_CH3, ADC_FIELDS::LOW_TH_CH3_4AB_VLOC_LOW_THRESHOLD_543mv},
220
220
221
221
// CH 5
222
- // 71 : Keep upper limit at max, enable hysteresis
222
+ // 75 : Keep upper limit at max, enable hysteresis
223
223
{ADC_REGS::HYSTERESIS_CH5, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
224
224
225
- // 72 : Keep default, may skip if not multibyte writing
225
+ // 76 : Keep default, may skip if not multibyte writing
226
226
{ADC_REGS::HIGH_TH_CH5, ADC_FIELDS::HIGH_TH_DEFAULT},
227
227
228
- // 73 : Set up so alert must persist for 4 consecutive readings
228
+ // 77 : Set up so alert must persist for 4 consecutive readings
229
229
{ADC_REGS::EVENT_COUNT_CH5, ADC_FIELDS::EVENT_COUNT_ADC2_CH5_ALERT_4_CONSECUTIVE_READINGS},
230
230
231
- // 74 : 4C_VLOC (VDD) Low Threshold = 0.391 V
231
+ // 78 : 4C_VLOC (VDD) Low Threshold = 0.391 V
232
232
{ADC_REGS::LOW_TH_CH5, ADC_FIELDS::LOW_TH_CH5_4C_VLOC_LOW_THRESHOLD_391mv},
233
233
234
234
// CH 7
235
- // 75 : Keep upper limit at max, enable hysteresis
235
+ // 79 : Keep upper limit at max, enable hysteresis
236
236
{ADC_REGS::HYSTERESIS_CH7, ADC_FIELDS::HYSTERESIS_UPPER_LIMIT_MAX_ENABLE},
237
237
238
- // 76 : Keep default, may skip if not multibyte writing
238
+ // 80 : Keep default, may skip if not multibyte writing
239
239
{ADC_REGS::HIGH_TH_CH7, ADC_FIELDS::HIGH_TH_DEFAULT},
240
240
241
- // 77 : Set up so alert must persist for 4 consecutive readings
241
+ // 81 : Set up so alert must persist for 4 consecutive readings
242
242
{ADC_REGS::EVENT_COUNT_CH7, ADC_FIELDS::EVENT_COUNT_ADC2_CH7_ALERT_4_CONSECUTIVE_READINGS},
243
243
244
- // 78 : 3AB_VLOC (VDDR2) Low Threshold = 0.643 V
244
+ // 82 : 3AB_VLOC (VDDR2) Low Threshold = 0.643 V
245
245
{ADC_REGS::LOW_TH_CH7, ADC_FIELDS::LOW_TH_CH7_3AB_VLOC_LOW_THRESHOLD_543mv},
246
246
247
247
// Finalize
248
- // 79 : Set channels to trigger an alert, only local voltages
248
+ // 83 : Set channels to trigger an alert, only local voltages
249
249
{ADC_REGS::ALERT_CH_SEL, ADC_FIELDS::ALERT_CH_SEL_ADC2_LOCAL_VOLTAGES_ALERT},
250
250
251
- // 80 : Set alert pin function to remain active high (not pulsed)
251
+ // 84 : Set alert pin function to remain active high (not pulsed)
252
252
{ADC_REGS::ALERT_PIN_CFG, ADC_FIELDS::ALERT_PIN_CFG_ACTIVE_HIGH},
253
253
254
- // 81 : Setup autonomous conversions and sampling speed
254
+ // 85 : Setup autonomous conversions and sampling speed
255
255
{ADC_REGS::OPMODE_CFG, ADC_FIELDS::OPMODE_CFG_AUTONOMOUS},
256
256
257
- // 82 : Set over sampling, 8 samples
257
+ // 86 : Set over sampling, 8 samples
258
258
{ADC_REGS::OSR_CFG, ADC_FIELDS::OSR_CFG_8_SAMPLE_OVERSAMPLING},
259
259
260
- // 83 : Enable digital window comparator and stats
260
+ // 87 : Enable digital window comparator and stats
261
261
{ADC_REGS::GENERAL_CFG, ADC_FIELDS::GENERAL_CFG_EN_DIGITAL_WINDOW_COMPARATOR_AND_STATS},
262
262
263
- // 84 : Enable Channel sequencing
263
+ // 88 : Enable Channel sequencing
264
264
{ADC_REGS::SEQUENCE_CFG, ADC_FIELDS::SEQUENCE_CFG_CHANNEL_SEQUENCING}
265
265
};
266
266
@@ -691,6 +691,15 @@ fapi2::ReturnCode validate_efuse_off(const fapi2::Target<fapi2::TARGET_TYPE_PMIC
691
691
// /
692
692
fapi2::ReturnCode validate_efuse_on (const fapi2::Target<fapi2::TARGET_TYPE_PMIC>& i_pmic_target);
693
693
694
+ // /
695
+ // / @brief Enable EFUSE according to 4U Functional Specification
696
+ // /
697
+ // / @param[in] i_gpio GPIO target
698
+ // / @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff success, else error code
699
+ // / @note Corresponds to steps (6,7,8) & (16,17,18) in 4U DDIMM Functional Spec
700
+ // /
701
+ fapi2::ReturnCode enable_efuse (const fapi2::Target<fapi2::TARGET_TYPE_GENERICI2CSLAVE>& i_gpio);
702
+
694
703
// /
695
704
// / @brief Set the up PMIC pair and matching GPIO expander prior to PMIC enable
696
705
// /
0 commit comments