Re: [U-Boot] [PATCH 1/2] fsl:usb: Make fsl usb device-tree fixup arch independent

2016-01-26 Thread Marek Vasut
On Tuesday, January 26, 2016 at 12:36:57 PM, Ramneek Mehresh wrote:
> Move usb device-tree fixup from ehci drv so that it becomes
> available to all ppc and arm platforms
> 
> Signed-off-by: Ramneek Mehresh 
> ---
>  board/freescale/common/Makefile |   2 +
>  board/freescale/common/usb.c| 203
>  board/freescale/corenet_ds/corenet_ds.c |
>   1 -
>  drivers/usb/host/ehci-fsl.c | 196
> -- include/fdt_support.h   |  
> 4 +-
>  5 files changed, 207 insertions(+), 199 deletions(-)
>  create mode 100644 board/freescale/common/usb.c

Use git format-patch -M -C and resubmit, I am not gonna review this.

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 1/2] fsl:usb: Make fsl usb device-tree fixup arch independent

2016-01-26 Thread Ramneek Mehresh
Move usb device-tree fixup from ehci drv so that it becomes
available to all ppc and arm platforms

Signed-off-by: Ramneek Mehresh 
---
 board/freescale/common/Makefile |   2 +
 board/freescale/common/usb.c| 203 
 board/freescale/corenet_ds/corenet_ds.c |   1 -
 drivers/usb/host/ehci-fsl.c | 196 --
 include/fdt_support.h   |   4 +-
 5 files changed, 207 insertions(+), 199 deletions(-)
 create mode 100644 board/freescale/common/usb.c

diff --git a/board/freescale/common/Makefile b/board/freescale/common/Makefile
index 51d2814..4b83303 100644
--- a/board/freescale/common/Makefile
+++ b/board/freescale/common/Makefile
@@ -64,6 +64,8 @@ obj-$(CONFIG_POWER_PFUZE100)  += pfuze.o
 
 obj-$(CONFIG_LS102XA_STREAM_ID)+= ls102xa_stream_id.o
 
+obj-$(CONFIG_USB_DEVTREE_FIXUP)+= usb.o
+
 # deal with common files for P-series corenet based devices
 obj-$(CONFIG_P2041RDB) += p_corenet/
 obj-$(CONFIG_P3041DS)  += p_corenet/
diff --git a/board/freescale/common/usb.c b/board/freescale/common/usb.c
new file mode 100644
index 000..b99fa2b
--- /dev/null
+++ b/board/freescale/common/usb.c
@@ -0,0 +1,203 @@
+/*
+ * (C) Copyright 2015 Freescale Semiconductor, Inc.
+ *
+ * Author: Ramneek Mehresh ramneek.mehr...@freescale.com
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ *
+ * FSL board device-tree fix-up
+ */
+#include 
+#include 
+#include 
+#include 
+
+#ifndef CONFIG_USB_MAX_CONTROLLER_COUNT
+#define CONFIG_USB_MAX_CONTROLLER_COUNT1
+#endif
+
+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 *compat_snps = "snps,dwc3";
+   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) {
+   *node_offset = fdt_node_offset_by_compatible(blob,
+   start_offset, compat_snps);
+   if (*node_offset < 0) {
+   printf("ERROR:could not find node:%s",
+   fdt_strerror(*node_offset));
+   } else {
+   node_type = compat_snps;
+   }
+   } else {
+   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, _offset);
+   if (!node_type)
+   return -1;
+
+   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 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, _offset);
+   if (!node_type)
+   return -1;
+
+   err = fdt_setprop(blob, node_offset, prop_erratum, NULL, 0);
+   if (err < 0) {
+   printf("%s: ERROR: could not set %s for %s: %s.\n", __func__,
+  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