Message ID | 20190125203051.10943-5-simon.k.r.goldschmidt@gmail.com |
---|---|
State | Superseded |
Delegated to: | Marek Vasut |
Headers | show |
Series | arm: socfpga: implement proper peripheral reset handling | expand |
On 1/25/19 9:30 PM, Simon Goldschmidt wrote: > This adds reset handling to the devicetree-enabled denalid nand driver. > > For backwards compatibility, only a warning is printed when failing to > get reset handles. > > Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com> > --- > > drivers/spi/cadence_qspi.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c > index 11fce9c4fe..f68c827e6d 100644 > --- a/drivers/spi/cadence_qspi.c > +++ b/drivers/spi/cadence_qspi.c > @@ -8,6 +8,7 @@ > #include <dm.h> > #include <fdtdec.h> > #include <malloc.h> > +#include <reset.h> > #include <spi.h> > #include <linux/errno.h> > #include "cadence_qspi.h" > @@ -154,10 +155,18 @@ static int cadence_spi_probe(struct udevice *bus) > { > struct cadence_spi_platdata *plat = bus->platdata; > struct cadence_spi_priv *priv = dev_get_priv(bus); > + struct reset_ctl_bulk reset_bulk; > + int ret; > > priv->regbase = plat->regbase; > priv->ahbbase = plat->ahbbase; > > + ret = reset_get_bulk(bus, &reset_bulk); > + if (ret) > + dev_warn(bus, "Cant' get reset: %d\n", ret); Can't Also, shouldn't there be some reset_release or reset_free somewhere ? What about .remove(), shouldn't that release the reset ? > + else > + reset_deassert_bulk(&reset_bulk); > + > if (!priv->qspi_is_init) { > cadence_qspi_apb_controller_init(plat); > priv->qspi_is_init = 1; >
Am 26.01.2019 um 09:59 schrieb Marek Vasut: > On 1/25/19 9:30 PM, Simon Goldschmidt wrote: >> This adds reset handling to the devicetree-enabled denalid nand driver. >> >> For backwards compatibility, only a warning is printed when failing to >> get reset handles. >> >> Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com> >> --- >> >> drivers/spi/cadence_qspi.c | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c >> index 11fce9c4fe..f68c827e6d 100644 >> --- a/drivers/spi/cadence_qspi.c >> +++ b/drivers/spi/cadence_qspi.c >> @@ -8,6 +8,7 @@ >> #include <dm.h> >> #include <fdtdec.h> >> #include <malloc.h> >> +#include <reset.h> >> #include <spi.h> >> #include <linux/errno.h> >> #include "cadence_qspi.h" >> @@ -154,10 +155,18 @@ static int cadence_spi_probe(struct udevice *bus) >> { >> struct cadence_spi_platdata *plat = bus->platdata; >> struct cadence_spi_priv *priv = dev_get_priv(bus); >> + struct reset_ctl_bulk reset_bulk; >> + int ret; >> >> priv->regbase = plat->regbase; >> priv->ahbbase = plat->ahbbase; >> >> + ret = reset_get_bulk(bus, &reset_bulk); >> + if (ret) >> + dev_warn(bus, "Cant' get reset: %d\n", ret); > > Can't Right. Copy & paste from 3/5... > > Also, shouldn't there be some reset_release or reset_free somewhere ? > What about .remove(), shouldn't that release the reset ? Ehrm, well... this is my first driver using the reset framework. I haven't though of remove. I'll do a V2 for that soon. Regards, Simon > >> + else >> + reset_deassert_bulk(&reset_bulk); >> + >> if (!priv->qspi_is_init) { >> cadence_qspi_apb_controller_init(plat); >> priv->qspi_is_init = 1; >> > >
On 1/27/19 9:49 AM, Simon Goldschmidt wrote: > Am 26.01.2019 um 09:59 schrieb Marek Vasut: >> On 1/25/19 9:30 PM, Simon Goldschmidt wrote: >>> This adds reset handling to the devicetree-enabled denalid nand driver. >>> >>> For backwards compatibility, only a warning is printed when failing to >>> get reset handles. >>> >>> Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com> >>> --- >>> >>> drivers/spi/cadence_qspi.c | 9 +++++++++ >>> 1 file changed, 9 insertions(+) >>> >>> diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c >>> index 11fce9c4fe..f68c827e6d 100644 >>> --- a/drivers/spi/cadence_qspi.c >>> +++ b/drivers/spi/cadence_qspi.c >>> @@ -8,6 +8,7 @@ >>> #include <dm.h> >>> #include <fdtdec.h> >>> #include <malloc.h> >>> +#include <reset.h> >>> #include <spi.h> >>> #include <linux/errno.h> >>> #include "cadence_qspi.h" >>> @@ -154,10 +155,18 @@ static int cadence_spi_probe(struct udevice *bus) >>> { >>> struct cadence_spi_platdata *plat = bus->platdata; >>> struct cadence_spi_priv *priv = dev_get_priv(bus); >>> + struct reset_ctl_bulk reset_bulk; >>> + int ret; >>> priv->regbase = plat->regbase; >>> priv->ahbbase = plat->ahbbase; >>> + ret = reset_get_bulk(bus, &reset_bulk); >>> + if (ret) >>> + dev_warn(bus, "Cant' get reset: %d\n", ret); >> >> Can't > > Right. Copy & paste from 3/5... > >> >> Also, shouldn't there be some reset_release or reset_free somewhere ? >> What about .remove(), shouldn't that release the reset ? > > Ehrm, well... this is my first driver using the reset framework. I > haven't though of remove. I'll do a V2 for that soon. Thanks
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 11fce9c4fe..f68c827e6d 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -8,6 +8,7 @@ #include <dm.h> #include <fdtdec.h> #include <malloc.h> +#include <reset.h> #include <spi.h> #include <linux/errno.h> #include "cadence_qspi.h" @@ -154,10 +155,18 @@ static int cadence_spi_probe(struct udevice *bus) { struct cadence_spi_platdata *plat = bus->platdata; struct cadence_spi_priv *priv = dev_get_priv(bus); + struct reset_ctl_bulk reset_bulk; + int ret; priv->regbase = plat->regbase; priv->ahbbase = plat->ahbbase; + ret = reset_get_bulk(bus, &reset_bulk); + if (ret) + dev_warn(bus, "Cant' get reset: %d\n", ret); + else + reset_deassert_bulk(&reset_bulk); + if (!priv->qspi_is_init) { cadence_qspi_apb_controller_init(plat); priv->qspi_is_init = 1;
This adds reset handling to the devicetree-enabled denalid nand driver. For backwards compatibility, only a warning is printed when failing to get reset handles. Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com> --- drivers/spi/cadence_qspi.c | 9 +++++++++ 1 file changed, 9 insertions(+)