For the nvmem device ID it was only possible to specify NVMEM_DEVID_NONE which translates to DEVICE_ID_SINGLE or NVMEM_DEVID_AUTO which translates to DEVICE_ID_DYNAMIC. All other values default to DEVICE_ID_DYNAMIC.
Explicitly allow to set a fixed device ID so that the caller can fully specify the name under which the new nvmem device appears. The special case is when no config->name is given. In this we use "nvmem" as device name, but we also have to ignore config->id. Signed-off-by: Sascha Hauer <[email protected]> --- drivers/nvmem/core.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index a96aaf0b5a7215d05e976133aacfee1fdf9c36f7..8e1cf400e5d83ad6d53d21a705913cee72bfd4ab 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -487,15 +487,23 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config) if (config->read_only || !config->reg_write || of_property_read_bool(np, "read-only")) nvmem->read_only = true; - dev_set_name(&nvmem->dev, "%s", config->name ? : "nvmem"); - switch (config->id) { - case NVMEM_DEVID_NONE: - nvmem->dev.id = DEVICE_ID_SINGLE; + if (config->name) { + dev_set_name(&nvmem->dev, "%s", config->name); + + switch (config->id) { + case NVMEM_DEVID_NONE: + nvmem->dev.id = DEVICE_ID_SINGLE; + break; + case NVMEM_DEVID_AUTO: + nvmem->dev.id = DEVICE_ID_DYNAMIC; + break; + default: + nvmem->dev.id = config->id; break; - case NVMEM_DEVID_AUTO: - default: + } + } else { + dev_set_name(&nvmem->dev, "nvmem"); nvmem->dev.id = DEVICE_ID_DYNAMIC; - break; } rval = register_device(&nvmem->dev); -- 2.47.3
