diff mbox

[U-Boot] powerpc/85xx: Fix warning for USB device-fixup

Message ID 1320737960-32548-1-git-send-email-ramneek.mehresh@freescale.com
State Accepted
Commit 4765fb7d739d0a46a466f96cf4ef0126d44ab5d0
Delegated to: Kumar Gala
Headers show

Commit Message

ramneek mehresh Nov. 8, 2011, 7:39 a.m. UTC
Fix USB device-fixup warning "node not found". This was occuring
because of static nature of start_offset variable

Static start_offset was storing offset of last node modified, and
was becoming issue if node fixup is carried multiple times,
resulting in "node not found" warning

Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com>
---
 arch/powerpc/cpu/mpc8xxx/fdt.c |   24 +++++++++++++-----------
 1 files changed, 13 insertions(+), 11 deletions(-)

Comments

Kumar Gala Nov. 8, 2011, 4:19 p.m. UTC | #1
On Nov 8, 2011, at 1:39 AM, Ramneek Mehresh wrote:

> Fix USB device-fixup warning "node not found". This was occuring
> because of static nature of start_offset variable
> 
> Static start_offset was storing offset of last node modified, and
> was becoming issue if node fixup is carried multiple times,
> resulting in "node not found" warning
> 
> Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com>
> ---
> arch/powerpc/cpu/mpc8xxx/fdt.c |   24 +++++++++++++-----------
> 1 files changed, 13 insertions(+), 11 deletions(-)

applied to 85xx

- k
diff mbox

Patch

diff --git a/arch/powerpc/cpu/mpc8xxx/fdt.c b/arch/powerpc/cpu/mpc8xxx/fdt.c
index 112c603..d07ae1b 100644
--- a/arch/powerpc/cpu/mpc8xxx/fdt.c
+++ b/arch/powerpc/cpu/mpc8xxx/fdt.c
@@ -87,13 +87,12 @@  void ft_fixup_num_cores(void *blob) {
 #endif /* defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) */
 
 #ifdef CONFIG_HAS_FSL_DR_USB
-static void fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,
-				const char *phy_type)
+static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,
+				const char *phy_type, int start_offset)
 {
 	const char *compat = "fsl-usb2-dr";
 	const char *prop_mode = "dr_mode";
 	const char *prop_type = "phy_type";
-	static int start_offset = -1;
 	int node_offset;
 	int err;
 
@@ -102,7 +101,7 @@  static void fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,
 	if (node_offset < 0) {
 		printf("WARNING: could not find compatible node %s: %s.\n",
 			compat, fdt_strerror(node_offset));
-		return;
+		return -1;
 	}
 
 	if (mode) {
@@ -121,16 +120,18 @@  static void fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,
 			       prop_type, compat, fdt_strerror(err));
 	}
 
-	start_offset = node_offset;
+	return node_offset;
 }
 
 void fdt_fixup_dr_usb(void *blob, bd_t *bd)
 {
 	const char *modes[] = { "host", "peripheral", "otg" };
-	const char *phys[] = { "ulpi", "umti" };
+	const char *phys[] = { "ulpi", "utmi" };
 	const char *mode = NULL;
 	const char *phy_type = NULL;
 	char usb1_defined = 0;
+	int usb_mode_off = -1;
+	int usb_phy_off = -1;
 	char str[5];
 	int i, j;
 
@@ -153,11 +154,11 @@  void fdt_fixup_dr_usb(void *blob, bd_t *bd)
 				}
 			}
 			if (mode_idx >= 0)
-				fdt_fixup_usb_mode_phy_type(blob,
-					modes[mode_idx], NULL);
+				usb_mode_off = fdt_fixup_usb_mode_phy_type(blob,
+					modes[mode_idx], NULL, usb_mode_off);
 			if (phy_idx >= 0)
-				fdt_fixup_usb_mode_phy_type(blob,
-					NULL, phys[phy_idx]);
+				usb_phy_off = fdt_fixup_usb_mode_phy_type(blob,
+					NULL, phys[phy_idx], usb_phy_off);
 			if (!strcmp(str, "usb1"))
 				usb1_defined = 1;
 			if (mode_idx < 0 && phy_idx < 0)
@@ -165,11 +166,12 @@  void fdt_fixup_dr_usb(void *blob, bd_t *bd)
 		}
 	}
 	if (!usb1_defined) {
+		int usb_off = -1;
 		mode = getenv("usb_dr_mode");
 		phy_type = getenv("usb_phy_type");
 		if (!mode && !phy_type)
 			return;
-		fdt_fixup_usb_mode_phy_type(blob, mode, phy_type);
+		fdt_fixup_usb_mode_phy_type(blob, mode, phy_type, usb_off);
 	}
 }
 #endif /* CONFIG_HAS_FSL_DR_USB */