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 |
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 .
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 --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 = {
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(-)