nvmem: Move and rename ->fixup_cell_info()
authorMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 15 Dec 2023 11:15:31 +0000 (11:15 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Dec 2023 12:30:07 +0000 (13:30 +0100)
This hook is meant to be used by any provider and instantiating a layout
just for this is useless. Let's instead move this hook to the nvmem
device and add it to the config structure to be easily shared by the
providers.

While at moving this hook, rename it ->fixup_dt_cell_info() to clarify
its main intended purpose.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20231215111536.316972-6-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvmem/core.c
drivers/nvmem/imx-ocotp.c
drivers/nvmem/internals.h
drivers/nvmem/mtk-efuse.c
include/linux/nvmem-provider.h

index f63db5e01fca96dbdc9d469fdd9d4026eb43346f..a885713d6b4b7247b5505c0be0249b7b7c323412 100644 (file)
@@ -675,7 +675,6 @@ static int nvmem_validate_keepouts(struct nvmem_device *nvmem)
 
 static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
 {
-       struct nvmem_layout *layout = nvmem->layout;
        struct device *dev = &nvmem->dev;
        struct device_node *child;
        const __be32 *addr;
@@ -705,8 +704,8 @@ static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_nod
 
                info.np = of_node_get(child);
 
-               if (layout && layout->fixup_cell_info)
-                       layout->fixup_cell_info(nvmem, layout, &info);
+               if (nvmem->fixup_dt_cell_info)
+                       nvmem->fixup_dt_cell_info(nvmem, &info);
 
                ret = nvmem_add_one_cell(nvmem, &info);
                kfree(info.name);
@@ -895,6 +894,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
 
        kref_init(&nvmem->refcnt);
        INIT_LIST_HEAD(&nvmem->cells);
+       nvmem->fixup_dt_cell_info = config->fixup_dt_cell_info;
 
        nvmem->owner = config->owner;
        if (!nvmem->owner && config->dev->driver)
index f1e202efaa4970beb864d8f626624004c26fe014..79dd4fda03295ac3e2574480c595e6c5d370ba50 100644 (file)
@@ -583,17 +583,12 @@ static const struct of_device_id imx_ocotp_dt_ids[] = {
 };
 MODULE_DEVICE_TABLE(of, imx_ocotp_dt_ids);
 
-static void imx_ocotp_fixup_cell_info(struct nvmem_device *nvmem,
-                                     struct nvmem_layout *layout,
-                                     struct nvmem_cell_info *cell)
+static void imx_ocotp_fixup_dt_cell_info(struct nvmem_device *nvmem,
+                                        struct nvmem_cell_info *cell)
 {
        cell->read_post_process = imx_ocotp_cell_pp;
 }
 
-static struct nvmem_layout imx_ocotp_layout = {
-       .fixup_cell_info = imx_ocotp_fixup_cell_info,
-};
-
 static int imx_ocotp_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
@@ -619,7 +614,7 @@ static int imx_ocotp_probe(struct platform_device *pdev)
        imx_ocotp_nvmem_config.size = 4 * priv->params->nregs;
        imx_ocotp_nvmem_config.dev = dev;
        imx_ocotp_nvmem_config.priv = priv;
-       imx_ocotp_nvmem_config.layout = &imx_ocotp_layout;
+       imx_ocotp_nvmem_config.fixup_dt_cell_info = &imx_ocotp_fixup_dt_cell_info;
 
        priv->config = &imx_ocotp_nvmem_config;
 
index ce353831cd65552bd24c507e2538393970a64820..893553fbdf51aa565066d3ed3bffd3974c10b72a 100644 (file)
@@ -23,6 +23,8 @@ struct nvmem_device {
        struct bin_attribute    eeprom;
        struct device           *base_dev;
        struct list_head        cells;
+       void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
+                                  struct nvmem_cell_info *cell);
        const struct nvmem_keepout *keepout;
        unsigned int            nkeepout;
        nvmem_reg_read_t        reg_read;
index 87c94686cfd216ac19ac8cc02cdfc08bc192668e..84f05b40a4112ed7878e94504de48eec3737e3ad 100644 (file)
@@ -45,9 +45,8 @@ static int mtk_efuse_gpu_speedbin_pp(void *context, const char *id, int index,
        return 0;
 }
 
-static void mtk_efuse_fixup_cell_info(struct nvmem_device *nvmem,
-                                     struct nvmem_layout *layout,
-                                     struct nvmem_cell_info *cell)
+static void mtk_efuse_fixup_dt_cell_info(struct nvmem_device *nvmem,
+                                        struct nvmem_cell_info *cell)
 {
        size_t sz = strlen(cell->name);
 
@@ -61,10 +60,6 @@ static void mtk_efuse_fixup_cell_info(struct nvmem_device *nvmem,
                cell->read_post_process = mtk_efuse_gpu_speedbin_pp;
 }
 
-static struct nvmem_layout mtk_efuse_layout = {
-       .fixup_cell_info = mtk_efuse_fixup_cell_info,
-};
-
 static int mtk_efuse_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
@@ -91,7 +86,7 @@ static int mtk_efuse_probe(struct platform_device *pdev)
        econfig.priv = priv;
        econfig.dev = dev;
        if (pdata->uses_post_processing)
-               econfig.layout = &mtk_efuse_layout;
+               econfig.fixup_dt_cell_info = &mtk_efuse_fixup_dt_cell_info;
        nvmem = devm_nvmem_register(dev, &econfig);
 
        return PTR_ERR_OR_ZERO(nvmem);
index 3939991b3c5f9f2bf6596a06e1b98d60dc2fafea..36415a602d9eb8cb3c97787c91b4df5dfec0a295 100644 (file)
@@ -83,6 +83,8 @@ struct nvmem_cell_info {
  * @cells:     Optional array of pre-defined NVMEM cells.
  * @ncells:    Number of elements in cells.
  * @add_legacy_fixed_of_cells: Read fixed NVMEM cells from old OF syntax.
+ * @fixup_dt_cell_info: Will be called before a cell is added. Can be
+ *             used to modify the nvmem_cell_info.
  * @keepout:   Optional array of keepout ranges (sorted ascending by start).
  * @nkeepout:  Number of elements in the keepout array.
  * @type:      Type of the nvmem storage
@@ -113,6 +115,8 @@ struct nvmem_config {
        const struct nvmem_cell_info    *cells;
        int                     ncells;
        bool                    add_legacy_fixed_of_cells;
+       void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
+                                  struct nvmem_cell_info *cell);
        const struct nvmem_keepout *keepout;
        unsigned int            nkeepout;
        enum nvmem_type         type;
@@ -158,8 +162,6 @@ struct nvmem_cell_table {
  * @of_match_table:    Open firmware match table.
  * @add_cells:         Called to populate the layout using
  *                     nvmem_add_one_cell().
- * @fixup_cell_info:   Will be called before a cell is added. Can be
- *                     used to modify the nvmem_cell_info.
  * @owner:             Pointer to struct module.
  * @node:              List node.
  *
@@ -172,9 +174,6 @@ struct nvmem_layout {
        const char *name;
        const struct of_device_id *of_match_table;
        int (*add_cells)(struct device *dev, struct nvmem_device *nvmem);
-       void (*fixup_cell_info)(struct nvmem_device *nvmem,
-                               struct nvmem_layout *layout,
-                               struct nvmem_cell_info *cell);
 
        /* private */
        struct module *owner;