This update adds new regmap tables to support the latest DA silicon which will automatically be selected based on the chip and variant information read from the device.
Unified · Split
| @@ -197,7 +197,7 @@ static const struct regmap_range da9063_bb_writeable_ranges[] = { · 196 unmodified lines | ||
| 197 | 197 | regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19), |
| 198 | 198 | }; |
| 199 | 199 | |
| 200 | −static const struct regmap_range da9063_bb_volatile_ranges[] = { | |
| 200 | +static const struct regmap_range da9063_bb_da_volatile_ranges[] = { | |
| 201 | 201 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D), |
| 202 | 202 | regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B), |
| 203 | 203 | regmap_reg_range(DA9063_REG_CONTROL_E, DA9063_REG_CONTROL_F), |
| @@ -219,9 +219,9 @@ static const struct regmap_access_table da9063_bb_writeable_table = { · 15 unmodified lines | ||
| 219 | 219 | .n_yes_ranges = ARRAY_SIZE(da9063_bb_writeable_ranges), |
| 220 | 220 | }; |
| 221 | 221 | |
| 222 | −static const struct regmap_access_table da9063_bb_volatile_table = { | |
| 223 | − .yes_ranges = da9063_bb_volatile_ranges, | |
| 224 | − .n_yes_ranges = ARRAY_SIZE(da9063_bb_volatile_ranges), | |
| 222 | +static const struct regmap_access_table da9063_bb_da_volatile_table = { | |
| 223 | + .yes_ranges = da9063_bb_da_volatile_ranges, | |
| 224 | + .n_yes_ranges = ARRAY_SIZE(da9063_bb_da_volatile_ranges), | |
| 225 | 225 | }; |
| 226 | 226 | |
| 227 | 227 | static const struct regmap_range da9063l_bb_readable_ranges[] = { |
| @@ -241,7 +241,7 @@ static const struct regmap_range da9063l_bb_writeable_ranges[] = { · 13 unmodified lines | ||
| 241 | 241 | regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19), |
| 242 | 242 | }; |
| 243 | 243 | |
| 244 | −static const struct regmap_range da9063l_bb_volatile_ranges[] = { | |
| 244 | +static const struct regmap_range da9063l_bb_da_volatile_ranges[] = { | |
| 245 | 245 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D), |
| 246 | 246 | regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B), |
| 247 | 247 | regmap_reg_range(DA9063_REG_CONTROL_E, DA9063_REG_CONTROL_F), |
| @@ -263,9 +263,64 @@ static const struct regmap_access_table da9063l_bb_writeable_table = { · 15 unmodified lines | ||
| 263 | 263 | .n_yes_ranges = ARRAY_SIZE(da9063l_bb_writeable_ranges), |
| 264 | 264 | }; |
| 265 | 265 | |
| 266 | −static const struct regmap_access_table da9063l_bb_volatile_table = { | |
| 267 | − .yes_ranges = da9063l_bb_volatile_ranges, | |
| 268 | − .n_yes_ranges = ARRAY_SIZE(da9063l_bb_volatile_ranges), | |
| 266 | +static const struct regmap_access_table da9063l_bb_da_volatile_table = { | |
| 267 | + .yes_ranges = da9063l_bb_da_volatile_ranges, | |
| 268 | + .n_yes_ranges = ARRAY_SIZE(da9063l_bb_da_volatile_ranges), | |
| 269 | +}; | |
| 270 | + | |
| 271 | +static const struct regmap_range da9063_da_readable_ranges[] = { | |
| 272 | + regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_BB_REG_SECOND_D), | |
| 273 | + regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31), | |
| 274 | + regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW), | |
| 275 | + regmap_reg_range(DA9063_REG_T_OFFSET, DA9063_BB_REG_GP_ID_11), | |
| 276 | + regmap_reg_range(DA9063_REG_DEVICE_ID, DA9063_REG_VARIANT_ID), | |
| 277 | +}; | |
| 278 | + | |
| 279 | +static const struct regmap_range da9063_da_writeable_ranges[] = { | |
| 280 | + regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_PAGE_CON), | |
| 281 | + regmap_reg_range(DA9063_REG_FAULT_LOG, DA9063_REG_VSYS_MON), | |
| 282 | + regmap_reg_range(DA9063_REG_COUNT_S, DA9063_BB_REG_ALARM_Y), | |
| 283 | + regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31), | |
| 284 | + regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW), | |
| 285 | + regmap_reg_range(DA9063_REG_CONFIG_I, DA9063_BB_REG_MON_REG_4), | |
| 286 | + regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_11), | |
| 287 | +}; | |
| 288 | + | |
| 289 | +static const struct regmap_access_table da9063_da_readable_table = { | |
| 290 | + .yes_ranges = da9063_da_readable_ranges, | |
| 291 | + .n_yes_ranges = ARRAY_SIZE(da9063_da_readable_ranges), | |
| 292 | +}; | |
| 293 | + | |
| 294 | +static const struct regmap_access_table da9063_da_writeable_table = { | |
| 295 | + .yes_ranges = da9063_da_writeable_ranges, | |
| 296 | + .n_yes_ranges = ARRAY_SIZE(da9063_da_writeable_ranges), | |
| 297 | +}; | |
| 298 | + | |
| 299 | +static const struct regmap_range da9063l_da_readable_ranges[] = { | |
| 300 | + regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_MON_A10_RES), | |
| 301 | + regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31), | |
| 302 | + regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW), | |
| 303 | + regmap_reg_range(DA9063_REG_T_OFFSET, DA9063_BB_REG_GP_ID_11), | |
| 304 | + regmap_reg_range(DA9063_REG_DEVICE_ID, DA9063_REG_VARIANT_ID), | |
| 305 | +}; | |
| 306 | + | |
| 307 | +static const struct regmap_range da9063l_da_writeable_ranges[] = { | |
| 308 | + regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_PAGE_CON), | |
| 309 | + regmap_reg_range(DA9063_REG_FAULT_LOG, DA9063_REG_VSYS_MON), | |
| 310 | + regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31), | |
| 311 | + regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW), | |
| 312 | + regmap_reg_range(DA9063_REG_CONFIG_I, DA9063_BB_REG_MON_REG_4), | |
| 313 | + regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_11), | |
| 314 | +}; | |
| 315 | + | |
| 316 | +static const struct regmap_access_table da9063l_da_readable_table = { | |
| 317 | + .yes_ranges = da9063l_da_readable_ranges, | |
| 318 | + .n_yes_ranges = ARRAY_SIZE(da9063l_da_readable_ranges), | |
| 319 | +}; | |
| 320 | + | |
| 321 | +static const struct regmap_access_table da9063l_da_writeable_table = { | |
| 322 | + .yes_ranges = da9063l_da_writeable_ranges, | |
| 323 | + .n_yes_ranges = ARRAY_SIZE(da9063l_da_writeable_ranges), | |
| 269 | 324 | }; |
| 270 | 325 | |
| 271 | 326 | static const struct regmap_range_cfg da9063_range_cfg[] = { |
| @@ -333,7 +388,15 @@ static int da9063_i2c_probe(struct i2c_client *i2c, · 61 unmodified lines | ||
| 333 | 388 | da9063_regmap_config.wr_table = |
| 334 | 389 | &da9063_bb_writeable_table; |
| 335 | 390 | da9063_regmap_config.volatile_table = |
| 336 | − &da9063_bb_volatile_table; | |
| 391 | + &da9063_bb_da_volatile_table; | |
| 392 | + break; | |
| 393 | + case PMIC_DA9063_DA: | |
| 394 | + da9063_regmap_config.rd_table = | |
| 395 | + &da9063_da_readable_table; | |
| 396 | + da9063_regmap_config.wr_table = | |
| 397 | + &da9063_da_writeable_table; | |
| 398 | + da9063_regmap_config.volatile_table = | |
| 399 | + &da9063_bb_da_volatile_table; | |
| 337 | 400 | break; |
| 338 | 401 | default: |
| 339 | 402 | dev_err(da9063->dev, |
| @@ -350,7 +413,15 @@ static int da9063_i2c_probe(struct i2c_client *i2c, · 10 unmodified lines | ||
| 350 | 413 | da9063_regmap_config.wr_table = |
| 351 | 414 | &da9063l_bb_writeable_table; |
| 352 | 415 | da9063_regmap_config.volatile_table = |
| 353 | − &da9063l_bb_volatile_table; | |
| 416 | + &da9063l_bb_da_volatile_table; | |
| 417 | + break; | |
| 418 | + case PMIC_DA9063_DA: | |
| 419 | + da9063_regmap_config.rd_table = | |
| 420 | + &da9063l_da_readable_table; | |
| 421 | + da9063_regmap_config.wr_table = | |
| 422 | + &da9063l_da_writeable_table; | |
| 423 | + da9063_regmap_config.volatile_table = | |
| 424 | + &da9063l_bb_da_volatile_table; | |
| 354 | 425 | break; |
| 355 | 426 | default: |
| 356 | 427 | dev_err(da9063->dev, |
| @@ -35,6 +35,7 @@ enum da9063_variant_codes { · 34 unmodified lines | ||
| 35 | 35 | PMIC_DA9063_AD = 0x3, |
| 36 | 36 | PMIC_DA9063_BB = 0x5, |
| 37 | 37 | PMIC_DA9063_CA = 0x6, |
| 38 | + PMIC_DA9063_DA = 0x7, | |
| 38 | 39 | }; |
| 39 | 40 | |
| 40 | 41 | /* Interrupts */ |