From dc90f148f86b28ccde64302808234dd5142522b5 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Tue, 25 Dec 2007 14:19:45 +0100 Subject: [PATCH] WIP: magician: enable pxa27x_udc --- arch/arm/mach-pxa/magician.c | 31 +++++++++++++++++++++++++++++++ arch/arm/mach-pxa/pxa27x.c | 2 +- 2 files changed, 32 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c index 6de2c13..6ecca0e 100644 --- a/arch/arm/mach-pxa/magician.c +++ b/arch/arm/mach-pxa/magician.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -40,6 +41,7 @@ #include #include #include +#include #include "devices.h" #include "generic.h" @@ -717,6 +719,29 @@ static struct platform_device strataflash = { }; /* + * USB Device Controller + */ + +static void magician_udc_command(int cmd) +{ + switch (cmd) { + case PXA2XX_UDC_CMD_CONNECT: + pr_info("magician_udc_command: connect\n"); + UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; + gpio_set_value(GPIO27_MAGICIAN_USBC_PUEN, 1); + break; + case PXA2XX_UDC_CMD_DISCONNECT: + pr_info("magician_udc_command: disconnect\n"); + gpio_set_value(GPIO27_MAGICIAN_USBC_PUEN, 0); + break; + } +} + +static struct pxa2xx_udc_mach_info magician_udc_mach_info __initdata = { + .udc_command = magician_udc_command, +}; + +/* * Platform devices */ @@ -752,6 +777,12 @@ static void __init magician_init(void) pxa_set_mci_info(&magician_mci_info); pxa_set_ohci_info(&magician_ohci_info); + err = gpio_request(GPIO27_MAGICIAN_USBC_PUEN, "USBC_PUEN"); + if (!err) { + gpio_direction_output(GPIO27_MAGICIAN_USBC_PUEN, 0); + pxa_set_udc_info(&magician_udc_mach_info); + } + /* Check LCD type we have */ cpld = ioremap_nocache(PXA_CS3_PHYS, 0x1000); if (cpld) { diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 4d7afae..5c688b3 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c @@ -357,7 +357,7 @@ void __init pxa_set_i2c_power_info(struct i2c_pxa_platform_data *info) } static struct platform_device *devices[] __initdata = { -/* &pxa_device_udc, The UDC driver is PXA25x only */ + &pxa_device_udc, &pxa_device_ffuart, &pxa_device_btuart, &pxa_device_stuart, -- 1.5.5.3