@@ -39,7 +39,6 @@ struct regulator_data {
39
39
struct onoff_sync_service srv ;
40
40
const struct voltage_range * voltages ;
41
41
const struct current_range * current_levels ;
42
- uint8_t reg_offset ;
43
42
};
44
43
45
44
struct regulator_config {
@@ -74,11 +73,8 @@ static int regulator_read_register(const struct device *dev,
74
73
uint8_t reg , uint8_t * out )
75
74
{
76
75
const struct regulator_config * conf = dev -> config ;
77
- struct regulator_data * data = dev -> data ;
78
76
int ret ;
79
77
80
- /* Apply mode offset to register */
81
- reg += data -> reg_offset ;
82
78
ret = i2c_reg_read_byte_dt (& conf -> i2c , reg , out );
83
79
LOG_DBG ("READ 0x%x: 0x%x" , reg , * out );
84
80
return ret ;
@@ -92,7 +88,6 @@ static int regulator_modify_register(const struct device *dev,
92
88
uint8_t reg , uint8_t reg_mask , uint8_t reg_val )
93
89
{
94
90
const struct regulator_config * conf = dev -> config ;
95
- struct regulator_data * data = dev -> data ;
96
91
uint8_t reg_current ;
97
92
int rc ;
98
93
@@ -101,8 +96,6 @@ static int regulator_modify_register(const struct device *dev,
101
96
return rc ;
102
97
}
103
98
104
- /* Apply mode offset to register */
105
- reg += data -> reg_offset ;
106
99
reg_current &= ~reg_mask ;
107
100
reg_current |= (reg_val & reg_mask );
108
101
LOG_DBG ("WRITE 0x%02X to 0x%02X at I2C addr 0x%02X" , reg_current ,
@@ -281,14 +274,11 @@ int regulator_get_current_limit(const struct device *dev)
281
274
/*
282
275
* Part of the extended regulator consumer API
283
276
* switches the regulator to a given mode. This API will apply a mode for
284
- * the regulator, and also configure the remainder of the regulator APIs,
285
- * such as those disabling, changing voltage/current targets, or querying
286
- * voltage/current targets to target that mode.
277
+ * the regulator.
287
278
*/
288
279
int regulator_set_mode (const struct device * dev , uint32_t mode )
289
280
{
290
281
const struct regulator_config * config = dev -> config ;
291
- struct regulator_data * data = dev -> data ;
292
282
int rc ;
293
283
uint8_t i , sel_off ;
294
284
@@ -310,26 +300,13 @@ int regulator_set_mode(const struct device *dev, uint32_t mode)
310
300
/* Configure mode */
311
301
if (mode & PMIC_MODE_FLAG_MODESEL_MULTI_REG ) {
312
302
/* Select mode with offset calculation */
313
- /* Set reg_offset here so it takes effect for the write
314
- * to modesel_reg
315
- */
316
- data -> reg_offset = sel_off ;
317
- rc = regulator_modify_register (dev , config -> modesel_reg ,
303
+ rc = regulator_modify_register (dev ,
304
+ config -> modesel_reg + sel_off ,
318
305
mode & PMIC_MODE_SELECTOR_MASK , config -> modesel_mask );
319
306
} else {
320
307
/* Select mode without offset to modesel_reg */
321
- /* Clear register offset */
322
- data -> reg_offset = 0 ;
323
308
rc = regulator_modify_register (dev , config -> modesel_reg ,
324
309
mode & PMIC_MODE_SELECTOR_MASK , config -> modesel_mask );
325
- if (rc ) {
326
- return rc ;
327
- }
328
- /* Since we did not use a register offset when selecting the
329
- * mode, but we now are targeting a specific mode's bank
330
- * of registers, we must still set the register offset here
331
- */
332
- data -> reg_offset = sel_off ;
333
310
}
334
311
return rc ;
335
312
}
@@ -421,9 +398,7 @@ static const struct regulator_driver_api api = {
421
398
DT_PROP(node, voltage_range); \
422
399
static uint16_t pmic_reg_##ord##_allowed_modes[] = \
423
400
DT_PROP_OR(DT_PARENT(node), regulator_allowed_modes, {}); \
424
- static struct regulator_data pmic_reg_##ord##_data = { \
425
- .reg_offset = 0, \
426
- }; \
401
+ static struct regulator_data pmic_reg_##ord##_data; \
427
402
static struct regulator_config pmic_reg_##ord##_cfg = { \
428
403
.vsel_mask = DT_PROP(node, vsel_mask), \
429
404
.vsel_reg = DT_PROP(node, vsel_reg), \
0 commit comments