diff options
author | Marek Vasut <marek.vasut@gmail.com> | 2018-06-11 07:58:47 -0400 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2018-07-04 02:16:50 -0400 |
commit | 4bd6ad0adb078db7cc774b5be69e55f4c9374693 (patch) | |
tree | 58f549e04b5dd8d0a3c239b4254b06dc7952fec5 | |
parent | 8ae81814cca96a4b7f66dcf1aeb904a0a077f7f4 (diff) |
mfd: da9063: Add custom regmap for DA9063L
The DA9063L does not have an RTC. Add custom regmap for DA9063L to
prevent access into that register block.
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
-rw-r--r-- | drivers/mfd/da9063-i2c.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/mfd/da9063-i2c.c b/drivers/mfd/da9063-i2c.c index 6fe9c3464b41..a449a9263dd7 100644 --- a/drivers/mfd/da9063-i2c.c +++ b/drivers/mfd/da9063-i2c.c | |||
@@ -118,6 +118,50 @@ static const struct regmap_access_table da9063_bb_volatile_table = { | |||
118 | .n_yes_ranges = ARRAY_SIZE(da9063_bb_volatile_ranges), | 118 | .n_yes_ranges = ARRAY_SIZE(da9063_bb_volatile_ranges), |
119 | }; | 119 | }; |
120 | 120 | ||
121 | static const struct regmap_range da9063l_bb_readable_ranges[] = { | ||
122 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_MON_A10_RES), | ||
123 | regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31), | ||
124 | regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW), | ||
125 | regmap_reg_range(DA9063_REG_T_OFFSET, DA9063_BB_REG_GP_ID_19), | ||
126 | regmap_reg_range(DA9063_REG_CHIP_ID, DA9063_REG_CHIP_VARIANT), | ||
127 | }; | ||
128 | |||
129 | static const struct regmap_range da9063l_bb_writeable_ranges[] = { | ||
130 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_PAGE_CON), | ||
131 | regmap_reg_range(DA9063_REG_FAULT_LOG, DA9063_REG_VSYS_MON), | ||
132 | regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31), | ||
133 | regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW), | ||
134 | regmap_reg_range(DA9063_REG_CONFIG_I, DA9063_BB_REG_MON_REG_4), | ||
135 | regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19), | ||
136 | }; | ||
137 | |||
138 | static const struct regmap_range da9063l_bb_volatile_ranges[] = { | ||
139 | regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D), | ||
140 | regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B), | ||
141 | regmap_reg_range(DA9063_REG_CONTROL_E, DA9063_REG_CONTROL_F), | ||
142 | regmap_reg_range(DA9063_REG_BCORE2_CONT, DA9063_REG_LDO11_CONT), | ||
143 | regmap_reg_range(DA9063_REG_DVC_1, DA9063_REG_ADC_MAN), | ||
144 | regmap_reg_range(DA9063_REG_ADC_RES_L, DA9063_REG_MON_A10_RES), | ||
145 | regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_SEQ), | ||
146 | regmap_reg_range(DA9063_REG_EN_32K, DA9063_REG_EN_32K), | ||
147 | regmap_reg_range(DA9063_BB_REG_MON_REG_5, DA9063_BB_REG_MON_REG_6), | ||
148 | }; | ||
149 | |||
150 | static const struct regmap_access_table da9063l_bb_readable_table = { | ||
151 | .yes_ranges = da9063l_bb_readable_ranges, | ||
152 | .n_yes_ranges = ARRAY_SIZE(da9063l_bb_readable_ranges), | ||
153 | }; | ||
154 | |||
155 | static const struct regmap_access_table da9063l_bb_writeable_table = { | ||
156 | .yes_ranges = da9063l_bb_writeable_ranges, | ||
157 | .n_yes_ranges = ARRAY_SIZE(da9063l_bb_writeable_ranges), | ||
158 | }; | ||
159 | |||
160 | static const struct regmap_access_table da9063l_bb_volatile_table = { | ||
161 | .yes_ranges = da9063l_bb_volatile_ranges, | ||
162 | .n_yes_ranges = ARRAY_SIZE(da9063l_bb_volatile_ranges), | ||
163 | }; | ||
164 | |||
121 | static const struct regmap_range_cfg da9063_range_cfg[] = { | 165 | static const struct regmap_range_cfg da9063_range_cfg[] = { |
122 | { | 166 | { |
123 | .range_min = DA9063_REG_PAGE_CON, | 167 | .range_min = DA9063_REG_PAGE_CON, |
@@ -164,6 +208,10 @@ static int da9063_i2c_probe(struct i2c_client *i2c, | |||
164 | da9063_regmap_config.rd_table = &da9063_ad_readable_table; | 208 | da9063_regmap_config.rd_table = &da9063_ad_readable_table; |
165 | da9063_regmap_config.wr_table = &da9063_ad_writeable_table; | 209 | da9063_regmap_config.wr_table = &da9063_ad_writeable_table; |
166 | da9063_regmap_config.volatile_table = &da9063_ad_volatile_table; | 210 | da9063_regmap_config.volatile_table = &da9063_ad_volatile_table; |
211 | } else if (da9063->type == PMIC_TYPE_DA9063L) { | ||
212 | da9063_regmap_config.rd_table = &da9063l_bb_readable_table; | ||
213 | da9063_regmap_config.wr_table = &da9063l_bb_writeable_table; | ||
214 | da9063_regmap_config.volatile_table = &da9063l_bb_volatile_table; | ||
167 | } else { | 215 | } else { |
168 | da9063_regmap_config.rd_table = &da9063_bb_readable_table; | 216 | da9063_regmap_config.rd_table = &da9063_bb_readable_table; |
169 | da9063_regmap_config.wr_table = &da9063_bb_writeable_table; | 217 | da9063_regmap_config.wr_table = &da9063_bb_writeable_table; |