31
31
#define RT6160_PGSTAT_MASK BIT(0)
32
32
33
33
#define RT6160_VENDOR_ID 0xA0
34
+ #define RT6166_VENDOR_ID 0xB0
34
35
#define RT6160_VOUT_MINUV 2025000
35
36
#define RT6160_VOUT_MAXUV 5200000
37
+ #define RT6166_VOUT_MINUV 1800000
38
+ #define RT6166_VOUD_MAXUV 4950000
36
39
#define RT6160_VOUT_STPUV 25000
37
40
#define RT6160_N_VOUTS ((RT6160_VOUT_MAXUV - RT6160_VOUT_MINUV) / RT6160_VOUT_STPUV + 1)
38
41
@@ -43,6 +46,7 @@ struct rt6160_priv {
43
46
struct gpio_desc * enable_gpio ;
44
47
struct regmap * regmap ;
45
48
bool enable_state ;
49
+ uint8_t devid ;
46
50
};
47
51
48
52
static const unsigned int rt6160_ramp_tables [] = {
@@ -260,15 +264,26 @@ static int rt6160_probe(struct i2c_client *i2c)
260
264
if (ret )
261
265
return ret ;
262
266
263
- if ((devid & RT6160_VID_MASK ) != RT6160_VENDOR_ID ) {
267
+ devid = devid & RT6160_VID_MASK ;
268
+
269
+ switch (devid ) {
270
+ case RT6166_VENDOR_ID :
271
+ case RT6160_VENDOR_ID :
272
+ break ;
273
+ default :
264
274
dev_err (& i2c -> dev , "VID not correct [0x%02x]\n" , devid );
265
275
return - ENODEV ;
266
276
}
267
277
278
+ priv -> devid = devid ;
279
+
268
280
priv -> desc .name = "rt6160-buckboost" ;
269
281
priv -> desc .type = REGULATOR_VOLTAGE ;
270
282
priv -> desc .owner = THIS_MODULE ;
271
- priv -> desc .min_uV = RT6160_VOUT_MINUV ;
283
+ if (priv -> devid == RT6166_VENDOR_ID )
284
+ priv -> desc .min_uV = RT6166_VOUT_MINUV ;
285
+ else
286
+ priv -> desc .min_uV = RT6160_VOUT_MINUV ;
272
287
priv -> desc .uV_step = RT6160_VOUT_STPUV ;
273
288
if (vsel_active_low )
274
289
priv -> desc .vsel_reg = RT6160_REG_VSELL ;
0 commit comments