diff mbox series

[v5,2/5] serial: lpuart: use ipg clk for i.MX7ULP

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

Commit Message

Peng Fan (OSS) April 11, 2024, 4:23 a.m. UTC
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(-)

Comments

Fabio Estevam April 12, 2024, 11:13 a.m. UTC | #1
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".
Peng Fan April 12, 2024, 12:34 p.m. UTC | #2
> 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 mbox series

Patch

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);