2023-11-24 19:38:35

by Miquel Raynal

[permalink] [raw]
Subject: [PATCH] nvmem: Do not expect fixed layouts to grab a layout driver

Two series lived in parallel for some time, which led to this situation:
- The nvmem-layout container is used for dynamic layouts
- We now expect fixed layouts to also use the nvmem-layout container but
this does not require any additional driver, the support is built-in the
nvmem core.

Ensure we don't refuse to probe for wrong reasons.

Fixes: 27f699e578b1 ("nvmem: core: add support for fixed cells *layout*")
Cc: [email protected]
Reported-by: Luca Ceresoli <[email protected]>
Signed-off-by: Miquel Raynal <[email protected]>
---

Please note this is a temporary fix as this piece of code is going to
disappear when the NVMEM layouts 'as devices' series gets in.

drivers/nvmem/core.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index bf42b7e826db..608b352a7d91 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -796,6 +796,12 @@ static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem)
if (!layout_np)
return NULL;

+ /* Fixed layouts don't have a matching driver */
+ if (of_device_is_compatible(layout_np, "fixed-layout")) {
+ of_node_put(layout_np);
+ return NULL;
+ }
+
/*
* In case the nvmem device was built-in while the layout was built as a
* module, we shall manually request the layout driver loading otherwise
--
2.34.1


2023-11-24 23:40:30

by Rafał Miłecki

[permalink] [raw]
Subject: Re: [PATCH] nvmem: Do not expect fixed layouts to grab a layout driver

On 2023-11-24 20:38, Miquel Raynal wrote:
> Two series lived in parallel for some time, which led to this
> situation:
> - The nvmem-layout container is used for dynamic layouts
> - We now expect fixed layouts to also use the nvmem-layout container
> but
> this does not require any additional driver, the support is built-in
> the
> nvmem core.
>
> Ensure we don't refuse to probe for wrong reasons.

I pushed a pretty much identical patch to OpenWrt (I just forgot
of_node_put()): commit 61f674df4f0c ("kernel: nvmem: fix "fixed-layout"
& support "mac-base""):
https://git.openwrt.org/?p=openwrt/openwrt.git;a=commitdiff;h=61f674df4f0ce2b1c53b0b7f6b0c1d03d99838c0

It's in use since July and seems to do the trick just fine.

Thanks for submitting this fix.


> Fixes: 27f699e578b1 ("nvmem: core: add support for fixed cells
> *layout*")
> Cc: [email protected]
> Reported-by: Luca Ceresoli <[email protected]>
> Signed-off-by: Miquel Raynal <[email protected]>

Tested-by: Rafał Miłecki <[email protected]>

--
Rafał Miłecki

2023-11-27 08:13:41

by Luca Ceresoli

[permalink] [raw]
Subject: Re: [PATCH] nvmem: Do not expect fixed layouts to grab a layout driver

Hi Miquèl,

On Fri, 24 Nov 2023 20:38:14 +0100
Miquel Raynal <[email protected]> wrote:

> Two series lived in parallel for some time, which led to this situation:
> - The nvmem-layout container is used for dynamic layouts
> - We now expect fixed layouts to also use the nvmem-layout container but
> this does not require any additional driver, the support is built-in the
> nvmem core.
>
> Ensure we don't refuse to probe for wrong reasons.
>
> Fixes: 27f699e578b1 ("nvmem: core: add support for fixed cells *layout*")
> Cc: [email protected]
> Reported-by: Luca Ceresoli <[email protected]>
> Signed-off-by: Miquel Raynal <[email protected]>

[fixes probing I2C EEPROMs using fixed-layout]
Tested-by: Luca Ceresoli <[email protected]>
Reviewed-by: Luca Ceresoli <[email protected]>

--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com