omap3: cm-t35: move the USB hub reset code
Extract the USB hub reset code to a common location where it can be reused by other compulab boards. Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> Reviewed-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
a937fd1682
commit
959bc1d5fa
|
@ -568,21 +568,12 @@ struct omap_usbhs_board_data usbhs_bdata = {
|
|||
|
||||
#define SB_T35_USB_HUB_RESET_GPIO 167
|
||||
int ehci_hcd_init(int index, enum usb_init_type init,
|
||||
struct ehci_hccr **hccr, struct ehci_hcor **hcor)
|
||||
struct ehci_hccr **hccr, struct ehci_hcor **hcor)
|
||||
{
|
||||
u8 val;
|
||||
int offset;
|
||||
|
||||
if (gpio_request(SB_T35_USB_HUB_RESET_GPIO, "SB-T35 usb hub reset")) {
|
||||
printf("Error: can't obtain GPIO %d for SB-T35 usb hub reset",
|
||||
SB_T35_USB_HUB_RESET_GPIO);
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpio_direction_output(SB_T35_USB_HUB_RESET_GPIO, 0);
|
||||
udelay(10);
|
||||
gpio_set_value(SB_T35_USB_HUB_RESET_GPIO, 1);
|
||||
udelay(1000);
|
||||
cl_usb_hub_init(SB_T35_USB_HUB_RESET_GPIO, "sb-t35 hub rst");
|
||||
|
||||
offset = TWL4030_BASEADD_GPIO + TWL4030_GPIO_GPIODATADIR1;
|
||||
twl4030_i2c_read_u8(TWL4030_CHIP_GPIO, offset, &val);
|
||||
|
@ -599,6 +590,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
|
|||
|
||||
int ehci_hcd_stop(void)
|
||||
{
|
||||
cl_usb_hub_deinit(SB_T35_USB_HUB_RESET_GPIO);
|
||||
return omap_ehci_hcd_stop();
|
||||
}
|
||||
#endif /* CONFIG_USB_EHCI_OMAP */
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include <common.h>
|
||||
#include <asm/bootm.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "eeprom.h"
|
||||
|
@ -23,3 +24,24 @@ void cl_print_pcb_info(void)
|
|||
|
||||
printf("PCB: %u.%u\n", rev_major, rev_minor);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CMD_USB
|
||||
int cl_usb_hub_init(int gpio, const char *label)
|
||||
{
|
||||
if (gpio_request(gpio, label)) {
|
||||
printf("Error: can't obtain GPIO%d for %s", gpio, label);
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpio_direction_output(gpio, 0);
|
||||
udelay(10);
|
||||
gpio_set_value(gpio, 1);
|
||||
udelay(1000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void cl_usb_hub_deinit(int gpio)
|
||||
{
|
||||
gpio_free(gpio);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -9,6 +9,19 @@
|
|||
#ifndef _CL_COMMON_
|
||||
#define _CL_COMMON_
|
||||
|
||||
#include <asm/errno.h>
|
||||
|
||||
void cl_print_pcb_info(void);
|
||||
|
||||
#ifdef CONFIG_CMD_USB
|
||||
int cl_usb_hub_init(int gpio, const char *label);
|
||||
void cl_usb_hub_deinit(int gpio);
|
||||
#else /* !CONFIG_CMD_USB */
|
||||
static inline int cl_usb_hub_init(int gpio, const char *label)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
static inline void cl_usb_hub_deinit(int gpio) {}
|
||||
#endif /* CONFIG_CMD_USB */
|
||||
|
||||
#endif /* _CL_COMMON_ */
|
||||
|
|
Loading…
Reference in New Issue