aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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,