Hi, On 21.9.2018 07:57, Siva Durga Prasad Paladugu wrote: > Hi Marek/Michal, > > Can you please review and let me know if any comments otherwise, please take > it up. > > Thanks, > Siva > >> -----Original Message----- >> From: Siva Durga Prasad Paladugu [mailto:[email protected]] >> Sent: Friday, September 07, 2018 4:27 PM >> To: [email protected] >> Cc: Michal Simek <[email protected]>; [email protected]; >> [email protected]; [email protected]; >> [email protected]; Vipul Kumar <[email protected]>; Siva >> Durga Prasad Paladugu <[email protected]> >> Subject: [PATCH v3] usb: dwc3: convert to livetree >> >> From: Vipul Kumar <[email protected]> >> >> Update the DWC3 USB driver to support a live tree. >> >> Signed-off-by: Vipul Kumar <[email protected]> >> Signed-off-by: Siva Durga Prasad Paladugu >> <[email protected]> >> Tested-by: Michal Simek <[email protected]> >> --- >> Changes in v3: >> - Used ofnode_valid() to check for node validity >> This fixes the below compilation failure >> for stih410-b2260_defconfig >> LD cmd/built-in.o >> drivers/usb/host/dwc3-sti-glue.c: In function ‘sti_dwc3_glue_bind’: >> drivers/usb/host/dwc3-sti-glue.c:160:16: error: invalid operands to binary >> <= (have ‘ofnode {aka union ofnode_union}’ and ‘int’) >> if (dwc3_node <= 0) { >> ^~ >> make[1]: *** [drivers/usb/host/dwc3-sti-glue.o] Error 1 >> >> Changes in v2: >> - compilation failures for am335x_hs_evm_uart platform during travis ci as >> v1 didn’t made corresponding changes to drivers/usb/musb-new/ti- >> musb.c >> as per live tree conversion. >> Now it is fixed in v2 by moving this driver to support live tree. >> Also fixed dwc3-sti-glue.c to support live tree. >> --- >> drivers/usb/common/common.c | 11 +++++------ >> drivers/usb/dwc3/dwc3-generic.c | 17 +++++++---------- >> drivers/usb/host/dwc3-sti-glue.c | 9 ++++----- >> drivers/usb/host/xhci-dwc3.c | 3 ++- >> drivers/usb/host/xhci-zynqmp.c | 3 +-- >> drivers/usb/musb-new/ti-musb.c | 11 ++++------- >> include/linux/usb/otg.h | 6 ++++-- >> 7 files changed, 27 insertions(+), 33 deletions(-) >> >> diff --git a/drivers/usb/common/common.c >> b/drivers/usb/common/common.c index a55def5..3dea79b 100644 >> --- a/drivers/usb/common/common.c >> +++ b/drivers/usb/common/common.c >> @@ -10,6 +10,7 @@ >> #include <linux/libfdt.h> >> #include <linux/usb/otg.h> >> #include <linux/usb/ch9.h> >> +#include <dm.h> >> >> DECLARE_GLOBAL_DATA_PTR; >> >> @@ -20,13 +21,12 @@ static const char *const usb_dr_modes[] = { >> [USB_DR_MODE_OTG] = "otg", >> }; >> >> -enum usb_dr_mode usb_get_dr_mode(int node) >> +enum usb_dr_mode usb_get_dr_mode(ofnode node) >> { >> - const void *fdt = gd->fdt_blob; >> const char *dr_mode; >> int i; >> >> - dr_mode = fdt_getprop(fdt, node, "dr_mode", NULL); >> + dr_mode = ofnode_get_property(node, "dr_mode", NULL); >> if (!dr_mode) { >> pr_err("usb dr_mode not found\n"); >> return USB_DR_MODE_UNKNOWN; >> @@ -48,13 +48,12 @@ static const char *const speed_names[] = { >> [USB_SPEED_SUPER] = "super-speed", >> }; >> >> -enum usb_device_speed usb_get_maximum_speed(int node) >> +enum usb_device_speed usb_get_maximum_speed(ofnode node) >> { >> - const void *fdt = gd->fdt_blob; >> const char *max_speed; >> int i; >> >> - max_speed = fdt_getprop(fdt, node, "maximum-speed", NULL); >> + max_speed = ofnode_get_property(node, "maximum-speed", >> NULL); >> if (!max_speed) { >> pr_err("usb maximum-speed not found\n"); >> return USB_SPEED_UNKNOWN; >> diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3- >> generic.c index ca63eac..ef72c8c 100644 >> --- a/drivers/usb/dwc3/dwc3-generic.c >> +++ b/drivers/usb/dwc3/dwc3-generic.c >> @@ -61,18 +61,17 @@ static int dwc3_generic_peripheral_remove(struct >> udevice *dev) static int >> dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev) { >> struct dwc3 *priv = dev_get_priv(dev); >> - int node = dev_of_offset(dev); >> >> - priv->regs = (void *)devfdt_get_addr(dev); >> + priv->regs = (void *)dev_read_addr(dev); >> priv->regs += DWC3_GLOBALS_REGS_START; >> >> - priv->maximum_speed = usb_get_maximum_speed(node); >> + priv->maximum_speed = usb_get_maximum_speed(dev->node); >> if (priv->maximum_speed == USB_SPEED_UNKNOWN) { >> pr_err("Invalid usb maximum speed\n"); >> return -ENODEV; >> } >> >> - priv->dr_mode = usb_get_dr_mode(node); >> + priv->dr_mode = usb_get_dr_mode(dev->node); >> if (priv->dr_mode == USB_DR_MODE_UNKNOWN) { >> pr_err("Invalid usb mode setup\n"); >> return -ENODEV; >> @@ -100,13 +99,11 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = { >> >> static int dwc3_generic_bind(struct udevice *parent) { >> - const void *fdt = gd->fdt_blob; >> - int node; >> + ofnode node; >> int ret; >> >> - for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0; >> - node = fdt_next_subnode(fdt, node)) { >> - const char *name = fdt_get_name(fdt, node, NULL); >> + dev_for_each_subnode(node, parent) { >> + const char *name = (char *)ofnode_get_name(node); >> enum usb_dr_mode dr_mode; >> struct udevice *dev; >> const char *driver; >> @@ -133,7 +130,7 @@ static int dwc3_generic_bind(struct udevice >> *parent) >> }; >> >> ret = device_bind_driver_to_node(parent, driver, name, >> - offset_to_ofnode(node), >> &dev); >> + node, &dev); >> if (ret) { >> debug("%s: not able to bind usb device mode\n", >> __func__); >> diff --git a/drivers/usb/host/dwc3-sti-glue.c b/drivers/usb/host/dwc3-sti- >> glue.c >> index ad7cf6e..88d9b54 100644 >> --- a/drivers/usb/host/dwc3-sti-glue.c >> +++ b/drivers/usb/host/dwc3-sti-glue.c >> @@ -153,18 +153,17 @@ static int >> sti_dwc3_glue_ofdata_to_platdata(struct udevice *dev) static int >> sti_dwc3_glue_bind(struct udevice *dev) { >> struct sti_dwc3_glue_platdata *plat = dev_get_platdata(dev); >> - int dwc3_node; >> + ofnode dwc3_node; >> >> /* check if one subnode is present */ >> - dwc3_node = fdt_first_subnode(gd->fdt_blob, dev_of_offset(dev)); >> - if (dwc3_node <= 0) { >> + dwc3_node = dev_read_first_subnode(dev); >> + if (!ofnode_valid(dwc3_node)) { >> pr_err("Can't find subnode for %s\n", dev->name); >> return -ENODEV; >> } >> >> /* check if the subnode compatible string is the dwc3 one*/ >> - if (fdt_node_check_compatible(gd->fdt_blob, dwc3_node, >> - "snps,dwc3") != 0) { >> + if (ofnode_device_is_compatible(dwc3_node, "snps,dwc3") != 0) { >> pr_err("Can't find dwc3 subnode for %s\n", dev->name); >> return -ENODEV; >> } >> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c >> index 80754d7..cbab436 100644 >> --- a/drivers/usb/host/xhci-dwc3.c >> +++ b/drivers/usb/host/xhci-dwc3.c >> @@ -202,6 +202,7 @@ static int xhci_dwc3_probe(struct udevice *dev) >> struct dwc3 *dwc3_reg; >> enum usb_dr_mode dr_mode; >> int ret; >> + ofnode node; >> >> hccr = (struct xhci_hccr *)((uintptr_t)dev_read_addr(dev)); >> hcor = (struct xhci_hcor *)((uintptr_t)hccr + @@ -215,7 +216,7 @@ >> static int xhci_dwc3_probe(struct udevice *dev) >> >> dwc3_core_init(dwc3_reg); >> >> - dr_mode = usb_get_dr_mode(dev_of_offset(dev)); >> + dr_mode = usb_get_dr_mode(node); >> if (dr_mode == USB_DR_MODE_UNKNOWN) >> /* by default set dual role mode to HOST */ >> dr_mode = USB_DR_MODE_HOST; >> diff --git a/drivers/usb/host/xhci-zynqmp.c b/drivers/usb/host/xhci- >> zynqmp.c index e44e1ae..5a5b870 100644 >> --- a/drivers/usb/host/xhci-zynqmp.c >> +++ b/drivers/usb/host/xhci-zynqmp.c >> @@ -121,10 +121,9 @@ static int xhci_usb_remove(struct udevice *dev) >> static int xhci_usb_ofdata_to_platdata(struct udevice *dev) { >> struct zynqmp_xhci_platdata *plat = dev_get_platdata(dev); >> - const void *blob = gd->fdt_blob; >> >> /* Get the base address for XHCI controller from the device node */ >> - plat->hcd_base = fdtdec_get_addr(blob, dev_of_offset(dev), "reg"); >> + plat->hcd_base = dev_read_addr(dev); >> if (plat->hcd_base == FDT_ADDR_T_NONE) { >> debug("Can't get the XHCI register base address\n"); >> return -ENXIO; >> diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti- >> musb.c index 9fbe2d6..bdb5985 100644 >> --- a/drivers/usb/musb-new/ti-musb.c >> +++ b/drivers/usb/musb-new/ti-musb.c >> @@ -177,7 +177,6 @@ static int ti_musb_host_ofdata_to_platdata(struct >> udevice *dev) { >> struct ti_musb_platdata *platdata = dev_get_platdata(dev); >> const void *fdt = gd->fdt_blob; >> - int node = dev_of_offset(dev); >> int ret; >> >> ret = ti_musb_ofdata_to_platdata(dev); @@ -204,14 +203,12 @@ >> U_BOOT_DRIVER(ti_musb_host) = { >> >> static int ti_musb_wrapper_bind(struct udevice *parent) { >> - const void *fdt = gd->fdt_blob; >> - int node; >> + ofnode node; >> int ret; >> >> - for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0; >> - node = fdt_next_subnode(fdt, node)) { >> + dev_for_each_subnode(node, parent) { >> struct udevice *dev; >> - const char *name = fdt_get_name(fdt, node, NULL); >> + const char *name = (char *)ofnode_get_name(node); >> enum usb_dr_mode dr_mode; >> struct driver *drv; >> >> @@ -226,7 +223,7 @@ static int ti_musb_wrapper_bind(struct udevice >> *parent) >> case USB_DR_MODE_HOST: >> /* Bind MUSB host */ >> ret = device_bind_driver_to_node(parent, "ti-musb- >> host", >> - name, offset_to_ofnode(node), >> &dev); >> + name, node, &dev); >> if (ret) { >> pr_err("musb - not able to bind usb host >> node\n"); >> return ret; >> diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index >> d2604c5..baf4d91 100644 >> --- a/include/linux/usb/otg.h >> +++ b/include/linux/usb/otg.h >> @@ -9,6 +9,8 @@ >> #ifndef __LINUX_USB_OTG_H >> #define __LINUX_USB_OTG_H >> >> +#include <dm/ofnode.h> >> + >> enum usb_dr_mode { >> USB_DR_MODE_UNKNOWN, >> USB_DR_MODE_HOST, >> @@ -23,7 +25,7 @@ enum usb_dr_mode { >> * The function gets phy interface string from property 'dr_mode', >> * and returns the correspondig enum usb_dr_mode >> */ >> -enum usb_dr_mode usb_get_dr_mode(int node); >> +enum usb_dr_mode usb_get_dr_mode(ofnode node); >> >> /** >> * usb_get_maximum_speed() - Get maximum speed for given device @@ - >> 32,6 +34,6 @@ enum usb_dr_mode usb_get_dr_mode(int node); >> * The function gets phy interface string from property 'maximum-speed', >> * and returns the correspondig enum usb_device_speed >> */ >> -enum usb_device_speed usb_get_maximum_speed(int node); >> +enum usb_device_speed usb_get_maximum_speed(ofnode node); >> >> #endif /* __LINUX_USB_OTG_H */ >> -- >> 2.7.4 >
I have build manually all targets which Tom reported: am335x_hs_evm am335x_hs_evm_uart brppt1_spi brppt1_mmc am335x_evm brppt1_nand and stih410-b2260 Travis is also clean. Marek: Can you please put it to your queue? Thanks, Michal _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

