diff options
author | Nicolin Chen <b42378@freescale.com> | 2013-08-29 02:27:32 -0400 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-16 09:01:32 -0400 |
commit | 5ff35f4e6d12accdbb95f3086f15da9c03fe750b (patch) | |
tree | ab2a78b5e88cdeda5f7eb525495eafc0093579df | |
parent | 77d97ad1bb77c0e3c60b9781a06b61d4b4667de1 (diff) |
ENGR00276567-5 mfd: si476x: Add two involatile registers support
These two regsiters would be used by si476x-codec driver. Setting them as
involatile registers would allow codec driver to set the value into cache
and to sync them after power-up.
Signed-off-by: Nicolin Chen <b42378@freescale.com>
-rw-r--r-- | drivers/mfd/si476x-prop.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/mfd/si476x-prop.c b/drivers/mfd/si476x-prop.c index cfeffa6e15d9..3ff2cae9cbab 100644 --- a/drivers/mfd/si476x-prop.c +++ b/drivers/mfd/si476x-prop.c | |||
@@ -217,15 +217,36 @@ static int si476x_core_regmap_read(void *context, unsigned int reg, | |||
217 | return 0; | 217 | return 0; |
218 | } | 218 | } |
219 | 219 | ||
220 | static bool si476x_core_regmap_volatile_register(struct device *dev, unsigned int reg) | ||
221 | { | ||
222 | switch (reg) { | ||
223 | case SI476X_PROP_DIGITAL_IO_OUTPUT_SAMPLE_RATE: | ||
224 | case SI476X_PROP_DIGITAL_IO_OUTPUT_FORMAT: | ||
225 | return false; | ||
226 | default: | ||
227 | return true; | ||
228 | } | ||
229 | |||
230 | return true; | ||
231 | } | ||
232 | |||
233 | /* These two register is used by the codec, so add reg_default here */ | ||
234 | static struct reg_default si476x_core_reg[] = { | ||
235 | { 0x202, 0xBB80 }, | ||
236 | { 0x203, 0x1700 }, | ||
237 | }; | ||
220 | 238 | ||
221 | static const struct regmap_config si476x_regmap_config = { | 239 | static const struct regmap_config si476x_regmap_config = { |
222 | .reg_bits = 16, | 240 | .reg_bits = 16, |
223 | .val_bits = 16, | 241 | .val_bits = 16, |
224 | 242 | ||
225 | .max_register = 0x4003, | 243 | .max_register = 0x4003, |
244 | .reg_defaults = si476x_core_reg, | ||
245 | .num_reg_defaults = ARRAY_SIZE(si476x_core_reg), | ||
226 | 246 | ||
227 | .writeable_reg = si476x_core_regmap_writable_register, | 247 | .writeable_reg = si476x_core_regmap_writable_register, |
228 | .readable_reg = si476x_core_regmap_readable_register, | 248 | .readable_reg = si476x_core_regmap_readable_register, |
249 | .volatile_reg = si476x_core_regmap_volatile_register, | ||
229 | 250 | ||
230 | .reg_read = si476x_core_regmap_read, | 251 | .reg_read = si476x_core_regmap_read, |
231 | .reg_write = si476x_core_regmap_write, | 252 | .reg_write = si476x_core_regmap_write, |