Re: [U-Boot] [RESEND][PATCH v5 1/5] usb: host: xhci-dwc3: Convert driver to DM
Hi Bin On 07/06/2017 10:50 AM, Bin Meng wrote: > Hi Patrice, > > On Thu, Jul 6, 2017 at 4:47 PM, Patrice CHOTARD > wrote: >> Hi Bin >> >> On 07/06/2017 10:27 AM, Bin Meng wrote: >>> Hi Patrice, >>> >>> On Thu, Jul 6, 2017 at 3:50 PM, wrote: From: Patrice Chotard Add Driver Model support with use of generic DT compatible string "snps,dwc3" Signed-off-by: Patrice Chotard Reviewed-by: Simon Glass --- v5: _ replace dev_get_addr() by devfdt_get_addr() v4: _ none v3: _ none v2: _ use dev_get_addr() and removed useless piece of code drivers/usb/host/xhci-dwc3.c | 50 1 file changed, 50 insertions(+) diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c index 33961cd..8c90836 100644 --- a/drivers/usb/host/xhci-dwc3.c +++ b/drivers/usb/host/xhci-dwc3.c @@ -9,9 +9,19 @@ */ #include +#include +#include + +#include "xhci.h" #include #include +DECLARE_GLOBAL_DATA_PTR; + +struct xhci_dwc3_priv { + struct xhci_ctrl ctrl; +}; >>> >>> Please use 'struct xhci_dwc3' directly for .priv_auto_alloc_size >> >> >> You mean, rename struct xhci_dwc3_priv to struct xhci_dwc3 ? > > I mean use .priv_auto_alloc_size = sizeof(struct xhci_ctrl) directly > without adding a new struct Agree, i will fix this Thanks Patrice > >> >>> + void dwc3_set_mode(struct dwc3 *dwc3_reg, u32 mode) { clrsetbits_le32(&dwc3_reg->g_ctl, @@ -97,3 +107,43 @@ void dwc3_set_fladj(struct dwc3 *dwc3_reg, u32 val) setbits_le32(&dwc3_reg->g_fladj, GFLADJ_30MHZ_REG_SEL | GFLADJ_30MHZ(val)); } + +static int xhci_dwc3_probe(struct udevice *dev) +{ + struct xhci_dwc3_platdata *plat = dev_get_platdata(dev); + struct xhci_hcor *hcor; + struct xhci_hccr *hccr; + struct dwc3 *dwc3_reg; + + hccr = (struct xhci_hccr *)devfdt_get_addr(dev); + hcor = (struct xhci_hcor *)((phys_addr_t)hccr + + HC_LENGTH(xhci_readl(&(hccr)->cr_capbase))); + + dwc3_reg = (struct dwc3 *)((char *)(hccr) + DWC3_REG_OFFSET); + + dwc3_core_init(dwc3_reg); + + return xhci_register(dev, hccr, hcor); +} + +static int xhci_dwc3_remove(struct udevice *dev) +{ + return xhci_deregister(dev); +} >>> >>> Please nuke this xhci_dwc3_remove(), instead register >>> xhci_deregister() directly. >> >> Is it worth, as in patch 5, xhci_dwc3_remove() will be populated. >> > > Ah, I see. Then there is no need to do that. Thanks! > > Regards, > Bin > ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [RESEND][PATCH v5 1/5] usb: host: xhci-dwc3: Convert driver to DM
Hi Patrice, On Thu, Jul 6, 2017 at 4:47 PM, Patrice CHOTARD wrote: > Hi Bin > > On 07/06/2017 10:27 AM, Bin Meng wrote: >> Hi Patrice, >> >> On Thu, Jul 6, 2017 at 3:50 PM, wrote: >>> From: Patrice Chotard >>> >>> Add Driver Model support with use of generic DT >>> compatible string "snps,dwc3" >>> >>> Signed-off-by: Patrice Chotard >>> Reviewed-by: Simon Glass >>> --- >>> >>> v5: _ replace dev_get_addr() by devfdt_get_addr() >>> v4: _ none >>> v3: _ none >>> v2: _ use dev_get_addr() and removed useless piece of code >>> >>> >>> drivers/usb/host/xhci-dwc3.c | 50 >>> >>> 1 file changed, 50 insertions(+) >>> >>> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c >>> index 33961cd..8c90836 100644 >>> --- a/drivers/usb/host/xhci-dwc3.c >>> +++ b/drivers/usb/host/xhci-dwc3.c >>> @@ -9,9 +9,19 @@ >>>*/ >>> >>> #include >>> +#include >>> +#include >>> + >>> +#include "xhci.h" >>> #include >>> #include >>> >>> +DECLARE_GLOBAL_DATA_PTR; >>> + >>> +struct xhci_dwc3_priv { >>> + struct xhci_ctrl ctrl; >>> +}; >> >> Please use 'struct xhci_dwc3' directly for .priv_auto_alloc_size > > > You mean, rename struct xhci_dwc3_priv to struct xhci_dwc3 ? I mean use .priv_auto_alloc_size = sizeof(struct xhci_ctrl) directly without adding a new struct > >> >>> + >>> void dwc3_set_mode(struct dwc3 *dwc3_reg, u32 mode) >>> { >>> clrsetbits_le32(&dwc3_reg->g_ctl, >>> @@ -97,3 +107,43 @@ void dwc3_set_fladj(struct dwc3 *dwc3_reg, u32 val) >>> setbits_le32(&dwc3_reg->g_fladj, GFLADJ_30MHZ_REG_SEL | >>> GFLADJ_30MHZ(val)); >>> } >>> + >>> +static int xhci_dwc3_probe(struct udevice *dev) >>> +{ >>> + struct xhci_dwc3_platdata *plat = dev_get_platdata(dev); >>> + struct xhci_hcor *hcor; >>> + struct xhci_hccr *hccr; >>> + struct dwc3 *dwc3_reg; >>> + >>> + hccr = (struct xhci_hccr *)devfdt_get_addr(dev); >>> + hcor = (struct xhci_hcor *)((phys_addr_t)hccr + >>> + HC_LENGTH(xhci_readl(&(hccr)->cr_capbase))); >>> + >>> + dwc3_reg = (struct dwc3 *)((char *)(hccr) + DWC3_REG_OFFSET); >>> + >>> + dwc3_core_init(dwc3_reg); >>> + >>> + return xhci_register(dev, hccr, hcor); >>> +} >>> + >>> +static int xhci_dwc3_remove(struct udevice *dev) >>> +{ >>> + return xhci_deregister(dev); >>> +} >> >> Please nuke this xhci_dwc3_remove(), instead register >> xhci_deregister() directly. > > Is it worth, as in patch 5, xhci_dwc3_remove() will be populated. > Ah, I see. Then there is no need to do that. Thanks! Regards, Bin ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [RESEND][PATCH v5 1/5] usb: host: xhci-dwc3: Convert driver to DM
Hi Bin On 07/06/2017 10:27 AM, Bin Meng wrote: > Hi Patrice, > > On Thu, Jul 6, 2017 at 3:50 PM, wrote: >> From: Patrice Chotard >> >> Add Driver Model support with use of generic DT >> compatible string "snps,dwc3" >> >> Signed-off-by: Patrice Chotard >> Reviewed-by: Simon Glass >> --- >> >> v5: _ replace dev_get_addr() by devfdt_get_addr() >> v4: _ none >> v3: _ none >> v2: _ use dev_get_addr() and removed useless piece of code >> >> >> drivers/usb/host/xhci-dwc3.c | 50 >> >> 1 file changed, 50 insertions(+) >> >> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c >> index 33961cd..8c90836 100644 >> --- a/drivers/usb/host/xhci-dwc3.c >> +++ b/drivers/usb/host/xhci-dwc3.c >> @@ -9,9 +9,19 @@ >>*/ >> >> #include >> +#include >> +#include >> + >> +#include "xhci.h" >> #include >> #include >> >> +DECLARE_GLOBAL_DATA_PTR; >> + >> +struct xhci_dwc3_priv { >> + struct xhci_ctrl ctrl; >> +}; > > Please use 'struct xhci_dwc3' directly for .priv_auto_alloc_size You mean, rename struct xhci_dwc3_priv to struct xhci_dwc3 ? > >> + >> void dwc3_set_mode(struct dwc3 *dwc3_reg, u32 mode) >> { >> clrsetbits_le32(&dwc3_reg->g_ctl, >> @@ -97,3 +107,43 @@ void dwc3_set_fladj(struct dwc3 *dwc3_reg, u32 val) >> setbits_le32(&dwc3_reg->g_fladj, GFLADJ_30MHZ_REG_SEL | >> GFLADJ_30MHZ(val)); >> } >> + >> +static int xhci_dwc3_probe(struct udevice *dev) >> +{ >> + struct xhci_dwc3_platdata *plat = dev_get_platdata(dev); >> + struct xhci_hcor *hcor; >> + struct xhci_hccr *hccr; >> + struct dwc3 *dwc3_reg; >> + >> + hccr = (struct xhci_hccr *)devfdt_get_addr(dev); >> + hcor = (struct xhci_hcor *)((phys_addr_t)hccr + >> + HC_LENGTH(xhci_readl(&(hccr)->cr_capbase))); >> + >> + dwc3_reg = (struct dwc3 *)((char *)(hccr) + DWC3_REG_OFFSET); >> + >> + dwc3_core_init(dwc3_reg); >> + >> + return xhci_register(dev, hccr, hcor); >> +} >> + >> +static int xhci_dwc3_remove(struct udevice *dev) >> +{ >> + return xhci_deregister(dev); >> +} > > Please nuke this xhci_dwc3_remove(), instead register > xhci_deregister() directly. Is it worth, as in patch 5, xhci_dwc3_remove() will be populated. Thanks Patrice > >> + >> +static const struct udevice_id xhci_dwc3_ids[] = { >> + { .compatible = "snps,dwc3" }, >> + { } >> +}; >> + >> +U_BOOT_DRIVER(xhci_dwc3) = { >> + .name = "xhci-dwc3", >> + .id = UCLASS_USB, >> + .of_match = xhci_dwc3_ids, >> + .probe = xhci_dwc3_probe, >> + .remove = xhci_dwc3_remove, >> + .ops = &xhci_usb_ops, >> + .priv_auto_alloc_size = sizeof(struct xhci_dwc3_priv), >> + .platdata_auto_alloc_size = sizeof(struct xhci_dwc3_platdata), >> + .flags = DM_FLAG_ALLOC_PRIV_DMA, >> +}; >> -- > > Regards, > Bin > ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [RESEND][PATCH v5 1/5] usb: host: xhci-dwc3: Convert driver to DM
Hi Patrice, On Thu, Jul 6, 2017 at 3:50 PM, wrote: > From: Patrice Chotard > > Add Driver Model support with use of generic DT > compatible string "snps,dwc3" > > Signed-off-by: Patrice Chotard > Reviewed-by: Simon Glass > --- > > v5: _ replace dev_get_addr() by devfdt_get_addr() > v4: _ none > v3: _ none > v2: _ use dev_get_addr() and removed useless piece of code > > > drivers/usb/host/xhci-dwc3.c | 50 > > 1 file changed, 50 insertions(+) > > diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c > index 33961cd..8c90836 100644 > --- a/drivers/usb/host/xhci-dwc3.c > +++ b/drivers/usb/host/xhci-dwc3.c > @@ -9,9 +9,19 @@ > */ > > #include > +#include > +#include > + > +#include "xhci.h" > #include > #include > > +DECLARE_GLOBAL_DATA_PTR; > + > +struct xhci_dwc3_priv { > + struct xhci_ctrl ctrl; > +}; Please use 'struct xhci_dwc3' directly for .priv_auto_alloc_size > + > void dwc3_set_mode(struct dwc3 *dwc3_reg, u32 mode) > { > clrsetbits_le32(&dwc3_reg->g_ctl, > @@ -97,3 +107,43 @@ void dwc3_set_fladj(struct dwc3 *dwc3_reg, u32 val) > setbits_le32(&dwc3_reg->g_fladj, GFLADJ_30MHZ_REG_SEL | > GFLADJ_30MHZ(val)); > } > + > +static int xhci_dwc3_probe(struct udevice *dev) > +{ > + struct xhci_dwc3_platdata *plat = dev_get_platdata(dev); > + struct xhci_hcor *hcor; > + struct xhci_hccr *hccr; > + struct dwc3 *dwc3_reg; > + > + hccr = (struct xhci_hccr *)devfdt_get_addr(dev); > + hcor = (struct xhci_hcor *)((phys_addr_t)hccr + > + HC_LENGTH(xhci_readl(&(hccr)->cr_capbase))); > + > + dwc3_reg = (struct dwc3 *)((char *)(hccr) + DWC3_REG_OFFSET); > + > + dwc3_core_init(dwc3_reg); > + > + return xhci_register(dev, hccr, hcor); > +} > + > +static int xhci_dwc3_remove(struct udevice *dev) > +{ > + return xhci_deregister(dev); > +} Please nuke this xhci_dwc3_remove(), instead register xhci_deregister() directly. > + > +static const struct udevice_id xhci_dwc3_ids[] = { > + { .compatible = "snps,dwc3" }, > + { } > +}; > + > +U_BOOT_DRIVER(xhci_dwc3) = { > + .name = "xhci-dwc3", > + .id = UCLASS_USB, > + .of_match = xhci_dwc3_ids, > + .probe = xhci_dwc3_probe, > + .remove = xhci_dwc3_remove, > + .ops = &xhci_usb_ops, > + .priv_auto_alloc_size = sizeof(struct xhci_dwc3_priv), > + .platdata_auto_alloc_size = sizeof(struct xhci_dwc3_platdata), > + .flags = DM_FLAG_ALLOC_PRIV_DMA, > +}; > -- Regards, Bin ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot