* [U-Boot] [PATCH v4 0/4] Make usb device-tree fixup independent of USB controller
@ 2016-03-11 6:26 Sriram Dash
2016-03-11 6:26 ` [U-Boot] [PATCH v4 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash
` (3 more replies)
0 siblings, 4 replies; 16+ messages in thread
From: Sriram Dash @ 2016-03-11 6:26 UTC (permalink / raw)
To: u-boot
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 fdt_usb_get_node_type() to return
error code
Makefile | 1 +
drivers/usb/common/Makefile | 7 ++
drivers/usb/common/fsl-dt-fixup.c | 205 ++++++++++++++++++++++++++++++++++++++
drivers/usb/host/ehci-fsl.c | 195 ------------------------------------
include/fdt_support.h | 4 +-
5 files changed, 215 insertions(+), 197 deletions(-)
create mode 100644 drivers/usb/common/Makefile
create mode 100644 drivers/usb/common/fsl-dt-fixup.c
--
2.1.0
^ permalink raw reply [flat|nested] 16+ messages in thread* [U-Boot] [PATCH v4 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file 2016-03-11 6:26 [U-Boot] [PATCH v4 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash @ 2016-03-11 6:26 ` Sriram Dash 2016-03-11 16:40 ` Marek Vasut 2016-03-11 6:26 ` [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type Sriram Dash ` (2 subsequent siblings) 3 siblings, 1 reply; 16+ messages in thread From: Sriram Dash @ 2016-03-11 6:26 UTC (permalink / raw) To: u-boot 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). Signed-off-by: Ramneek Mehresh <ramneek.mehresh@nxp.com> Signed-off-by: Sriram Dash <sriram.dash@nxp.com> --- Changes in v4: - Retain copywrite 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%) diff --git a/Makefile b/Makefile index fadf1a3..40ead3d 100644 --- a/Makefile +++ b/Makefile @@ -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/ diff --git a/drivers/usb/common/Makefile b/drivers/usb/common/Makefile new file mode 100644 index 0000000..a38ee4a --- /dev/null +++ b/drivers/usb/common/Makefile @@ -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 diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/common/fsl-dt-fixup.c similarity index 54% copy from drivers/usb/host/ehci-fsl.c copy to drivers/usb/common/fsl-dt-fixup.c index 97b7f14..92adb46 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/common/fsl-dt-fixup.c @@ -9,172 +9,16 @@ */ #include <common.h> -#include <pci.h> #include <usb.h> #include <asm/io.h> -#include <usb/ehci-fsl.h> #include <hwconfig.h> #include <fsl_usb.h> #include <fdt_support.h> -#include "ehci.h" - #ifndef CONFIG_USB_MAX_CONTROLLER_COUNT #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif -static void set_txfifothresh(struct usb_ehci *, u32); - -/* Check USB PHY clock valid */ -static int usb_phy_clk_valid(struct usb_ehci *ehci) -{ - if (!((in_be32(&ehci->control) & PHY_CLK_VALID) || - in_be32(&ehci->prictrl))) { - printf("USB PHY clock invalid!\n"); - return 0; - } else { - return 1; - } -} - -/* - * Create the appropriate control structures to manage - * a new EHCI host controller. - * - * Excerpts from linux ehci fsl driver. - */ -int ehci_hcd_init(int index, enum usb_init_type init, - struct ehci_hccr **hccr, struct ehci_hcor **hcor) -{ - struct usb_ehci *ehci = NULL; - const char *phy_type = NULL; - size_t len; - char current_usb_controller[5]; -#ifdef CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY - char usb_phy[5]; - - usb_phy[0] = '\0'; -#endif - if (has_erratum_a007075()) { - /* - * A 5ms delay is needed after applying soft-reset to the - * controller to let external ULPI phy come out of reset. - * This delay needs to be added before re-initializing - * the controller after soft-resetting completes - */ - mdelay(5); - } - memset(current_usb_controller, '\0', 5); - snprintf(current_usb_controller, 4, "usb%d", index+1); - - switch (index) { - case 0: - ehci = (struct usb_ehci *)CONFIG_SYS_FSL_USB1_ADDR; - break; - case 1: - ehci = (struct usb_ehci *)CONFIG_SYS_FSL_USB2_ADDR; - break; - default: - printf("ERROR: wrong controller index!!\n"); - return -EINVAL; - }; - - *hccr = (struct ehci_hccr *)((uint32_t)&ehci->caplength); - *hcor = (struct ehci_hcor *)((uint32_t) *hccr + - HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase))); - - /* Set to Host mode */ - setbits_le32(&ehci->usbmode, CM_HOST); - - out_be32(&ehci->snoop1, SNOOP_SIZE_2GB); - out_be32(&ehci->snoop2, 0x80000000 | SNOOP_SIZE_2GB); - - /* Init phy */ - if (hwconfig_sub(current_usb_controller, "phy_type")) - phy_type = hwconfig_subarg(current_usb_controller, - "phy_type", &len); - else - phy_type = getenv("usb_phy_type"); - - if (!phy_type) { -#ifdef CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY - /* if none specified assume internal UTMI */ - strcpy(usb_phy, "utmi"); - phy_type = usb_phy; -#else - printf("WARNING: USB phy type not defined !!\n"); - return -1; -#endif - } - - if (!strncmp(phy_type, "utmi", 4)) { -#if defined(CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY) - clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK, - PHY_CLK_SEL_UTMI); - clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK, - UTMI_PHY_EN); - udelay(1000); /* delay required for PHY Clk to appear */ -#endif - out_le32(&(*hcor)->or_portsc[0], PORT_PTS_UTMI); - clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK, - USB_EN); - } else { - clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK, - PHY_CLK_SEL_ULPI); - clrsetbits_be32(&ehci->control, UTMI_PHY_EN | - CONTROL_REGISTER_W1C_MASK, USB_EN); - udelay(1000); /* delay required for PHY Clk to appear */ - if (!usb_phy_clk_valid(ehci)) - return -EINVAL; - out_le32(&(*hcor)->or_portsc[0], PORT_PTS_ULPI); - } - - out_be32(&ehci->prictrl, 0x0000000c); - out_be32(&ehci->age_cnt_limit, 0x00000040); - out_be32(&ehci->sictrl, 0x00000001); - - in_le32(&ehci->usbmode); - - if (has_erratum_a007798()) - set_txfifothresh(ehci, TXFIFOTHRESH); - - if (has_erratum_a004477()) { - /* - * When reset is issued while any ULPI transaction is ongoing - * then it may result to corruption of ULPI Function Control - * Register which eventually causes phy clock to enter low - * power mode which stops the clock. Thus delay is required - * before reset to let ongoing ULPI transaction complete. - */ - udelay(1); - } - return 0; -} - -/* - * Destroy the appropriate control structures corresponding - * the the EHCI host controller. - */ -int ehci_hcd_stop(int index) -{ - return 0; -} - -/* - * Setting the value of TXFIFO_THRESH field in TXFILLTUNING register - * to counter DDR latencies in writing data into Tx buffer. - * This prevents Tx buffer from getting underrun - */ -static void set_txfifothresh(struct usb_ehci *ehci, u32 txfifo_thresh) -{ - u32 cmd; - cmd = ehci_readl(&ehci->txfilltuning); - cmd &= ~TXFIFO_THRESH_MASK; - cmd |= TXFIFO_THRESH(txfifo_thresh); - ehci_writel(&ehci->txfilltuning, cmd); -} - -#if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, const char *phy_type, int start_offset) { @@ -367,4 +211,3 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd) } } } -#endif diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index 97b7f14..ec6b8fe 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c @@ -173,198 +173,3 @@ static void set_txfifothresh(struct usb_ehci *ehci, u32 txfifo_thresh) cmd |= TXFIFO_THRESH(txfifo_thresh); ehci_writel(&ehci->txfilltuning, cmd); } - -#if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) -static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, - const char *phy_type, int start_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_type = compat_dr; - } else { - node_type = compat_mph; - } - - if (mode) { - err = fdt_setprop(blob, node_offset, prop_mode, mode, - strlen(mode) + 1); - if (err < 0) - printf("WARNING: could not set %s for %s: %s.\n", - prop_mode, node_type, fdt_strerror(err)); - } - - if (phy_type) { - err = fdt_setprop(blob, node_offset, prop_type, phy_type, - strlen(phy_type) + 1); - if (err < 0) - printf("WARNING: could not set %s for %s: %s.\n", - prop_type, node_type, fdt_strerror(err)); - } - - 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) -{ - 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_setprop(blob, node_offset, prop_erratum, NULL, 0); - if (err < 0) { - printf("ERROR: could not set %s for %s: %s.\n", - prop_erratum, node_type, fdt_strerror(err)); - } - - return node_offset; -} - -void fdt_fixup_dr_usb(void *blob, bd_t *bd) -{ - static const char * const modes[] = { "host", "peripheral", "otg" }; - static const char * const phys[] = { "ulpi", "utmi", "utmi_dual" }; - int usb_erratum_a006261_off = -1; - int usb_erratum_a007075_off = -1; - int usb_erratum_a007792_off = -1; - int usb_erratum_a005697_off = -1; - int usb_mode_off = -1; - int usb_phy_off = -1; - char str[5]; - int i, j; - - for (i = 1; i <= CONFIG_USB_MAX_CONTROLLER_COUNT; i++) { - const char *dr_mode_type = NULL; - const char *dr_phy_type = NULL; - int mode_idx = -1, phy_idx = -1; - - snprintf(str, 5, "%s%d", "usb", i); - if (hwconfig(str)) { - for (j = 0; j < ARRAY_SIZE(modes); j++) { - if (hwconfig_subarg_cmp(str, "dr_mode", - modes[j])) { - mode_idx = j; - break; - } - } - - for (j = 0; j < ARRAY_SIZE(phys); j++) { - if (hwconfig_subarg_cmp(str, "phy_type", - phys[j])) { - phy_idx = j; - break; - } - } - - if (mode_idx < 0 && phy_idx < 0) { - printf("WARNING: invalid phy or mode\n"); - return; - } - - if (mode_idx > -1) - dr_mode_type = modes[mode_idx]; - - if (phy_idx > -1) - dr_phy_type = phys[phy_idx]; - } - - if (has_dual_phy()) - dr_phy_type = phys[2]; - - usb_mode_off = fdt_fixup_usb_mode_phy_type(blob, - dr_mode_type, NULL, - usb_mode_off); - - if (usb_mode_off < 0) - return; - - usb_phy_off = fdt_fixup_usb_mode_phy_type(blob, - NULL, dr_phy_type, - usb_phy_off); - - if (usb_phy_off < 0) - return; - - if (has_erratum_a006261()) { - usb_erratum_a006261_off = fdt_fixup_usb_erratum - (blob, - "fsl,usb-erratum-a006261", - usb_erratum_a006261_off); - if (usb_erratum_a006261_off < 0) - return; - } - - if (has_erratum_a007075()) { - usb_erratum_a007075_off = fdt_fixup_usb_erratum - (blob, - "fsl,usb-erratum-a007075", - usb_erratum_a007075_off); - if (usb_erratum_a007075_off < 0) - return; - } - - if (has_erratum_a007792()) { - usb_erratum_a007792_off = fdt_fixup_usb_erratum - (blob, - "fsl,usb-erratum-a007792", - usb_erratum_a007792_off); - if (usb_erratum_a007792_off < 0) - return; - } - if (has_erratum_a005697()) { - usb_erratum_a005697_off = fdt_fixup_usb_erratum - (blob, - "fsl,usb-erratum-a005697", - usb_erratum_a005697_off); - if (usb_erratum_a005697_off < 0) - return; - } - } -} -#endif -- 2.1.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file 2016-03-11 6:26 ` [U-Boot] [PATCH v4 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash @ 2016-03-11 16:40 ` Marek Vasut 0 siblings, 0 replies; 16+ messages in thread From: Marek Vasut @ 2016-03-11 16:40 UTC (permalink / raw) To: u-boot On 03/11/2016 07:26 AM, Sriram Dash wrote: > 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). > > Signed-off-by: Ramneek Mehresh <ramneek.mehresh@nxp.com> > Signed-off-by: Sriram Dash <sriram.dash@nxp.com> > --- > Changes in v4: > - Retain copywrite 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 > It's "copyright", not copywrite. Other than that: Acked-by: Marek Vasut <marex@denx.de> -- Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type 2016-03-11 6:26 [U-Boot] [PATCH v4 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash 2016-03-11 6:26 ` [U-Boot] [PATCH v4 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash @ 2016-03-11 6:26 ` Sriram Dash 2016-03-11 16:43 ` Marek Vasut 2016-03-11 6:26 ` [U-Boot] [PATCH v4 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller Sriram Dash 2016-03-11 6:26 ` [U-Boot] [PATCH v4 4/4] drivers:usb:common:fsl-dt-fixup: fix fdt_usb_get_node_type() to return error code Sriram Dash 3 siblings, 1 reply; 16+ messages in thread From: Sriram Dash @ 2016-03-11 6:26 UTC (permalink / raw) To: u-boot Call fdt_usb_get_node_type() from fdt_fixup_usb_mode_phy_type() to avoid code duplication. Signed-off-by: Sriram Dash <sriram.dash@nxp.com> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> --- 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 | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c index 92adb46..64e20d8 100644 --- a/drivers/usb/common/fsl-dt-fixup.c +++ b/drivers/usb/common/fsl-dt-fixup.c @@ -19,32 +19,21 @@ #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif +static const char *fdt_usb_get_node_type(void *blob, int start_offset, + int *node_offset); + static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, const char *phy_type, int start_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_type = compat_dr; - } else { - node_type = compat_mph; - } + 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, -- 2.1.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type 2016-03-11 6:26 ` [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type Sriram Dash @ 2016-03-11 16:43 ` Marek Vasut 2016-03-18 5:05 ` Sriram Dash 0 siblings, 1 reply; 16+ messages in thread From: Marek Vasut @ 2016-03-11 16:43 UTC (permalink / raw) To: u-boot On 03/11/2016 07:26 AM, Sriram Dash wrote: > Call fdt_usb_get_node_type() from fdt_fixup_usb_mode_phy_type() to > avoid code duplication. > > Signed-off-by: Sriram Dash <sriram.dash@nxp.com> > Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> > --- > 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 | 23 ++++++----------------- > 1 file changed, 6 insertions(+), 17 deletions(-) > > diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c > index 92adb46..64e20d8 100644 > --- a/drivers/usb/common/fsl-dt-fixup.c > +++ b/drivers/usb/common/fsl-dt-fixup.c > @@ -19,32 +19,21 @@ > #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 > #endif > > +static const char *fdt_usb_get_node_type(void *blob, int start_offset, > + int *node_offset); > + Why do you need this forward declaration ? > static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, > const char *phy_type, int start_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_type = compat_dr; > - } else { > - node_type = compat_mph; > - } > + 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, > -- Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type 2016-03-11 16:43 ` Marek Vasut @ 2016-03-18 5:05 ` Sriram Dash 2016-03-18 11:21 ` Marek Vasut 0 siblings, 1 reply; 16+ messages in thread From: Sriram Dash @ 2016-03-18 5:05 UTC (permalink / raw) To: u-boot >-----Original Message----- >From: Marek Vasut [mailto:marex at denx.de] >Sent: Friday, March 11, 2016 10:14 PM >To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove code >duplication for fdt_usb_get_node_type > >On 03/11/2016 07:26 AM, Sriram Dash wrote: >> Call fdt_usb_get_node_type() from fdt_fixup_usb_mode_phy_type() to >> avoid code duplication. >> >> Signed-off-by: Sriram Dash <sriram.dash@nxp.com> >> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> >> --- >> 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 | 23 ++++++----------------- >> 1 file changed, 6 insertions(+), 17 deletions(-) >> >> diff --git a/drivers/usb/common/fsl-dt-fixup.c >> b/drivers/usb/common/fsl-dt-fixup.c >> index 92adb46..64e20d8 100644 >> --- a/drivers/usb/common/fsl-dt-fixup.c >> +++ b/drivers/usb/common/fsl-dt-fixup.c >> @@ -19,32 +19,21 @@ >> #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif >> >> +static const char *fdt_usb_get_node_type(void *blob, int start_offset, >> + int *node_offset); >> + > >Why do you need this forward declaration ? > The forwarded declaration is needed as the function " fdt_usb_get_node_type " is used in " fdt_fixup_usb_mode_phy_type " but defined below " fdt_fixup_usb_mode_phy_type ". This was done to avoid the confusion created due to git diff, while moving the " fdt_usb_get_node_type " above " fdt_fixup_usb_mode_phy_type", in v3. >> static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, >> const char *phy_type, int start_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_type = compat_dr; >> - } else { >> - node_type = compat_mph; >> - } >> + 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, >> > > >-- >Best regards, >Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type 2016-03-18 5:05 ` Sriram Dash @ 2016-03-18 11:21 ` Marek Vasut 2016-03-18 11:58 ` Sriram Dash 0 siblings, 1 reply; 16+ messages in thread From: Marek Vasut @ 2016-03-18 11:21 UTC (permalink / raw) To: u-boot On 03/18/2016 06:05 AM, Sriram Dash wrote: > >> -----Original Message----- >> From: Marek Vasut [mailto:marex at denx.de] >> Sent: Friday, March 11, 2016 10:14 PM >> To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove code >> duplication for fdt_usb_get_node_type >> >> On 03/11/2016 07:26 AM, Sriram Dash wrote: >>> Call fdt_usb_get_node_type() from fdt_fixup_usb_mode_phy_type() to >>> avoid code duplication. >>> >>> Signed-off-by: Sriram Dash <sriram.dash@nxp.com> >>> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> >>> --- >>> 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 | 23 ++++++----------------- >>> 1 file changed, 6 insertions(+), 17 deletions(-) >>> >>> diff --git a/drivers/usb/common/fsl-dt-fixup.c >>> b/drivers/usb/common/fsl-dt-fixup.c >>> index 92adb46..64e20d8 100644 >>> --- a/drivers/usb/common/fsl-dt-fixup.c >>> +++ b/drivers/usb/common/fsl-dt-fixup.c >>> @@ -19,32 +19,21 @@ >>> #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif >>> >>> +static const char *fdt_usb_get_node_type(void *blob, int start_offset, >>> + int *node_offset); >>> + >> >> Why do you need this forward declaration ? >> > > The forwarded declaration is needed as the function " fdt_usb_get_node_type " is used in " fdt_fixup_usb_mode_phy_type " but defined below " fdt_fixup_usb_mode_phy_type ". > > This was done to avoid the confusion created due to git diff, while moving the " fdt_usb_get_node_type " above " fdt_fixup_usb_mode_phy_type", in v3. Just swap those functions please. Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type 2016-03-18 11:21 ` Marek Vasut @ 2016-03-18 11:58 ` Sriram Dash 2016-03-18 12:16 ` Marek Vasut 0 siblings, 1 reply; 16+ messages in thread From: Sriram Dash @ 2016-03-18 11:58 UTC (permalink / raw) To: u-boot >-----Original Message----- >From: Marek Vasut [mailto:marex at denx.de] >Sent: Friday, March 18, 2016 4:51 PM >To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove code >duplication for fdt_usb_get_node_type > >On 03/18/2016 06:05 AM, Sriram Dash wrote: >> >>> -----Original Message----- >>> From: Marek Vasut [mailto:marex at denx.de] >>> Sent: Friday, March 11, 2016 10:14 PM >>> To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove >>> code duplication for fdt_usb_get_node_type >>> >>> On 03/11/2016 07:26 AM, Sriram Dash wrote: >>>> Call fdt_usb_get_node_type() from fdt_fixup_usb_mode_phy_type() to >>>> avoid code duplication. >>>> >>>> Signed-off-by: Sriram Dash <sriram.dash@nxp.com> >>>> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> >>>> --- >>>> 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 | 23 ++++++----------------- >>>> 1 file changed, 6 insertions(+), 17 deletions(-) >>>> >>>> diff --git a/drivers/usb/common/fsl-dt-fixup.c >>>> b/drivers/usb/common/fsl-dt-fixup.c >>>> index 92adb46..64e20d8 100644 >>>> --- a/drivers/usb/common/fsl-dt-fixup.c >>>> +++ b/drivers/usb/common/fsl-dt-fixup.c >>>> @@ -19,32 +19,21 @@ >>>> #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif >>>> >>>> +static const char *fdt_usb_get_node_type(void *blob, int start_offset, >>>> + int *node_offset); >>>> + >>> >>> Why do you need this forward declaration ? >>> >> >> The forwarded declaration is needed as the function " fdt_usb_get_node_type " is >used in " fdt_fixup_usb_mode_phy_type " but defined below " >fdt_fixup_usb_mode_phy_type ". >> >> This was done to avoid the confusion created due to git diff, while moving the " >fdt_usb_get_node_type " above " fdt_fixup_usb_mode_phy_type", in v3. > >Just swap those functions please. > So, shall I change v4 back to v3, as the return type is being addressed in another patch v4 4/4. >Best regards, >Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type 2016-03-18 11:58 ` Sriram Dash @ 2016-03-18 12:16 ` Marek Vasut 2016-03-18 12:22 ` Sriram Dash 0 siblings, 1 reply; 16+ messages in thread From: Marek Vasut @ 2016-03-18 12:16 UTC (permalink / raw) To: u-boot On 03/18/2016 12:58 PM, Sriram Dash wrote: >> -----Original Message----- >> From: Marek Vasut [mailto:marex at denx.de] >> Sent: Friday, March 18, 2016 4:51 PM >> To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove code >> duplication for fdt_usb_get_node_type >> >> On 03/18/2016 06:05 AM, Sriram Dash wrote: >>> >>>> -----Original Message----- >>>> From: Marek Vasut [mailto:marex at denx.de] >>>> Sent: Friday, March 11, 2016 10:14 PM >>>> To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove >>>> code duplication for fdt_usb_get_node_type >>>> >>>> On 03/11/2016 07:26 AM, Sriram Dash wrote: >>>>> Call fdt_usb_get_node_type() from fdt_fixup_usb_mode_phy_type() to >>>>> avoid code duplication. >>>>> >>>>> Signed-off-by: Sriram Dash <sriram.dash@nxp.com> >>>>> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> >>>>> --- >>>>> 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 | 23 ++++++----------------- >>>>> 1 file changed, 6 insertions(+), 17 deletions(-) >>>>> >>>>> diff --git a/drivers/usb/common/fsl-dt-fixup.c >>>>> b/drivers/usb/common/fsl-dt-fixup.c >>>>> index 92adb46..64e20d8 100644 >>>>> --- a/drivers/usb/common/fsl-dt-fixup.c >>>>> +++ b/drivers/usb/common/fsl-dt-fixup.c >>>>> @@ -19,32 +19,21 @@ >>>>> #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif >>>>> >>>>> +static const char *fdt_usb_get_node_type(void *blob, int start_offset, >>>>> + int *node_offset); >>>>> + >>>> >>>> Why do you need this forward declaration ? >>>> >>> >>> The forwarded declaration is needed as the function " fdt_usb_get_node_type " is >> used in " fdt_fixup_usb_mode_phy_type " but defined below " >> fdt_fixup_usb_mode_phy_type ". >>> >>> This was done to avoid the confusion created due to git diff, while moving the " >> fdt_usb_get_node_type " above " fdt_fixup_usb_mode_phy_type", in v3. >> >> Just swap those functions please. >> > > So, shall I change v4 back to v3, as the return type is being addressed in another patch v4 4/4. I took a look at the changelog from v3 to v4, it says "Make minimal modification to code" , so based on that, I cannot answer the question, sorry. I am just asking you to reorder the functions and get rid of the forward declaration. I don't think it has anything to do with the return type, does it ? -- Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type 2016-03-18 12:16 ` Marek Vasut @ 2016-03-18 12:22 ` Sriram Dash 0 siblings, 0 replies; 16+ messages in thread From: Sriram Dash @ 2016-03-18 12:22 UTC (permalink / raw) To: u-boot >-----Original Message----- >From: Marek Vasut [mailto:marex at denx.de] >Sent: Friday, March 18, 2016 5:47 PM >To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove code >duplication for fdt_usb_get_node_type > >On 03/18/2016 12:58 PM, Sriram Dash wrote: >>> -----Original Message----- >>> From: Marek Vasut [mailto:marex at denx.de] >>> Sent: Friday, March 18, 2016 4:51 PM >>> To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove >>> code duplication for fdt_usb_get_node_type >>> >>> On 03/18/2016 06:05 AM, Sriram Dash wrote: >>>> >>>>> -----Original Message----- >>>>> From: Marek Vasut [mailto:marex at denx.de] >>>>> Sent: Friday, March 11, 2016 10:14 PM >>>>> To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 2/4] drivers:usb:common:fsl-dt-fixup: Remove >>>>> code duplication for fdt_usb_get_node_type >>>>> >>>>> On 03/11/2016 07:26 AM, Sriram Dash wrote: >>>>>> Call fdt_usb_get_node_type() from fdt_fixup_usb_mode_phy_type() to >>>>>> avoid code duplication. >>>>>> >>>>>> Signed-off-by: Sriram Dash <sriram.dash@nxp.com> >>>>>> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> >>>>>> --- >>>>>> 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 | 23 ++++++----------------- >>>>>> 1 file changed, 6 insertions(+), 17 deletions(-) >>>>>> >>>>>> diff --git a/drivers/usb/common/fsl-dt-fixup.c >>>>>> b/drivers/usb/common/fsl-dt-fixup.c >>>>>> index 92adb46..64e20d8 100644 >>>>>> --- a/drivers/usb/common/fsl-dt-fixup.c >>>>>> +++ b/drivers/usb/common/fsl-dt-fixup.c >>>>>> @@ -19,32 +19,21 @@ >>>>>> #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif >>>>>> >>>>>> +static const char *fdt_usb_get_node_type(void *blob, int start_offset, >>>>>> + int *node_offset); >>>>>> + >>>>> >>>>> Why do you need this forward declaration ? >>>>> >>>> >>>> The forwarded declaration is needed as the function " >>>> fdt_usb_get_node_type " is >>> used in " fdt_fixup_usb_mode_phy_type " but defined below " >>> fdt_fixup_usb_mode_phy_type ". >>>> >>>> This was done to avoid the confusion created due to git diff, while moving the " >>> fdt_usb_get_node_type " above " fdt_fixup_usb_mode_phy_type", in v3. >>> >>> Just swap those functions please. >>> >> >> So, shall I change v4 back to v3, as the return type is being addressed in another >patch v4 4/4. > >I took a look at the changelog from v3 to v4, it says "Make minimal modification to >code" , so based on that, I cannot answer the question, sorry. > >I am just asking you to reorder the functions and get rid of the forward declaration. >I don't think it has anything to do with the return type, does it ? > OK. I understand, Will swap the functions in v5. >-- >Best regards, >Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller 2016-03-11 6:26 [U-Boot] [PATCH v4 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash 2016-03-11 6:26 ` [U-Boot] [PATCH v4 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash 2016-03-11 6:26 ` [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type Sriram Dash @ 2016-03-11 6:26 ` Sriram Dash 2016-03-11 16:44 ` Marek Vasut 2016-03-11 6:26 ` [U-Boot] [PATCH v4 4/4] drivers:usb:common:fsl-dt-fixup: fix fdt_usb_get_node_type() to return error code Sriram Dash 3 siblings, 1 reply; 16+ messages in thread From: Sriram Dash @ 2016-03-11 6:26 UTC (permalink / raw) To: u-boot 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[] = { + "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); -- 2.1.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller 2016-03-11 6:26 ` [U-Boot] [PATCH v4 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller Sriram Dash @ 2016-03-11 16:44 ` Marek Vasut 2016-03-18 5:05 ` Sriram Dash 0 siblings, 1 reply; 16+ messages in thread From: Marek Vasut @ 2016-03-11 16:44 UTC (permalink / raw) To: u-boot 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; > } [...] -- Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller 2016-03-11 16:44 ` Marek Vasut @ 2016-03-18 5:05 ` Sriram Dash 0 siblings, 0 replies; 16+ messages in thread From: Sriram Dash @ 2016-03-18 5:05 UTC (permalink / raw) To: u-boot >-----Original Message----- >From: Marek Vasut [mailto:marex at denx.de] >Sent: Friday, March 11, 2016 10:14 PM >To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 4/4] drivers:usb:common:fsl-dt-fixup: fix fdt_usb_get_node_type() to return error code 2016-03-11 6:26 [U-Boot] [PATCH v4 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash ` (2 preceding siblings ...) 2016-03-11 6:26 ` [U-Boot] [PATCH v4 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller Sriram Dash @ 2016-03-11 6:26 ` Sriram Dash 2016-03-11 16:45 ` Marek Vasut 3 siblings, 1 reply; 16+ messages in thread From: Sriram Dash @ 2016-03-11 6:26 UTC (permalink / raw) To: u-boot fdt_usb_get_node_type() to return error code instead of pointer. Signed-off-by: Sriram Dash <sriram.dash@nxp.com> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> --- drivers/usb/common/fsl-dt-fixup.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c index b574127..f7137e4 100644 --- a/drivers/usb/common/fsl-dt-fixup.c +++ b/drivers/usb/common/fsl-dt-fixup.c @@ -19,8 +19,8 @@ #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif -static 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, char **node_type); char compat_usb_fsl[] = { "fsl-usb2-mph" "\0" @@ -37,8 +37,9 @@ 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) + err = fdt_usb_get_node_type(blob, start_offset, + &node_offset, &node_type); + if (err < 0) return -1; if (mode) { @@ -60,11 +61,11 @@ static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, return node_offset; } -static 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, char **node_type) { - char *node_type = NULL; char *node_name, *nxt; + int ret = -1; for (node_name = compat_usb_fsl; *node_name; node_name = nxt + 1) { nxt = node_name; @@ -73,11 +74,12 @@ static char *fdt_usb_get_node_type(void *blob, int start_offset, *node_offset = fdt_node_offset_by_compatible (blob, start_offset, node_name); if (*node_offset >= 0) { - node_type = node_name; + *node_type = node_name; + ret = 0; break; } } - return node_type; + return ret; } static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum, @@ -86,8 +88,9 @@ static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum, int node_offset, err; char *node_type = NULL; - node_type = fdt_usb_get_node_type(blob, start_offset, &node_offset); - if (!node_type) + err = fdt_usb_get_node_type(blob, start_offset, + &node_offset, &node_type); + if (err < 0) return -1; err = fdt_setprop(blob, node_offset, prop_erratum, NULL, 0); -- 2.1.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 4/4] drivers:usb:common:fsl-dt-fixup: fix fdt_usb_get_node_type() to return error code 2016-03-11 6:26 ` [U-Boot] [PATCH v4 4/4] drivers:usb:common:fsl-dt-fixup: fix fdt_usb_get_node_type() to return error code Sriram Dash @ 2016-03-11 16:45 ` Marek Vasut 2016-03-18 5:05 ` Sriram Dash 0 siblings, 1 reply; 16+ messages in thread From: Marek Vasut @ 2016-03-11 16:45 UTC (permalink / raw) To: u-boot On 03/11/2016 07:26 AM, Sriram Dash wrote: > fdt_usb_get_node_type() to return error code instead of pointer. This sentence makes no sense. > Signed-off-by: Sriram Dash <sriram.dash@nxp.com> > Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> > --- > drivers/usb/common/fsl-dt-fixup.c | 25 ++++++++++++++----------- > 1 file changed, 14 insertions(+), 11 deletions(-) > > diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c > index b574127..f7137e4 100644 > --- a/drivers/usb/common/fsl-dt-fixup.c > +++ b/drivers/usb/common/fsl-dt-fixup.c > @@ -19,8 +19,8 @@ > #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 > #endif > > -static 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, char **node_type); > > char compat_usb_fsl[] = { > "fsl-usb2-mph" "\0" > @@ -37,8 +37,9 @@ 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) > + err = fdt_usb_get_node_type(blob, start_offset, > + &node_offset, &node_type); > + if (err < 0) > return -1; > > if (mode) { > @@ -60,11 +61,11 @@ static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode, > return node_offset; > } > > -static 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, char **node_type) > { > - char *node_type = NULL; > char *node_name, *nxt; > + int ret = -1; You might as well start using errno.h > for (node_name = compat_usb_fsl; *node_name; node_name = nxt + 1) { > nxt = node_name; > @@ -73,11 +74,12 @@ static char *fdt_usb_get_node_type(void *blob, int start_offset, > *node_offset = fdt_node_offset_by_compatible > (blob, start_offset, node_name); > if (*node_offset >= 0) { > - node_type = node_name; > + *node_type = node_name; > + ret = 0; > break; > } > } > - return node_type; > + return ret; > } > > static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum, > @@ -86,8 +88,9 @@ static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum, > int node_offset, err; > char *node_type = NULL; > > - node_type = fdt_usb_get_node_type(blob, start_offset, &node_offset); > - if (!node_type) > + err = fdt_usb_get_node_type(blob, start_offset, > + &node_offset, &node_type); > + if (err < 0) > return -1; > > err = fdt_setprop(blob, node_offset, prop_erratum, NULL, 0); > The patch is fine otherwise. -- Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH v4 4/4] drivers:usb:common:fsl-dt-fixup: fix fdt_usb_get_node_type() to return error code 2016-03-11 16:45 ` Marek Vasut @ 2016-03-18 5:05 ` Sriram Dash 0 siblings, 0 replies; 16+ messages in thread From: Sriram Dash @ 2016-03-18 5:05 UTC (permalink / raw) To: u-boot >-----Original Message----- >From: Marek Vasut [mailto:marex at denx.de] >Sent: Friday, March 11, 2016 10:16 PM >To: Sriram Dash <sriram.dash@nxp.com>; u-boot at 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 4/4] drivers:usb:common:fsl-dt-fixup: fix >fdt_usb_get_node_type() to return error code > >On 03/11/2016 07:26 AM, Sriram Dash wrote: >> fdt_usb_get_node_type() to return error code instead of pointer. > >This sentence makes no sense. > Will take care in v5. >> Signed-off-by: Sriram Dash <sriram.dash@nxp.com> >> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> >> --- >> drivers/usb/common/fsl-dt-fixup.c | 25 ++++++++++++++----------- >> 1 file changed, 14 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/usb/common/fsl-dt-fixup.c >> b/drivers/usb/common/fsl-dt-fixup.c >> index b574127..f7137e4 100644 >> --- a/drivers/usb/common/fsl-dt-fixup.c >> +++ b/drivers/usb/common/fsl-dt-fixup.c >> @@ -19,8 +19,8 @@ >> #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 #endif >> >> -static 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, char **node_type); >> >> char compat_usb_fsl[] = { >> "fsl-usb2-mph" "\0" >> @@ -37,8 +37,9 @@ 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) >> + err = fdt_usb_get_node_type(blob, start_offset, >> + &node_offset, &node_type); >> + if (err < 0) >> return -1; >> >> if (mode) { >> @@ -60,11 +61,11 @@ static int fdt_fixup_usb_mode_phy_type(void *blob, >const char *mode, >> return node_offset; >> } >> >> -static 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, char **node_type) >> { >> - char *node_type = NULL; >> char *node_name, *nxt; >> + int ret = -1; > >You might as well start using errno.h > Will take care in v5. >> for (node_name = compat_usb_fsl; *node_name; node_name = nxt + 1) { >> nxt = node_name; >> @@ -73,11 +74,12 @@ static char *fdt_usb_get_node_type(void *blob, int >start_offset, >> *node_offset = fdt_node_offset_by_compatible >> (blob, start_offset, node_name); >> if (*node_offset >= 0) { >> - node_type = node_name; >> + *node_type = node_name; >> + ret = 0; >> break; >> } >> } >> - return node_type; >> + return ret; >> } >> >> static int fdt_fixup_usb_erratum(void *blob, const char >> *prop_erratum, @@ -86,8 +88,9 @@ static int fdt_fixup_usb_erratum(void >*blob, const char *prop_erratum, >> int node_offset, err; >> char *node_type = NULL; >> >> - node_type = fdt_usb_get_node_type(blob, start_offset, &node_offset); >> - if (!node_type) >> + err = fdt_usb_get_node_type(blob, start_offset, >> + &node_offset, &node_type); >> + if (err < 0) >> return -1; >> >> err = fdt_setprop(blob, node_offset, prop_erratum, NULL, 0); >> > >The patch is fine otherwise. > >-- >Best regards, >Marek Vasut ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2016-03-18 12:22 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-03-11 6:26 [U-Boot] [PATCH v4 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash 2016-03-11 6:26 ` [U-Boot] [PATCH v4 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash 2016-03-11 16:40 ` Marek Vasut 2016-03-11 6:26 ` [U-Boot] [PATCH v4 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type Sriram Dash 2016-03-11 16:43 ` Marek Vasut 2016-03-18 5:05 ` Sriram Dash 2016-03-18 11:21 ` Marek Vasut 2016-03-18 11:58 ` Sriram Dash 2016-03-18 12:16 ` Marek Vasut 2016-03-18 12:22 ` Sriram Dash 2016-03-11 6:26 ` [U-Boot] [PATCH v4 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller Sriram Dash 2016-03-11 16:44 ` Marek Vasut 2016-03-18 5:05 ` Sriram Dash 2016-03-11 6:26 ` [U-Boot] [PATCH v4 4/4] drivers:usb:common:fsl-dt-fixup: fix fdt_usb_get_node_type() to return error code Sriram Dash 2016-03-11 16:45 ` Marek Vasut 2016-03-18 5:05 ` Sriram Dash
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox