Skip to contentSkip to conversation

Support 440EP On-Chip OHCI USB Host Controller (v2)

PATCH In review John Otken 2 participants 2 messages Aug 9, 2005

Subsystems (2)
lore
Share & tools
lore

John Otken

author
#0 lore raw

PATCH 1/1 Support 440EP On-Chip OHCI USB Host Controller (v2)

This updated patch adds support for the AMCC 440EP on-chip OHCI USB host controller. I tested it on the Bamboo board using the 2.6.13-rc6 kernel.

This patch depends on my "fix invalid function name usb_hcd_put in ohci-ppc-soc.c" patch from 2005-07-20:

http://patchwork.ozlabs.org/linuxppc/patch?id=1803

Thanks to Wade Farnsworth for a bug fix.

This patch supersedes my previous patch released on 2005-07-25 and duped on 2005-07-27.

Comments are welcome.

arch/ppc/platforms/4xx/ibm440ep.c +0 -0
diff -uprN a/arch/ppc/platforms/4xx/ibm440ep.c b/arch/ppc/platforms/4xx/ibm440ep.c
@@ -194,8 +194,37 @@ static struct resource usb_gadget_resour
	},
};

+static struct resource ohci_usb_resources[] = {
+ [0] = {
+ .start = 0x0EF601000,
+ .end = 0x0EF60107F,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = 40,
+ .end = 40,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
static u64 dma_mask = 0xffffffffULL;

+#include <asm/usb.h>
+
+static struct usb_hcd_platform_data platform_data; +
+static struct platform_device ohci_usb_device = {
+ .name = "ppc-soc-ohci",
+ .id = 0,
+ .num_resources = ARRAY_SIZE(ohci_usb_resources),
+ .resource = ohci_usb_resources,
+ .dev = {
+ .dma_mask = &dma_mask,
+ .coherent_dma_mask = 0xffffffffULL,
+ .platform_data = &platform_data,
+ }
+};
+

static struct platform_device usb_gadget_device = {
	.name		= "musbhsfc",
	.id		= 0,

@@ -208,6 +237,7 @@ static struct platform_device usb_gadget };

static struct platform_device *ibm440ep_devs[] __initdata = {
+ &ohci_usb_device,
&usb_gadget_device,
};

drivers/usb/host/Kconfig +0 -0
diff -uprN a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
@@ -81,12 +81,12 @@ config USB_OHCI_HCD
 

config USB_OHCI_HCD_PPC_SOC
bool "OHCI support for on-chip PPC USB controller"

-	depends on USB_OHCI_HCD && (STB03xxx || PPC_MPC52xx)
+	depends on USB_OHCI_HCD && (STB03xxx || PPC_MPC52xx || 440EP)
	default y
	select USB_OHCI_BIG_ENDIAN
	---help---
-	  Enables support for the USB controller on the MPC52xx or
-	  STB03xxx processor chip.  If unsure, say Y.
+	  Enables support for the USB controller on the MPC52xx,
+	  STB03xxx, or 440EP processor chip.  If unsure, say Y.

config USB_OHCI_HCD_PCI
bool "OHCI support for PCI-bus USB controllers"
@@ -105,7 +105,7 @@ config USB_OHCI_BIG_ENDIAN config USB_OHCI_LITTLE_ENDIAN
bool
depends on USB_OHCI_HCD

-	default n if STB03xxx || PPC_MPC52xx
+	default n if STB03xxx || PPC_MPC52xx || 440EP

default y

config USB_UHCI_HCD

drivers/usb/host/ohci.h +1 -1
diff -uprN a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h
@@ -560,7 +560,7 @@ static inline u32 hc32_to_cpup (const st
 * some big-endian SOC implementations.  Same thing happens with PSW access.
 */
 
-#ifdef CONFIG_STB03xxx
+#if defined(CONFIG_STB03xxx) || defined(CONFIG_440EP)

#define OHCI_BE_FRAME_NO_SHIFT 16
#else
#define OHCI_BE_FRAME_NO_SHIFT 0

drivers/usb/Kconfig +0 -0
diff -uprN a/drivers/usb/Kconfig b/drivers/usb/Kconfig
@@ -25,6 +25,7 @@ config USB_ARCH_HAS_OHCI

# PPC:
default y if STB03xxx
default y if PPC_MPC52xx
+ default y if 440EP

	# MIPS:
	default y if SOC_AU1X00
	# more:
include/asm-ppc/usb.h +13 -0
diff -uprN a/include/asm-ppc/usb.h b/include/asm-ppc/usb.h
@@ -0,0 +1,13 @@
+/*
+ * ppc/usb.h:
+ *
+ */
+#ifndef _PPC_USB_H
+#define _PPC_USB_H
+
+struct usb_hcd_platform_data {
+	int (*start) (struct platform_device *pdev);
+	void (*stop) (struct platform_device *pdev);
+};
+
+#endif /* !(_PPC_USB_H) */
#1 lore raw
Quoted 15 lines · John Otken

This updated patch adds support for the AMCC 440EP on-chip OHCI USB host controller. I tested it on the Bamboo board using the 2.6.13-rc6 kernel.

(quoted diff) +6 -0
@@ -194,8 +194,37 @@ static struct resource usb_gadget_resour
 	},
 };
 
+static struct resource ohci_usb_resources[] = {
+	[0] = {
+		.start	= 0x0EF601000,
+		.end	= 0x0EF60107F,
+		.flags	= IORESOURCE_MEM,
+	},

Review static struct resource usb_gadget_resour · line 212

Quoted 10 lines
(quoted diff) +8 -0
+	[1] = {
+		.start	= 40,
+		.end	= 40,
+		.flags	= IORESOURCE_IRQ,
+	},
+};
+
 static u64 dma_mask = 0xffffffffULL;
 
+#include <asm/usb.h>

Let's place #include directives at the top of the source file.

Signature · 1 line
Eugene