2 * UDC functions for the Toshiba e-series PDAs
4 * Copyright (c) Ian Molton 2003
8 #include <linux/kernel.h>
9 #include <linux/init.h>
10 #include <asm/mach/arch.h>
11 #include <asm/mach-types.h>
12 #include <asm/arch/hardware.h>
13 #include <asm/mach/map.h>
14 #include <asm/domain.h>
15 #include <asm/arch/pxa-regs.h>
16 #include <asm/arch/eseries-gpio.h>
17 #include <linux/device.h>
18 #include <asm/arch/udc.h>
20 /* local PXA generic code */
21 #include "../generic.h"
28 /* E740 E750 and E400 all use the same GPIOs */
29 static struct udc_info e7xx_udc
= {
30 .discover
= GPIO_E7XX_USB_DISC
,
31 .pullup
= GPIO_E7XX_USB_PULLUP
34 /* E800 is different, just to be awkward */
35 static struct udc_info e800_udc
= {
36 .discover
= GPIO_E800_USB_DISC
,
37 .pullup
= GPIO_E800_USB_PULLUP
40 static struct udc_info
*udc
;
42 static int eseries_udc_is_connected(void) {
43 return (GPLR(udc
->discover
) & GPIO_bit(udc
->discover
));
46 static void eseries_udc_command(int cmd
) {
48 case PXA2XX_UDC_CMD_DISCONNECT
:
49 GPSR(udc
->pullup
) = GPIO_bit(udc
->pullup
);
51 case PXA2XX_UDC_CMD_CONNECT
:
52 GPCR(udc
->pullup
) = GPIO_bit(udc
->pullup
);
55 printk("eseries_udc_control: unknown command!\n");
60 static struct pxa2xx_udc_mach_info eseries_udc_mach_info
= {
61 .udc_is_connected
= eseries_udc_is_connected
,
62 .udc_command
= eseries_udc_command
,
65 static int __init
eseries_udc_init(void) {
66 if(machine_is_e330() || machine_is_e740() || machine_is_e750() ||
69 else if(machine_is_e800())
74 pxa_set_udc_info(&eseries_udc_mach_info
);
78 module_init(eseries_udc_init
);