diff mbox series

[U-Boot,v2] spi: designware_spi: Disable and free clock when remove driver

Message ID 1537345639-44663-1-git-send-email-ley.foon.tan@intel.com
State Accepted
Commit e7e05fcb3edb95584e7294099dbf0d28f0f87322
Delegated to: Jagannadha Sutradharudu Teki
Headers show
Series [U-Boot,v2] spi: designware_spi: Disable and free clock when remove driver | expand

Commit Message

Ley Foon Tan Sept. 19, 2018, 8:27 a.m. UTC
Disable and free clock when remove driver.

Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>

---
v2:
- Check return value from clk_free() and return 0 when exit function
---
 drivers/spi/designware_spi.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

Comments

Marek Vasut Sept. 19, 2018, 8:53 a.m. UTC | #1
On 09/19/2018 10:27 AM, Ley Foon Tan wrote:
> Disable and free clock when remove driver.
> 
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> 
> ---
> v2:
> - Check return value from clk_free() and return 0 when exit function
> ---
>  drivers/spi/designware_spi.c | 16 +++++++++++++++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
> index 5cca414..8f0c602 100644
> --- a/drivers/spi/designware_spi.c
> +++ b/drivers/spi/designware_spi.c
> @@ -516,8 +516,22 @@ static int dw_spi_set_mode(struct udevice *bus, uint mode)
>  static int dw_spi_remove(struct udevice *bus)
>  {
>  	struct dw_spi_priv *priv = dev_get_priv(bus);
> +	int ret;
> +
> +	ret = reset_release_bulk(&priv->resets);
> +	if (ret)
> +		return ret;
>  
> -	return reset_release_bulk(&priv->resets);
> +#if CONFIG_IS_ENABLED(CLK)
> +	ret = clk_disable(&priv->clk);
> +	if (ret)
> +		return ret;
> +
> +	ret = clk_free(&priv->clk);
> +	if (ret)
> +		return ret;
> +#endif
> +	return 0;
>  }
>  
>  static const struct dm_spi_ops dw_spi_ops = {
> 

Acked-by: Marek Vasut <marex@denx.de>

btw this doesn't apply to socfpga/master .
Ley Foon Tan Sept. 20, 2018, 7:50 a.m. UTC | #2
On Wed, Sep 19, 2018 at 5:22 PM Marek Vasut <marex@denx.de> wrote:
>
> On 09/19/2018 10:27 AM, Ley Foon Tan wrote:
> > Disable and free clock when remove driver.
> >
> > Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> >
> > ---
> > v2:
> > - Check return value from clk_free() and return 0 when exit function
> > ---
> >  drivers/spi/designware_spi.c | 16 +++++++++++++++-
> >  1 file changed, 15 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
> > index 5cca414..8f0c602 100644
> > --- a/drivers/spi/designware_spi.c
> > +++ b/drivers/spi/designware_spi.c
> > @@ -516,8 +516,22 @@ static int dw_spi_set_mode(struct udevice *bus, uint mode)
> >  static int dw_spi_remove(struct udevice *bus)
> >  {
> >       struct dw_spi_priv *priv = dev_get_priv(bus);
> > +     int ret;
> > +
> > +     ret = reset_release_bulk(&priv->resets);
> > +     if (ret)
> > +             return ret;
> >
> > -     return reset_release_bulk(&priv->resets);
> > +#if CONFIG_IS_ENABLED(CLK)
> > +     ret = clk_disable(&priv->clk);
> > +     if (ret)
> > +             return ret;
> > +
> > +     ret = clk_free(&priv->clk);
> > +     if (ret)
> > +             return ret;
> > +#endif
> > +     return 0;
> >  }
> >
> >  static const struct dm_spi_ops dw_spi_ops = {
> >
>
> Acked-by: Marek Vasut <marex@denx.de>
>
> btw this doesn't apply to socfpga/master .
>

Jagan,

Can you help to merge this patch?

And also this designware_spi's patch. This patch should apply first.
https://patchwork.ozlabs.org/patch/967210/

Regards
Ley Foon
diff mbox series

Patch

diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
index 5cca414..8f0c602 100644
--- a/drivers/spi/designware_spi.c
+++ b/drivers/spi/designware_spi.c
@@ -516,8 +516,22 @@  static int dw_spi_set_mode(struct udevice *bus, uint mode)
 static int dw_spi_remove(struct udevice *bus)
 {
 	struct dw_spi_priv *priv = dev_get_priv(bus);
+	int ret;
+
+	ret = reset_release_bulk(&priv->resets);
+	if (ret)
+		return ret;
 
-	return reset_release_bulk(&priv->resets);
+#if CONFIG_IS_ENABLED(CLK)
+	ret = clk_disable(&priv->clk);
+	if (ret)
+		return ret;
+
+	ret = clk_free(&priv->clk);
+	if (ret)
+		return ret;
+#endif
+	return 0;
 }
 
 static const struct dm_spi_ops dw_spi_ops = {