static int ohci_hcd_at91_drv_probe(struct platform_device *pdev) { struct at91_usbh_data *pdata = pdev->dev.platform_data; int i; if (pdata) { for (i = 0; i < ARRAY_SIZE(pdata->vbus_pin); i++) { if (!gpio_is_valid(pdata->vbus_pin[i])) continue; gpio_request(pdata->vbus_pin[i], "ohci_vbus"); ohci_at91_usb_set_power(pdata, i, 1); } for (i = 0; i < ARRAY_SIZE(pdata->overcurrent_pin); i++) { int ret; if (!gpio_is_valid(pdata->overcurrent_pin[i])) continue; gpio_request(pdata->overcurrent_pin[i], "ohci_overcurrent"); ret = request_irq(gpio_to_irq(pdata->overcurrent_pin[i]), ohci_hcd_at91_overcurrent_irq, IRQF_SHARED, "ohci_overcurrent", pdev); if (ret) { gpio_free(pdata->overcurrent_pin[i]); dev_warn(& pdev->dev, "cannot get GPIO IRQ for overcurrent\n"); } } } device_init_wakeup(&pdev->dev, 1); return usb_hcd_at91_probe(&ohci_at91_hc_driver, pdev); }
static int ohci_hcd_at91_drv_probe(struct platform_device *pdev) { struct at91_usbh_data *pdata = pdev->dev.platform_data; int i; if (pdata) { /* REVISIT make the driver support per-port power switching, * and also overcurrent detection. Here we assume the ports * are always powered while this driver is active, and use * active-low power switches. */ for (i = 0; i < ARRAY_SIZE(pdata->vbus_pin); i++) { if (pdata->vbus_pin[i] <= 0) continue; gpio_request(pdata->vbus_pin[i], "ohci_vbus"); gpio_direction_output(pdata->vbus_pin[i], 0); } } device_init_wakeup(&pdev->dev, 1); return usb_hcd_at91_probe(&ohci_at91_hc_driver, pdev); }
static int __devinit ohci_hcd_at91_drv_probe(struct platform_device *pdev) { struct at91_usbh_data *pdata; int i; int gpio; int ret; ret = ohci_at91_of_init(pdev); if (ret) return ret; pdata = pdev->dev.platform_data; if (pdata) { at91_for_each_port(i) { if (!gpio_is_valid(pdata->vbus_pin[i])) continue; gpio = pdata->vbus_pin[i]; ret = gpio_request(gpio, "ohci_vbus"); if (ret) { dev_err(&pdev->dev, "can't request vbus gpio %d\n", gpio); continue; } ret = gpio_direction_output(gpio, !pdata->vbus_pin_active_low[i]); if (ret) { dev_err(&pdev->dev, "can't put vbus gpio %d as output %d\n", gpio, !pdata->vbus_pin_active_low[i]); gpio_free(gpio); continue; } ohci_at91_usb_set_power(pdata, i, 1); } at91_for_each_port(i) { if (!gpio_is_valid(pdata->overcurrent_pin[i])) continue; gpio = pdata->overcurrent_pin[i]; ret = gpio_request(gpio, "ohci_overcurrent"); if (ret) { dev_err(&pdev->dev, "can't request overcurrent gpio %d\n", gpio); continue; } ret = gpio_direction_input(gpio); if (ret) { dev_err(&pdev->dev, "can't configure overcurrent gpio %d as input\n", gpio); gpio_free(gpio); continue; } ret = request_irq(gpio_to_irq(gpio), ohci_hcd_at91_overcurrent_irq, IRQF_SHARED, "ohci_overcurrent", pdev); if (ret) { gpio_free(gpio); dev_err(&pdev->dev, "can't get gpio IRQ for overcurrent\n"); } } } device_init_wakeup(&pdev->dev, 1); return usb_hcd_at91_probe(&ohci_at91_hc_driver, pdev); }
static int ohci_hcd_at91_drv_probe(struct platform_device *pdev) { device_init_wakeup(&pdev->dev, 1); return usb_hcd_at91_probe(&ohci_at91_hc_driver, pdev); }