Thread (34 messages) 34 messages, 5 authors, 2023-02-07

Re: [PATCH v5 00/21] nvmem: core: introduce NVMEM layouts

From: Alexander Stein <hidden>
Date: 2023-01-05 12:22:18
Also in: linux-devicetree, linux-doc, lkml
Subsystem: nvmem framework, the rest · Maintainers: Srinivas Kandagatla, Linus Torvalds

Hi Michael,

Am Donnerstag, 5. Januar 2023, 13:11:37 CET schrieb Michael Walle:
Hi Alexander,

thanks for debugging. I'm not yet sure what is going wrong, so
I have some more questions below.
quoted
quoted
This causes the following errors on existing boards (imx8mq-tqma8mq-
mba8mx.dtb):
root@tqma8-common:~# uname -r
6.2.0-rc2-next-20230105
quoted
OF: /soc@0: could not get #nvmem-cell-cells for /soc@0/bus@30000000/
efuse@30350000/soc-uid@4
quoted
OF: /soc@0/bus@30800000/ethernet@30be0000: could not get
#nvmem-cell-cells
for /soc@0/bus@30000000/efuse@30350000/mac-address@90

These are caused because '#nvmem-cell-cells = <0>;' is not explicitly
set in
DT.
quoted
TI DP83867 30be0000.ethernet-1:0e: error -EINVAL: failed to get nvmem
cell
io_impedance_ctrl
quoted
TI DP83867: probe of 30be0000.ethernet-1:0e failed with error -22
These are caused because of_nvmem_cell_get() now returns -EINVAL
instead of -
ENODEV if the requested nvmem cell is not available.
What do you mean with not available? Not yet available because of probe
order?
Ah, I was talking about there is no nvmem cell being used in my PHY node, e.g. 
no 'nvmem-cells' nor 'nvmem-cell-names' (set to 'io_impedance_ctrl'). That's 
why of_property_match_string returns -EINVAL.
quoted
Should we just assume #nvmem-cell-cells = <0> by default? I guess it's
a safe assumption.
Actually, that's what patch 2/21 is for.

Alexander, did you verify that the EINVAL is returned by
of_parse_phandle_with_optional_args()?
Yep.

--8<--
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 1b61c8bf0de4..f2a85a31d039 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -1339,9 +1339,11 @@ struct nvmem_cell *of_nvmem_cell_get(struct device_node 
*np, const char *id)
        if (id)
                index = of_property_match_string(np, "nvmem-cell-names", id);
 
+       pr_info("%s: index: %d\n", __func__, index);
        ret = of_parse_phandle_with_optional_args(np, "nvmem-cells",
                                                  "#nvmem-cell-cells",
                                                  index, &cell_spec);
+       pr_info("%s: of_parse_phandle_with_optional_args: %d\n", __func__, 
ret);
        if (ret)
                return ERR_PTR(ret);
--8<--

Results in:
[    1.861896] of_nvmem_cell_get: index: -22
[    1.865934] of_nvmem_cell_get: of_parse_phandle_with_optional_args: -22
[    1.872595] TI DP83867 30be0000.ethernet-1:0e: error -EINVAL: failed to 
get nvmem cell io_impedance_ctrl
[    2.402575] TI DP83867: probe of 30be0000.ethernet-1:0e failed with error 
-22

So, the index is wrong in the first place, but this was no problem until now.

Best regards,
Alexander




_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help