At the moment only DEVICE_ID_DYNAMIC is supported. Add support for NVMEM_DEVID_NONE to allow static device names via of-aliases and to align our core with Linux.
While on it fix the nvmem_register_cdev() by using the dev_name() which honors the DEVICE_ID_* cases else we end up with different names for the devfs and the device itself. The dev_dbg() message can be dropped as well since the register_device() can print this message too. Signed-off-by: Marco Felsch <m.fel...@pengutronix.de> --- drivers/nvmem/core.c | 16 +++++++++++----- include/linux/nvmem-provider.h | 4 ++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 328e2839cc47326de53a5950ffaa676926882c32..29a18cbeb517bdf23a8620f19a0ec21a1ac1b4e2 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -410,17 +410,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->dev.id = DEVICE_ID_DYNAMIC; - - dev_dbg(nvmem->dev.parent, "Registering nvmem device %s\n", config->name); + dev_set_name(&nvmem->dev, "%s", config->name ? : "nvmem"); + switch (config->id) { + case NVMEM_DEVID_NONE: + nvmem->dev.id = DEVICE_ID_SINGLE; + break; + case NVMEM_DEVID_AUTO: + default: + nvmem->dev.id = DEVICE_ID_DYNAMIC; + break; + } rval = register_device(&nvmem->dev); if (rval) goto err_remove_cells; if (!config->cdev) { - rval = nvmem_register_cdev(nvmem, config->name); + rval = nvmem_register_cdev(nvmem, dev_name(&nvmem->dev)); if (rval) goto err_unregister; } diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h index a7d1653afb5805adb4edb6b136bac13d3c63797c..08e16d49497a9e71f55e3827a0b28c6c6f9e24ae 100644 --- a/include/linux/nvmem-provider.h +++ b/include/linux/nvmem-provider.h @@ -25,6 +25,9 @@ typedef int (*nvmem_cell_post_process_t)(void *priv, const char *id, unsigned int offset, void *buf, size_t bytes); +#define NVMEM_DEVID_NONE (-1) +#define NVMEM_DEVID_AUTO (-2) + /** * struct nvmem_cell_info - NVMEM cell description * @name: Name. @@ -62,6 +65,7 @@ struct nvmem_cell_info { struct nvmem_config { struct device *dev; const char *name; + int id; bool read_only; struct cdev *cdev; nvmem_reg_read_t reg_read; -- 2.39.5