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>
master
Igor Grinberg 10 years ago committed by Tom Rini
parent a937fd1682
commit 959bc1d5fa
  1. 14
      board/compulab/cm_t35/cm_t35.c
  2. 22
      board/compulab/common/common.c
  3. 13
      board/compulab/common/common.h

@ -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…
Cancel
Save