nvmem: core: add support to auto devid
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Wed, 22 Jul 2020 10:06:58 +0000 (11:06 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Jul 2020 15:12:08 +0000 (17:12 +0200)
For nvmem providers which have multiple instances, it is required
to suffix the provider name with proper id, so that they do not
confict for the same name. Currently the core does not handle
this case properly eventhough core already has logic to generate the id.

This patch add new devid type NVMEM_DEVID_AUTO for providers to be
able to allow core to assign id and append it to provier name.

Reported-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Link: https://lore.kernel.org/r/20200722100705.7772-8-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvmem/core.c
include/linux/nvmem-provider.h

index d6bacc8785009f74523a2c52226545dfa91630cd..6cd3edb2eaf65feebcadf4f4cfce40a22e355eaf 100644 (file)
@@ -635,12 +635,18 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
        if (!config->no_of_node)
                nvmem->dev.of_node = config->dev->of_node;
 
-       if (config->id == -1 && config->name) {
+       switch (config->id) {
+       case NVMEM_DEVID_NONE:
                dev_set_name(&nvmem->dev, "%s", config->name);
-       } else {
+               break;
+       case NVMEM_DEVID_AUTO:
+               dev_set_name(&nvmem->dev, "%s%d", config->name, nvmem->id);
+               break;
+       default:
                dev_set_name(&nvmem->dev, "%s%d",
                             config->name ? : "nvmem",
                             config->name ? config->id : nvmem->id);
+               break;
        }
 
        nvmem->read_only = device_property_present(config->dev, "read-only") ||
index 6d6f8e5d24c97ca71bf7863fdf98c3bdb0ee9a2b..06409a6c40bcb2a0ca7e8ba9408fce159b0d9b6a 100644 (file)
@@ -27,6 +27,9 @@ enum nvmem_type {
        NVMEM_TYPE_BATTERY_BACKED,
 };
 
+#define NVMEM_DEVID_NONE       (-1)
+#define NVMEM_DEVID_AUTO       (-2)
+
 /**
  * struct nvmem_config - NVMEM device configuration
  *