Merge tag 'regmap-v5.0' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 23 Oct 2018 00:17:27 +0000 (01:17 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 23 Oct 2018 00:17:27 +0000 (01:17 +0100)
Pull regmap updates from Mark Brown:
 "A small update with a couple of new APIs that are useful for some
  small sets of devices:

   - Split up the single_rw flagging to map read and write separately as
     some devices support bulk operations for only read or only write.

   - Add a write version of the noinc API.

   - Clean up the code for LOG_DEVICE a bit"

* tag 'regmap-v5.0' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
  regmap: use less #ifdef for LOG_DEVICE
  regmap: Add regmap_noinc_write API
  regmap: split up regmap_config.use_single_rw
  regmap: fix comment for regmap.use_single_write

35 files changed:
drivers/base/regmap/internal.h
drivers/base/regmap/regmap.c
drivers/edac/altera_edac.c
drivers/hwmon/lm75.c
drivers/hwmon/lm95245.c
drivers/hwmon/tmp102.c
drivers/hwmon/tmp108.c
drivers/iio/light/apds9960.c
drivers/iio/light/max44000.c
drivers/iio/temperature/mlx90632.c
drivers/input/touchscreen/tsc200x-core.c
drivers/mfd/altera-a10sr.c
drivers/mfd/da9052-spi.c
drivers/mfd/mc13xxx-spi.c
drivers/mfd/twl6040.c
drivers/regulator/ltc3589.c
drivers/regulator/ltc3676.c
include/linux/regmap.h
sound/hda/hdac_regmap.c
sound/soc/codecs/cs35l33.c
sound/soc/codecs/cs35l35.c
sound/soc/codecs/cs43130.c
sound/soc/codecs/es8328.c
sound/soc/codecs/rt1305.c
sound/soc/codecs/rt5514.c
sound/soc/codecs/rt5616.c
sound/soc/codecs/rt5640.c
sound/soc/codecs/rt5645.c
sound/soc/codecs/rt5651.c
sound/soc/codecs/rt5660.c
sound/soc/codecs/rt5663.c
sound/soc/codecs/rt5665.c
sound/soc/codecs/rt5668.c
sound/soc/codecs/rt5670.c
sound/soc/codecs/rt5682.c

index a6bf34d6394ed2e48e37d24727af19842e1a9b1a..a98fced9bff8dd2803fe71b555900e074baed498 100644 (file)
@@ -94,11 +94,13 @@ struct regmap {
        bool (*readable_reg)(struct device *dev, unsigned int reg);
        bool (*volatile_reg)(struct device *dev, unsigned int reg);
        bool (*precious_reg)(struct device *dev, unsigned int reg);
+       bool (*writeable_noinc_reg)(struct device *dev, unsigned int reg);
        bool (*readable_noinc_reg)(struct device *dev, unsigned int reg);
        const struct regmap_access_table *wr_table;
        const struct regmap_access_table *rd_table;
        const struct regmap_access_table *volatile_table;
        const struct regmap_access_table *precious_table;
+       const struct regmap_access_table *wr_noinc_table;
        const struct regmap_access_table *rd_noinc_table;
 
        int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
@@ -149,7 +151,7 @@ struct regmap {
 
        /* if set, converts bulk read to single read */
        bool use_single_read;
-       /* if set, converts bulk read to single read */
+       /* if set, converts bulk write to single write */
        bool use_single_write;
        /* if set, the device supports multi write mode */
        bool can_multi_write;
@@ -183,6 +185,7 @@ bool regmap_writeable(struct regmap *map, unsigned int reg);
 bool regmap_readable(struct regmap *map, unsigned int reg);
 bool regmap_volatile(struct regmap *map, unsigned int reg);
 bool regmap_precious(struct regmap *map, unsigned int reg);
+bool regmap_writeable_noinc(struct regmap *map, unsigned int reg);
 bool regmap_readable_noinc(struct regmap *map, unsigned int reg);
 
 int _regmap_write(struct regmap *map, unsigned int reg,
index 0360a90ad6b623530f0053dbc3b3d29748266aae..4f822e087def2dc498fdf436c5428ffabe836d25 100644 (file)
  */
 #undef LOG_DEVICE
 
+#ifdef LOG_DEVICE
+static inline bool regmap_should_log(struct regmap *map)
+{
+       return (map->dev && strcmp(dev_name(map->dev), LOG_DEVICE) == 0);
+}
+#else
+static inline bool regmap_should_log(struct regmap *map) { return false; }
+#endif
+
+
 static int _regmap_update_bits(struct regmap *map, unsigned int reg,
                               unsigned int mask, unsigned int val,
                               bool *change, bool force_write);
@@ -168,6 +178,17 @@ bool regmap_precious(struct regmap *map, unsigned int reg)
        return false;
 }
 
+bool regmap_writeable_noinc(struct regmap *map, unsigned int reg)
+{
+       if (map->writeable_noinc_reg)
+               return map->writeable_noinc_reg(map->dev, reg);
+
+       if (map->wr_noinc_table)
+               return regmap_check_range_table(map, reg, map->wr_noinc_table);
+
+       return true;
+}
+
 bool regmap_readable_noinc(struct regmap *map, unsigned int reg)
 {
        if (map->readable_noinc_reg)
@@ -762,8 +783,8 @@ struct regmap *__regmap_init(struct device *dev,
                map->reg_stride_order = ilog2(map->reg_stride);
        else
                map->reg_stride_order = -1;
-       map->use_single_read = config->use_single_rw || !bus || !bus->read;
-       map->use_single_write = config->use_single_rw || !bus || !bus->write;
+       map->use_single_read = config->use_single_read || !bus || !bus->read;
+       map->use_single_write = config->use_single_write || !bus || !bus->write;
        map->can_multi_write = config->can_multi_write && bus && bus->write;
        if (bus) {
                map->max_raw_read = bus->max_raw_read;
@@ -777,11 +798,13 @@ struct regmap *__regmap_init(struct device *dev,
        map->rd_table = config->rd_table;
        map->volatile_table = config->volatile_table;
        map->precious_table = config->precious_table;
+       map->wr_noinc_table = config->wr_noinc_table;
        map->rd_noinc_table = config->rd_noinc_table;
        map->writeable_reg = config->writeable_reg;
        map->readable_reg = config->readable_reg;
        map->volatile_reg = config->volatile_reg;
        map->precious_reg = config->precious_reg;
+       map->writeable_noinc_reg = config->writeable_noinc_reg;
        map->readable_noinc_reg = config->readable_noinc_reg;
        map->cache_type = config->cache_type;
 
@@ -1298,6 +1321,7 @@ int regmap_reinit_cache(struct regmap *map, const struct regmap_config *config)
        map->readable_reg = config->readable_reg;
        map->volatile_reg = config->volatile_reg;
        map->precious_reg = config->precious_reg;
+       map->writeable_noinc_reg = config->writeable_noinc_reg;
        map->readable_noinc_reg = config->readable_noinc_reg;
        map->cache_type = config->cache_type;
 
@@ -1755,10 +1779,8 @@ int _regmap_write(struct regmap *map, unsigned int reg,
                }
        }
 
-#ifdef LOG_DEVICE
-       if (map->dev && strcmp(dev_name(map->dev), LOG_DEVICE) == 0)
+       if (regmap_should_log(map))
                dev_info(map->dev, "%x <= %x\n", reg, val);
-#endif
 
        trace_regmap_reg_write(map, reg, val);
 
@@ -1897,6 +1919,69 @@ int regmap_raw_write(struct regmap *map, unsigned int reg,
 }
 EXPORT_SYMBOL_GPL(regmap_raw_write);
 
+/**
+ * regmap_noinc_write(): Write data from a register without incrementing the
+ *                     register number
+ *
+ * @map: Register map to write to
+ * @reg: Register to write to
+ * @val: Pointer to data buffer
+ * @val_len: Length of output buffer in bytes.
+ *
+ * The regmap API usually assumes that bulk bus write operations will write a
+ * range of registers. Some devices have certain registers for which a write
+ * operation can write to an internal FIFO.
+ *
+ * The target register must be volatile but registers after it can be
+ * completely unrelated cacheable registers.
+ *
+ * This will attempt multiple writes as required to write val_len bytes.
+ *
+ * A value of zero will be returned on success, a negative errno will be
+ * returned in error cases.
+ */
+int regmap_noinc_write(struct regmap *map, unsigned int reg,
+                     const void *val, size_t val_len)
+{
+       size_t write_len;
+       int ret;
+
+       if (!map->bus)
+               return -EINVAL;
+       if (!map->bus->write)
+               return -ENOTSUPP;
+       if (val_len % map->format.val_bytes)
+               return -EINVAL;
+       if (!IS_ALIGNED(reg, map->reg_stride))
+               return -EINVAL;
+       if (val_len == 0)
+               return -EINVAL;
+
+       map->lock(map->lock_arg);
+
+       if (!regmap_volatile(map, reg) || !regmap_writeable_noinc(map, reg)) {
+               ret = -EINVAL;
+               goto out_unlock;
+       }
+
+       while (val_len) {
+               if (map->max_raw_write && map->max_raw_write < val_len)
+                       write_len = map->max_raw_write;
+               else
+                       write_len = val_len;
+               ret = _regmap_raw_write(map, reg, val, write_len);
+               if (ret)
+                       goto out_unlock;
+               val = ((u8 *)val) + write_len;
+               val_len -= write_len;
+       }
+
+out_unlock:
+       map->unlock(map->lock_arg);
+       return ret;
+}
+EXPORT_SYMBOL_GPL(regmap_noinc_write);
+
 /**
  * regmap_field_update_bits_base() - Perform a read/modify/write cycle a
  *                                   register field.
@@ -2450,10 +2535,8 @@ static int _regmap_read(struct regmap *map, unsigned int reg,
 
        ret = map->reg_read(context, reg, val);
        if (ret == 0) {
-#ifdef LOG_DEVICE
-               if (map->dev && strcmp(dev_name(map->dev), LOG_DEVICE) == 0)
+               if (regmap_should_log(map))
                        dev_info(map->dev, "%x => %x\n", reg, *val);
-#endif
 
                trace_regmap_reg_read(map, reg, *val);
 
index 5762c3c383f2ee05d67641bc1e2bd18f60c07f92..ab7c5a937ab00b19c6557b063d7c3c106e4a05cb 100644 (file)
@@ -599,7 +599,8 @@ static const struct regmap_config s10_sdram_regmap_cfg = {
        .volatile_reg = s10_sdram_volatile_reg,
        .reg_read = s10_protected_reg_read,
        .reg_write = s10_protected_reg_write,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static int altr_s10_sdram_probe(struct platform_device *pdev)
index e6e5a1080f0905bedf38e62a1b6161f6effd103b..c7f20543b2bf00e3f7120fa1350d6e460431efed 100644 (file)
@@ -254,7 +254,8 @@ static const struct regmap_config lm75_regmap_config = {
        .volatile_reg = lm75_is_volatile_reg,
        .val_format_endian = REGMAP_ENDIAN_BIG,
        .cache_type = REGCACHE_RBTREE,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static void lm75_remove(void *data)
index 27cb06d65594680f483ccbe461b18a2441f30650..996b502461754b81acc5846ec48f6234c09d807d 100644 (file)
@@ -541,7 +541,8 @@ static const struct regmap_config lm95245_regmap_config = {
        .writeable_reg = lm95245_is_writeable_reg,
        .volatile_reg = lm95245_is_volatile_reg,
        .cache_type = REGCACHE_RBTREE,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static const u32 lm95245_chip_config[] = {
index dfc40c740d07b7a2029777b5f01a8bbd145439b0..6778283e36f9ae5f489d5e59c935313f7376027a 100644 (file)
@@ -212,7 +212,8 @@ static const struct regmap_config tmp102_regmap_config = {
        .volatile_reg = tmp102_is_volatile_reg,
        .val_format_endian = REGMAP_ENDIAN_BIG,
        .cache_type = REGCACHE_RBTREE,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static int tmp102_probe(struct i2c_client *client,
index 91bb946392869e5002097fdfa2f371dacc466f25..429bfeae4ca835555208afc943974bac457761fc 100644 (file)
@@ -345,7 +345,8 @@ static const struct regmap_config tmp108_regmap_config = {
        .volatile_reg = tmp108_is_volatile_reg,
        .val_format_endian = REGMAP_ENDIAN_BIG,
        .cache_type = REGCACHE_RBTREE,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static int tmp108_probe(struct i2c_client *client,
index 1f112ae15f3c37c9dfda80485a0a3f5a7feef683..b09b8b60bd83b6afe443086c373e841c23cae948 100644 (file)
@@ -206,7 +206,8 @@ static const struct regmap_config apds9960_regmap_config = {
        .name = APDS9960_REGMAP_NAME,
        .reg_bits = 8,
        .val_bits = 8,
-       .use_single_rw = 1,
+       .use_single_read = true,
+       .use_single_write = true,
 
        .volatile_table = &apds9960_volatile_table,
        .precious_table = &apds9960_precious_table,
index bcdb0eb9e5371f05a35ca91eb1daaa7337ac12f1..4067dff2ff6aca49ab5cfea1f869702f431f6396 100644 (file)
@@ -473,17 +473,18 @@ static bool max44000_precious_reg(struct device *dev, unsigned int reg)
 }
 
 static const struct regmap_config max44000_regmap_config = {
-       .reg_bits       = 8,
-       .val_bits       = 8,
-
-       .max_register   = MAX44000_REG_PRX_DATA,
-       .readable_reg   = max44000_readable_reg,
-       .writeable_reg  = max44000_writeable_reg,
-       .volatile_reg   = max44000_volatile_reg,
-       .precious_reg   = max44000_precious_reg,
-
-       .use_single_rw  = 1,
-       .cache_type     = REGCACHE_RBTREE,
+       .reg_bits               = 8,
+       .val_bits               = 8,
+
+       .max_register           = MAX44000_REG_PRX_DATA,
+       .readable_reg           = max44000_readable_reg,
+       .writeable_reg          = max44000_writeable_reg,
+       .volatile_reg           = max44000_volatile_reg,
+       .precious_reg           = max44000_precious_reg,
+
+       .use_single_read        = true,
+       .use_single_write       = true,
+       .cache_type             = REGCACHE_RBTREE,
 };
 
 static irqreturn_t max44000_trigger_handler(int irq, void *p)
index 9851311aa3fdc95795f4bcd75adb12583ade858d..be03be719efe4e0c374195a6e4a186cdc689f2b3 100644 (file)
@@ -140,7 +140,8 @@ static const struct regmap_config mlx90632_regmap = {
        .rd_table = &mlx90632_readable_regs_tbl,
        .wr_table = &mlx90632_writeable_regs_tbl,
 
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .reg_format_endian = REGMAP_ENDIAN_BIG,
        .val_format_endian = REGMAP_ENDIAN_BIG,
        .cache_type = REGCACHE_RBTREE,
index e0fde590df8e5f4a7c749ee2b40e5e0b8750edff..62973ac0138154bc9aa6d553d96732de0efc165a 100644 (file)
@@ -68,7 +68,8 @@ const struct regmap_config tsc200x_regmap_config = {
        .read_flag_mask = TSC200X_REG_READ,
        .write_flag_mask = TSC200X_REG_PND0,
        .wr_table = &tsc200x_writable_table,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 EXPORT_SYMBOL_GPL(tsc200x_regmap_config);
 
index 96e7d2cb7b898204ee3ed2728fde8358a026b969..400e0b51844b7a5d873158d8bb1209449b6dd747 100644 (file)
@@ -108,7 +108,8 @@ static const struct regmap_config altr_a10sr_regmap_config = {
 
        .cache_type = REGCACHE_NONE,
 
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .read_flag_mask = 1,
        .write_flag_mask = 0,
 
index abfb11818fdc5c80053e43ad4f22e0f8d7ba4e45..fdae1288bc6d9a7947c7762824d24198df83a3f8 100644 (file)
@@ -46,7 +46,8 @@ static int da9052_spi_probe(struct spi_device *spi)
        config.reg_bits = 7;
        config.pad_bits = 1;
        config.val_bits = 8;
-       config.use_single_rw = 1;
+       config.use_single_read = true;
+       config.use_single_write = true;
 
        da9052->regmap = devm_regmap_init_spi(spi, &config);
        if (IS_ERR(da9052->regmap)) {
index cbc1e5ed599c096420bee388372b02cfa31bce90..ee3411cc5ce4109e3404a2eb11f0087c44ab99cb 100644 (file)
@@ -57,7 +57,8 @@ static const struct regmap_config mc13xxx_regmap_spi_config = {
        .max_register = MC13XXX_NUMREGS,
 
        .cache_type = REGCACHE_NONE,
-       .use_single_rw = 1,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static int mc13xxx_spi_read(void *context, const void *reg, size_t reg_size,
index dd19f17a1b637543965dd94e64d0d44b9178f64c..7c3c5fd5fcd04790dea4be42ab087c0a61582c4c 100644 (file)
@@ -613,7 +613,8 @@ static const struct regmap_config twl6040_regmap_config = {
        .writeable_reg = twl6040_writeable_reg,
 
        .cache_type = REGCACHE_RBTREE,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static const struct regmap_irq twl6040_irqs[] = {
index 18d5b01ddcb20dc3f8929db2c6adda3344985735..63f724f260ef76b538c0c93b55d6bdbbdf6a6deb 100644 (file)
@@ -404,7 +404,8 @@ static const struct regmap_config ltc3589_regmap_config = {
        .max_register = LTC3589_L2DTV2,
        .reg_defaults = ltc3589_reg_defaults,
        .num_reg_defaults = ARRAY_SIZE(ltc3589_reg_defaults),
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .cache_type = REGCACHE_RBTREE,
 };
 
index 9dec1609ff666c1047403ace5976b7487275b7c0..71fd0f2a4b76e6d427bdb8a3d183909d6f39e725 100644 (file)
@@ -321,7 +321,8 @@ static const struct regmap_config ltc3676_regmap_config = {
        .readable_reg = ltc3676_readable_reg,
        .volatile_reg = ltc3676_volatile_reg,
        .max_register = LTC3676_CLIRQ,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .cache_type = REGCACHE_RBTREE,
 };
 
index 379505a53722fdeef727edc9c9d6c58cdbef4d4d..a367d59c301d8610f55f13e1210ae7253b41cd4e 100644 (file)
@@ -268,6 +268,13 @@ typedef void (*regmap_unlock)(void *);
  *                field is NULL but precious_table (see below) is not, the
  *                check is performed on such table (a register is precious if
  *                it belongs to one of the ranges specified by precious_table).
+ * @writeable_noinc_reg: Optional callback returning true if the register
+ *                     supports multiple write operations without incrementing
+ *                     the register number. If this field is NULL but
+ *                     wr_noinc_table (see below) is not, the check is
+ *                     performed on such table (a register is no increment
+ *                     writeable if it belongs to one of the ranges specified
+ *                     by wr_noinc_table).
  * @readable_noinc_reg: Optional callback returning true if the register
  *                     supports multiple read operations without incrementing
  *                     the register number. If this field is NULL but
@@ -302,6 +309,7 @@ typedef void (*regmap_unlock)(void *);
  * @rd_table:     As above, for read access.
  * @volatile_table: As above, for volatile registers.
  * @precious_table: As above, for precious registers.
+ * @wr_noinc_table: As above, for no increment writeable registers.
  * @rd_noinc_table: As above, for no increment readable registers.
  * @reg_defaults: Power on reset values for registers (for use with
  *                register cache support).
@@ -315,9 +323,12 @@ typedef void (*regmap_unlock)(void *);
  *                   masks are used.
  * @zero_flag_mask: If set, read_flag_mask and write_flag_mask are used even
  *                   if they are both empty.
- * @use_single_rw: If set, converts the bulk read and write operations into
- *                 a series of single read and write operations. This is useful
- *                 for device that does not support bulk read and write.
+ * @use_single_read: If set, converts the bulk read operation into a series of
+ *                   single read operations. This is useful for a device that
+ *                   does not support  bulk read.
+ * @use_single_write: If set, converts the bulk write operation into a series of
+ *                    single write operations. This is useful for a device that
+ *                    does not support bulk write.
  * @can_multi_write: If set, the device supports the multi write mode of bulk
  *                   write operations, if clear multi write requests will be
  *                   split into individual write operations
@@ -352,6 +363,7 @@ struct regmap_config {
        bool (*readable_reg)(struct device *dev, unsigned int reg);
        bool (*volatile_reg)(struct device *dev, unsigned int reg);
        bool (*precious_reg)(struct device *dev, unsigned int reg);
+       bool (*writeable_noinc_reg)(struct device *dev, unsigned int reg);
        bool (*readable_noinc_reg)(struct device *dev, unsigned int reg);
 
        bool disable_locking;
@@ -369,6 +381,7 @@ struct regmap_config {
        const struct regmap_access_table *rd_table;
        const struct regmap_access_table *volatile_table;
        const struct regmap_access_table *precious_table;
+       const struct regmap_access_table *wr_noinc_table;
        const struct regmap_access_table *rd_noinc_table;
        const struct reg_default *reg_defaults;
        unsigned int num_reg_defaults;
@@ -380,7 +393,8 @@ struct regmap_config {
        unsigned long write_flag_mask;
        bool zero_flag_mask;
 
-       bool use_single_rw;
+       bool use_single_read;
+       bool use_single_write;
        bool can_multi_write;
 
        enum regmap_endian reg_format_endian;
@@ -979,6 +993,8 @@ int regmap_write(struct regmap *map, unsigned int reg, unsigned int val);
 int regmap_write_async(struct regmap *map, unsigned int reg, unsigned int val);
 int regmap_raw_write(struct regmap *map, unsigned int reg,
                     const void *val, size_t val_len);
+int regmap_noinc_write(struct regmap *map, unsigned int reg,
+                    const void *val, size_t val_len);
 int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val,
                        size_t val_count);
 int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *regs,
@@ -1222,6 +1238,13 @@ static inline int regmap_raw_write_async(struct regmap *map, unsigned int reg,
        return -EINVAL;
 }
 
+static inline int regmap_noinc_write(struct regmap *map, unsigned int reg,
+                                   const void *val, size_t val_len)
+{
+       WARN_ONCE(1, "regmap API is disabled");
+       return -EINVAL;
+}
+
 static inline int regmap_bulk_write(struct regmap *map, unsigned int reg,
                                    const void *val, size_t val_count)
 {
index 419e285e0226d64176a0140537d10c29b66356e5..996dbc8502244a4b47c8743a39532bf2a579eb27 100644 (file)
@@ -359,7 +359,8 @@ static const struct regmap_config hda_regmap_cfg = {
        .cache_type = REGCACHE_RBTREE,
        .reg_read = hda_reg_read,
        .reg_write = hda_reg_write,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 /**
index 668cd3754209d944b2a908973032538069686df8..e9b7f72d880b9efe7c603890c640435d832c8ee6 100644 (file)
@@ -857,7 +857,8 @@ static const struct regmap_config cs35l33_regmap = {
        .readable_reg = cs35l33_readable_register,
        .writeable_reg = cs35l33_writeable_register,
        .cache_type = REGCACHE_RBTREE,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static int __maybe_unused cs35l33_runtime_resume(struct device *dev)
index bd6226bde45f67a32e5829e5dd71e5c2429a45e5..9f4a59871cee72b2011acf20d8167e12933ec2fc 100644 (file)
@@ -1105,7 +1105,8 @@ static struct regmap_config cs35l35_regmap = {
        .readable_reg = cs35l35_readable_register,
        .precious_reg = cs35l35_precious_register,
        .cache_type = REGCACHE_RBTREE,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static irqreturn_t cs35l35_irq(int irq, void *data)
index 80dc421971548295cff83066e7a003cbe450ccae..3f7b255587e6aa83446e7fff7444e75217a802f8 100644 (file)
@@ -2362,7 +2362,9 @@ static const struct regmap_config cs43130_regmap = {
        .precious_reg           = cs43130_precious_register,
        .volatile_reg           = cs43130_volatile_register,
        .cache_type             = REGCACHE_RBTREE,
-       .use_single_rw          = true, /* needed for regcache_sync */
+       /* needed for regcache_sync */
+       .use_single_read        = true,
+       .use_single_write       = true,
 };
 
 static u16 const cs43130_dc_threshold[CS43130_DC_THRESHOLD] = {
index e9fc2fd97d2f4f6b13c46e7b0a58e03d2bc1a7ff..4b5827dc23aac3c622c7afdefac3d9ec19ac7e22 100644 (file)
@@ -824,7 +824,8 @@ const struct regmap_config es8328_regmap_config = {
        .val_bits       = 8,
        .max_register   = ES8328_REG_MAX,
        .cache_type     = REGCACHE_RBTREE,
-       .use_single_rw  = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 EXPORT_SYMBOL_GPL(es8328_regmap_config);
 
index c4452efc79700a1e62f260f8362dec175e447294..c2c8a68cec97e0512ffc74387318ee3d6e00892c 100644 (file)
@@ -963,7 +963,8 @@ static const struct regmap_config rt1305_regmap = {
        .num_reg_defaults = ARRAY_SIZE(rt1305_reg),
        .ranges = rt1305_ranges,
        .num_ranges = ARRAY_SIZE(rt1305_ranges),
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 #if defined(CONFIG_OF)
index 32fe76c3134ab41df5e8bbb443e2e5f1b7d4a54c..a67de68b6da6c6cf52690bc03f248d6d2cb5591b 100644 (file)
@@ -1201,7 +1201,8 @@ static const struct regmap_config rt5514_regmap = {
        .cache_type = REGCACHE_RBTREE,
        .reg_defaults = rt5514_reg,
        .num_reg_defaults = ARRAY_SIZE(rt5514_reg),
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static const struct i2c_device_id rt5514_i2c_id[] = {
index 3dc795f444ce9bb529e2366b091f480bfe0f9345..36a9f1c56c8ddd84af18f1326a6e4ea6808f3756 100644 (file)
@@ -1313,7 +1313,8 @@ static const struct snd_soc_component_driver soc_component_dev_rt5616 = {
 static const struct regmap_config rt5616_regmap = {
        .reg_bits = 8,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .max_register = RT5616_DEVICE_ID + 1 + (ARRAY_SIZE(rt5616_ranges) *
                                               RT5616_PR_SPACING),
        .volatile_reg = rt5616_volatile_register,
index 27770143ae8f2210b6461dff39ef90cf2b690f86..fc530481a6e47691a8fe387c98e7d7dcd3a7139e 100644 (file)
@@ -2704,7 +2704,8 @@ static const struct snd_soc_component_driver soc_component_dev_rt5640 = {
 static const struct regmap_config rt5640_regmap = {
        .reg_bits = 8,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 
        .max_register = RT5640_VENDOR_ID2 + 1 + (ARRAY_SIZE(rt5640_ranges) *
                                               RT5640_PR_SPACING),
index 1dc70f452c1b9505d8e0e2952f46fcf2982195c4..be674688dc406124413907e877031eb261c856f4 100644 (file)
@@ -3559,7 +3559,8 @@ static const struct snd_soc_component_driver soc_component_dev_rt5645 = {
 static const struct regmap_config rt5645_regmap = {
        .reg_bits = 8,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .max_register = RT5645_VENDOR_ID2 + 1 + (ARRAY_SIZE(rt5645_ranges) *
                                               RT5645_PR_SPACING),
        .volatile_reg = rt5645_volatile_register,
@@ -3575,7 +3576,8 @@ static const struct regmap_config rt5645_regmap = {
 static const struct regmap_config rt5650_regmap = {
        .reg_bits = 8,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .max_register = RT5645_VENDOR_ID2 + 1 + (ARRAY_SIZE(rt5645_ranges) *
                                               RT5645_PR_SPACING),
        .volatile_reg = rt5645_volatile_register,
@@ -3592,7 +3594,8 @@ static const struct regmap_config temp_regmap = {
        .name="nocache",
        .reg_bits = 8,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .max_register = RT5645_VENDOR_ID2 + 1,
        .cache_type = REGCACHE_NONE,
 };
index 985852fd972387025e46a418d2081c24de218892..5bcedbc7eb4a9458d003677dd817e18ab9a6175c 100644 (file)
@@ -2124,7 +2124,8 @@ static const struct regmap_config rt5651_regmap = {
        .num_reg_defaults = ARRAY_SIZE(rt5651_reg),
        .ranges = rt5651_ranges,
        .num_ranges = ARRAY_SIZE(rt5651_ranges),
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 #if defined(CONFIG_OF)
index 20a755137e637c2dbafc7d1268a937fca90d28a4..27f7445b2432005e236f47f82de1c576316c598f 100644 (file)
@@ -1217,7 +1217,8 @@ static const struct snd_soc_component_driver soc_component_dev_rt5660 = {
 static const struct regmap_config rt5660_regmap = {
        .reg_bits = 8,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 
        .max_register = RT5660_VENDOR_ID2 + 1 + (ARRAY_SIZE(rt5660_ranges) *
                                               RT5660_PR_SPACING),
index 9bd24ad42240716fe3326dcc7f712d5dfb078a63..70441661ea4a669d3f862564c92827942a366c2f 100644 (file)
@@ -3252,7 +3252,8 @@ static const struct snd_soc_component_driver soc_component_dev_rt5663 = {
 static const struct regmap_config rt5663_v2_regmap = {
        .reg_bits = 16,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .max_register = 0x07fa,
        .volatile_reg = rt5663_v2_volatile_register,
        .readable_reg = rt5663_v2_readable_register,
@@ -3264,7 +3265,8 @@ static const struct regmap_config rt5663_v2_regmap = {
 static const struct regmap_config rt5663_regmap = {
        .reg_bits = 16,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .max_register = 0x03f3,
        .volatile_reg = rt5663_volatile_register,
        .readable_reg = rt5663_readable_register,
@@ -3277,7 +3279,8 @@ static const struct regmap_config temp_regmap = {
        .name = "nocache",
        .reg_bits = 16,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .max_register = 0x03f3,
        .cache_type = REGCACHE_NONE,
 };
index 6ba99f5ed3f42e54e52af662b6fbe647f25b6f0a..f2ad3a4c3b7f7650d03ae7b1df082ce4b6e2be1a 100644 (file)
@@ -4633,7 +4633,8 @@ static const struct regmap_config rt5665_regmap = {
        .cache_type = REGCACHE_RBTREE,
        .reg_defaults = rt5665_reg,
        .num_reg_defaults = ARRAY_SIZE(rt5665_reg),
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static const struct i2c_device_id rt5665_i2c_id[] = {
index 3c19d03f2446b55ac9778a647526baee91b1d0f4..3f6046a66b567aaf99f77e10ea6017c1b3cdc9f4 100644 (file)
@@ -2375,7 +2375,8 @@ static const struct regmap_config rt5668_regmap = {
        .cache_type = REGCACHE_RBTREE,
        .reg_defaults = rt5668_reg,
        .num_reg_defaults = ARRAY_SIZE(rt5668_reg),
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static const struct i2c_device_id rt5668_i2c_id[] = {
index 732ef928b25d9c729772f96060a4bb852678572e..f0f8debc282931c58f8808f735979687e357aaee 100644 (file)
@@ -2814,7 +2814,8 @@ static const struct snd_soc_component_driver soc_component_dev_rt5670 = {
 static const struct regmap_config rt5670_regmap = {
        .reg_bits = 8,
        .val_bits = 16,
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
        .max_register = RT5670_VENDOR_ID2 + 1 + (ARRAY_SIZE(rt5670_ranges) *
                                               RT5670_PR_SPACING),
        .volatile_reg = rt5670_volatile_register,
index afe7d5b193133a27bd6dd8470e166d6dc0fc07b2..8a3052874c2982ad177d805f708e55fbfeb29488 100644 (file)
@@ -2419,7 +2419,8 @@ static const struct regmap_config rt5682_regmap = {
        .cache_type = REGCACHE_RBTREE,
        .reg_defaults = rt5682_reg,
        .num_reg_defaults = ARRAY_SIZE(rt5682_reg),
-       .use_single_rw = true,
+       .use_single_read = true,
+       .use_single_write = true,
 };
 
 static const struct i2c_device_id rt5682_i2c_id[] = {