2023-10-13 15:48:16

by Emil Kronborg

[permalink] [raw]
Subject: [PATCH] serial: amba-pl011: set fwnode from parent device

After commit 3fb16866b51d ("driver core: fw_devlink: Make cycle
detection more robust"), consumer devices without their fwnode set
printed errors like the one below:

[ 0.261887] uart-pl011 3f201000.serial: Failed to create device link (0x180) with soc:firmware:gpio

To fix this, set the fwnode so fw_devlink can find and handle it
properly.

Fixes: 3fb16866b51d ("driver core: fw_devlink: Make cycle detection more robust")
Signed-off-by: Emil Kronborg Andersen <[email protected]>
---
drivers/tty/serial/amba-pl011.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index 3dc9b0fcab1c..29cef84b71c0 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -2798,6 +2798,8 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
int portnr, ret;
u32 val;

+ device_set_node(&dev->dev, dev_fwnode(dev->dev.parent));
+
portnr = pl011_find_free_port();
if (portnr < 0)
return portnr;
--
2.41.0


2023-10-13 21:29:32

by Saravana Kannan

[permalink] [raw]
Subject: Re: [PATCH] serial: amba-pl011: set fwnode from parent device

On Fri, Oct 13, 2023 at 8:48 AM Emil Kronborg Andersen <[email protected]> wrote:
>
> After commit 3fb16866b51d ("driver core: fw_devlink: Make cycle
> detection more robust"), consumer devices without their fwnode set
> printed errors like the one below:
>
> [ 0.261887] uart-pl011 3f201000.serial: Failed to create device link (0x180) with soc:firmware:gpio
>
> To fix this, set the fwnode so fw_devlink can find and handle it
> properly.
>
> Fixes: 3fb16866b51d ("driver core: fw_devlink: Make cycle detection more robust")
> Signed-off-by: Emil Kronborg Andersen <[email protected]>
> ---
> drivers/tty/serial/amba-pl011.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> index 3dc9b0fcab1c..29cef84b71c0 100644
> --- a/drivers/tty/serial/amba-pl011.c
> +++ b/drivers/tty/serial/amba-pl011.c
> @@ -2798,6 +2798,8 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
> int portnr, ret;
> u32 val;
>
> + device_set_node(&dev->dev, dev_fwnode(dev->dev.parent));
> +

Can we do this at a tty/serial framework level instead of just this
driver? Also, this is the latest kernel? I feel like I fixed exactly
this (but at a framework level) several months ago.

-Saravana

> portnr = pl011_find_free_port();
> if (portnr < 0)
> return portnr;
> --
> 2.41.0
>

2023-10-16 10:04:58

by Emil Kronborg

[permalink] [raw]
Subject: Re: [PATCH] serial: amba-pl011: set fwnode from parent device

On Fri, Oct 13, 2023 at 14:28 -0700, Saravana Kannan wrote:
>
> On Fri, Oct 13, 2023 at 8:48 AM Emil Kronborg Andersen <[email protected]> wrote:
> Can we do this at a tty/serial framework level instead of just this
> driver? Also, this is the latest kernel? I feel like I fixed exactly
> this (but at a framework level) several months ago.
>
> -Saravana
>

You are right about about having fixed it. I mistakenly mixed up two
boards and thus tested my patch with a wrong kernel version. I apologize
for that. Commit 1a5ecc73b2bf ("serdev: Set fwnode for serdev devices")
resolved the issue at tty/serial framework level.