* [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller
@ 2016-04-05 9:11 Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Sriram Dash @ 2016-04-05 9:11 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 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
--
2.1.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v6 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file
2016-04-05 9:11 [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash
@ 2016-04-05 9:11 ` Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type Sriram Dash
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Sriram Dash @ 2016-04-05 9:11 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>
Acked-by: Marek Vasut <marex@denx.de>
---
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%)
diff --git a/Makefile b/Makefile
index 25ef3c1..ea7fd00 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 4bcea9d..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-ci.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 4bcea9d..a43d37d 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] 7+ messages in thread
* [U-Boot] [PATCH v6 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type
2016-04-05 9:11 [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash
@ 2016-04-05 9:11 ` Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller Sriram Dash
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Sriram Dash @ 2016-04-05 9:11 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>
Acked-by: Marek Vasut <marex@denx.de>
---
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(-)
diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c
index 92adb46..eb13f12 100644
--- a/drivers/usb/common/fsl-dt-fixup.c
+++ b/drivers/usb/common/fsl-dt-fixup.c
@@ -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)
{
--
2.1.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v6 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller
2016-04-05 9:11 [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type Sriram Dash
@ 2016-04-05 9:11 ` Sriram Dash
2016-04-05 9:24 ` Marek Vasut
2016-04-05 9:11 ` [U-Boot] [PATCH v6 4/4] drivers:usb:common:fsl-dt-fixup: fix return value of fdt_usb_get_node_type Sriram Dash
2016-04-05 9:24 ` [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Marek Vasut
4 siblings, 1 reply; 7+ messages in thread
From: Sriram Dash @ 2016-04-05 9:11 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 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(-)
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 eb13f12..46488dc 100644
--- a/drivers/usb/common/fsl-dt-fixup.c
+++ b/drivers/usb/common/fsl-dt-fixup.c
@@ -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;
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] 7+ messages in thread
* [U-Boot] [PATCH v6 4/4] drivers:usb:common:fsl-dt-fixup: fix return value of fdt_usb_get_node_type
2016-04-05 9:11 [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash
` (2 preceding siblings ...)
2016-04-05 9:11 ` [U-Boot] [PATCH v6 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller Sriram Dash
@ 2016-04-05 9:11 ` Sriram Dash
2016-04-05 9:24 ` [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Marek Vasut
4 siblings, 0 replies; 7+ messages in thread
From: Sriram Dash @ 2016-04-05 9:11 UTC (permalink / raw)
To: u-boot
Changes the return type of fdt_usb_get_node_type from char* to int
Signed-off-by: Sriram Dash <sriram.dash@nxp.com>
Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com>
---
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(-)
diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c
index 46488dc..6f31932 100644
--- a/drivers/usb/common/fsl-dt-fixup.c
+++ b/drivers/usb/common/fsl-dt-fixup.c
@@ -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) {
--
2.1.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v6 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller
2016-04-05 9:11 ` [U-Boot] [PATCH v6 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller Sriram Dash
@ 2016-04-05 9:24 ` Marek Vasut
0 siblings, 0 replies; 7+ messages in thread
From: Marek Vasut @ 2016-04-05 9:24 UTC (permalink / raw)
To: u-boot
On 04/05/2016 11:11 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 v6:
> - static const char * const array
This changelog entry is completely useless, it tells me exactly nothing
about what you changed.
> 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(-)
>
> 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 eb13f12..46488dc 100644
> --- a/drivers/usb/common/fsl-dt-fixup.c
> +++ b/drivers/usb/common/fsl-dt-fixup.c
> @@ -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;
> 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);
>
--
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller
2016-04-05 9:11 [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash
` (3 preceding siblings ...)
2016-04-05 9:11 ` [U-Boot] [PATCH v6 4/4] drivers:usb:common:fsl-dt-fixup: fix return value of fdt_usb_get_node_type Sriram Dash
@ 2016-04-05 9:24 ` Marek Vasut
4 siblings, 0 replies; 7+ messages in thread
From: Marek Vasut @ 2016-04-05 9:24 UTC (permalink / raw)
To: u-boot
On 04/05/2016 11:11 AM, Sriram Dash wrote:
> 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
>
Applied all to u-boot-usb/master
--
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-04-05 9:24 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-05 9:11 [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 1/4] drivers:usb:common:fsl-dt-fixup: Move device-tree fixup framework to common file Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 2/4] drivers:usb:common:fsl-dt-fixup: Remove code duplication for fdt_usb_get_node_type Sriram Dash
2016-04-05 9:11 ` [U-Boot] [PATCH v6 3/4] drivers:usb:common:fsl-dt-fixup: Add device-tree fixup support for xhci controller Sriram Dash
2016-04-05 9:24 ` Marek Vasut
2016-04-05 9:11 ` [U-Boot] [PATCH v6 4/4] drivers:usb:common:fsl-dt-fixup: fix return value of fdt_usb_get_node_type Sriram Dash
2016-04-05 9:24 ` [U-Boot] [PATCH v6 0/4] Make usb device-tree fixup independent of USB controller Marek Vasut
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox