Message ID | 20240411-imx93-of-v2-v5-2-9eb3c64ff160@nxp.com |
---|---|
State | Changes Requested |
Delegated to: | Fabio Estevam |
Headers | show |
Series | imx93: Conver to OF_UPSTREAM | expand |
Hi Peng, On Thu, Apr 11, 2024 at 12:23 AM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote: > > From: Peng Fan <peng.fan@nxp.com> > > To i.MX7ULP compatible lpuart, there is only ipg clk, no per clk. > So add a devtype check for i.MX7ULP. > > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- > drivers/serial/serial_lpuart.c | 28 +++++++++++++++++++--------- > 1 file changed, 19 insertions(+), 9 deletions(-) > > diff --git a/drivers/serial/serial_lpuart.c b/drivers/serial/serial_lpuart.c > index ce08a6b4486..891352293f9 100644 > --- a/drivers/serial/serial_lpuart.c > +++ b/drivers/serial/serial_lpuart.c > @@ -111,11 +111,18 @@ u32 __weak get_lpuart_clk(void) > #if CONFIG_IS_ENABLED(CLK) > static int get_lpuart_clk_rate(struct udevice *dev, u32 *clk) > { > + struct lpuart_serial_plat *plat = dev_get_plat(dev); > struct clk per_clk; You ignored my previous comment. Here I go again: Please rename 'per_clk' to 'clk'. > ulong rate; > int ret; > + char *name; > + > + if (plat->devtype == DEV_MX7ULP) > + name = "ipg"; > + else > + name = "per"; > > - ret = clk_get_by_name(dev, "per", &per_clk); > + ret = clk_get_by_name(dev, name, &per_clk); ... because it is confusing that per_clk can be ipg or per clock. > if (ret) { > dev_err(dev, "Failed to get per clk: %d\n", ret); And then also change the error message to "clk".
> Subject: Re: [PATCH v5 2/5] serial: lpuart: use ipg clk for i.MX7ULP > > Hi Peng, > > On Thu, Apr 11, 2024 at 12:23 AM Peng Fan (OSS) <peng.fan@oss.nxp.com> > wrote: > > > > From: Peng Fan <peng.fan@nxp.com> > > > > To i.MX7ULP compatible lpuart, there is only ipg clk, no per clk. > > So add a devtype check for i.MX7ULP. > > > > Signed-off-by: Peng Fan <peng.fan@nxp.com> > > --- > > drivers/serial/serial_lpuart.c | 28 +++++++++++++++++++--------- > > 1 file changed, 19 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/serial/serial_lpuart.c > > b/drivers/serial/serial_lpuart.c index ce08a6b4486..891352293f9 100644 > > --- a/drivers/serial/serial_lpuart.c > > +++ b/drivers/serial/serial_lpuart.c > > @@ -111,11 +111,18 @@ u32 __weak get_lpuart_clk(void) #if > > CONFIG_IS_ENABLED(CLK) static int get_lpuart_clk_rate(struct udevice > > *dev, u32 *clk) { > > + struct lpuart_serial_plat *plat = dev_get_plat(dev); > > struct clk per_clk; > > You ignored my previous comment. Here I go again: > > Please rename 'per_clk' to 'clk'. Sorry for that. I will fix in v6. > > > ulong rate; > > int ret; > > + char *name; > > + > > + if (plat->devtype == DEV_MX7ULP) > > + name = "ipg"; > > + else > > + name = "per"; > > > > - ret = clk_get_by_name(dev, "per", &per_clk); > > + ret = clk_get_by_name(dev, name, &per_clk); > > ... because it is confusing that per_clk can be ipg or per clock. Yeah. > > > if (ret) { > > dev_err(dev, "Failed to get per clk: %d\n", ret); > > And then also change the error message to "clk". Fix in v6. Thanks, Peng.
diff --git a/drivers/serial/serial_lpuart.c b/drivers/serial/serial_lpuart.c index ce08a6b4486..891352293f9 100644 --- a/drivers/serial/serial_lpuart.c +++ b/drivers/serial/serial_lpuart.c @@ -111,11 +111,18 @@ u32 __weak get_lpuart_clk(void) #if CONFIG_IS_ENABLED(CLK) static int get_lpuart_clk_rate(struct udevice *dev, u32 *clk) { + struct lpuart_serial_plat *plat = dev_get_plat(dev); struct clk per_clk; ulong rate; int ret; + char *name; + + if (plat->devtype == DEV_MX7ULP) + name = "ipg"; + else + name = "per"; - ret = clk_get_by_name(dev, "per", &per_clk); + ret = clk_get_by_name(dev, name, &per_clk); if (ret) { dev_err(dev, "Failed to get per clk: %d\n", ret); return ret; @@ -479,19 +486,22 @@ static int lpuart_serial_pending(struct udevice *dev, bool input) static int lpuart_serial_probe(struct udevice *dev) { #if CONFIG_IS_ENABLED(CLK) + struct lpuart_serial_plat *plat = dev_get_plat(dev); struct clk per_clk; struct clk ipg_clk; int ret; - ret = clk_get_by_name(dev, "per", &per_clk); - if (!ret) { - ret = clk_enable(&per_clk); - if (ret) { - dev_err(dev, "Failed to enable per clk: %d\n", ret); - return ret; + if (plat->devtype != DEV_MX7ULP) { + ret = clk_get_by_name(dev, "per", &per_clk); + if (!ret) { + ret = clk_enable(&per_clk); + if (ret) { + dev_err(dev, "Failed to enable per clk: %d\n", ret); + return ret; + } + } else { + debug("%s: Failed to get per clk: %d\n", __func__, ret); } - } else { - debug("%s: Failed to get per clk: %d\n", __func__, ret); } ret = clk_get_by_name(dev, "ipg", &ipg_clk);