Message ID | 1457677576-29195-4-git-send-email-sriram.dash@nxp.com |
---|---|
State | Superseded |
Delegated to: | York Sun |
Headers | show |
On 03/11/2016 07:26 AM, Sriram Dash wrote: > Enables usb device-tree fixup code to incorporate xhci controller > > Signed-off-by: Ramneek Mehresh <ramneek.mehresh@nxp.com> > Signed-off-by: Sriram Dash <sriram.dash@nxp.com> > --- > Changes in v4: > - Use a terminating entry in the array for getting node type for controller > Changes in v3: > - Modify the Makefile to remove comparison > - Put the supported controllers in array and checking from array > Changes in v2: > - Remove the #defines from the patch and adding controller support > > drivers/usb/common/Makefile | 1 + > drivers/usb/common/fsl-dt-fixup.c | 44 +++++++++++++++++++-------------------- > include/fdt_support.h | 4 ++-- > 3 files changed, 25 insertions(+), 24 deletions(-) > > diff --git a/drivers/usb/common/Makefile b/drivers/usb/common/Makefile > index a38ee4a..2f3d43d 100644 > --- a/drivers/usb/common/Makefile > +++ b/drivers/usb/common/Makefile > @@ -4,3 +4,4 @@ > # > > obj-$(CONFIG_USB_EHCI_FSL) += fsl-dt-fixup.o > +obj-$(CONFIG_USB_XHCI_FSL) += fsl-dt-fixup.o > diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c > index 64e20d8..b574127 100644 > --- a/drivers/usb/common/fsl-dt-fixup.c > +++ b/drivers/usb/common/fsl-dt-fixup.c > @@ -19,15 +19,21 @@ > #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 > #endif > > -static const char *fdt_usb_get_node_type(void *blob, int start_offset, > +static char *fdt_usb_get_node_type(void *blob, int start_offset, > int *node_offset); > > +char compat_usb_fsl[] = { static const > + "fsl-usb2-mph" "\0" > + "fsl-usb2-dr" "\0" > + "snps,dwc3" "\0" > +}; > + > static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, > const char *phy_type, int start_offset) > { > const char *prop_mode = "dr_mode"; > const char *prop_type = "phy_type"; > - const char *node_type = NULL; > + char *node_type = NULL; > int node_offset; > int err; > > @@ -54,29 +60,23 @@ static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, > return node_offset; > } [...]
>-----Original Message----- >From: Marek Vasut [mailto:marex@denx.de] >Sent: Friday, March 11, 2016 10:14 PM >To: Sriram Dash <sriram.dash@nxp.com>; u-boot@lists.denx.de >Cc: york sun <york.sun@nxp.com>; Ramneek Mehresh ><ramneek.mehresh@nxp.com>; Rajesh Bhagat <rajesh.bhagat@nxp.com> >Subject: Re: [PATCH v4 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup >support for xhci controller > >On 03/11/2016 07:26 AM, Sriram Dash wrote: >> Enables usb device-tree fixup code to incorporate xhci controller >> >> Signed-off-by: Ramneek Mehresh <ramneek.mehresh@nxp.com> >> Signed-off-by: Sriram Dash <sriram.dash@nxp.com> >> --- >> Changes in v4: >> - Use a terminating entry in the array for getting node type for >> controller Changes in v3: >> - Modify the Makefile to remove comparison >> - Put the supported controllers in array and checking from array >> Changes in v2: >> - Remove the #defines from the patch and adding controller support >> >> drivers/usb/common/Makefile | 1 + >> drivers/usb/common/fsl-dt-fixup.c | 44 +++++++++++++++++++-------------------- >> include/fdt_support.h | 4 ++-- >> 3 files changed, 25 insertions(+), 24 deletions(-) >> >> diff --git a/drivers/usb/common/Makefile b/drivers/usb/common/Makefile >> index a38ee4a..2f3d43d 100644 >> --- a/drivers/usb/common/Makefile >> +++ b/drivers/usb/common/Makefile >> @@ -4,3 +4,4 @@ >> # >> >> obj-$(CONFIG_USB_EHCI_FSL) += fsl-dt-fixup.o >> +obj-$(CONFIG_USB_XHCI_FSL) += fsl-dt-fixup.o >> diff --git a/drivers/usb/common/fsl-dt-fixup.c >> b/drivers/usb/common/fsl-dt-fixup.c >> index 64e20d8..b574127 100644 >> --- a/drivers/usb/common/fsl-dt-fixup.c >> +++ b/drivers/usb/common/fsl-dt-fixup.c >> @@ -19,15 +19,21 @@ >> #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif >> >> -static const char *fdt_usb_get_node_type(void *blob, int >> start_offset, >> +static char *fdt_usb_get_node_type(void *blob, int start_offset, >> int *node_offset); >> >> +char compat_usb_fsl[] = { > >static const > Will take care in v5. >> + "fsl-usb2-mph" "\0" >> + "fsl-usb2-dr" "\0" >> + "snps,dwc3" "\0" >> +}; >> + >> static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, >> const char *phy_type, int start_offset) { >> const char *prop_mode = "dr_mode"; >> const char *prop_type = "phy_type"; >> - const char *node_type = NULL; >> + char *node_type = NULL; >> int node_offset; >> int err; >> >> @@ -54,29 +60,23 @@ static int fdt_fixup_usb_mode_phy_type(void *blob, >const char *mode, >> return node_offset; >> } >[...] > > >-- >Best regards, >Marek Vasut
diff --git a/drivers/usb/common/Makefile b/drivers/usb/common/Makefile index a38ee4a..2f3d43d 100644 --- a/drivers/usb/common/Makefile +++ b/drivers/usb/common/Makefile @@ -4,3 +4,4 @@ # obj-$(CONFIG_USB_EHCI_FSL) += fsl-dt-fixup.o +obj-$(CONFIG_USB_XHCI_FSL) += fsl-dt-fixup.o diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c index 64e20d8..b574127 100644 --- a/drivers/usb/common/fsl-dt-fixup.c +++ b/drivers/usb/common/fsl-dt-fixup.c @@ -19,15 +19,21 @@ #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif -static const char *fdt_usb_get_node_type(void *blob, int start_offset, +static char *fdt_usb_get_node_type(void *blob, int start_offset, int *node_offset); +char compat_usb_fsl[] = { + "fsl-usb2-mph" "\0" + "fsl-usb2-dr" "\0" + "snps,dwc3" "\0" +}; + static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, const char *phy_type, int start_offset) { const char *prop_mode = "dr_mode"; const char *prop_type = "phy_type"; - const char *node_type = NULL; + char *node_type = NULL; int node_offset; int err; @@ -54,29 +60,23 @@ static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, return node_offset; } -static const char *fdt_usb_get_node_type(void *blob, int start_offset, +static char *fdt_usb_get_node_type(void *blob, int start_offset, int *node_offset) { - const char *compat_dr = "fsl-usb2-dr"; - const char *compat_mph = "fsl-usb2-mph"; - const char *node_type = NULL; - - *node_offset = fdt_node_offset_by_compatible(blob, start_offset, - compat_mph); - if (*node_offset < 0) { - *node_offset = fdt_node_offset_by_compatible(blob, - start_offset, - compat_dr); - if (*node_offset < 0) { - printf("ERROR: could not find compatible node: %s\n", - fdt_strerror(*node_offset)); - } else { - node_type = compat_dr; + char *node_type = NULL; + char *node_name, *nxt; + + for (node_name = compat_usb_fsl; *node_name; node_name = nxt + 1) { + nxt = node_name; + while (*nxt) + ++nxt; + *node_offset = fdt_node_offset_by_compatible + (blob, start_offset, node_name); + if (*node_offset >= 0) { + node_type = node_name; + break; } - } else { - node_type = compat_mph; } - return node_type; } @@ -84,7 +84,7 @@ static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum, int start_offset) { int node_offset, err; - const char *node_type = NULL; + char *node_type = NULL; node_type = fdt_usb_get_node_type(blob, start_offset, &node_offset); if (!node_type) diff --git a/include/fdt_support.h b/include/fdt_support.h index 296add0..d34e959 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -113,11 +113,11 @@ void fdt_fixup_qe_firmware(void *fdt); */ int fdt_fixup_display(void *blob, const char *path, const char *display); -#if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) +#if defined(CONFIG_USB_EHCI_FSL) || defined(CONFIG_USB_XHCI_FSL) void fdt_fixup_dr_usb(void *blob, bd_t *bd); #else static inline void fdt_fixup_dr_usb(void *blob, bd_t *bd) {} -#endif /* defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) */ +#endif /* defined(CONFIG_USB_EHCI_FSL) || defined(CONFIG_USB_XHCI_FSL) */ #if defined(CONFIG_SYS_FSL_SEC_COMPAT) void fdt_fixup_crypto_node(void *blob, int sec_rev);