Re: [U-Boot] [PATCH] usb: sunxi: don't touch reset bits in ccm if CONFIG_SUNXI_GEN_SUN6I is not defined
On Thu, Jun 14, 2018 at 11:06 AM, Vasily Khoruzhick wrote: > On Wed, Jun 13, 2018 at 10:29 PM, Jagan Teki wrote: >> On Thu, Jun 14, 2018 at 9:01 AM, Vasily Khoruzhick >> wrote: >>> On Wed, Jun 13, 2018 at 8:23 PM, Chen-Yu Tsai wrote: >>> > + if (priv->cfg->has_reset) { > +#ifdef CONFIG_SUNXI_GEN_SUN6I The "has_reset" field is supposed to deal with this. Is it not working? >>> >>> There's no ahb_reset0_cfg in ccm on sun4i and sun5i, so compilation fails >>> with >>> >>> drivers/usb/host/ohci-sunxi.c:96:26: error: 'struct sunxi_ccm_reg' has >>> no member named 'ahb_reset0_cfg' >> >> Add reset0_cfg_off on driver_data for sun6i. and check the same while >> writing. > > I don't think that hardcoding ahb_reset0_cfg offset here is a good > idea. Using offsetof() isn't possible without ifdef, since > this field won't be present in struct sunxi_ccm_reg for sun4i and sun5i. ie reason I've mentioned to add offset field for sun6i, this is what we do with phyctl_offset in phy driver. I won't recommend #ifdef again. ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] usb: sunxi: don't touch reset bits in ccm if CONFIG_SUNXI_GEN_SUN6I is not defined
On Wed, Jun 13, 2018 at 10:29 PM, Jagan Teki wrote: > On Thu, Jun 14, 2018 at 9:01 AM, Vasily Khoruzhick wrote: >> On Wed, Jun 13, 2018 at 8:23 PM, Chen-Yu Tsai wrote: >> + if (priv->cfg->has_reset) { +#ifdef CONFIG_SUNXI_GEN_SUN6I >>> >>> The "has_reset" field is supposed to deal with this. Is it not working? >> >> There's no ahb_reset0_cfg in ccm on sun4i and sun5i, so compilation fails >> with >> >> drivers/usb/host/ohci-sunxi.c:96:26: error: 'struct sunxi_ccm_reg' has >> no member named 'ahb_reset0_cfg' > > Add reset0_cfg_off on driver_data for sun6i. and check the same while writing. I don't think that hardcoding ahb_reset0_cfg offset here is a good idea. Using offsetof() isn't possible without ifdef, since this field won't be present in struct sunxi_ccm_reg for sun4i and sun5i. ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] usb: sunxi: don't touch reset bits in ccm if CONFIG_SUNXI_GEN_SUN6I is not defined
On Thu, Jun 14, 2018 at 9:01 AM, Vasily Khoruzhick wrote: > On Wed, Jun 13, 2018 at 8:23 PM, Chen-Yu Tsai wrote: > >>> + if (priv->cfg->has_reset) { >>> +#ifdef CONFIG_SUNXI_GEN_SUN6I >> >> The "has_reset" field is supposed to deal with this. Is it not working? > > There's no ahb_reset0_cfg in ccm on sun4i and sun5i, so compilation fails with > > drivers/usb/host/ohci-sunxi.c:96:26: error: 'struct sunxi_ccm_reg' has > no member named 'ahb_reset0_cfg' Add reset0_cfg_off on driver_data for sun6i. and check the same while writing. ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] usb: sunxi: don't touch reset bits in ccm if CONFIG_SUNXI_GEN_SUN6I is not defined
On Wed, Jun 13, 2018 at 8:23 PM, Chen-Yu Tsai wrote: >> + if (priv->cfg->has_reset) { >> +#ifdef CONFIG_SUNXI_GEN_SUN6I > > The "has_reset" field is supposed to deal with this. Is it not working? There's no ahb_reset0_cfg in ccm on sun4i and sun5i, so compilation fails with drivers/usb/host/ohci-sunxi.c:96:26: error: 'struct sunxi_ccm_reg' has no member named 'ahb_reset0_cfg' (And similar error for ehci-sunxi.c) ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] usb: sunxi: don't touch reset bits in ccm if CONFIG_SUNXI_GEN_SUN6I is not defined
On Thu, Jun 14, 2018 at 11:04 AM, Vasily Khoruzhick wrote: > CCM in sun4i and sun5i doesn't have reset. > > Fixes commit 1ed9c1118 ("usb: sunxi: ehci: get rid of ifdefs") > and commit 56830cee3 ("usb: sunxi: ohci: get rid of ifdefs") > > Signed-off-by: Vasily Khoruzhick > --- > drivers/usb/host/ehci-sunxi.c | 10 -- > drivers/usb/host/ohci-sunxi.c | 10 -- > 2 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/host/ehci-sunxi.c b/drivers/usb/host/ehci-sunxi.c > index 35fbe03331..f5b661ef12 100644 > --- a/drivers/usb/host/ehci-sunxi.c > +++ b/drivers/usb/host/ehci-sunxi.c > @@ -85,9 +85,12 @@ no_phy: > > setbits_le32(>ccm->ahb_gate0, > priv->ahb_gate_mask | extra_ahb_gate_mask); > - if (priv->cfg->has_reset) > + if (priv->cfg->has_reset) { > +#ifdef CONFIG_SUNXI_GEN_SUN6I The "has_reset" field is supposed to deal with this. Is it not working? ChenYu > setbits_le32(>ccm->ahb_reset0_cfg, > priv->ahb_gate_mask | extra_ahb_gate_mask); > +#endif > + } > > hcor = (struct ehci_hcor *)((uintptr_t)hccr + > HC_LENGTH(ehci_readl(>cr_capbase))); > @@ -112,8 +115,11 @@ static int ehci_usb_remove(struct udevice *dev) > if (ret) > return ret; > > - if (priv->cfg->has_reset) > + if (priv->cfg->has_reset) { > +#ifdef CONFIG_SUNXI_GEN_SUN6I > clrbits_le32(>ccm->ahb_reset0_cfg, priv->ahb_gate_mask); > +#endif > + } > clrbits_le32(>ccm->ahb_gate0, priv->ahb_gate_mask); > > return 0; > diff --git a/drivers/usb/host/ohci-sunxi.c b/drivers/usb/host/ohci-sunxi.c > index 2b99169da6..c8c9e1d2fe 100644 > --- a/drivers/usb/host/ohci-sunxi.c > +++ b/drivers/usb/host/ohci-sunxi.c > @@ -92,9 +92,12 @@ no_phy: > priv->ahb_gate_mask | extra_ahb_gate_mask); > setbits_le32(>ccm->usb_clk_cfg, > priv->usb_gate_mask | priv->cfg->extra_usb_gate_mask); > - if (priv->cfg->has_reset) > + if (priv->cfg->has_reset) { > +#ifdef CONFIG_SUNXI_GEN_SUN6I > setbits_le32(>ccm->ahb_reset0_cfg, > priv->ahb_gate_mask | extra_ahb_gate_mask); > +#endif > + } > > return ohci_register(dev, regs); > } > @@ -116,8 +119,11 @@ static int ohci_usb_remove(struct udevice *dev) > if (ret) > return ret; > > - if (priv->cfg->has_reset) > + if (priv->cfg->has_reset) { > +#ifdef CONFIG_SUNXI_GEN_SUN6I > clrbits_le32(>ccm->ahb_reset0_cfg, priv->ahb_gate_mask); > +#endif > + } > clrbits_le32(>ccm->usb_clk_cfg, priv->usb_gate_mask); > clrbits_le32(>ccm->ahb_gate0, priv->ahb_gate_mask); > > -- > 2.17.1 > > ___ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
[U-Boot] [PATCH] usb: sunxi: don't touch reset bits in ccm if CONFIG_SUNXI_GEN_SUN6I is not defined
CCM in sun4i and sun5i doesn't have reset. Fixes commit 1ed9c1118 ("usb: sunxi: ehci: get rid of ifdefs") and commit 56830cee3 ("usb: sunxi: ohci: get rid of ifdefs") Signed-off-by: Vasily Khoruzhick --- drivers/usb/host/ehci-sunxi.c | 10 -- drivers/usb/host/ohci-sunxi.c | 10 -- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/usb/host/ehci-sunxi.c b/drivers/usb/host/ehci-sunxi.c index 35fbe03331..f5b661ef12 100644 --- a/drivers/usb/host/ehci-sunxi.c +++ b/drivers/usb/host/ehci-sunxi.c @@ -85,9 +85,12 @@ no_phy: setbits_le32(>ccm->ahb_gate0, priv->ahb_gate_mask | extra_ahb_gate_mask); - if (priv->cfg->has_reset) + if (priv->cfg->has_reset) { +#ifdef CONFIG_SUNXI_GEN_SUN6I setbits_le32(>ccm->ahb_reset0_cfg, priv->ahb_gate_mask | extra_ahb_gate_mask); +#endif + } hcor = (struct ehci_hcor *)((uintptr_t)hccr + HC_LENGTH(ehci_readl(>cr_capbase))); @@ -112,8 +115,11 @@ static int ehci_usb_remove(struct udevice *dev) if (ret) return ret; - if (priv->cfg->has_reset) + if (priv->cfg->has_reset) { +#ifdef CONFIG_SUNXI_GEN_SUN6I clrbits_le32(>ccm->ahb_reset0_cfg, priv->ahb_gate_mask); +#endif + } clrbits_le32(>ccm->ahb_gate0, priv->ahb_gate_mask); return 0; diff --git a/drivers/usb/host/ohci-sunxi.c b/drivers/usb/host/ohci-sunxi.c index 2b99169da6..c8c9e1d2fe 100644 --- a/drivers/usb/host/ohci-sunxi.c +++ b/drivers/usb/host/ohci-sunxi.c @@ -92,9 +92,12 @@ no_phy: priv->ahb_gate_mask | extra_ahb_gate_mask); setbits_le32(>ccm->usb_clk_cfg, priv->usb_gate_mask | priv->cfg->extra_usb_gate_mask); - if (priv->cfg->has_reset) + if (priv->cfg->has_reset) { +#ifdef CONFIG_SUNXI_GEN_SUN6I setbits_le32(>ccm->ahb_reset0_cfg, priv->ahb_gate_mask | extra_ahb_gate_mask); +#endif + } return ohci_register(dev, regs); } @@ -116,8 +119,11 @@ static int ohci_usb_remove(struct udevice *dev) if (ret) return ret; - if (priv->cfg->has_reset) + if (priv->cfg->has_reset) { +#ifdef CONFIG_SUNXI_GEN_SUN6I clrbits_le32(>ccm->ahb_reset0_cfg, priv->ahb_gate_mask); +#endif + } clrbits_le32(>ccm->usb_clk_cfg, priv->usb_gate_mask); clrbits_le32(>ccm->ahb_gate0, priv->ahb_gate_mask); -- 2.17.1 ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot