All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2] usb: dwc3: convert to livetree
@ 2018-09-06 10:39 Siva Durga Prasad Paladugu
  2018-09-06 10:57 ` Marek Vasut
  2018-09-06 14:05 ` Michal Simek
  0 siblings, 2 replies; 6+ messages in thread
From: Siva Durga Prasad Paladugu @ 2018-09-06 10:39 UTC (permalink / raw)
  To: u-boot

From: Vipul Kumar <vipul.kumar@xilinx.com>

Update the DWC3 USB driver to support a live tree.

Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Signed-off-by: Vipul Kumar <vipul.kumar@xilinx.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
---
Changes in v2:
- Fixed travis build issues with some platforms.
---
 drivers/usb/common/common.c      | 11 +++++------
 drivers/usb/dwc3/dwc3-generic.c  | 17 +++++++----------
 drivers/usb/host/dwc3-sti-glue.c |  7 +++----
 drivers/usb/host/xhci-dwc3.c     |  3 ++-
 drivers/usb/host/xhci-zynqmp.c   |  3 +--
 drivers/usb/musb-new/ti-musb.c   | 11 ++++-------
 include/linux/usb/otg.h          |  6 ++++--
 7 files changed, 26 insertions(+), 32 deletions(-)

diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
index a55def5..3dea79b 100644
--- a/drivers/usb/common/common.c
+++ b/drivers/usb/common/common.c
@@ -10,6 +10,7 @@
 #include <linux/libfdt.h>
 #include <linux/usb/otg.h>
 #include <linux/usb/ch9.h>
+#include <dm.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -20,13 +21,12 @@ static const char *const usb_dr_modes[] = {
 	[USB_DR_MODE_OTG]		= "otg",
 };
 
-enum usb_dr_mode usb_get_dr_mode(int node)
+enum usb_dr_mode usb_get_dr_mode(ofnode node)
 {
-	const void *fdt = gd->fdt_blob;
 	const char *dr_mode;
 	int i;
 
-	dr_mode = fdt_getprop(fdt, node, "dr_mode", NULL);
+	dr_mode = ofnode_get_property(node, "dr_mode", NULL);
 	if (!dr_mode) {
 		pr_err("usb dr_mode not found\n");
 		return USB_DR_MODE_UNKNOWN;
@@ -48,13 +48,12 @@ static const char *const speed_names[] = {
 	[USB_SPEED_SUPER] = "super-speed",
 };
 
-enum usb_device_speed usb_get_maximum_speed(int node)
+enum usb_device_speed usb_get_maximum_speed(ofnode node)
 {
-	const void *fdt = gd->fdt_blob;
 	const char *max_speed;
 	int i;
 
-	max_speed = fdt_getprop(fdt, node, "maximum-speed", NULL);
+	max_speed = ofnode_get_property(node, "maximum-speed", NULL);
 	if (!max_speed) {
 		pr_err("usb maximum-speed not found\n");
 		return USB_SPEED_UNKNOWN;
diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index ca63eac..ef72c8c 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -61,18 +61,17 @@ static int dwc3_generic_peripheral_remove(struct udevice *dev)
 static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev)
 {
 	struct dwc3 *priv = dev_get_priv(dev);
-	int node = dev_of_offset(dev);
 
-	priv->regs = (void *)devfdt_get_addr(dev);
+	priv->regs = (void *)dev_read_addr(dev);
 	priv->regs += DWC3_GLOBALS_REGS_START;
 
-	priv->maximum_speed = usb_get_maximum_speed(node);
+	priv->maximum_speed = usb_get_maximum_speed(dev->node);
 	if (priv->maximum_speed == USB_SPEED_UNKNOWN) {
 		pr_err("Invalid usb maximum speed\n");
 		return -ENODEV;
 	}
 
-	priv->dr_mode = usb_get_dr_mode(node);
+	priv->dr_mode = usb_get_dr_mode(dev->node);
 	if (priv->dr_mode == USB_DR_MODE_UNKNOWN) {
 		pr_err("Invalid usb mode setup\n");
 		return -ENODEV;
@@ -100,13 +99,11 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {
 
 static int dwc3_generic_bind(struct udevice *parent)
 {
-	const void *fdt = gd->fdt_blob;
-	int node;
+	ofnode node;
 	int ret;
 
-	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
-	     node = fdt_next_subnode(fdt, node)) {
-		const char *name = fdt_get_name(fdt, node, NULL);
+	dev_for_each_subnode(node, parent) {
+		const char *name = (char *)ofnode_get_name(node);
 		enum usb_dr_mode dr_mode;
 		struct udevice *dev;
 		const char *driver;
@@ -133,7 +130,7 @@ static int dwc3_generic_bind(struct udevice *parent)
 		};
 
 		ret = device_bind_driver_to_node(parent, driver, name,
-						 offset_to_ofnode(node), &dev);
+						 node, &dev);
 		if (ret) {
 			debug("%s: not able to bind usb device mode\n",
 			      __func__);
diff --git a/drivers/usb/host/dwc3-sti-glue.c b/drivers/usb/host/dwc3-sti-glue.c
index ad7cf6e..de423ee 100644
--- a/drivers/usb/host/dwc3-sti-glue.c
+++ b/drivers/usb/host/dwc3-sti-glue.c
@@ -153,18 +153,17 @@ static int sti_dwc3_glue_ofdata_to_platdata(struct udevice *dev)
 static int sti_dwc3_glue_bind(struct udevice *dev)
 {
 	struct sti_dwc3_glue_platdata *plat = dev_get_platdata(dev);
-	int dwc3_node;
+	ofnode dwc3_node;
 
 	/* check if one subnode is present */
-	dwc3_node = fdt_first_subnode(gd->fdt_blob, dev_of_offset(dev));
+	dwc3_node = dev_read_first_subnode(dev);
 	if (dwc3_node <= 0) {
 		pr_err("Can't find subnode for %s\n", dev->name);
 		return -ENODEV;
 	}
 
 	/* check if the subnode compatible string is the dwc3 one*/
-	if (fdt_node_check_compatible(gd->fdt_blob, dwc3_node,
-				      "snps,dwc3") != 0) {
+	if (ofnode_device_is_compatible(dwc3_node, "snps,dwc3") != 0) {
 		pr_err("Can't find dwc3 subnode for %s\n", dev->name);
 		return -ENODEV;
 	}
diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
index 80754d7..cbab436 100644
--- a/drivers/usb/host/xhci-dwc3.c
+++ b/drivers/usb/host/xhci-dwc3.c
@@ -202,6 +202,7 @@ static int xhci_dwc3_probe(struct udevice *dev)
 	struct dwc3 *dwc3_reg;
 	enum usb_dr_mode dr_mode;
 	int ret;
+	ofnode node;
 
 	hccr = (struct xhci_hccr *)((uintptr_t)dev_read_addr(dev));
 	hcor = (struct xhci_hcor *)((uintptr_t)hccr +
@@ -215,7 +216,7 @@ static int xhci_dwc3_probe(struct udevice *dev)
 
 	dwc3_core_init(dwc3_reg);
 
-	dr_mode = usb_get_dr_mode(dev_of_offset(dev));
+	dr_mode = usb_get_dr_mode(node);
 	if (dr_mode == USB_DR_MODE_UNKNOWN)
 		/* by default set dual role mode to HOST */
 		dr_mode = USB_DR_MODE_HOST;
diff --git a/drivers/usb/host/xhci-zynqmp.c b/drivers/usb/host/xhci-zynqmp.c
index e44e1ae..5a5b870 100644
--- a/drivers/usb/host/xhci-zynqmp.c
+++ b/drivers/usb/host/xhci-zynqmp.c
@@ -121,10 +121,9 @@ static int xhci_usb_remove(struct udevice *dev)
 static int xhci_usb_ofdata_to_platdata(struct udevice *dev)
 {
 	struct zynqmp_xhci_platdata *plat = dev_get_platdata(dev);
-	const void *blob = gd->fdt_blob;
 
 	/* Get the base address for XHCI controller from the device node */
-	plat->hcd_base = fdtdec_get_addr(blob, dev_of_offset(dev), "reg");
+	plat->hcd_base = dev_read_addr(dev);
 	if (plat->hcd_base == FDT_ADDR_T_NONE) {
 		debug("Can't get the XHCI register base address\n");
 		return -ENXIO;
diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti-musb.c
index 9fbe2d6..bdb5985 100644
--- a/drivers/usb/musb-new/ti-musb.c
+++ b/drivers/usb/musb-new/ti-musb.c
@@ -177,7 +177,6 @@ static int ti_musb_host_ofdata_to_platdata(struct udevice *dev)
 {
 	struct ti_musb_platdata *platdata = dev_get_platdata(dev);
 	const void *fdt = gd->fdt_blob;
-	int node = dev_of_offset(dev);
 	int ret;
 
 	ret = ti_musb_ofdata_to_platdata(dev);
@@ -204,14 +203,12 @@ U_BOOT_DRIVER(ti_musb_host) = {
 
 static int ti_musb_wrapper_bind(struct udevice *parent)
 {
-	const void *fdt = gd->fdt_blob;
-	int node;
+	ofnode node;
 	int ret;
 
-	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
-	     node = fdt_next_subnode(fdt, node)) {
+	dev_for_each_subnode(node, parent) {
 		struct udevice *dev;
-		const char *name = fdt_get_name(fdt, node, NULL);
+		const char *name = (char *)ofnode_get_name(node);
 		enum usb_dr_mode dr_mode;
 		struct driver *drv;
 
@@ -226,7 +223,7 @@ static int ti_musb_wrapper_bind(struct udevice *parent)
 		case USB_DR_MODE_HOST:
 			/* Bind MUSB host */
 			ret = device_bind_driver_to_node(parent, "ti-musb-host",
-					name, offset_to_ofnode(node), &dev);
+					name, node, &dev);
 			if (ret) {
 				pr_err("musb - not able to bind usb host node\n");
 				return ret;
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
index d2604c5..baf4d91 100644
--- a/include/linux/usb/otg.h
+++ b/include/linux/usb/otg.h
@@ -9,6 +9,8 @@
 #ifndef __LINUX_USB_OTG_H
 #define __LINUX_USB_OTG_H
 
+#include <dm/ofnode.h>
+
 enum usb_dr_mode {
 	USB_DR_MODE_UNKNOWN,
 	USB_DR_MODE_HOST,
@@ -23,7 +25,7 @@ enum usb_dr_mode {
  * The function gets phy interface string from property 'dr_mode',
  * and returns the correspondig enum usb_dr_mode
  */
-enum usb_dr_mode usb_get_dr_mode(int node);
+enum usb_dr_mode usb_get_dr_mode(ofnode node);
 
 /**
  * usb_get_maximum_speed() - Get maximum speed for given device
@@ -32,6 +34,6 @@ enum usb_dr_mode usb_get_dr_mode(int node);
  * The function gets phy interface string from property 'maximum-speed',
  * and returns the correspondig enum usb_device_speed
  */
-enum usb_device_speed usb_get_maximum_speed(int node);
+enum usb_device_speed usb_get_maximum_speed(ofnode node);
 
 #endif /* __LINUX_USB_OTG_H */
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH v2] usb: dwc3: convert to livetree
  2018-09-06 10:39 [U-Boot] [PATCH v2] usb: dwc3: convert to livetree Siva Durga Prasad Paladugu
@ 2018-09-06 10:57 ` Marek Vasut
  2018-09-06 11:19   ` Siva Durga Prasad Paladugu
  2018-09-06 14:05 ` Michal Simek
  1 sibling, 1 reply; 6+ messages in thread
From: Marek Vasut @ 2018-09-06 10:57 UTC (permalink / raw)
  To: u-boot

On 09/06/2018 12:39 PM, Siva Durga Prasad Paladugu wrote:
> From: Vipul Kumar <vipul.kumar@xilinx.com>
> 
> Update the DWC3 USB driver to support a live tree.
> 
> Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
> Signed-off-by: Vipul Kumar <vipul.kumar@xilinx.com>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> ---
> Changes in v2:
> - Fixed travis build issues with some platforms.

Cool, what exactly changed ?

> ---
>  drivers/usb/common/common.c      | 11 +++++------
>  drivers/usb/dwc3/dwc3-generic.c  | 17 +++++++----------
>  drivers/usb/host/dwc3-sti-glue.c |  7 +++----
>  drivers/usb/host/xhci-dwc3.c     |  3 ++-
>  drivers/usb/host/xhci-zynqmp.c   |  3 +--
>  drivers/usb/musb-new/ti-musb.c   | 11 ++++-------
>  include/linux/usb/otg.h          |  6 ++++--
>  7 files changed, 26 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
> index a55def5..3dea79b 100644
> --- a/drivers/usb/common/common.c
> +++ b/drivers/usb/common/common.c
> @@ -10,6 +10,7 @@
>  #include <linux/libfdt.h>
>  #include <linux/usb/otg.h>
>  #include <linux/usb/ch9.h>
> +#include <dm.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -20,13 +21,12 @@ static const char *const usb_dr_modes[] = {
>  	[USB_DR_MODE_OTG]		= "otg",
>  };
>  
> -enum usb_dr_mode usb_get_dr_mode(int node)
> +enum usb_dr_mode usb_get_dr_mode(ofnode node)
>  {
> -	const void *fdt = gd->fdt_blob;
>  	const char *dr_mode;
>  	int i;
>  
> -	dr_mode = fdt_getprop(fdt, node, "dr_mode", NULL);
> +	dr_mode = ofnode_get_property(node, "dr_mode", NULL);
>  	if (!dr_mode) {
>  		pr_err("usb dr_mode not found\n");
>  		return USB_DR_MODE_UNKNOWN;
> @@ -48,13 +48,12 @@ static const char *const speed_names[] = {
>  	[USB_SPEED_SUPER] = "super-speed",
>  };
>  
> -enum usb_device_speed usb_get_maximum_speed(int node)
> +enum usb_device_speed usb_get_maximum_speed(ofnode node)
>  {
> -	const void *fdt = gd->fdt_blob;
>  	const char *max_speed;
>  	int i;
>  
> -	max_speed = fdt_getprop(fdt, node, "maximum-speed", NULL);
> +	max_speed = ofnode_get_property(node, "maximum-speed", NULL);
>  	if (!max_speed) {
>  		pr_err("usb maximum-speed not found\n");
>  		return USB_SPEED_UNKNOWN;
> diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
> index ca63eac..ef72c8c 100644
> --- a/drivers/usb/dwc3/dwc3-generic.c
> +++ b/drivers/usb/dwc3/dwc3-generic.c
> @@ -61,18 +61,17 @@ static int dwc3_generic_peripheral_remove(struct udevice *dev)
>  static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev)
>  {
>  	struct dwc3 *priv = dev_get_priv(dev);
> -	int node = dev_of_offset(dev);
>  
> -	priv->regs = (void *)devfdt_get_addr(dev);
> +	priv->regs = (void *)dev_read_addr(dev);
>  	priv->regs += DWC3_GLOBALS_REGS_START;
>  
> -	priv->maximum_speed = usb_get_maximum_speed(node);
> +	priv->maximum_speed = usb_get_maximum_speed(dev->node);
>  	if (priv->maximum_speed == USB_SPEED_UNKNOWN) {
>  		pr_err("Invalid usb maximum speed\n");
>  		return -ENODEV;
>  	}
>  
> -	priv->dr_mode = usb_get_dr_mode(node);
> +	priv->dr_mode = usb_get_dr_mode(dev->node);
>  	if (priv->dr_mode == USB_DR_MODE_UNKNOWN) {
>  		pr_err("Invalid usb mode setup\n");
>  		return -ENODEV;
> @@ -100,13 +99,11 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {
>  
>  static int dwc3_generic_bind(struct udevice *parent)
>  {
> -	const void *fdt = gd->fdt_blob;
> -	int node;
> +	ofnode node;
>  	int ret;
>  
> -	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> -	     node = fdt_next_subnode(fdt, node)) {
> -		const char *name = fdt_get_name(fdt, node, NULL);
> +	dev_for_each_subnode(node, parent) {
> +		const char *name = (char *)ofnode_get_name(node);
>  		enum usb_dr_mode dr_mode;
>  		struct udevice *dev;
>  		const char *driver;
> @@ -133,7 +130,7 @@ static int dwc3_generic_bind(struct udevice *parent)
>  		};
>  
>  		ret = device_bind_driver_to_node(parent, driver, name,
> -						 offset_to_ofnode(node), &dev);
> +						 node, &dev);
>  		if (ret) {
>  			debug("%s: not able to bind usb device mode\n",
>  			      __func__);
> diff --git a/drivers/usb/host/dwc3-sti-glue.c b/drivers/usb/host/dwc3-sti-glue.c
> index ad7cf6e..de423ee 100644
> --- a/drivers/usb/host/dwc3-sti-glue.c
> +++ b/drivers/usb/host/dwc3-sti-glue.c
> @@ -153,18 +153,17 @@ static int sti_dwc3_glue_ofdata_to_platdata(struct udevice *dev)
>  static int sti_dwc3_glue_bind(struct udevice *dev)
>  {
>  	struct sti_dwc3_glue_platdata *plat = dev_get_platdata(dev);
> -	int dwc3_node;
> +	ofnode dwc3_node;
>  
>  	/* check if one subnode is present */
> -	dwc3_node = fdt_first_subnode(gd->fdt_blob, dev_of_offset(dev));
> +	dwc3_node = dev_read_first_subnode(dev);
>  	if (dwc3_node <= 0) {
>  		pr_err("Can't find subnode for %s\n", dev->name);
>  		return -ENODEV;
>  	}
>  
>  	/* check if the subnode compatible string is the dwc3 one*/
> -	if (fdt_node_check_compatible(gd->fdt_blob, dwc3_node,
> -				      "snps,dwc3") != 0) {
> +	if (ofnode_device_is_compatible(dwc3_node, "snps,dwc3") != 0) {
>  		pr_err("Can't find dwc3 subnode for %s\n", dev->name);
>  		return -ENODEV;
>  	}
> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
> index 80754d7..cbab436 100644
> --- a/drivers/usb/host/xhci-dwc3.c
> +++ b/drivers/usb/host/xhci-dwc3.c
> @@ -202,6 +202,7 @@ static int xhci_dwc3_probe(struct udevice *dev)
>  	struct dwc3 *dwc3_reg;
>  	enum usb_dr_mode dr_mode;
>  	int ret;
> +	ofnode node;
>  
>  	hccr = (struct xhci_hccr *)((uintptr_t)dev_read_addr(dev));
>  	hcor = (struct xhci_hcor *)((uintptr_t)hccr +
> @@ -215,7 +216,7 @@ static int xhci_dwc3_probe(struct udevice *dev)
>  
>  	dwc3_core_init(dwc3_reg);
>  
> -	dr_mode = usb_get_dr_mode(dev_of_offset(dev));
> +	dr_mode = usb_get_dr_mode(node);
>  	if (dr_mode == USB_DR_MODE_UNKNOWN)
>  		/* by default set dual role mode to HOST */
>  		dr_mode = USB_DR_MODE_HOST;
> diff --git a/drivers/usb/host/xhci-zynqmp.c b/drivers/usb/host/xhci-zynqmp.c
> index e44e1ae..5a5b870 100644
> --- a/drivers/usb/host/xhci-zynqmp.c
> +++ b/drivers/usb/host/xhci-zynqmp.c
> @@ -121,10 +121,9 @@ static int xhci_usb_remove(struct udevice *dev)
>  static int xhci_usb_ofdata_to_platdata(struct udevice *dev)
>  {
>  	struct zynqmp_xhci_platdata *plat = dev_get_platdata(dev);
> -	const void *blob = gd->fdt_blob;
>  
>  	/* Get the base address for XHCI controller from the device node */
> -	plat->hcd_base = fdtdec_get_addr(blob, dev_of_offset(dev), "reg");
> +	plat->hcd_base = dev_read_addr(dev);
>  	if (plat->hcd_base == FDT_ADDR_T_NONE) {
>  		debug("Can't get the XHCI register base address\n");
>  		return -ENXIO;
> diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti-musb.c
> index 9fbe2d6..bdb5985 100644
> --- a/drivers/usb/musb-new/ti-musb.c
> +++ b/drivers/usb/musb-new/ti-musb.c
> @@ -177,7 +177,6 @@ static int ti_musb_host_ofdata_to_platdata(struct udevice *dev)
>  {
>  	struct ti_musb_platdata *platdata = dev_get_platdata(dev);
>  	const void *fdt = gd->fdt_blob;
> -	int node = dev_of_offset(dev);
>  	int ret;
>  
>  	ret = ti_musb_ofdata_to_platdata(dev);
> @@ -204,14 +203,12 @@ U_BOOT_DRIVER(ti_musb_host) = {
>  
>  static int ti_musb_wrapper_bind(struct udevice *parent)
>  {
> -	const void *fdt = gd->fdt_blob;
> -	int node;
> +	ofnode node;
>  	int ret;
>  
> -	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> -	     node = fdt_next_subnode(fdt, node)) {
> +	dev_for_each_subnode(node, parent) {
>  		struct udevice *dev;
> -		const char *name = fdt_get_name(fdt, node, NULL);
> +		const char *name = (char *)ofnode_get_name(node);
>  		enum usb_dr_mode dr_mode;
>  		struct driver *drv;
>  
> @@ -226,7 +223,7 @@ static int ti_musb_wrapper_bind(struct udevice *parent)
>  		case USB_DR_MODE_HOST:
>  			/* Bind MUSB host */
>  			ret = device_bind_driver_to_node(parent, "ti-musb-host",
> -					name, offset_to_ofnode(node), &dev);
> +					name, node, &dev);
>  			if (ret) {
>  				pr_err("musb - not able to bind usb host node\n");
>  				return ret;
> diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
> index d2604c5..baf4d91 100644
> --- a/include/linux/usb/otg.h
> +++ b/include/linux/usb/otg.h
> @@ -9,6 +9,8 @@
>  #ifndef __LINUX_USB_OTG_H
>  #define __LINUX_USB_OTG_H
>  
> +#include <dm/ofnode.h>
> +
>  enum usb_dr_mode {
>  	USB_DR_MODE_UNKNOWN,
>  	USB_DR_MODE_HOST,
> @@ -23,7 +25,7 @@ enum usb_dr_mode {
>   * The function gets phy interface string from property 'dr_mode',
>   * and returns the correspondig enum usb_dr_mode
>   */
> -enum usb_dr_mode usb_get_dr_mode(int node);
> +enum usb_dr_mode usb_get_dr_mode(ofnode node);
>  
>  /**
>   * usb_get_maximum_speed() - Get maximum speed for given device
> @@ -32,6 +34,6 @@ enum usb_dr_mode usb_get_dr_mode(int node);
>   * The function gets phy interface string from property 'maximum-speed',
>   * and returns the correspondig enum usb_device_speed
>   */
> -enum usb_device_speed usb_get_maximum_speed(int node);
> +enum usb_device_speed usb_get_maximum_speed(ofnode node);
>  
>  #endif /* __LINUX_USB_OTG_H */
> 


-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH v2] usb: dwc3: convert to livetree
  2018-09-06 10:57 ` Marek Vasut
@ 2018-09-06 11:19   ` Siva Durga Prasad Paladugu
  2018-09-06 11:23     ` Marek Vasut
  0 siblings, 1 reply; 6+ messages in thread
From: Siva Durga Prasad Paladugu @ 2018-09-06 11:19 UTC (permalink / raw)
  To: u-boot

Hi,

> -----Original Message-----
> From: Marek Vasut [mailto:marex at denx.de]
> Sent: Thursday, September 06, 2018 4:28 PM
> To: Siva Durga Prasad Paladugu <sivadur@xilinx.com>; u-
> boot at lists.denx.de
> Cc: Michal Simek <michals@xilinx.com>; bmeng.cn at gmail.com;
> sjg at chromium.org; yamada.masahiro at socionext.com; Vipul Kumar
> <vipulk@xilinx.com>
> Subject: Re: [PATCH v2] usb: dwc3: convert to livetree
> 
> On 09/06/2018 12:39 PM, Siva Durga Prasad Paladugu wrote:
> > From: Vipul Kumar <vipul.kumar@xilinx.com>
> >
> > Update the DWC3 USB driver to support a live tree.
> >
> > Signed-off-by: Siva Durga Prasad Paladugu
> > <siva.durga.paladugu@xilinx.com>
> > Signed-off-by: Vipul Kumar <vipul.kumar@xilinx.com>
> > Tested-by: Michal Simek <michal.simek@xilinx.com>
> > ---
> > Changes in v2:
> > - Fixed travis build issues with some platforms.
> 
> Cool, what exactly changed ?

Earlier we got compilation failures for am335x_hs_evm_uart platform during travis ci
as we didn’t made corresponding changes to drivers/usb/musb-new/ti-musb.c  as per
live tree conversion. Now it is fixed by moving this driver to support live tree.
Also fixed dwc3-sti-glue.c to support live tree.

Thanks,
Siva

> 
> > ---
> >  drivers/usb/common/common.c      | 11 +++++------
> >  drivers/usb/dwc3/dwc3-generic.c  | 17 +++++++----------
> > drivers/usb/host/dwc3-sti-glue.c |  7 +++----
> >  drivers/usb/host/xhci-dwc3.c     |  3 ++-
> >  drivers/usb/host/xhci-zynqmp.c   |  3 +--
> >  drivers/usb/musb-new/ti-musb.c   | 11 ++++-------
> >  include/linux/usb/otg.h          |  6 ++++--
> >  7 files changed, 26 insertions(+), 32 deletions(-)
> >
> > diff --git a/drivers/usb/common/common.c
> b/drivers/usb/common/common.c
> > index a55def5..3dea79b 100644
> > --- a/drivers/usb/common/common.c
> > +++ b/drivers/usb/common/common.c
> > @@ -10,6 +10,7 @@
> >  #include <linux/libfdt.h>
> >  #include <linux/usb/otg.h>
> >  #include <linux/usb/ch9.h>
> > +#include <dm.h>
> >
> >  DECLARE_GLOBAL_DATA_PTR;
> >
> > @@ -20,13 +21,12 @@ static const char *const usb_dr_modes[] = {
> >  	[USB_DR_MODE_OTG]		= "otg",
> >  };
> >
> > -enum usb_dr_mode usb_get_dr_mode(int node)
> > +enum usb_dr_mode usb_get_dr_mode(ofnode node)
> >  {
> > -	const void *fdt = gd->fdt_blob;
> >  	const char *dr_mode;
> >  	int i;
> >
> > -	dr_mode = fdt_getprop(fdt, node, "dr_mode", NULL);
> > +	dr_mode = ofnode_get_property(node, "dr_mode", NULL);
> >  	if (!dr_mode) {
> >  		pr_err("usb dr_mode not found\n");
> >  		return USB_DR_MODE_UNKNOWN;
> > @@ -48,13 +48,12 @@ static const char *const speed_names[] = {
> >  	[USB_SPEED_SUPER] = "super-speed",
> >  };
> >
> > -enum usb_device_speed usb_get_maximum_speed(int node)
> > +enum usb_device_speed usb_get_maximum_speed(ofnode node)
> >  {
> > -	const void *fdt = gd->fdt_blob;
> >  	const char *max_speed;
> >  	int i;
> >
> > -	max_speed = fdt_getprop(fdt, node, "maximum-speed", NULL);
> > +	max_speed = ofnode_get_property(node, "maximum-speed",
> NULL);
> >  	if (!max_speed) {
> >  		pr_err("usb maximum-speed not found\n");
> >  		return USB_SPEED_UNKNOWN;
> > diff --git a/drivers/usb/dwc3/dwc3-generic.c
> > b/drivers/usb/dwc3/dwc3-generic.c index ca63eac..ef72c8c 100644
> > --- a/drivers/usb/dwc3/dwc3-generic.c
> > +++ b/drivers/usb/dwc3/dwc3-generic.c
> > @@ -61,18 +61,17 @@ static int
> dwc3_generic_peripheral_remove(struct
> > udevice *dev)  static int
> > dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev)  {
> >  	struct dwc3 *priv = dev_get_priv(dev);
> > -	int node = dev_of_offset(dev);
> >
> > -	priv->regs = (void *)devfdt_get_addr(dev);
> > +	priv->regs = (void *)dev_read_addr(dev);
> >  	priv->regs += DWC3_GLOBALS_REGS_START;
> >
> > -	priv->maximum_speed = usb_get_maximum_speed(node);
> > +	priv->maximum_speed = usb_get_maximum_speed(dev->node);
> >  	if (priv->maximum_speed == USB_SPEED_UNKNOWN) {
> >  		pr_err("Invalid usb maximum speed\n");
> >  		return -ENODEV;
> >  	}
> >
> > -	priv->dr_mode = usb_get_dr_mode(node);
> > +	priv->dr_mode = usb_get_dr_mode(dev->node);
> >  	if (priv->dr_mode == USB_DR_MODE_UNKNOWN) {
> >  		pr_err("Invalid usb mode setup\n");
> >  		return -ENODEV;
> > @@ -100,13 +99,11 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {
> >
> >  static int dwc3_generic_bind(struct udevice *parent)  {
> > -	const void *fdt = gd->fdt_blob;
> > -	int node;
> > +	ofnode node;
> >  	int ret;
> >
> > -	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> > -	     node = fdt_next_subnode(fdt, node)) {
> > -		const char *name = fdt_get_name(fdt, node, NULL);
> > +	dev_for_each_subnode(node, parent) {
> > +		const char *name = (char *)ofnode_get_name(node);
> >  		enum usb_dr_mode dr_mode;
> >  		struct udevice *dev;
> >  		const char *driver;
> > @@ -133,7 +130,7 @@ static int dwc3_generic_bind(struct udevice
> *parent)
> >  		};
> >
> >  		ret = device_bind_driver_to_node(parent, driver, name,
> > -						 offset_to_ofnode(node),
> &dev);
> > +						 node, &dev);
> >  		if (ret) {
> >  			debug("%s: not able to bind usb device mode\n",
> >  			      __func__);
> > diff --git a/drivers/usb/host/dwc3-sti-glue.c
> > b/drivers/usb/host/dwc3-sti-glue.c
> > index ad7cf6e..de423ee 100644
> > --- a/drivers/usb/host/dwc3-sti-glue.c
> > +++ b/drivers/usb/host/dwc3-sti-glue.c
> > @@ -153,18 +153,17 @@ static int
> > sti_dwc3_glue_ofdata_to_platdata(struct udevice *dev)  static int
> > sti_dwc3_glue_bind(struct udevice *dev)  {
> >  	struct sti_dwc3_glue_platdata *plat = dev_get_platdata(dev);
> > -	int dwc3_node;
> > +	ofnode dwc3_node;
> >
> >  	/* check if one subnode is present */
> > -	dwc3_node = fdt_first_subnode(gd->fdt_blob, dev_of_offset(dev));
> > +	dwc3_node = dev_read_first_subnode(dev);
> >  	if (dwc3_node <= 0) {
> >  		pr_err("Can't find subnode for %s\n", dev->name);
> >  		return -ENODEV;
> >  	}
> >
> >  	/* check if the subnode compatible string is the dwc3 one*/
> > -	if (fdt_node_check_compatible(gd->fdt_blob, dwc3_node,
> > -				      "snps,dwc3") != 0) {
> > +	if (ofnode_device_is_compatible(dwc3_node, "snps,dwc3") != 0) {
> >  		pr_err("Can't find dwc3 subnode for %s\n", dev->name);
> >  		return -ENODEV;
> >  	}
> > diff --git a/drivers/usb/host/xhci-dwc3.c
> > b/drivers/usb/host/xhci-dwc3.c index 80754d7..cbab436 100644
> > --- a/drivers/usb/host/xhci-dwc3.c
> > +++ b/drivers/usb/host/xhci-dwc3.c
> > @@ -202,6 +202,7 @@ static int xhci_dwc3_probe(struct udevice *dev)
> >  	struct dwc3 *dwc3_reg;
> >  	enum usb_dr_mode dr_mode;
> >  	int ret;
> > +	ofnode node;
> >
> >  	hccr = (struct xhci_hccr *)((uintptr_t)dev_read_addr(dev));
> >  	hcor = (struct xhci_hcor *)((uintptr_t)hccr + @@ -215,7 +216,7 @@
> > static int xhci_dwc3_probe(struct udevice *dev)
> >
> >  	dwc3_core_init(dwc3_reg);
> >
> > -	dr_mode = usb_get_dr_mode(dev_of_offset(dev));
> > +	dr_mode = usb_get_dr_mode(node);
> >  	if (dr_mode == USB_DR_MODE_UNKNOWN)
> >  		/* by default set dual role mode to HOST */
> >  		dr_mode = USB_DR_MODE_HOST;
> > diff --git a/drivers/usb/host/xhci-zynqmp.c
> > b/drivers/usb/host/xhci-zynqmp.c index e44e1ae..5a5b870 100644
> > --- a/drivers/usb/host/xhci-zynqmp.c
> > +++ b/drivers/usb/host/xhci-zynqmp.c
> > @@ -121,10 +121,9 @@ static int xhci_usb_remove(struct udevice *dev)
> > static int xhci_usb_ofdata_to_platdata(struct udevice *dev)  {
> >  	struct zynqmp_xhci_platdata *plat = dev_get_platdata(dev);
> > -	const void *blob = gd->fdt_blob;
> >
> >  	/* Get the base address for XHCI controller from the device node */
> > -	plat->hcd_base = fdtdec_get_addr(blob, dev_of_offset(dev), "reg");
> > +	plat->hcd_base = dev_read_addr(dev);
> >  	if (plat->hcd_base == FDT_ADDR_T_NONE) {
> >  		debug("Can't get the XHCI register base address\n");
> >  		return -ENXIO;
> > diff --git a/drivers/usb/musb-new/ti-musb.c
> > b/drivers/usb/musb-new/ti-musb.c index 9fbe2d6..bdb5985 100644
> > --- a/drivers/usb/musb-new/ti-musb.c
> > +++ b/drivers/usb/musb-new/ti-musb.c
> > @@ -177,7 +177,6 @@ static int
> ti_musb_host_ofdata_to_platdata(struct
> > udevice *dev)  {
> >  	struct ti_musb_platdata *platdata = dev_get_platdata(dev);
> >  	const void *fdt = gd->fdt_blob;
> > -	int node = dev_of_offset(dev);
> >  	int ret;
> >
> >  	ret = ti_musb_ofdata_to_platdata(dev); @@ -204,14 +203,12 @@
> > U_BOOT_DRIVER(ti_musb_host) = {
> >
> >  static int ti_musb_wrapper_bind(struct udevice *parent)  {
> > -	const void *fdt = gd->fdt_blob;
> > -	int node;
> > +	ofnode node;
> >  	int ret;
> >
> > -	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> > -	     node = fdt_next_subnode(fdt, node)) {
> > +	dev_for_each_subnode(node, parent) {
> >  		struct udevice *dev;
> > -		const char *name = fdt_get_name(fdt, node, NULL);
> > +		const char *name = (char *)ofnode_get_name(node);
> >  		enum usb_dr_mode dr_mode;
> >  		struct driver *drv;
> >
> > @@ -226,7 +223,7 @@ static int ti_musb_wrapper_bind(struct udevice
> *parent)
> >  		case USB_DR_MODE_HOST:
> >  			/* Bind MUSB host */
> >  			ret = device_bind_driver_to_node(parent, "ti-musb-
> host",
> > -					name, offset_to_ofnode(node),
> &dev);
> > +					name, node, &dev);
> >  			if (ret) {
> >  				pr_err("musb - not able to bind usb host
> node\n");
> >  				return ret;
> > diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index
> > d2604c5..baf4d91 100644
> > --- a/include/linux/usb/otg.h
> > +++ b/include/linux/usb/otg.h
> > @@ -9,6 +9,8 @@
> >  #ifndef __LINUX_USB_OTG_H
> >  #define __LINUX_USB_OTG_H
> >
> > +#include <dm/ofnode.h>
> > +
> >  enum usb_dr_mode {
> >  	USB_DR_MODE_UNKNOWN,
> >  	USB_DR_MODE_HOST,
> > @@ -23,7 +25,7 @@ enum usb_dr_mode {
> >   * The function gets phy interface string from property 'dr_mode',
> >   * and returns the correspondig enum usb_dr_mode
> >   */
> > -enum usb_dr_mode usb_get_dr_mode(int node);
> > +enum usb_dr_mode usb_get_dr_mode(ofnode node);
> >
> >  /**
> >   * usb_get_maximum_speed() - Get maximum speed for given device
> @@
> > -32,6 +34,6 @@ enum usb_dr_mode usb_get_dr_mode(int node);
> >   * The function gets phy interface string from property 'maximum-speed',
> >   * and returns the correspondig enum usb_device_speed
> >   */
> > -enum usb_device_speed usb_get_maximum_speed(int node);
> > +enum usb_device_speed usb_get_maximum_speed(ofnode node);
> >
> >  #endif /* __LINUX_USB_OTG_H */
> >
> 
> 
> --
> Best regards,
> Marek Vasut

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH v2] usb: dwc3: convert to livetree
  2018-09-06 11:19   ` Siva Durga Prasad Paladugu
@ 2018-09-06 11:23     ` Marek Vasut
  0 siblings, 0 replies; 6+ messages in thread
From: Marek Vasut @ 2018-09-06 11:23 UTC (permalink / raw)
  To: u-boot

On 09/06/2018 01:19 PM, Siva Durga Prasad Paladugu wrote:
> Hi,
> 
>> -----Original Message-----
>> From: Marek Vasut [mailto:marex at denx.de]
>> Sent: Thursday, September 06, 2018 4:28 PM
>> To: Siva Durga Prasad Paladugu <sivadur@xilinx.com>; u-
>> boot at lists.denx.de
>> Cc: Michal Simek <michals@xilinx.com>; bmeng.cn at gmail.com;
>> sjg at chromium.org; yamada.masahiro at socionext.com; Vipul Kumar
>> <vipulk@xilinx.com>
>> Subject: Re: [PATCH v2] usb: dwc3: convert to livetree
>>
>> On 09/06/2018 12:39 PM, Siva Durga Prasad Paladugu wrote:
>>> From: Vipul Kumar <vipul.kumar@xilinx.com>
>>>
>>> Update the DWC3 USB driver to support a live tree.
>>>
>>> Signed-off-by: Siva Durga Prasad Paladugu
>>> <siva.durga.paladugu@xilinx.com>
>>> Signed-off-by: Vipul Kumar <vipul.kumar@xilinx.com>
>>> Tested-by: Michal Simek <michal.simek@xilinx.com>
>>> ---
>>> Changes in v2:
>>> - Fixed travis build issues with some platforms.
>>
>> Cool, what exactly changed ?
> 
> Earlier we got compilation failures for am335x_hs_evm_uart platform during travis ci
> as we didn’t made corresponding changes to drivers/usb/musb-new/ti-musb.c  as per
> live tree conversion. Now it is fixed by moving this driver to support live tree.
> Also fixed dwc3-sti-glue.c to support live tree.

That is what should be in the V2 description. Not that random "fixed
some stuff" blurb.

-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH v2] usb: dwc3: convert to livetree
  2018-09-06 10:39 [U-Boot] [PATCH v2] usb: dwc3: convert to livetree Siva Durga Prasad Paladugu
  2018-09-06 10:57 ` Marek Vasut
@ 2018-09-06 14:05 ` Michal Simek
  2018-09-07  5:29   ` Siva Durga Prasad Paladugu
  1 sibling, 1 reply; 6+ messages in thread
From: Michal Simek @ 2018-09-06 14:05 UTC (permalink / raw)
  To: u-boot

On 6.9.2018 12:39, Siva Durga Prasad Paladugu wrote:
> From: Vipul Kumar <vipul.kumar@xilinx.com>
> 
> Update the DWC3 USB driver to support a live tree.
> 
> Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
> Signed-off-by: Vipul Kumar <vipul.kumar@xilinx.com>
> Tested-by: Michal Simek <michal.simek@xilinx.com>
> ---
> Changes in v2:
> - Fixed travis build issues with some platforms.
> ---
>  drivers/usb/common/common.c      | 11 +++++------
>  drivers/usb/dwc3/dwc3-generic.c  | 17 +++++++----------
>  drivers/usb/host/dwc3-sti-glue.c |  7 +++----
>  drivers/usb/host/xhci-dwc3.c     |  3 ++-
>  drivers/usb/host/xhci-zynqmp.c   |  3 +--
>  drivers/usb/musb-new/ti-musb.c   | 11 ++++-------
>  include/linux/usb/otg.h          |  6 ++++--
>  7 files changed, 26 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
> index a55def5..3dea79b 100644
> --- a/drivers/usb/common/common.c
> +++ b/drivers/usb/common/common.c
> @@ -10,6 +10,7 @@
>  #include <linux/libfdt.h>
>  #include <linux/usb/otg.h>
>  #include <linux/usb/ch9.h>
> +#include <dm.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -20,13 +21,12 @@ static const char *const usb_dr_modes[] = {
>  	[USB_DR_MODE_OTG]		= "otg",
>  };
>  
> -enum usb_dr_mode usb_get_dr_mode(int node)
> +enum usb_dr_mode usb_get_dr_mode(ofnode node)
>  {
> -	const void *fdt = gd->fdt_blob;
>  	const char *dr_mode;
>  	int i;
>  
> -	dr_mode = fdt_getprop(fdt, node, "dr_mode", NULL);
> +	dr_mode = ofnode_get_property(node, "dr_mode", NULL);
>  	if (!dr_mode) {
>  		pr_err("usb dr_mode not found\n");
>  		return USB_DR_MODE_UNKNOWN;
> @@ -48,13 +48,12 @@ static const char *const speed_names[] = {
>  	[USB_SPEED_SUPER] = "super-speed",
>  };
>  
> -enum usb_device_speed usb_get_maximum_speed(int node)
> +enum usb_device_speed usb_get_maximum_speed(ofnode node)
>  {
> -	const void *fdt = gd->fdt_blob;
>  	const char *max_speed;
>  	int i;
>  
> -	max_speed = fdt_getprop(fdt, node, "maximum-speed", NULL);
> +	max_speed = ofnode_get_property(node, "maximum-speed", NULL);
>  	if (!max_speed) {
>  		pr_err("usb maximum-speed not found\n");
>  		return USB_SPEED_UNKNOWN;
> diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
> index ca63eac..ef72c8c 100644
> --- a/drivers/usb/dwc3/dwc3-generic.c
> +++ b/drivers/usb/dwc3/dwc3-generic.c
> @@ -61,18 +61,17 @@ static int dwc3_generic_peripheral_remove(struct udevice *dev)
>  static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev)
>  {
>  	struct dwc3 *priv = dev_get_priv(dev);
> -	int node = dev_of_offset(dev);
>  
> -	priv->regs = (void *)devfdt_get_addr(dev);
> +	priv->regs = (void *)dev_read_addr(dev);
>  	priv->regs += DWC3_GLOBALS_REGS_START;
>  
> -	priv->maximum_speed = usb_get_maximum_speed(node);
> +	priv->maximum_speed = usb_get_maximum_speed(dev->node);
>  	if (priv->maximum_speed == USB_SPEED_UNKNOWN) {
>  		pr_err("Invalid usb maximum speed\n");
>  		return -ENODEV;
>  	}
>  
> -	priv->dr_mode = usb_get_dr_mode(node);
> +	priv->dr_mode = usb_get_dr_mode(dev->node);
>  	if (priv->dr_mode == USB_DR_MODE_UNKNOWN) {
>  		pr_err("Invalid usb mode setup\n");
>  		return -ENODEV;
> @@ -100,13 +99,11 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {
>  
>  static int dwc3_generic_bind(struct udevice *parent)
>  {
> -	const void *fdt = gd->fdt_blob;
> -	int node;
> +	ofnode node;
>  	int ret;
>  
> -	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> -	     node = fdt_next_subnode(fdt, node)) {
> -		const char *name = fdt_get_name(fdt, node, NULL);
> +	dev_for_each_subnode(node, parent) {
> +		const char *name = (char *)ofnode_get_name(node);
>  		enum usb_dr_mode dr_mode;
>  		struct udevice *dev;
>  		const char *driver;
> @@ -133,7 +130,7 @@ static int dwc3_generic_bind(struct udevice *parent)
>  		};
>  
>  		ret = device_bind_driver_to_node(parent, driver, name,
> -						 offset_to_ofnode(node), &dev);
> +						 node, &dev);
>  		if (ret) {
>  			debug("%s: not able to bind usb device mode\n",
>  			      __func__);
> diff --git a/drivers/usb/host/dwc3-sti-glue.c b/drivers/usb/host/dwc3-sti-glue.c
> index ad7cf6e..de423ee 100644
> --- a/drivers/usb/host/dwc3-sti-glue.c
> +++ b/drivers/usb/host/dwc3-sti-glue.c
> @@ -153,18 +153,17 @@ static int sti_dwc3_glue_ofdata_to_platdata(struct udevice *dev)
>  static int sti_dwc3_glue_bind(struct udevice *dev)
>  {
>  	struct sti_dwc3_glue_platdata *plat = dev_get_platdata(dev);
> -	int dwc3_node;
> +	ofnode dwc3_node;
>  
>  	/* check if one subnode is present */
> -	dwc3_node = fdt_first_subnode(gd->fdt_blob, dev_of_offset(dev));
> +	dwc3_node = dev_read_first_subnode(dev);
>  	if (dwc3_node <= 0) {
>  		pr_err("Can't find subnode for %s\n", dev->name);
>  		return -ENODEV;
>  	}
>  
>  	/* check if the subnode compatible string is the dwc3 one*/
> -	if (fdt_node_check_compatible(gd->fdt_blob, dwc3_node,
> -				      "snps,dwc3") != 0) {
> +	if (ofnode_device_is_compatible(dwc3_node, "snps,dwc3") != 0) {
>  		pr_err("Can't find dwc3 subnode for %s\n", dev->name);
>  		return -ENODEV;
>  	}
> diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
> index 80754d7..cbab436 100644
> --- a/drivers/usb/host/xhci-dwc3.c
> +++ b/drivers/usb/host/xhci-dwc3.c
> @@ -202,6 +202,7 @@ static int xhci_dwc3_probe(struct udevice *dev)
>  	struct dwc3 *dwc3_reg;
>  	enum usb_dr_mode dr_mode;
>  	int ret;
> +	ofnode node;
>  
>  	hccr = (struct xhci_hccr *)((uintptr_t)dev_read_addr(dev));
>  	hcor = (struct xhci_hcor *)((uintptr_t)hccr +
> @@ -215,7 +216,7 @@ static int xhci_dwc3_probe(struct udevice *dev)
>  
>  	dwc3_core_init(dwc3_reg);
>  
> -	dr_mode = usb_get_dr_mode(dev_of_offset(dev));
> +	dr_mode = usb_get_dr_mode(node);
>  	if (dr_mode == USB_DR_MODE_UNKNOWN)
>  		/* by default set dual role mode to HOST */
>  		dr_mode = USB_DR_MODE_HOST;
> diff --git a/drivers/usb/host/xhci-zynqmp.c b/drivers/usb/host/xhci-zynqmp.c
> index e44e1ae..5a5b870 100644
> --- a/drivers/usb/host/xhci-zynqmp.c
> +++ b/drivers/usb/host/xhci-zynqmp.c
> @@ -121,10 +121,9 @@ static int xhci_usb_remove(struct udevice *dev)
>  static int xhci_usb_ofdata_to_platdata(struct udevice *dev)
>  {
>  	struct zynqmp_xhci_platdata *plat = dev_get_platdata(dev);
> -	const void *blob = gd->fdt_blob;
>  
>  	/* Get the base address for XHCI controller from the device node */
> -	plat->hcd_base = fdtdec_get_addr(blob, dev_of_offset(dev), "reg");
> +	plat->hcd_base = dev_read_addr(dev);
>  	if (plat->hcd_base == FDT_ADDR_T_NONE) {
>  		debug("Can't get the XHCI register base address\n");
>  		return -ENXIO;
> diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti-musb.c
> index 9fbe2d6..bdb5985 100644
> --- a/drivers/usb/musb-new/ti-musb.c
> +++ b/drivers/usb/musb-new/ti-musb.c
> @@ -177,7 +177,6 @@ static int ti_musb_host_ofdata_to_platdata(struct udevice *dev)
>  {
>  	struct ti_musb_platdata *platdata = dev_get_platdata(dev);
>  	const void *fdt = gd->fdt_blob;
> -	int node = dev_of_offset(dev);
>  	int ret;
>  
>  	ret = ti_musb_ofdata_to_platdata(dev);
> @@ -204,14 +203,12 @@ U_BOOT_DRIVER(ti_musb_host) = {
>  
>  static int ti_musb_wrapper_bind(struct udevice *parent)
>  {
> -	const void *fdt = gd->fdt_blob;
> -	int node;
> +	ofnode node;
>  	int ret;
>  
> -	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> -	     node = fdt_next_subnode(fdt, node)) {
> +	dev_for_each_subnode(node, parent) {
>  		struct udevice *dev;
> -		const char *name = fdt_get_name(fdt, node, NULL);
> +		const char *name = (char *)ofnode_get_name(node);
>  		enum usb_dr_mode dr_mode;
>  		struct driver *drv;
>  
> @@ -226,7 +223,7 @@ static int ti_musb_wrapper_bind(struct udevice *parent)
>  		case USB_DR_MODE_HOST:
>  			/* Bind MUSB host */
>  			ret = device_bind_driver_to_node(parent, "ti-musb-host",
> -					name, offset_to_ofnode(node), &dev);
> +					name, node, &dev);
>  			if (ret) {
>  				pr_err("musb - not able to bind usb host node\n");
>  				return ret;
> diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
> index d2604c5..baf4d91 100644
> --- a/include/linux/usb/otg.h
> +++ b/include/linux/usb/otg.h
> @@ -9,6 +9,8 @@
>  #ifndef __LINUX_USB_OTG_H
>  #define __LINUX_USB_OTG_H
>  
> +#include <dm/ofnode.h>
> +
>  enum usb_dr_mode {
>  	USB_DR_MODE_UNKNOWN,
>  	USB_DR_MODE_HOST,
> @@ -23,7 +25,7 @@ enum usb_dr_mode {
>   * The function gets phy interface string from property 'dr_mode',
>   * and returns the correspondig enum usb_dr_mode
>   */
> -enum usb_dr_mode usb_get_dr_mode(int node);
> +enum usb_dr_mode usb_get_dr_mode(ofnode node);
>  
>  /**
>   * usb_get_maximum_speed() - Get maximum speed for given device
> @@ -32,6 +34,6 @@ enum usb_dr_mode usb_get_dr_mode(int node);
>   * The function gets phy interface string from property 'maximum-speed',
>   * and returns the correspondig enum usb_device_speed
>   */
> -enum usb_device_speed usb_get_maximum_speed(int node);
> +enum usb_device_speed usb_get_maximum_speed(ofnode node);
>  
>  #endif /* __LINUX_USB_OTG_H */
> 

I still see there one issue.
make stih410-b2260_defconfig
make -j

  LD      cmd/built-in.o
drivers/usb/host/dwc3-sti-glue.c: In function ‘sti_dwc3_glue_bind’:
drivers/usb/host/dwc3-sti-glue.c:160:16: error: invalid operands to
binary <= (have ‘ofnode {aka union ofnode_union}’ and ‘int’)
  if (dwc3_node <= 0) {
                ^~
make[1]: *** [drivers/usb/host/dwc3-sti-glue.o] Error 1

M

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH v2] usb: dwc3: convert to livetree
  2018-09-06 14:05 ` Michal Simek
@ 2018-09-07  5:29   ` Siva Durga Prasad Paladugu
  0 siblings, 0 replies; 6+ messages in thread
From: Siva Durga Prasad Paladugu @ 2018-09-07  5:29 UTC (permalink / raw)
  To: u-boot

Hi,

> -----Original Message-----
> From: Michal Simek [mailto:michal.simek at xilinx.com]
> Sent: Thursday, September 06, 2018 7:36 PM
> To: Siva Durga Prasad Paladugu <sivadur@xilinx.com>; u-
> boot at lists.denx.de
> Cc: Michal Simek <michals@xilinx.com>; marex at denx.de;
> bmeng.cn at gmail.com; sjg at chromium.org;
> yamada.masahiro at socionext.com; Vipul Kumar <vipulk@xilinx.com>
> Subject: Re: [PATCH v2] usb: dwc3: convert to livetree
> 
> On 6.9.2018 12:39, Siva Durga Prasad Paladugu wrote:
> > From: Vipul Kumar <vipul.kumar@xilinx.com>
> >
> > Update the DWC3 USB driver to support a live tree.
> >
> > Signed-off-by: Siva Durga Prasad Paladugu
> > <siva.durga.paladugu@xilinx.com>
> > Signed-off-by: Vipul Kumar <vipul.kumar@xilinx.com>
> > Tested-by: Michal Simek <michal.simek@xilinx.com>
> > ---
> > Changes in v2:
> > - Fixed travis build issues with some platforms.
> > ---
> >  drivers/usb/common/common.c      | 11 +++++------
> >  drivers/usb/dwc3/dwc3-generic.c  | 17 +++++++----------
> > drivers/usb/host/dwc3-sti-glue.c |  7 +++----
> >  drivers/usb/host/xhci-dwc3.c     |  3 ++-
> >  drivers/usb/host/xhci-zynqmp.c   |  3 +--
> >  drivers/usb/musb-new/ti-musb.c   | 11 ++++-------
> >  include/linux/usb/otg.h          |  6 ++++--
> >  7 files changed, 26 insertions(+), 32 deletions(-)
> >
> > diff --git a/drivers/usb/common/common.c
> b/drivers/usb/common/common.c
> > index a55def5..3dea79b 100644
> > --- a/drivers/usb/common/common.c
> > +++ b/drivers/usb/common/common.c
> > @@ -10,6 +10,7 @@
> >  #include <linux/libfdt.h>
> >  #include <linux/usb/otg.h>
> >  #include <linux/usb/ch9.h>
> > +#include <dm.h>
> >
> >  DECLARE_GLOBAL_DATA_PTR;
> >
> > @@ -20,13 +21,12 @@ static const char *const usb_dr_modes[] = {
> >  	[USB_DR_MODE_OTG]		= "otg",
> >  };
> >
> > -enum usb_dr_mode usb_get_dr_mode(int node)
> > +enum usb_dr_mode usb_get_dr_mode(ofnode node)
> >  {
> > -	const void *fdt = gd->fdt_blob;
> >  	const char *dr_mode;
> >  	int i;
> >
> > -	dr_mode = fdt_getprop(fdt, node, "dr_mode", NULL);
> > +	dr_mode = ofnode_get_property(node, "dr_mode", NULL);
> >  	if (!dr_mode) {
> >  		pr_err("usb dr_mode not found\n");
> >  		return USB_DR_MODE_UNKNOWN;
> > @@ -48,13 +48,12 @@ static const char *const speed_names[] = {
> >  	[USB_SPEED_SUPER] = "super-speed",
> >  };
> >
> > -enum usb_device_speed usb_get_maximum_speed(int node)
> > +enum usb_device_speed usb_get_maximum_speed(ofnode node)
> >  {
> > -	const void *fdt = gd->fdt_blob;
> >  	const char *max_speed;
> >  	int i;
> >
> > -	max_speed = fdt_getprop(fdt, node, "maximum-speed", NULL);
> > +	max_speed = ofnode_get_property(node, "maximum-speed",
> NULL);
> >  	if (!max_speed) {
> >  		pr_err("usb maximum-speed not found\n");
> >  		return USB_SPEED_UNKNOWN;
> > diff --git a/drivers/usb/dwc3/dwc3-generic.c
> > b/drivers/usb/dwc3/dwc3-generic.c index ca63eac..ef72c8c 100644
> > --- a/drivers/usb/dwc3/dwc3-generic.c
> > +++ b/drivers/usb/dwc3/dwc3-generic.c
> > @@ -61,18 +61,17 @@ static int
> dwc3_generic_peripheral_remove(struct
> > udevice *dev)  static int
> > dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev)  {
> >  	struct dwc3 *priv = dev_get_priv(dev);
> > -	int node = dev_of_offset(dev);
> >
> > -	priv->regs = (void *)devfdt_get_addr(dev);
> > +	priv->regs = (void *)dev_read_addr(dev);
> >  	priv->regs += DWC3_GLOBALS_REGS_START;
> >
> > -	priv->maximum_speed = usb_get_maximum_speed(node);
> > +	priv->maximum_speed = usb_get_maximum_speed(dev->node);
> >  	if (priv->maximum_speed == USB_SPEED_UNKNOWN) {
> >  		pr_err("Invalid usb maximum speed\n");
> >  		return -ENODEV;
> >  	}
> >
> > -	priv->dr_mode = usb_get_dr_mode(node);
> > +	priv->dr_mode = usb_get_dr_mode(dev->node);
> >  	if (priv->dr_mode == USB_DR_MODE_UNKNOWN) {
> >  		pr_err("Invalid usb mode setup\n");
> >  		return -ENODEV;
> > @@ -100,13 +99,11 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {
> >
> >  static int dwc3_generic_bind(struct udevice *parent)  {
> > -	const void *fdt = gd->fdt_blob;
> > -	int node;
> > +	ofnode node;
> >  	int ret;
> >
> > -	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> > -	     node = fdt_next_subnode(fdt, node)) {
> > -		const char *name = fdt_get_name(fdt, node, NULL);
> > +	dev_for_each_subnode(node, parent) {
> > +		const char *name = (char *)ofnode_get_name(node);
> >  		enum usb_dr_mode dr_mode;
> >  		struct udevice *dev;
> >  		const char *driver;
> > @@ -133,7 +130,7 @@ static int dwc3_generic_bind(struct udevice
> *parent)
> >  		};
> >
> >  		ret = device_bind_driver_to_node(parent, driver, name,
> > -						 offset_to_ofnode(node),
> &dev);
> > +						 node, &dev);
> >  		if (ret) {
> >  			debug("%s: not able to bind usb device mode\n",
> >  			      __func__);
> > diff --git a/drivers/usb/host/dwc3-sti-glue.c
> > b/drivers/usb/host/dwc3-sti-glue.c
> > index ad7cf6e..de423ee 100644
> > --- a/drivers/usb/host/dwc3-sti-glue.c
> > +++ b/drivers/usb/host/dwc3-sti-glue.c
> > @@ -153,18 +153,17 @@ static int
> > sti_dwc3_glue_ofdata_to_platdata(struct udevice *dev)  static int
> > sti_dwc3_glue_bind(struct udevice *dev)  {
> >  	struct sti_dwc3_glue_platdata *plat = dev_get_platdata(dev);
> > -	int dwc3_node;
> > +	ofnode dwc3_node;
> >
> >  	/* check if one subnode is present */
> > -	dwc3_node = fdt_first_subnode(gd->fdt_blob, dev_of_offset(dev));
> > +	dwc3_node = dev_read_first_subnode(dev);
> >  	if (dwc3_node <= 0) {
> >  		pr_err("Can't find subnode for %s\n", dev->name);
> >  		return -ENODEV;
> >  	}
> >
> >  	/* check if the subnode compatible string is the dwc3 one*/
> > -	if (fdt_node_check_compatible(gd->fdt_blob, dwc3_node,
> > -				      "snps,dwc3") != 0) {
> > +	if (ofnode_device_is_compatible(dwc3_node, "snps,dwc3") != 0) {
> >  		pr_err("Can't find dwc3 subnode for %s\n", dev->name);
> >  		return -ENODEV;
> >  	}
> > diff --git a/drivers/usb/host/xhci-dwc3.c
> > b/drivers/usb/host/xhci-dwc3.c index 80754d7..cbab436 100644
> > --- a/drivers/usb/host/xhci-dwc3.c
> > +++ b/drivers/usb/host/xhci-dwc3.c
> > @@ -202,6 +202,7 @@ static int xhci_dwc3_probe(struct udevice *dev)
> >  	struct dwc3 *dwc3_reg;
> >  	enum usb_dr_mode dr_mode;
> >  	int ret;
> > +	ofnode node;
> >
> >  	hccr = (struct xhci_hccr *)((uintptr_t)dev_read_addr(dev));
> >  	hcor = (struct xhci_hcor *)((uintptr_t)hccr + @@ -215,7 +216,7 @@
> > static int xhci_dwc3_probe(struct udevice *dev)
> >
> >  	dwc3_core_init(dwc3_reg);
> >
> > -	dr_mode = usb_get_dr_mode(dev_of_offset(dev));
> > +	dr_mode = usb_get_dr_mode(node);
> >  	if (dr_mode == USB_DR_MODE_UNKNOWN)
> >  		/* by default set dual role mode to HOST */
> >  		dr_mode = USB_DR_MODE_HOST;
> > diff --git a/drivers/usb/host/xhci-zynqmp.c
> > b/drivers/usb/host/xhci-zynqmp.c index e44e1ae..5a5b870 100644
> > --- a/drivers/usb/host/xhci-zynqmp.c
> > +++ b/drivers/usb/host/xhci-zynqmp.c
> > @@ -121,10 +121,9 @@ static int xhci_usb_remove(struct udevice *dev)
> > static int xhci_usb_ofdata_to_platdata(struct udevice *dev)  {
> >  	struct zynqmp_xhci_platdata *plat = dev_get_platdata(dev);
> > -	const void *blob = gd->fdt_blob;
> >
> >  	/* Get the base address for XHCI controller from the device node */
> > -	plat->hcd_base = fdtdec_get_addr(blob, dev_of_offset(dev), "reg");
> > +	plat->hcd_base = dev_read_addr(dev);
> >  	if (plat->hcd_base == FDT_ADDR_T_NONE) {
> >  		debug("Can't get the XHCI register base address\n");
> >  		return -ENXIO;
> > diff --git a/drivers/usb/musb-new/ti-musb.c
> > b/drivers/usb/musb-new/ti-musb.c index 9fbe2d6..bdb5985 100644
> > --- a/drivers/usb/musb-new/ti-musb.c
> > +++ b/drivers/usb/musb-new/ti-musb.c
> > @@ -177,7 +177,6 @@ static int
> ti_musb_host_ofdata_to_platdata(struct
> > udevice *dev)  {
> >  	struct ti_musb_platdata *platdata = dev_get_platdata(dev);
> >  	const void *fdt = gd->fdt_blob;
> > -	int node = dev_of_offset(dev);
> >  	int ret;
> >
> >  	ret = ti_musb_ofdata_to_platdata(dev); @@ -204,14 +203,12 @@
> > U_BOOT_DRIVER(ti_musb_host) = {
> >
> >  static int ti_musb_wrapper_bind(struct udevice *parent)  {
> > -	const void *fdt = gd->fdt_blob;
> > -	int node;
> > +	ofnode node;
> >  	int ret;
> >
> > -	for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); node > 0;
> > -	     node = fdt_next_subnode(fdt, node)) {
> > +	dev_for_each_subnode(node, parent) {
> >  		struct udevice *dev;
> > -		const char *name = fdt_get_name(fdt, node, NULL);
> > +		const char *name = (char *)ofnode_get_name(node);
> >  		enum usb_dr_mode dr_mode;
> >  		struct driver *drv;
> >
> > @@ -226,7 +223,7 @@ static int ti_musb_wrapper_bind(struct udevice
> *parent)
> >  		case USB_DR_MODE_HOST:
> >  			/* Bind MUSB host */
> >  			ret = device_bind_driver_to_node(parent, "ti-musb-
> host",
> > -					name, offset_to_ofnode(node),
> &dev);
> > +					name, node, &dev);
> >  			if (ret) {
> >  				pr_err("musb - not able to bind usb host
> node\n");
> >  				return ret;
> > diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index
> > d2604c5..baf4d91 100644
> > --- a/include/linux/usb/otg.h
> > +++ b/include/linux/usb/otg.h
> > @@ -9,6 +9,8 @@
> >  #ifndef __LINUX_USB_OTG_H
> >  #define __LINUX_USB_OTG_H
> >
> > +#include <dm/ofnode.h>
> > +
> >  enum usb_dr_mode {
> >  	USB_DR_MODE_UNKNOWN,
> >  	USB_DR_MODE_HOST,
> > @@ -23,7 +25,7 @@ enum usb_dr_mode {
> >   * The function gets phy interface string from property 'dr_mode',
> >   * and returns the correspondig enum usb_dr_mode
> >   */
> > -enum usb_dr_mode usb_get_dr_mode(int node);
> > +enum usb_dr_mode usb_get_dr_mode(ofnode node);
> >
> >  /**
> >   * usb_get_maximum_speed() - Get maximum speed for given device
> @@
> > -32,6 +34,6 @@ enum usb_dr_mode usb_get_dr_mode(int node);
> >   * The function gets phy interface string from property 'maximum-speed',
> >   * and returns the correspondig enum usb_device_speed
> >   */
> > -enum usb_device_speed usb_get_maximum_speed(int node);
> > +enum usb_device_speed usb_get_maximum_speed(ofnode node);
> >
> >  #endif /* __LINUX_USB_OTG_H */
> >
> 
> I still see there one issue.
> make stih410-b2260_defconfig
> make -j
> 
>   LD      cmd/built-in.o
> drivers/usb/host/dwc3-sti-glue.c: In function ‘sti_dwc3_glue_bind’:
> drivers/usb/host/dwc3-sti-glue.c:160:16: error: invalid operands to binary
> <= (have ‘ofnode {aka union ofnode_union}’ and ‘int’)
>   if (dwc3_node <= 0) {
>                 ^~
> make[1]: *** [drivers/usb/host/dwc3-sti-glue.o] Error 1

Sorry, It's my bad that I sent wrong patch. I already fixed this issue and supposed to be part of v2.
Will anyway send v3 now. Thanks for finding it out.

Thanks,
Siva
> 
> M

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-09-07  5:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-06 10:39 [U-Boot] [PATCH v2] usb: dwc3: convert to livetree Siva Durga Prasad Paladugu
2018-09-06 10:57 ` Marek Vasut
2018-09-06 11:19   ` Siva Durga Prasad Paladugu
2018-09-06 11:23     ` Marek Vasut
2018-09-06 14:05 ` Michal Simek
2018-09-07  5:29   ` Siva Durga Prasad Paladugu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.