aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Kandagatla2020-07-22 11:06:58 +0100
committerGreg Kroah-Hartman2020-07-29 17:12:08 +0200
commit731aa3fae8137ebca83a01d20fbf3effb4798fc8 (patch)
treedaa1267835c8dc0f1014b28646e0dacb46ddf72f
parent5037d368b2c2c90e9432d477e5562dce1c33d5c9 (diff)
nvmem: core: add support to auto devid
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>
-rw-r--r--drivers/nvmem/core.c10
-rw-r--r--include/linux/nvmem-provider.h3
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index d6bacc878500..6cd3edb2eaf6 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -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") ||
diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h
index 6d6f8e5d24c9..06409a6c40bc 100644
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
@@ -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
*