Skip to contentSkip to conversation

drivers/usb : Define usb control register mask for w1c bits

PATCH New Nikhil Badola 2 participants 2 messages May 8, 2014 – May 20, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 drivers/usb : Define usb control register mask for w1c bits

Define and use CONTROL_REGISTER_W1C_MASK to make sure that w1c bits of usb control register do not get reset while writing any other bit

---
Changes for v2:
- Using clrsetbits_be32() instead of new API

 drivers/usb/host/ehci-fsl.c | 15 ++++++++++-----
 include/usb/ehci-fsl.h      |  2 ++
 2 files changed, 12 insertions(+), 5 deletions(-)
drivers/usb/host/ehci-fsl.c +10 -5
index 6cb4d98..45062e6 100644
@@ -104,15 +104,20 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 
 	if (!strncmp(phy_type, "utmi", 4)) {
 #if defined(CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY)
-		setbits_be32(&ehci->control, PHY_CLK_SEL_UTMI);
-		setbits_be32(&ehci->control, UTMI_PHY_EN);
+		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);
-		setbits_be32(&ehci->control, USB_EN);
+		clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK,
+				USB_EN);
 	} else {
-		setbits_be32(&ehci->control, PHY_CLK_SEL_ULPI);
-		clrsetbits_be32(&ehci->control, UTMI_PHY_EN, USB_EN);
+		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;
include/usb/ehci-fsl.h +2 -0
index c9ee1d5..dd77ad6 100644
@@ -11,6 +11,8 @@
 
 #include <asm/processor.h>
 
+#define CONTROL_REGISTER_W1C_MASK       0x00020000  /* W1C: PHY_CLK_VALID */
+
 /* Global offsets */
 #define FSL_SKIP_PCI		0x100
 
Signature · 1 line
1.7.11.7
#1 lore raw

PATCH v2 1/1 drivers/usb : Define usb control register mask for w1c bits

Quoted 10 lines · Nikhil Badola

Define and use CONTROL_REGISTER_W1C_MASK to make sure that w1c bits of usb control register do not get reset while writing any other bit

---
Changes for v2:
- Using clrsetbits_be32() instead of new API

Applied to u-boot-mpc85xx/master.

York