aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolin Chen <b42378@freescale.com>2013-08-29 02:27:32 -0400
committerNitin Garg <nitin.garg@freescale.com>2014-04-16 09:01:32 -0400
commit5ff35f4e6d12accdbb95f3086f15da9c03fe750b (patch)
treeab2a78b5e88cdeda5f7eb525495eafc0093579df
parent77d97ad1bb77c0e3c60b9781a06b61d4b4667de1 (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.c21
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
220static 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 */
234static struct reg_default si476x_core_reg[] = {
235 { 0x202, 0xBB80 },
236 { 0x203, 0x1700 },
237};
220 238
221static const struct regmap_config si476x_regmap_config = { 239static 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,