History

mfd: da9063: Add support for latest DA silicon revision

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.

Adam Thomson committed 6 years ago

Commit 9ece3601 parent 091c6112 files · +82 −10Browse files

Unified · Split

2 files
  1. drivers/mfd/da9063-i2c.c +81 −10
  2. include/linux/mfd/da9063/core.h +1 −0
drivers/mfd/da9063-i2c.c+81−10
@@ -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
200static const struct regmap_range da9063_bb_volatile_ranges[] = {200static 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
222static const struct regmap_access_table da9063_bb_volatile_table = {222static 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
227static const struct regmap_range da9063l_bb_readable_ranges[] = {227static 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
244static const struct regmap_range da9063l_bb_volatile_ranges[] = {244static 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
266static const struct regmap_access_table da9063l_bb_volatile_table = {266static 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
271static 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
279static 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
289static 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
294static 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
299static 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
307static 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
316static 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
321static 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
271static const struct regmap_range_cfg da9063_range_cfg[] = {326static 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,
include/linux/mfd/da9063/core.h+1−0
@@ -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 */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t