All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 11/13] ehci-mxc: Add support for i.MX35
Date: Mon, 5 Nov 2012 21:13:14 +0100 (CET)	[thread overview]
Message-ID: <604963571.587389.1352146394704.JavaMail.root@advansee.com> (raw)
In-Reply-To: <412111025.587245.1352146184216.JavaMail.root@advansee.com>

Signed-off-by: Beno?t Th?baudeau <benoit.thebaudeau@advansee.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
---
 .../arch/arm/include/asm/arch-mx35/imx-regs.h      |    2 +
 .../drivers/usb/host/ehci-mxc.c                    |   68 ++++++++++++++++++++
 2 files changed, 70 insertions(+)

diff --git u-boot-usb-76454b2.orig/arch/arm/include/asm/arch-mx35/imx-regs.h u-boot-usb-76454b2/arch/arm/include/asm/arch-mx35/imx-regs.h
index 7b09809..cd7716f 100644
--- u-boot-usb-76454b2.orig/arch/arm/include/asm/arch-mx35/imx-regs.h
+++ u-boot-usb-76454b2/arch/arm/include/asm/arch-mx35/imx-regs.h
@@ -82,6 +82,8 @@
 #define PWM_BASE_ADDR		0x53FE0000
 #define RTIC_BASE_ADDR		0x53FEC000
 #define IIM_BASE_ADDR		0x53FF0000
+#define IMX_USB_BASE		0x53FF4000
+#define IMX_USB_PORT_OFFSET	0x400
 
 #define IMX_CCM_BASE		CCM_BASE_ADDR
 
diff --git u-boot-usb-76454b2.orig/drivers/usb/host/ehci-mxc.c u-boot-usb-76454b2/drivers/usb/host/ehci-mxc.c
index cd09462..98b9e7c 100644
--- u-boot-usb-76454b2.orig/drivers/usb/host/ehci-mxc.c
+++ u-boot-usb-76454b2/drivers/usb/host/ehci-mxc.c
@@ -58,6 +58,22 @@
 #define MX31_H1_PM_BIT		(1 << 8)
 #define MX31_H1_DT_BIT		(1 << 4)
 
+#define MX35_OTG_SIC_SHIFT	29
+#define MX35_OTG_SIC_MASK	(0x3 << MX35_OTG_SIC_SHIFT)
+#define MX35_OTG_PM_BIT		(1 << 24)
+#define MX35_OTG_PP_BIT		(1 << 11)
+#define MX35_OTG_OCPOL_BIT	(1 << 3)
+
+#define MX35_H1_SIC_SHIFT	21
+#define MX35_H1_SIC_MASK	(0x3 << MX35_H1_SIC_SHIFT)
+#define MX35_H1_PP_BIT		(1 << 18)
+#define MX35_H1_PM_BIT		(1 << 8)
+#define MX35_H1_IPPUE_UP_BIT	(1 << 7)
+#define MX35_H1_IPPUE_DOWN_BIT	(1 << 6)
+#define MX35_H1_TLL_BIT		(1 << 5)
+#define MX35_H1_USBTE_BIT	(1 << 4)
+#define MX35_H1_OCPOL_BIT	(1 << 2)
+
 static int mxc_set_usbcontrol(int port, unsigned int flags)
 {
 	unsigned int v;
@@ -146,6 +162,54 @@ static int mxc_set_usbcontrol(int port, unsigned int flags)
 	default:
 		return -EINVAL;
 	}
+#elif defined(CONFIG_MX35)
+	switch (port) {
+	case 0:	/* OTG port */
+		v &= ~(MX35_OTG_SIC_MASK | MX35_OTG_PM_BIT | MX35_OTG_PP_BIT |
+			MX35_OTG_OCPOL_BIT);
+		v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX35_OTG_SIC_SHIFT;
+
+		if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
+			v |= MX35_OTG_PM_BIT;
+
+		if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH)
+			v |= MX35_OTG_PP_BIT;
+
+		if (!(flags & MXC_EHCI_OC_PIN_ACTIVE_LOW))
+			v |= MX35_OTG_OCPOL_BIT;
+
+		break;
+	case 1: /* H1 port */
+		v &= ~(MX35_H1_SIC_MASK | MX35_H1_PM_BIT | MX35_H1_PP_BIT |
+			MX35_H1_OCPOL_BIT | MX35_H1_TLL_BIT | MX35_H1_USBTE_BIT |
+			MX35_H1_IPPUE_DOWN_BIT | MX35_H1_IPPUE_UP_BIT);
+		v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX35_H1_SIC_SHIFT;
+
+		if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
+			v |= MX35_H1_PM_BIT;
+
+		if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH)
+			v |= MX35_H1_PP_BIT;
+
+		if (!(flags & MXC_EHCI_OC_PIN_ACTIVE_LOW))
+			v |= MX35_H1_OCPOL_BIT;
+
+		if (!(flags & MXC_EHCI_TTL_ENABLED))
+			v |= MX35_H1_TLL_BIT;
+
+		if (flags & MXC_EHCI_INTERNAL_PHY)
+			v |= MX35_H1_USBTE_BIT;
+
+		if (flags & MXC_EHCI_IPPUE_DOWN)
+			v |= MX35_H1_IPPUE_DOWN_BIT;
+
+		if (flags & MXC_EHCI_IPPUE_UP)
+			v |= MX35_H1_IPPUE_UP_BIT;
+
+		break;
+	default:
+		return -EINVAL;
+	}
 #else
 #error MXC EHCI USB driver not supported on this platform
 #endif
@@ -175,6 +239,10 @@ int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor)
 	setbits_le32(&ehci->usbmode, CM_HOST);
 	__raw_writel(CONFIG_MXC_USB_PORTSC, &ehci->portsc);
 	mxc_set_usbcontrol(CONFIG_MXC_USB_PORT, CONFIG_MXC_USB_FLAGS);
+#ifdef CONFIG_MX35
+	/* Workaround for ENGcm11601 */
+	__raw_writel(0, &ehci->sbuscfg);
+#endif
 
 	udelay(10000);
 

  parent reply	other threads:[~2012-11-05 20:13 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-05 20:09 [U-Boot] [PATCH 01/13] mx31: Move EHCI definitions to ehci-fsl.h Benoît Thébaudeau
2012-11-05 20:10 ` [U-Boot] [PATCH 02/13] ehci-mxc: Clean up Benoît Thébaudeau
2012-11-05 20:10 ` [U-Boot] [PATCH 03/13] ehci-mx5: " Benoît Thébaudeau
2012-11-05 20:10 ` [U-Boot] [PATCH 04/13] ehci-mx5: Fix OC_DIS usage Benoît Thébaudeau
2012-11-05 20:11 ` [U-Boot] [PATCH 05/13] ehci-mx5: Fix OPM usage Benoît Thébaudeau
2012-11-05 20:11 ` [U-Boot] [PATCH 06/13] ehci-mx5: Fix *PM usage for i.MX53 Benoît Thébaudeau
2012-11-05 20:11 ` [U-Boot] [PATCH 07/13] ehci-mx5: Add missing OC_DIS " Benoît Thébaudeau
2012-11-05 20:12 ` [U-Boot] [PATCH 08/13] ehci-mxc: Make EHCI power/oc polarities configurable Benoît Thébaudeau
2012-11-05 20:12 ` [U-Boot] [PATCH 09/13] ehci-mxc: Make i.MX25 EHCI configurable Benoît Thébaudeau
2012-11-05 20:12 ` [U-Boot] [PATCH 10/13] ehci-mxc: Define host offsets Benoît Thébaudeau
2012-11-05 20:13 ` Benoît Thébaudeau [this message]
2012-11-05 20:13 ` [U-Boot] [PATCH 12/13] mx35pdk: Add support for OTG Benoît Thébaudeau
2012-11-07 14:30   ` Stefano Babic
2012-11-07 16:16   ` Stefano Babic
2012-11-07 16:27     ` Benoît Thébaudeau
2012-11-07 16:33       ` Stefano Babic
2012-11-05 20:13 ` [U-Boot] [PATCH 13/13] ehci-mx5: Make board_ehci_hcd_init() optional Benoît Thébaudeau
2012-11-05 22:57   ` Marek Vasut
2012-11-05 23:34     ` Benoît Thébaudeau
2012-11-05 22:55 ` [U-Boot] [PATCH 01/13] mx31: Move EHCI definitions to ehci-fsl.h Marek Vasut
2012-11-07 16:31   ` Stefano Babic
2012-11-08 20:27 ` [U-Boot] [PATCH v2 " Benoît Thébaudeau
2012-11-08 20:28   ` [U-Boot] [PATCH v2 02/13] ehci-mxc: Clean up Benoît Thébaudeau
2012-11-08 20:28   ` [U-Boot] [PATCH v2 03/13] ehci-mx5: " Benoît Thébaudeau
2012-11-08 20:28   ` [U-Boot] [PATCH v2 04/13] ehci-mx5: Fix OC_DIS usage Benoît Thébaudeau
2012-11-08 20:29   ` [U-Boot] [PATCH v2 05/13] ehci-mx5: Fix OPM usage Benoît Thébaudeau
2012-11-08 20:29   ` [U-Boot] [PATCH v2 06/13] ehci-mx5: Fix *PM usage for i.MX53 Benoît Thébaudeau
2012-11-08 20:29   ` [U-Boot] [PATCH v2 07/13] ehci-mx5: Add missing OC_DIS " Benoît Thébaudeau
2012-11-08 20:29   ` [U-Boot] [PATCH v2 08/13] ehci-mxc: Make EHCI power/oc polarities configurable Benoît Thébaudeau
2012-11-08 20:30   ` [U-Boot] [PATCH v2 09/13] ehci-mxc: Make i.MX25 EHCI configurable Benoît Thébaudeau
2012-11-08 20:30   ` [U-Boot] [PATCH v2 10/13] ehci-mxc: Define host offsets Benoît Thébaudeau
2012-11-08 20:30   ` [U-Boot] [PATCH v2 11/13] ehci-mxc: Add support for i.MX35 Benoît Thébaudeau
2012-11-08 20:31   ` [U-Boot] [PATCH v2 12/13] mx35pdk: Add support for OTG Benoît Thébaudeau
2012-11-08 20:31   ` [U-Boot] [PATCH v2 13/13] ehci-mx5/6: Make board_ehci_hcd_init() optional Benoît Thébaudeau
2012-11-10  7:42   ` [U-Boot] [PATCH v2 01/13] mx31: Move EHCI definitions to ehci-fsl.h Stefano Babic
2012-11-10 12:37     ` Benoît Thébaudeau
2012-11-10 12:46       ` Albert ARIBAUD
2012-11-10 12:47         ` Albert ARIBAUD
2012-11-10 13:51           ` Benoît Thébaudeau
2012-11-10 16:45       ` stefano babic
2012-11-13 19:55   ` [U-Boot] [PATCH v3 " Benoît Thébaudeau
2012-11-13 19:55     ` [U-Boot] [PATCH v3 02/13] ehci-mxc: Clean up Benoît Thébaudeau
2012-11-16  8:29       ` Stefano Babic
2012-11-13 19:56     ` [U-Boot] [PATCH v3 03/13] ehci-mx5: " Benoît Thébaudeau
2012-11-13 19:56     ` [U-Boot] [PATCH v3 04/13] ehci-mx5: Fix OC_DIS usage Benoît Thébaudeau
2012-11-13 19:56     ` [U-Boot] [PATCH v3 05/13] ehci-mx5: Fix OPM usage Benoît Thébaudeau
2012-11-13 19:56     ` [U-Boot] [PATCH v3 06/13] ehci-mx5: Fix *PM usage for i.MX53 Benoît Thébaudeau
2012-11-13 19:57     ` [U-Boot] [PATCH v3 07/13] ehci-mx5: Add missing OC_DIS " Benoît Thébaudeau
2012-11-13 19:57     ` [U-Boot] [PATCH v3 08/13] ehci-mxc: Make EHCI power/oc polarities configurable Benoît Thébaudeau
2012-11-13 19:57     ` [U-Boot] [PATCH v3 09/13] ehci-mxc: Make i.MX25 EHCI configurable Benoît Thébaudeau
2012-11-13 19:57     ` [U-Boot] [PATCH v3 10/13] ehci-mxc: Define host offsets Benoît Thébaudeau
2012-11-13 19:58     ` [U-Boot] [PATCH v3 11/13] ehci-mxc: Add support for i.MX35 Benoît Thébaudeau
2012-11-13 19:58     ` [U-Boot] [PATCH v3 12/13] mx35pdk: Add support for OTG Benoît Thébaudeau
2012-11-13 19:58     ` [U-Boot] [PATCH v3 13/13] ehci-mx5/6: Make board_ehci_hcd_init() optional Benoît Thébaudeau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=604963571.587389.1352146394704.JavaMail.root@advansee.com \
    --to=benoit.thebaudeau@advansee.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.