diff mbox series

[U-Boot,3/5] misc: imx8: scu: use platdata instead of priv data

Message ID 20181215122848.24906-4-peng.fan@nxp.com
State Accepted
Commit 026381fc5a06cdc3e41a6bae83486be6cbaae0a9
Delegated to: Stefano Babic
Headers show
Series imx8: several fixes | expand

Commit Message

Peng Fan Dec. 15, 2018, 12:19 p.m. UTC
priv data has not been allocated when doing bind, so it is
wrong to use dev_get_priv in bind call back.

Let's switch to use platdata in the driver to fix the issue.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/misc/imx8/scu.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

Comments

Peng Fan Dec. 15, 2018, 12:22 p.m. UTC | #1
+Simon

> -----Original Message-----
> From: Peng Fan
> Sent: 2018年12月15日 20:20
> To: sbabic@denx.de
> Cc: Fabio Estevam <fabio.estevam@nxp.com>; u-boot@lists.denx.de;
> dl-uboot-imx <uboot-imx@nxp.com>; Peng Fan <peng.fan@nxp.com>
> Subject: [PATCH 3/5] misc: imx8: scu: use platdata instead of priv data
> 
> priv data has not been allocated when doing bind, so it is wrong to use
> dev_get_priv in bind call back.
> 
> Let's switch to use platdata in the driver to fix the issue.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/misc/imx8/scu.c | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/misc/imx8/scu.c b/drivers/misc/imx8/scu.c index
> b824ac79e6..15101b3e5f 100644
> --- a/drivers/misc/imx8/scu.c
> +++ b/drivers/misc/imx8/scu.c
> @@ -158,7 +158,7 @@ static int sc_ipc_write(struct mu_type *base, void
> *data)  static int imx8_scu_call(struct udevice *dev, int no_resp, void
> *tx_msg,
>  			 int tx_size, void *rx_msg, int rx_size)  {
> -	struct imx8_scu *priv = dev_get_priv(dev);
> +	struct imx8_scu *plat = dev_get_platdata(dev);
>  	sc_err_t result;
>  	int ret;
> 
> @@ -166,11 +166,11 @@ static int imx8_scu_call(struct udevice *dev, int
> no_resp, void *tx_msg,
>  	if (rx_msg && tx_msg != rx_msg)
>  		printf("tx_msg %p, rx_msg %p\n", tx_msg, rx_msg);
> 
> -	ret = sc_ipc_write(priv->base, tx_msg);
> +	ret = sc_ipc_write(plat->base, tx_msg);
>  	if (ret)
>  		return ret;
>  	if (!no_resp) {
> -		ret = sc_ipc_read(priv->base, rx_msg);
> +		ret = sc_ipc_read(plat->base, rx_msg);
>  		if (ret)
>  			return ret;
>  	}
> @@ -182,24 +182,24 @@ static int imx8_scu_call(struct udevice *dev, int
> no_resp, void *tx_msg,
> 
>  static int imx8_scu_probe(struct udevice *dev)  {
> -	struct imx8_scu *priv = dev_get_priv(dev);
> +	struct imx8_scu *plat = dev_get_platdata(dev);
>  	fdt_addr_t addr;
> 
> -	debug("%s(dev=%p) (priv=%p)\n", __func__, dev, priv);
> +	debug("%s(dev=%p) (plat=%p)\n", __func__, dev, plat);
> 
>  	addr = devfdt_get_addr(dev);
>  	if (addr == FDT_ADDR_T_NONE)
>  		return -EINVAL;
> 
> -	priv->base = (struct mu_type *)addr;
> +	plat->base = (struct mu_type *)addr;
> 
>  	/* U-Boot not enable interrupts, so need to enable RX interrupts */
> -	mu_hal_init(priv->base);
> +	mu_hal_init(plat->base);
> 
>  	gd->arch.scu_dev = dev;
> 
> -	device_probe(priv->clk);
> -	device_probe(priv->pinclk);
> +	device_probe(plat->clk);
> +	device_probe(plat->pinclk);
> 
>  	return 0;
>  }
> @@ -211,7 +211,7 @@ static int imx8_scu_remove(struct udevice *dev)
> 
>  static int imx8_scu_bind(struct udevice *dev)  {
> -	struct imx8_scu *priv = dev_get_priv(dev);
> +	struct imx8_scu *plat = dev_get_platdata(dev);
>  	int ret;
>  	struct udevice *child;
>  	int node;
> @@ -227,7 +227,7 @@ static int imx8_scu_bind(struct udevice *dev)
>  	if (ret)
>  		return ret;
> 
> -	priv->clk = child;
> +	plat->clk = child;
> 
>  	node = fdt_node_offset_by_compatible(gd->fdt_blob, -1,
>  					     "fsl,imx8qxp-iomuxc");
> @@ -238,7 +238,7 @@ static int imx8_scu_bind(struct udevice *dev)
>  	if (ret)
>  		return ret;
> 
> -	priv->pinclk = child;
> +	plat->pinclk = child;
> 
>  	return 0;
>  }
> @@ -261,6 +261,6 @@ U_BOOT_DRIVER(imx8_scu) = {
>  	.bind		= imx8_scu_bind,
>  	.remove		= imx8_scu_remove,
>  	.ops		= &imx8_scu_ops,
> -	.priv_auto_alloc_size = sizeof(struct imx8_scu),
> +	.platdata_auto_alloc_size = sizeof(struct imx8_scu),
>  	.flags		= DM_FLAG_PRE_RELOC,
>  };
> --
> 2.14.1
Simon Glass Jan. 5, 2019, 1:56 a.m. UTC | #2
On Sat, 15 Dec 2018 at 05:22, Peng Fan <peng.fan@nxp.com> wrote:
>
> +Simon
>
> > -----Original Message-----
> > From: Peng Fan
> > Sent: 2018年12月15日 20:20
> > To: sbabic@denx.de
> > Cc: Fabio Estevam <fabio.estevam@nxp.com>; u-boot@lists.denx.de;
> > dl-uboot-imx <uboot-imx@nxp.com>; Peng Fan <peng.fan@nxp.com>
> > Subject: [PATCH 3/5] misc: imx8: scu: use platdata instead of priv data
> >
> > priv data has not been allocated when doing bind, so it is wrong to use
> > dev_get_priv in bind call back.
> >
> > Let's switch to use platdata in the driver to fix the issue.
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >  drivers/misc/imx8/scu.c | 26 +++++++++++++-------------
> >  1 file changed, 13 insertions(+), 13 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
diff mbox series

Patch

diff --git a/drivers/misc/imx8/scu.c b/drivers/misc/imx8/scu.c
index b824ac79e6..15101b3e5f 100644
--- a/drivers/misc/imx8/scu.c
+++ b/drivers/misc/imx8/scu.c
@@ -158,7 +158,7 @@  static int sc_ipc_write(struct mu_type *base, void *data)
 static int imx8_scu_call(struct udevice *dev, int no_resp, void *tx_msg,
 			 int tx_size, void *rx_msg, int rx_size)
 {
-	struct imx8_scu *priv = dev_get_priv(dev);
+	struct imx8_scu *plat = dev_get_platdata(dev);
 	sc_err_t result;
 	int ret;
 
@@ -166,11 +166,11 @@  static int imx8_scu_call(struct udevice *dev, int no_resp, void *tx_msg,
 	if (rx_msg && tx_msg != rx_msg)
 		printf("tx_msg %p, rx_msg %p\n", tx_msg, rx_msg);
 
-	ret = sc_ipc_write(priv->base, tx_msg);
+	ret = sc_ipc_write(plat->base, tx_msg);
 	if (ret)
 		return ret;
 	if (!no_resp) {
-		ret = sc_ipc_read(priv->base, rx_msg);
+		ret = sc_ipc_read(plat->base, rx_msg);
 		if (ret)
 			return ret;
 	}
@@ -182,24 +182,24 @@  static int imx8_scu_call(struct udevice *dev, int no_resp, void *tx_msg,
 
 static int imx8_scu_probe(struct udevice *dev)
 {
-	struct imx8_scu *priv = dev_get_priv(dev);
+	struct imx8_scu *plat = dev_get_platdata(dev);
 	fdt_addr_t addr;
 
-	debug("%s(dev=%p) (priv=%p)\n", __func__, dev, priv);
+	debug("%s(dev=%p) (plat=%p)\n", __func__, dev, plat);
 
 	addr = devfdt_get_addr(dev);
 	if (addr == FDT_ADDR_T_NONE)
 		return -EINVAL;
 
-	priv->base = (struct mu_type *)addr;
+	plat->base = (struct mu_type *)addr;
 
 	/* U-Boot not enable interrupts, so need to enable RX interrupts */
-	mu_hal_init(priv->base);
+	mu_hal_init(plat->base);
 
 	gd->arch.scu_dev = dev;
 
-	device_probe(priv->clk);
-	device_probe(priv->pinclk);
+	device_probe(plat->clk);
+	device_probe(plat->pinclk);
 
 	return 0;
 }
@@ -211,7 +211,7 @@  static int imx8_scu_remove(struct udevice *dev)
 
 static int imx8_scu_bind(struct udevice *dev)
 {
-	struct imx8_scu *priv = dev_get_priv(dev);
+	struct imx8_scu *plat = dev_get_platdata(dev);
 	int ret;
 	struct udevice *child;
 	int node;
@@ -227,7 +227,7 @@  static int imx8_scu_bind(struct udevice *dev)
 	if (ret)
 		return ret;
 
-	priv->clk = child;
+	plat->clk = child;
 
 	node = fdt_node_offset_by_compatible(gd->fdt_blob, -1,
 					     "fsl,imx8qxp-iomuxc");
@@ -238,7 +238,7 @@  static int imx8_scu_bind(struct udevice *dev)
 	if (ret)
 		return ret;
 
-	priv->pinclk = child;
+	plat->pinclk = child;
 
 	return 0;
 }
@@ -261,6 +261,6 @@  U_BOOT_DRIVER(imx8_scu) = {
 	.bind		= imx8_scu_bind,
 	.remove		= imx8_scu_remove,
 	.ops		= &imx8_scu_ops,
-	.priv_auto_alloc_size = sizeof(struct imx8_scu),
+	.platdata_auto_alloc_size = sizeof(struct imx8_scu),
 	.flags		= DM_FLAG_PRE_RELOC,
 };