dm: usb: Pass EHCI controller pointer to ehci_get_port_speed()

Adjust this function so that it is passed an EHCI controller pointer so that
implementations can look up their controller.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
This commit is contained in:
Simon Glass 2015-03-25 12:22:18 -06:00
parent aac064f76b
commit 7338287d58
4 changed files with 9 additions and 7 deletions

View File

@ -101,11 +101,12 @@ void ehci_set_usbmode(int index)
* This ehci_get_port_speed() overrides the weak function * This ehci_get_port_speed() overrides the weak function
* in "ehci-hcd.c". * in "ehci-hcd.c".
*/ */
int ehci_get_port_speed(struct ehci_hcor *hcor, uint32_t reg) int ehci_get_port_speed(struct ehci_ctrl *ctrl, uint32_t reg)
{ {
int spd, ret = PORTSC_PSPD_HS; int spd, ret = PORTSC_PSPD_HS;
union ehci_faraday_regs *regs = (void __iomem *)((ulong)hcor - 0x10); union ehci_faraday_regs *regs;
ret = (void __iomem *)((ulong)ctrl->hcor - 0x10);
if (ehci_is_fotg2xx(regs)) if (ehci_is_fotg2xx(regs))
spd = OTGCSR_SPD(readl(&regs->otg.otgcsr)); spd = OTGCSR_SPD(readl(&regs->otg.otgcsr));
else else

View File

@ -119,7 +119,7 @@ static struct descriptor {
#define ehci_is_TDI() (0) #define ehci_is_TDI() (0)
#endif #endif
__weak int ehci_get_port_speed(struct ehci_hcor *hcor, uint32_t reg) __weak int ehci_get_port_speed(struct ehci_ctrl *ctrl, uint32_t reg)
{ {
return PORTSC_PSPD(reg); return PORTSC_PSPD(reg);
} }
@ -781,7 +781,7 @@ ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer,
tmpbuf[1] |= USB_PORT_STAT_POWER >> 8; tmpbuf[1] |= USB_PORT_STAT_POWER >> 8;
if (ehci_is_TDI()) { if (ehci_is_TDI()) {
switch (ehci_get_port_speed(ctrl->hcor, reg)) { switch (ehci_get_port_speed(ctrl, reg)) {
case PORTSC_PSPD_FS: case PORTSC_PSPD_FS:
break; break;
case PORTSC_PSPD_LS: case PORTSC_PSPD_LS:

View File

@ -225,13 +225,14 @@ void ehci_set_usbmode(int index)
* This ehci_get_port_speed overrides the weak function ehci_get_port_speed * This ehci_get_port_speed overrides the weak function ehci_get_port_speed
* in "ehci-hcd.c". * in "ehci-hcd.c".
*/ */
int ehci_get_port_speed(struct ehci_hcor *hcor, uint32_t reg) int ehci_get_port_speed(struct ehci_ctrl *ctrl, uint32_t reg)
{ {
uint32_t tmp; uint32_t tmp;
uint32_t *reg_ptr; uint32_t *reg_ptr;
if (controller->has_hostpc) { if (controller->has_hostpc) {
reg_ptr = (uint32_t *)((u8 *)&hcor->or_usbcmd + HOSTPC1_DEVLC); reg_ptr = (uint32_t *)((u8 *)&ctrl->hcor->or_usbcmd +
HOSTPC1_DEVLC);
tmp = ehci_readl(reg_ptr); tmp = ehci_readl(reg_ptr);
return HOSTPC1_PSPD(tmp); return HOSTPC1_PSPD(tmp);
} else } else

View File

@ -251,7 +251,7 @@ struct ehci_ctrl {
}; };
/* Weak functions that drivers can override */ /* Weak functions that drivers can override */
int ehci_get_port_speed(struct ehci_hcor *hcor, uint32_t reg); int ehci_get_port_speed(struct ehci_ctrl *ctrl, uint32_t reg);
void ehci_set_usbmode(int index); void ehci_set_usbmode(int index);
void ehci_powerup_fixup(uint32_t *status_reg, uint32_t *reg); void ehci_powerup_fixup(uint32_t *status_reg, uint32_t *reg);
uint32_t *ehci_get_portsc_register(struct ehci_hcor *hcor, int port); uint32_t *ehci_get_portsc_register(struct ehci_hcor *hcor, int port);