mfd: kempld-core: Fix 'assignment of read-only location' error
authorStephen Rothwell <sfr@canb.auug.org.au>
Fri, 17 Jul 2020 03:41:54 +0000 (13:41 +1000)
committerLee Jones <lee.jones@linaro.org>
Thu, 13 Aug 2020 06:49:54 +0000 (07:49 +0100)
 drivers/mfd/kempld-core.c: In function 'kempld_register_cells_generic':
 drivers/mfd/kempld-core.c:105:13: error: assignment of read-only location 'devs[i++]'
  105 |   devs[i++] = kempld_devs[KEMPLD_I2C];
      |             ^
 drivers/mfd/kempld-core.c:108:13: error: assignment of read-only location 'devs[i++]'
  108 |   devs[i++] = kempld_devs[KEMPLD_WDT];
      |             ^
 drivers/mfd/kempld-core.c:111:13: error: assignment of read-only location 'devs[i++]'
  111 |   devs[i++] = kempld_devs[KEMPLD_GPIO];
      |             ^
 drivers/mfd/kempld-core.c:114:13: error: assignment of read-only location 'devs[i++]'
  114 |   devs[i++] = kempld_devs[KEMPLD_UART];
      |             ^

Fixes: e49aa9a9bd22 ("mfd: core: Make a best effort attempt to match devices with the correct of_nodes")
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/kempld-core.c

index f48e21d..52bec01 100644 (file)
@@ -79,39 +79,31 @@ enum kempld_cells {
        KEMPLD_UART,
 };
 
-static const struct mfd_cell kempld_devs[] = {
-       [KEMPLD_I2C] = {
-               .name = "kempld-i2c",
-       },
-       [KEMPLD_WDT] = {
-               .name = "kempld-wdt",
-       },
-       [KEMPLD_GPIO] = {
-               .name = "kempld-gpio",
-       },
-       [KEMPLD_UART] = {
-               .name = "kempld-uart",
-       },
+static const char *kempld_dev_names[] = {
+       [KEMPLD_I2C] = "kempld-i2c",
+       [KEMPLD_WDT] = "kempld-wdt",
+       [KEMPLD_GPIO] = "kempld-gpio",
+       [KEMPLD_UART] = "kempld-uart",
 };
 
-#define KEMPLD_MAX_DEVS        ARRAY_SIZE(kempld_devs)
+#define KEMPLD_MAX_DEVS        ARRAY_SIZE(kempld_dev_names)
 
 static int kempld_register_cells_generic(struct kempld_device_data *pld)
 {
-       struct mfd_cell devs[KEMPLD_MAX_DEVS];
+       struct mfd_cell devs[KEMPLD_MAX_DEVS] = {};
        int i = 0;
 
        if (pld->feature_mask & KEMPLD_FEATURE_BIT_I2C)
-               devs[i++] = kempld_devs[KEMPLD_I2C];
+               devs[i++].name = kempld_dev_names[KEMPLD_I2C];
 
        if (pld->feature_mask & KEMPLD_FEATURE_BIT_WATCHDOG)
-               devs[i++] = kempld_devs[KEMPLD_WDT];
+               devs[i++].name = kempld_dev_names[KEMPLD_WDT];
 
        if (pld->feature_mask & KEMPLD_FEATURE_BIT_GPIO)
-               devs[i++] = kempld_devs[KEMPLD_GPIO];
+               devs[i++].name = kempld_dev_names[KEMPLD_GPIO];
 
        if (pld->feature_mask & KEMPLD_FEATURE_MASK_UART)
-               devs[i++] = kempld_devs[KEMPLD_UART];
+               devs[i++].name = kempld_dev_names[KEMPLD_UART];
 
        return mfd_add_devices(pld->dev, -1, devs, i, NULL, 0, NULL);
 }