3 * htcsable specific code for the pxa27x usb device controller.
8 #include <linux/module.h>
9 #include <linux/init.h>
10 #include <linux/platform_device.h>
11 #include <asm/arch/hardware.h>
12 #include <asm/arch/pxa-regs.h>
13 #include <asm/arch/udc.h>
14 #include <linux/soc/asic3_base.h>
15 #include <asm/arch/htcsable-gpio.h>
16 #include <asm/arch/htcsable-asic.h>
18 extern struct platform_device htcsable_asic3
;
20 static void htcsable_udc_command(int cmd
)
23 case PXA2XX_UDC_CMD_DISCONNECT
:
24 printk("htcsable udc disconnect\n");
25 asic3_set_gpio_out_a(&htcsable_asic3
.dev
,
26 1<<GPIOA_USB_PUEN
, 1<<GPIOA_USB_PUEN
);
28 case PXA2XX_UDC_CMD_CONNECT
:
29 printk("htcsable udc connect\n");
30 asic3_set_gpio_out_a(&htcsable_asic3
.dev
,
31 1<<GPIOA_USB_PUEN
, 0);
34 printk("_udc_control: unknown command!\n");
39 static int htcsable_udc_is_connected(void)
41 int ret
= ((asic3_get_gpio_status_b(&htcsable_asic3
.dev
) & (1<<GPIOB_USB_DETECT
)) != 0);
42 printk("htcsable_udc_is_connected returns %d\n",ret
);
46 static struct pxa2xx_udc_mach_info htcsable_udc_info __initdata
= {
47 .udc_is_connected
= htcsable_udc_is_connected
,
48 .udc_command
= htcsable_udc_command
,
51 static int htcsable_udc_probe(struct device
* dev
)
53 pxa_set_udc_info(&htcsable_udc_info
);
57 static struct device_driver htcsable_udc_driver
= {
58 .name
= "htcsable_udc",
59 .bus
= &platform_bus_type
,
60 .probe
= htcsable_udc_probe
,
63 static int __init
htcsable_udc_init(void)
65 printk("htcsable_udc_init\n");
66 return driver_register(&htcsable_udc_driver
);
69 module_init(htcsable_udc_init
);
70 MODULE_LICENSE("GPL");