]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ENGR00276567-5 mfd: si476x: Add two involatile registers support
authorNicolin Chen <b42378@freescale.com>
Thu, 29 Aug 2013 06:27:32 +0000 (14:27 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Mon, 16 Jun 2014 15:43:16 +0000 (17:43 +0200)
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>
drivers/mfd/si476x-prop.c

index cfeffa6e15d92533412f34c9e8e8691de71c4a71..3ff2cae9cbab49af78724e8fe2f7146ae304e55e 100644 (file)
@@ -217,15 +217,36 @@ static int si476x_core_regmap_read(void *context, unsigned int reg,
        return 0;
 }
 
+static bool si476x_core_regmap_volatile_register(struct device *dev, unsigned int reg)
+{
+       switch (reg) {
+       case SI476X_PROP_DIGITAL_IO_OUTPUT_SAMPLE_RATE:
+       case SI476X_PROP_DIGITAL_IO_OUTPUT_FORMAT:
+               return false;
+       default:
+               return true;
+       }
+
+       return true;
+}
+
+/* These two register is used by the codec, so add reg_default here */
+static struct reg_default si476x_core_reg[] = {
+       { 0x202, 0xBB80 },
+       { 0x203, 0x1700 },
+};
 
 static const struct regmap_config si476x_regmap_config = {
        .reg_bits = 16,
        .val_bits = 16,
 
        .max_register = 0x4003,
+       .reg_defaults = si476x_core_reg,
+       .num_reg_defaults = ARRAY_SIZE(si476x_core_reg),
 
        .writeable_reg = si476x_core_regmap_writable_register,
        .readable_reg = si476x_core_regmap_readable_register,
+       .volatile_reg = si476x_core_regmap_volatile_register,
 
        .reg_read = si476x_core_regmap_read,
        .reg_write = si476x_core_regmap_write,