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 <patrice.chot...@st.com> > wrote: >> Hi Bin >> >> On 07/06/2017 10:27 AM, Bin Meng wrote: >>> Hi Patrice, >>> >>> On Thu, Jul 6, 2017 at 3:50 PM, <patrice.chot...@st.com> wrote: >>>> From: Patrice Chotard <patrice.chot...@st.com> >>>> >>>> Add Driver Model support with use of generic DT >>>> compatible string "snps,dwc3" >>>> >>>> Signed-off-by: Patrice Chotard <patrice.chot...@st.com> >>>> Reviewed-by: Simon Glass <s...@chromium.org> >>>> --- >>>> >>>> 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 <common.h> >>>> +#include <dm.h> >>>> +#include <usb.h> >>>> + >>>> +#include "xhci.h" >>>> #include <asm/io.h> >>>> #include <linux/usb/dwc3.h> >>>> >>>> +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