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 | regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19), | 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 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D), | 201 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D), |
| 202 | regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B), | 202 | regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B), |
| 203 | regmap_reg_range(DA9063_REG_CONTROL_E, DA9063_REG_CONTROL_F), | 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 | .n_yes_ranges = ARRAY_SIZE(da9063_bb_writeable_ranges), | 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 = { | 222 | static const struct regmap_access_table da9063_bb_da_volatile_table = { |
| 223 | .yes_ranges = da9063_bb_volatile_ranges, | 223 | .yes_ranges = da9063_bb_da_volatile_ranges, |
| 224 | .n_yes_ranges = ARRAY_SIZE(da9063_bb_volatile_ranges), | 224 | .n_yes_ranges = ARRAY_SIZE(da9063_bb_da_volatile_ranges), |
| 225 | }; | 225 | }; |
| 226 | 226 | ||
| 227 | static const struct regmap_range da9063l_bb_readable_ranges[] = { | 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 | regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19), | 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 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D), | 245 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D), |
| 246 | regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B), | 246 | regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B), |
| 247 | regmap_reg_range(DA9063_REG_CONTROL_E, DA9063_REG_CONTROL_F), | 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 | .n_yes_ranges = ARRAY_SIZE(da9063l_bb_writeable_ranges), | 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 = { | 266 | static const struct regmap_access_table da9063l_bb_da_volatile_table = { |
| 267 | .yes_ranges = da9063l_bb_volatile_ranges, | 267 | .yes_ranges = da9063l_bb_da_volatile_ranges, |
| 268 | .n_yes_ranges = ARRAY_SIZE(da9063l_bb_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 | static const struct regmap_range_cfg da9063_range_cfg[] = { | 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 | da9063_regmap_config.wr_table = | 388 | da9063_regmap_config.wr_table = |
| 334 | &da9063_bb_writeable_table; | 389 | &da9063_bb_writeable_table; |
| 335 | da9063_regmap_config.volatile_table = | 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 | break; | 400 | break; |
| 338 | default: | 401 | default: |
| 339 | dev_err(da9063->dev, | 402 | dev_err(da9063->dev, |
| @@ -350,7 +413,15 @@ static int da9063_i2c_probe(struct i2c_client *i2c, · 10 unmodified lines | |||
| 350 | da9063_regmap_config.wr_table = | 413 | da9063_regmap_config.wr_table = |
| 351 | &da9063l_bb_writeable_table; | 414 | &da9063l_bb_writeable_table; |
| 352 | da9063_regmap_config.volatile_table = | 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 | break; | 425 | break; |
| 355 | default: | 426 | default: |
| 356 | dev_err(da9063->dev, | 427 | dev_err(da9063->dev, |
| @@ -35,6 +35,7 @@ enum da9063_variant_codes { · 34 unmodified lines | |||
| 35 | PMIC_DA9063_AD = 0x3, | 35 | PMIC_DA9063_AD = 0x3, |
| 36 | PMIC_DA9063_BB = 0x5, | 36 | PMIC_DA9063_BB = 0x5, |
| 37 | PMIC_DA9063_CA = 0x6, | 37 | PMIC_DA9063_CA = 0x6, |
| 38 | PMIC_DA9063_DA = 0x7, | ||
| 38 | }; | 39 | }; |
| 39 | 40 | ||
| 40 | /* Interrupts */ | 41 | /* Interrupts */ |