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
197197 regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19),
198198 };
199199
200−static const struct regmap_range da9063_bb_volatile_ranges[] = {
200+static const struct regmap_range da9063_bb_da_volatile_ranges[] = {
201201 regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D),
202202 regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B),
203203 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
219219 .n_yes_ranges = ARRAY_SIZE(da9063_bb_writeable_ranges),
220220 };
221221
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),
225225 };
226226
227227 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
241241 regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19),
242242 };
243243
244−static const struct regmap_range da9063l_bb_volatile_ranges[] = {
244+static const struct regmap_range da9063l_bb_da_volatile_ranges[] = {
245245 regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D),
246246 regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B),
247247 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
263263 .n_yes_ranges = ARRAY_SIZE(da9063l_bb_writeable_ranges),
264264 };
265265
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),
269324 };
270325
271326 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
333388 da9063_regmap_config.wr_table =
334389 &da9063_bb_writeable_table;
335390 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;
337400 break;
338401 default:
339402 dev_err(da9063->dev,
@@ -350,7 +413,15 @@ static int da9063_i2c_probe(struct i2c_client *i2c, · 10 unmodified lines
350413 da9063_regmap_config.wr_table =
351414 &da9063l_bb_writeable_table;
352415 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;
354425 break;
355426 default:
356427 dev_err(da9063->dev,
include/linux/mfd/da9063/core.h+1−0
@@ -35,6 +35,7 @@ enum da9063_variant_codes { · 34 unmodified lines
3535 PMIC_DA9063_AD = 0x3,
3636 PMIC_DA9063_BB = 0x5,
3737 PMIC_DA9063_CA = 0x6,
38+ PMIC_DA9063_DA = 0x7,
3839 };
3940
4041 /* 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