Hello.
On 10/15/10 07:08, vm.rod25@gmail.com wrote:
From: Victor Rodriguezvictor.rodriguez@sasken.com
This patch adds USB1.1 support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguezvictor.rodriguez@sasken.com
[...]
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index 87dea28..4658498 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
[...]
@@ -178,6 +181,109 @@ static struct davinci_mmc_config da850_mmc_config = { .version = MMC_CTLR_VERSION_2, };
+static irqreturn_t omapl138_hawk_usb_ocic_irq(int irq, void *dev_id); +static da8xx_ocic_handler_t hawk_usb_ocic_handler;
+static const short da850_hawk_usb11_pins[] = {
- DA850_GPIO2_4, DA850_GPIO6_13,
- -1
+};
An empty wouldn't hurt here. Sorry if I overlooked this before...
+static int hawk_usb_set_power(unsigned port, int on) +{
- gpio_set_value(DA850_USB1_VBUS_PIN, on);
- return 0;
+}
+static int hawk_usb_get_power(unsigned port) +{
- return gpio_get_value(DA850_USB1_VBUS_PIN);
+}
+static int hawk_usb_get_oci(unsigned port) +{
- return !gpio_get_value(DA850_USB1_OC_PIN);
+}
+static int hawk_usb_ocic_notify(da8xx_ocic_handler_t handler) +{
- int irq = gpio_to_irq(DA850_USB1_OC_PIN);
- int error = 0;
- if (handler != NULL) {
hawk_usb_ocic_handler = handler;
error = request_irq(irq, omapl138_hawk_usb_ocic_irq,
IRQF_DISABLED | IRQF_TRIGGER_RISING |
IRQF_TRIGGER_FALLING,
"OHCI over-current indicator", NULL);
if (error)
printk(KERN_ERR "%s: could not request IRQ to watch "
"over-current indicator changes\n", __func__);
pr_err() please.
- } else
free_irq(irq, NULL);
- return error;
+}
+static struct da8xx_ohci_root_hub omapl138_hawk_usb11_pdata = {
- .set_power = hawk_usb_set_power,
- .get_power = hawk_usb_get_power,
- .get_oci = hawk_usb_get_oci,
- .ocic_notify = hawk_usb_ocic_notify,
- /* TPS2087 switch @ 5V */
- .potpgt = (3 + 1) / 2, /* 3 ms max */
+};
+static irqreturn_t omapl138_hawk_usb_ocic_irq(int irq, void *dev_id) +{
- hawk_usb_ocic_handler(&omapl138_hawk_usb11_pdata, 1);
- return IRQ_HANDLED;
+}
+static __init void omapl138_hawk_usb_init(void) +{
- int ret;
- u32 cfgchip2;
- ret = davinci_cfg_reg_list(da850_hawk_usb11_pins);
- if (ret) {
pr_warning("%s: USB 1.1 PinMux setup failed: %d\n",
__func__, ret);
return;
- }
- /*
* Setup the Ref. clock frequency for the HAWK at 24 MHz.
*/
- cfgchip2 = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
- cfgchip2 &= ~CFGCHIP2_REFFREQ;
- cfgchip2 |= CFGCHIP2_REFFREQ_24MHZ;
- __raw_writel(cfgchip2, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
- ret = gpio_request(DA850_USB1_VBUS_PIN, "USB1 VBUS\n");
- if (ret) {
printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
"power control: %d\n", __func__, ret);
pr_err() please.
return;
- }
- gpio_direction_output(DA850_USB1_VBUS_PIN, 0);
- ret = gpio_request(DA850_USB1_OC_PIN, "USB1 OC");
- if (ret) {
printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
"over-current indicator: %d\n", __func__, ret);
pr_err() please.
return;
- }
- gpio_direction_input(DA850_USB1_OC_PIN);
- ret = da8xx_register_usb11(&omapl138_hawk_usb11_pdata);
- if (ret) {
pr_warning("%s: USB 1.1 registration failed: %d\n",
__func__, ret);
return;
'return' is useless here...
- }
+}
- static struct davinci_uart_config omapl138_hawk_uart_config __initdata = { .enabled_uarts = 0x7, };
WBR, Sergei