Make usb device-tree fixup independent of USB controller
Subsystems (3)
v6 cover Make usb device-tree fixup independent of USB controller
Makes usb device-tree fixup independent of Controller type. This enables the usage of device-tree fixup as a common framework for EHCI and XHCI controllers
Sriram Dash (4):
drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to
common file
drivers:usb:common:fsl-dt-fixup: Remove code duplication for
fdt_usb_get_node_type
drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for
xhci controller
drivers:usb:common:fsl-dt-fixup: fix return value of
fdt_usb_get_node_type
Makefile | 1 + drivers/usb/common/Makefile | 7 ++ drivers/usb/common/fsl-dt-fixup.c | 202 ++++++++++++++++++++++++++++++++++++++ drivers/usb/host/ehci-fsl.c | 195 ------------------------------------ include/fdt_support.h | 4 +- 5 files changed, 212 insertions(+), 197 deletions(-) create mode 100644 drivers/usb/common/Makefile create mode 100644 drivers/usb/common/fsl-dt-fixup.c
Signature · 1 line
2.1.0
PATCH v6 1/4 drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file
Move usb device-tree fixup framework from ehci-fsl.c to common place so that it can be used by other drivers as well (xhci-fsl.c).
---
Changes in v6:
- No update
Changes in v5:
- No update
Changes in v4:
- Retain copyright info
- Remove #include from fsl-dt-fixup.c which are not used currently.
Changes in v3:
- git commit -M -C to generate patches
- Break the patch 1(Moving dt fix up and removing code duplication) into 2 patches
Changes in v2:
- Remove the #defines from the patch
Makefile | 1 +
drivers/usb/common/Makefile | 6 +
.../usb/{host/ehci-fsl.c => common/fsl-dt-fixup.c} | 157 -----------------
drivers/usb/host/ehci-fsl.c | 195 ---------------------
4 files changed, 7 insertions(+), 352 deletions(-)
create mode 100644 drivers/usb/common/Makefile
copy drivers/usb/{host/ehci-fsl.c => common/fsl-dt-fixup.c} (54%)Makefile +1 -0
@@ -648,6 +648,7 @@ libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ libs-$(CONFIG_ALTERA_SDRAM) += drivers/ddr/altera/ libs-y += drivers/serial/ libs-y += drivers/usb/dwc3/ +libs-y += drivers/usb/common/ libs-y += drivers/usb/emul/ libs-y += drivers/usb/eth/ libs-y += drivers/usb/gadget/
drivers/usb/common/Makefile new file +6 -0
@@ -0,0 +1,6 @@ +# (C) Copyright 2016 Freescale Semiconductor, Inc. +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-$(CONFIG_USB_EHCI_FSL) += fsl-dt-fixup.o
drivers/usb/common/fsl-dt-fixup.c renamed from drivers/usb/host/ehci-fsl.c +0 -157
176 lines not on this page · raw message
drivers/usb/host/ehci-fsl.c +0 -195
198 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH v6 2/4 drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type
In reply to Sriram DashCall fdt_usb_get_node_type() from fdt_fixup_usb_mode_phy_type() to avoid code duplication.
---
Changes in v6:
- no update.
Changes in v5:
- reorder the functions and gets rid of the forward declaration
Changes in v4:
- Make minimal modification to code
Changes in v3:
- Move the duplication of code to new patch
drivers/usb/common/fsl-dt-fixup.c | 72 ++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 43 deletions(-)
drivers/usb/common/fsl-dt-fixup.c +29 -43
@@ -19,33 +19,45 @@#define CONFIG_USB_MAX_CONTROLLER_COUNT 1#endif -static int fdt_fixup_usb_mode_phy_type (void *blob,const char *mode, -const char *phy_type,int start_offset) +static const 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 *prop_mode ="dr_mode" ; -const char *prop_type ="phy_type" ;const char *node_type =NULL ; -int node_offset; -int err; - 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 ("WARNING: could not find compatible node: %s" , -fdt_strerror (node_offset)); -return -1 ; + *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; } - node_type = compat_dr; }else { node_type = compat_mph; } +return node_type; +} + +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 ; +int node_offset; +int err; + + node_type =fdt_usb_get_node_type (blob, start_offset, &node_offset); +if (!node_type) +return -1 ; +if (mode) { err =fdt_setprop (blob, node_offset, prop_mode, mode,strlen (mode) +1 );
@@ -65,32 +77,6 @@ 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, -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; - } - }else { - node_type = compat_mph; - } - -return node_type; -} -static int fdt_fixup_usb_erratum (void *blob,const char *prop_erratum,int start_offset) {
Signature · 1 line
2.1.0
PATCH v6 3/4 drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller
In reply to Sriram DashEnables usb device-tree fixup code to incorporate xhci controller
---
Changes in v6:
- static const char * const array
Changes in v5:
- Make the array static const
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 | 32 ++++++++++++++++---------------- include/fdt_support.h | 4 ++-- 3 files changed, 19 insertions(+), 18 deletions(-)
drivers/usb/common/Makefile +1 -0
@@ -4,3 +4,4 @@ # obj-$(CONFIG_USB_EHCI_FSL) += fsl-dt-fixup.o +obj-$(CONFIG_USB_XHCI_FSL) += fsl-dt-fixup.o
drivers/usb/common/fsl-dt-fixup.c +16 -16
@@ -19,27 +19,27 @@#define CONFIG_USB_MAX_CONTROLLER_COUNT 1#endif +static const char *const compat_usb_fsl[] = { +"fsl-usb2-mph" , +"fsl-usb2-dr" , +"snps,dwc3" , +NULL +}; +static const 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; +int i; + +for (i =0 ; compat_usb_fsl[i]; i++) { + *node_offset =fdt_node_offset_by_compatible + (blob, start_offset, + compat_usb_fsl[i]); +if (*node_offset >=0 ) { + node_type = compat_usb_fsl[i]; +break ; } - }else { - node_type = compat_mph; }return node_type;
include/fdt_support.h +2 -2
@@ -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);
Signature · 1 line
2.1.0
PATCH v6 3/4 drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller
Quoted 7 lines · Sriram Dash
Enables usb device-tree fixup code to incorporate xhci controller
Signed-off-by Ramneek Mehresh <[email protected]>Signed-off-by Sriram Dash <[email protected]>---
Changes in v6:
- static const char * const array
This changelog entry is completely useless, it tells me exactly nothing about what you changed.
Quoted 91 lines
Changes in v5:
- Make the array static const
Changes in v4:
- Use a terminating entry in the array for getting node type for controller
Changes in v3:
- Modify theMakefileto remove comparison
- Put the supported controllers in array and checking from array
Changes in v2:
- Remove the #defines from the patch and adding controller supportdrivers/usb/common/Makefile | 1 + drivers/usb/common/fsl-dt-fixup.c | 32 ++++++++++++++++---------------- include/fdt_support.h | 4 ++-- 3 files changed, 19 insertions(+), 18 deletions(-)drivers/usb/common/Makefile +1
-0@@ -4,3 +4,4 @@ # obj-$(CONFIG_USB_EHCI_FSL) += fsl-dt-fixup.o +obj-$(CONFIG_USB_XHCI_FSL) += fsl-dt-fixup.odrivers/usb/common/fsl-dt-fixup.c +16
-16@@ -19,27 +19,27 @@#define CONFIG_USB_MAX_CONTROLLER_COUNT 1#endif +static const char *const compat_usb_fsl[] = { +"fsl-usb2-mph" , +"fsl-usb2-dr" , +"snps,dwc3" , +NULL +}; +static const 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; +int i; + +for (i =0 ; compat_usb_fsl[i]; i++) { + *node_offset =fdt_node_offset_by_compatible + (blob, start_offset, + compat_usb_fsl[i]); +if (*node_offset >=0 ) { + node_type = compat_usb_fsl[i]; +break ; } - }else { - node_type = compat_mph; }return node_type;include/fdt_support.h +2
-2@@ -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);
Signature · 2 lines
Best regards, Marek Vasut
PATCH v6 4/4 drivers:usb:common:fsl-dt-fixup: fix return value of fdt_usb_get_node_type
In reply to Sriram DashChanges the return type of fdt_usb_get_node_type from char* to int
---
Changes in v6:
- change the description of the patch
Changes in v5:
- Modified title and description
- Using error codes for return type.
drivers/usb/common/fsl-dt-fixup.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-)
drivers/usb/common/fsl-dt-fixup.c +14 -11
@@ -26,23 +26,24 @@ static const char * const compat_usb_fsl[] = {NULL }; -static const char *fdt_usb_get_node_type (void *blob,int start_offset, -int *node_offset) +static int fdt_usb_get_node_type (void *blob,int start_offset, +int *node_offset,const char **node_type) { -const char *node_type =NULL ;int i; +int ret = -ENOENT ;for (i =0 ; compat_usb_fsl[i]; i++) { *node_offset =fdt_node_offset_by_compatible (blob, start_offset, compat_usb_fsl[i]);if (*node_offset >=0 ) { - node_type = compat_usb_fsl[i]; + *node_type = compat_usb_fsl[i]; + ret =0 ;break ; } } -return node_type; +return ret; } static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,
@@ -54,9 +55,10 @@ static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,int node_offset;int err; - node_type =fdt_usb_get_node_type (blob, start_offset, &node_offset); -if (!node_type) -return -1 ; + err =fdt_usb_get_node_type (blob, start_offset, + &node_offset, &node_type); +if (err <0 ) +return err;if (mode) { err = fdt_setprop(blob, node_offset, prop_mode, mode,
@@ -83,9 +85,10 @@ static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum,int node_offset, err;const char *node_type =NULL ; - node_type =fdt_usb_get_node_type (blob, start_offset, &node_offset); -if (!node_type) -return -1 ; + err =fdt_usb_get_node_type (blob, start_offset, + &node_offset, &node_type); +if (err <0 ) +return err; err =fdt_setprop (blob, node_offset, prop_erratum,NULL ,0 );if (err <0 ) {
Signature · 1 line
2.1.0
v6 cover Make usb device-tree fixup independent of USB controller
In reply to Sriram DashQuoted 13 lines · Sriram Dash
Makes usb device-tree fixup independent of Controller type. This enables the usage of device-tree fixup as a common framework for EHCI and XHCI controllers
Sriram Dash (4):
drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to
common file
drivers:usb:common:fsl-dt-fixup: Remove code duplication for
fdt_usb_get_node_type
drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for
xhci controller
drivers:usb:common:fsl-dt-fixup: fix return value of
fdt_usb_get_node_type
Quoted 9 lines
Makefile | 1 + drivers/usb/common/Makefile | 7 ++ drivers/usb/common/fsl-dt-fixup.c | 202 ++++++++++++++++++++++++++++++++++++++ drivers/usb/host/ehci-fsl.c | 195 ------------------------------------ include/fdt_support.h | 4 +- 5 files changed, 212 insertions(+), 197 deletions(-) create mode 100644 drivers/usb/common/Makefile create mode 100644 drivers/usb/common/fsl-dt-fixup.c
Applied all to u-boot-usb/master
Signature · 2 lines
Best regards, Marek Vasut