On 11/01/2023 15:13, INAGAKI Hiroshi wrote:Okay, I'll improve.
This patch fixes the handling of multiple devices on the same CS byDo not use "This commit/patch".
https://elixir.bootlin.com/linux/v5.17.1/source/Documentation/process/submitting-patches.rst#L95
I see, I'll replace.
replacing CS name to "name" of node instead of "full_name".Use syntax: commit short SHA (".....") as pointed by checkpatch.
In c2ade654dbf7d02f09ad491f5621fc321d4af96b
("memory: omap-gpmc: Use of_node_name_eq for node name comparisons"),
Okay, I'll improve it.
the name for setting to CS was replaced but it doesn't fit for theSkip explanation what is inside of_node_name_eq() but focus on what the
comparison by of_node_name_eq.
In of_node_name_eq, the length for strncmp will be obtained from the
node that trying to register and it doesn't contain the length of
"@<cs>,<offset>".
driver is doing.
Ahh, it's not a prefix, but suffix...my mistake.
But the base name for comparison passed fromWhat is "the prefix"?
registered CS name contains the prefix,
Indeed... I wrote it because I felt like I had to explain it in detail, but I made it unnecessarily complicated.
then, that two lengths won'tUnfortunately, based on this, I don't get what is compare with what. I
match and false will be returned, and registration on the same CS
will be failed.
bet the issue is simple, but based on the description it does not look
like that.
Okay, I'll reduce.
example (Century Systems MA-E350/N, AM3352):Trim it, two entries might be enough to illustrate it.
- Device Tree
/* memory mapped gpio controllers on GPMC */
gpio@2,2 {
reg = <2 0x2 0x1>; /* CS2, offset 0x2, IO size 0x1 */
...
};
gpio@2,10 {
reg = <2 0x10 0x1>; /* CS2, offset 0x10, IO size 0x1 */
...
};
gpio@2,12 {
reg = <2 0x12 0x1>; /* CS2, offset 0x12, IO size 0x1 */
...
};
gpio@2,14 {
reg = <2 0x14 0x1>; /* CS2, offset 0x14, IO size 0x1 */
...
};
I'll fix.
- dmesgAlso not correct tag. Run checkpatch.
[ 1.596402] omap-gpmc 50000000.gpmc: cannot request GPMC CS 2
[ 1.596434] omap-gpmc 50000000.gpmc: failed to probe DT child 'gpio': -16
[ 1.596489] omap-gpmc 50000000.gpmc: cannot request GPMC CS 2
[ 1.596511] omap-gpmc 50000000.gpmc: failed to probe DT child 'gpio': -16
[ 1.596564] omap-gpmc 50000000.gpmc: cannot request GPMC CS 2
[ 1.596586] omap-gpmc 50000000.gpmc: failed to probe DT child 'gpio': -16
("gpio@2,2" is ok, "gpio@2,10", "gpio@2,12", "gpio@2.14" are fail)
Fixes: c2ade654dbf7d02f09ad491f5621fc321d4af96b
("memory: omap-gpmc: Use of_node_name_eq for node name comparisons")
No blank lines.
Signed-off-by: INAGAKI Hiroshi <musashino.open@xxxxxxxxx>
---Best regards,
drivers/memory/omap-gpmc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c
index d78f73db37c8..3e3e84e34795 100644
--- a/drivers/memory/omap-gpmc.c
+++ b/drivers/memory/omap-gpmc.c
@@ -2202,7 +2202,7 @@ static int gpmc_probe_generic_child(struct platform_device *pdev,
dev_err(&pdev->dev, "cannot request GPMC CS %d\n", cs);
return ret;
}
- gpmc_cs_set_name(cs, child->full_name);
+ gpmc_cs_set_name(cs, child->name);
gpmc_read_settings_dt(child, &gpmc_s);
gpmc_read_timings_dt(child, &gpmc_t);
base-commit: 13f35b3c72f4075e13a974f439b20b9e26f8f243
Krzysztof