projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
pmic:max8997: Support for MAX8997 internal charger control
[oweals/u-boot.git]
/
drivers
/
usb
/
host
/
ohci-hcd.c
diff --git
a/drivers/usb/host/ohci-hcd.c
b/drivers/usb/host/ohci-hcd.c
index 3f76c4e9f00eec6ca493aef7deb615b83faee387..c2106adbd3bae5b6e709425b8440553c1b2c1be6 100644
(file)
--- a/
drivers/usb/host/ohci-hcd.c
+++ b/
drivers/usb/host/ohci-hcd.c
@@
-965,10
+965,9
@@
static void td_submit_job(struct usb_device *dev, unsigned long pipe,
static void dl_transfer_length(td_t *td)
{
static void dl_transfer_length(td_t *td)
{
- __u32 td
INFO, td
BE, tdCBP;
+ __u32 tdBE, tdCBP;
urb_priv_t *lurb_priv = td->ed->purb;
urb_priv_t *lurb_priv = td->ed->purb;
- tdINFO = m32_swap(td->hwINFO);
tdBE = m32_swap(td->hwBE);
tdCBP = m32_swap(td->hwCBP);
tdBE = m32_swap(td->hwBE);
tdCBP = m32_swap(td->hwCBP);
@@
-1262,18
+1261,17
@@
static int ohci_submit_rh_msg(struct usb_device *dev, unsigned long pipe,
int leni = transfer_len;
int len = 0;
int stat = 0;
int leni = transfer_len;
int len = 0;
int stat = 0;
- __u32 datab[4];
- __u8 *data_buf = (__u8 *)datab;
__u16 bmRType_bReq;
__u16 wValue;
__u16 wIndex;
__u16 wLength;
__u16 bmRType_bReq;
__u16 wValue;
__u16 wIndex;
__u16 wLength;
+ ALLOC_ALIGN_BUFFER(__u8, databuf, 16, sizeof(u32));
#ifdef DEBUG
pkt_print(NULL, dev, pipe, buffer, transfer_len,
cmd, "SUB(rh)", usb_pipein(pipe));
#else
#ifdef DEBUG
pkt_print(NULL, dev, pipe, buffer, transfer_len,
cmd, "SUB(rh)", usb_pipein(pipe));
#else
-
wait_ms
(1);
+
mdelay
(1);
#endif
if (usb_pipeint(pipe)) {
info("Root-Hub submit IRQ: NOT implemented");
#endif
if (usb_pipeint(pipe)) {
info("Root-Hub submit IRQ: NOT implemented");
@@
-1298,20
+1296,20
@@
pkt_print(NULL, dev, pipe, buffer, transfer_len,
*/
case RH_GET_STATUS:
*/
case RH_GET_STATUS:
- *(
__u16 *) data_
buf = cpu_to_le16(1);
+ *(
u16 *)data
buf = cpu_to_le16(1);
OK(2);
case RH_GET_STATUS | RH_INTERFACE:
OK(2);
case RH_GET_STATUS | RH_INTERFACE:
- *(
__u16 *) data_
buf = cpu_to_le16(0);
+ *(
u16 *)data
buf = cpu_to_le16(0);
OK(2);
case RH_GET_STATUS | RH_ENDPOINT:
OK(2);
case RH_GET_STATUS | RH_ENDPOINT:
- *(
__u16 *) data_
buf = cpu_to_le16(0);
+ *(
u16 *)data
buf = cpu_to_le16(0);
OK(2);
case RH_GET_STATUS | RH_CLASS:
OK(2);
case RH_GET_STATUS | RH_CLASS:
- *(
__u32 *) data_
buf = cpu_to_le32(
+ *(
u32 *)data
buf = cpu_to_le32(
RD_RH_STAT & ~(RH_HS_CRWE | RH_HS_DRWE));
OK(4);
case RH_GET_STATUS | RH_OTHER | RH_CLASS:
RD_RH_STAT & ~(RH_HS_CRWE | RH_HS_DRWE));
OK(4);
case RH_GET_STATUS | RH_OTHER | RH_CLASS:
- *(
__u32 *) data_
buf = cpu_to_le32(RD_RH_PORTSTAT);
+ *(
u32 *)data
buf = cpu_to_le32(RD_RH_PORTSTAT);
OK(4);
case RH_CLEAR_FEATURE | RH_ENDPOINT:
OK(4);
case RH_CLEAR_FEATURE | RH_ENDPOINT:
@@
-1354,7
+1352,7
@@
pkt_print(NULL, dev, pipe, buffer, transfer_len,
OK(0);
case (RH_PORT_POWER):
WR_RH_PORTSTAT(RH_PS_PPS);
OK(0);
case (RH_PORT_POWER):
WR_RH_PORTSTAT(RH_PS_PPS);
-
wait_ms
(100);
+
mdelay
(100);
OK(0);
case (RH_PORT_ENABLE): /* BUG IN HUP CODE *********/
if (RD_RH_PORTSTAT & RH_PS_CCS)
OK(0);
case (RH_PORT_ENABLE): /* BUG IN HUP CODE *********/
if (RD_RH_PORTSTAT & RH_PS_CCS)
@@
-1375,14
+1373,14
@@
pkt_print(NULL, dev, pipe, buffer, transfer_len,
min_t(unsigned int,
sizeof(root_hub_dev_des),
wLength));
min_t(unsigned int,
sizeof(root_hub_dev_des),
wLength));
- data
_
buf = root_hub_dev_des; OK(len);
+ databuf = root_hub_dev_des; OK(len);
case (0x02): /* configuration descriptor */
len = min_t(unsigned int,
leni,
min_t(unsigned int,
sizeof(root_hub_config_des),
wLength));
case (0x02): /* configuration descriptor */
len = min_t(unsigned int,
leni,
min_t(unsigned int,
sizeof(root_hub_config_des),
wLength));
- data
_
buf = root_hub_config_des; OK(len);
+ databuf = root_hub_config_des; OK(len);
case (0x03): /* string descriptors */
if (wValue == 0x0300) {
len = min_t(unsigned int,
case (0x03): /* string descriptors */
if (wValue == 0x0300) {
len = min_t(unsigned int,
@@
-1390,7
+1388,7
@@
pkt_print(NULL, dev, pipe, buffer, transfer_len,
min_t(unsigned int,
sizeof(root_hub_str_index0),
wLength));
min_t(unsigned int,
sizeof(root_hub_str_index0),
wLength));
- data
_
buf = root_hub_str_index0;
+ databuf = root_hub_str_index0;
OK(len);
}
if (wValue == 0x0301) {
OK(len);
}
if (wValue == 0x0301) {
@@
-1399,7
+1397,7
@@
pkt_print(NULL, dev, pipe, buffer, transfer_len,
min_t(unsigned int,
sizeof(root_hub_str_index1),
wLength));
min_t(unsigned int,
sizeof(root_hub_str_index1),
wLength));
- data
_
buf = root_hub_str_index1;
+ databuf = root_hub_str_index1;
OK(len);
}
default:
OK(len);
}
default:
@@
-1411,41
+1409,45
@@
pkt_print(NULL, dev, pipe, buffer, transfer_len,
{
__u32 temp = roothub_a(&gohci);
{
__u32 temp = roothub_a(&gohci);
- data
_buf [0] = 9;
/* min length; */
- data
_buf
[1] = 0x29;
- data
_buf
[2] = temp & RH_A_NDP;
+ data
buf[0] = 9;
/* min length; */
+ data
buf
[1] = 0x29;
+ data
buf
[2] = temp & RH_A_NDP;
#ifdef CONFIG_AT91C_PQFP_UHPBUG
#ifdef CONFIG_AT91C_PQFP_UHPBUG
- data
_buf [2] = (data_buf [2] == 2) ? 1:
0;
+ data
buf[2] = (databuf[2] == 2) ? 1 :
0;
#endif
#endif
- data
_buf
[3] = 0;
+ data
buf
[3] = 0;
if (temp & RH_A_PSM) /* per-port power switching? */
if (temp & RH_A_PSM) /* per-port power switching? */
- data
_buf
[3] |= 0x1;
+ data
buf
[3] |= 0x1;
if (temp & RH_A_NOCP) /* no overcurrent reporting? */
if (temp & RH_A_NOCP) /* no overcurrent reporting? */
- data
_buf
[3] |= 0x10;
+ data
buf
[3] |= 0x10;
else if (temp & RH_A_OCPM)/* per-port overcurrent reporting? */
else if (temp & RH_A_OCPM)/* per-port overcurrent reporting? */
- data
_buf
[3] |= 0x8;
+ data
buf
[3] |= 0x8;
- /* corresponds to data_buf[4-7] */
- datab
[1] = 0
;
- data
_buf [5] = (temp & RH_A_POTPGT) >> 24
;
+ databuf[4] = 0;
+ datab
uf[5] = (temp & RH_A_POTPGT) >> 24
;
+ data
buf[6] = 0
;
temp = roothub_b(&gohci);
temp = roothub_b(&gohci);
- data
_buf
[7] = temp & RH_B_DR;
- if (data
_buf
[2] < 7) {
- data
_buf
[8] = 0xff;
+ data
buf
[7] = temp & RH_B_DR;
+ if (data
buf
[2] < 7) {
+ data
buf
[8] = 0xff;
} else {
} else {
- data
_buf
[0] += 2;
- data
_buf
[8] = (temp & RH_B_DR) >> 8;
- data
_buf [10] = data_buf
[9] = 0xff;
+ data
buf
[0] += 2;
+ data
buf
[8] = (temp & RH_B_DR) >> 8;
+ data
buf[10] = databuf
[9] = 0xff;
}
len = min_t(unsigned int, leni,
}
len = min_t(unsigned int, leni,
- min_t(unsigned int, data
_buf
[0], wLength));
+ min_t(unsigned int, data
buf
[0], wLength));
OK(len);
}
OK(len);
}
- case RH_GET_CONFIGURATION: *(__u8 *) data_buf = 0x01; OK(1);
+ case RH_GET_CONFIGURATION:
+ databuf[0] = 0x01;
+ OK(1);
- case RH_SET_CONFIGURATION: WR_RH_STAT(0x10000); OK(0);
+ case RH_SET_CONFIGURATION:
+ WR_RH_STAT(0x10000);
+ OK(0);
default:
dbg("unsupported root hub command");
default:
dbg("unsupported root hub command");
@@
-1455,12
+1457,12
@@
pkt_print(NULL, dev, pipe, buffer, transfer_len,
#ifdef DEBUG
ohci_dump_roothub(&gohci, 1);
#else
#ifdef DEBUG
ohci_dump_roothub(&gohci, 1);
#else
-
wait_ms
(1);
+
mdelay
(1);
#endif
len = min_t(int, len, leni);
#endif
len = min_t(int, len, leni);
- if (data != data
_
buf)
-
memcpy(data, data_
buf, len);
+ if (data != databuf)
+
memcpy(data, data
buf, len);
dev->act_len = len;
dev->status = stat;
dev->act_len = len;
dev->status = stat;
@@
-1468,7
+1470,7
@@
pkt_print(NULL, dev, pipe, buffer, transfer_len,
pkt_print(NULL, dev, pipe, buffer,
transfer_len, cmd, "RET(rh)", 0/*usb_pipein(pipe)*/);
#else
pkt_print(NULL, dev, pipe, buffer,
transfer_len, cmd, "RET(rh)", 0/*usb_pipein(pipe)*/);
#else
-
wait_ms
(1);
+
mdelay
(1);
#endif
return stat;
#endif
return stat;
@@
-1506,7
+1508,7
@@
int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
pkt_print(urb, dev, pipe, buffer, transfer_len,
setup, "SUB", usb_pipein(pipe));
#else
pkt_print(urb, dev, pipe, buffer, transfer_len,
setup, "SUB", usb_pipein(pipe));
#else
-
wait_ms
(1);
+
mdelay
(1);
#endif
if (!maxsize) {
err("submit_common_message: pipesize for pipe %lx is zero",
#endif
if (!maxsize) {
err("submit_common_message: pipesize for pipe %lx is zero",
@@
-1520,16
+1522,11
@@
int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
}
#if 0
}
#if 0
-
wait_ms
(10);
+
mdelay
(10);
/* ohci_dump_status(&gohci); */
#endif
/* ohci_dump_status(&gohci); */
#endif
- /* allow more time for a BULK device to react - some are slow */
-#define BULK_TO 5000 /* timeout in milliseconds */
- if (usb_pipebulk(pipe))
- timeout = BULK_TO;
- else
- timeout = 100;
+ timeout = USB_TIMEOUT_MS(pipe);
/* wait for it to complete */
for (;;) {
/* wait for it to complete */
for (;;) {
@@
-1555,7
+1552,7
@@
int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
}
if (--timeout) {
}
if (--timeout) {
-
wait_ms
(1);
+
mdelay
(1);
if (!urb->finished)
dbg("*");
if (!urb->finished)
dbg("*");
@@
-1575,7
+1572,7
@@
int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
pkt_print(urb, dev, pipe, buffer, transfer_len,
setup, "RET(ctlr)", usb_pipein(pipe));
#else
pkt_print(urb, dev, pipe, buffer, transfer_len,
setup, "RET(ctlr)", usb_pipein(pipe));
#else
-
wait_ms
(1);
+
mdelay
(1);
#endif
/* free TDs in urb_priv */
#endif
/* free TDs in urb_priv */
@@
-1602,7
+1599,7
@@
int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
pkt_print(NULL, dev, pipe, buffer, transfer_len,
setup, "SUB", usb_pipein(pipe));
#else
pkt_print(NULL, dev, pipe, buffer, transfer_len,
setup, "SUB", usb_pipein(pipe));
#else
-
wait_ms
(1);
+
mdelay
(1);
#endif
if (!maxsize) {
err("submit_control_message: pipesize for pipe %lx is zero",
#endif
if (!maxsize) {
err("submit_control_message: pipesize for pipe %lx is zero",
@@
-1672,7
+1669,7
@@
static int hc_reset(ohci_t *ohci)
ohci_writel(OHCI_OCR, &ohci->regs->cmdstatus);
info("USB HC TakeOver from SMM");
while (ohci_readl(&ohci->regs->control) & OHCI_CTRL_IR) {
ohci_writel(OHCI_OCR, &ohci->regs->cmdstatus);
info("USB HC TakeOver from SMM");
while (ohci_readl(&ohci->regs->control) & OHCI_CTRL_IR) {
-
wait_ms
(10);
+
mdelay
(10);
if (--smm_timeout == 0) {
err("USB HC TakeOver failed!");
return -1;
if (--smm_timeout == 0) {
err("USB HC TakeOver failed!");
return -1;
@@
-1755,7
+1752,6
@@
static int hc_start(ohci_t *ohci)
ohci_writel(RH_HS_LPSC, &ohci->regs->roothub.status);
#endif /* OHCI_USE_NPS */
ohci_writel(RH_HS_LPSC, &ohci->regs->roothub.status);
#endif /* OHCI_USE_NPS */
-#define mdelay(n) ({unsigned long msec = (n); while (msec--) udelay(1000); })
/* POTPGT delay is bits 24-31, in 2 ms units. */
mdelay((roothub_a(ohci) >> 23) & 0x1fe);
/* POTPGT delay is bits 24-31, in 2 ms units. */
mdelay((roothub_a(ohci) >> 23) & 0x1fe);
@@
-1767,12
+1763,6
@@
static int hc_start(ohci_t *ohci)
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
-/* Poll USB interrupt. */
-void usb_event_poll(void)
-{
- hc_interrupt();
-}
-
/* an interrupt happens */
static int hc_interrupt(void)
/* an interrupt happens */
static int hc_interrupt(void)
@@
-1815,7
+1805,7
@@
static int hc_interrupt(void)
#ifdef DEBUG
ohci_dump(ohci, 1);
#else
#ifdef DEBUG
ohci_dump(ohci, 1);
#else
-
wait_ms
(1);
+
mdelay
(1);
#endif
/* FIXME: be optimistic, hope that bug won't repeat often. */
/* Make some non-interrupt context restart the controller. */
#endif
/* FIXME: be optimistic, hope that bug won't repeat often. */
/* Make some non-interrupt context restart the controller. */
@@
-1826,7
+1816,7
@@
static int hc_interrupt(void)
}
if (ints & OHCI_INTR_WDH) {
}
if (ints & OHCI_INTR_WDH) {
-
wait_ms
(1);
+
mdelay
(1);
ohci_writel(OHCI_INTR_WDH, ®s->intrdisable);
(void)ohci_readl(®s->intrdisable); /* flush */
stat = dl_done_list(&gohci);
ohci_writel(OHCI_INTR_WDH, ®s->intrdisable);
(void)ohci_readl(®s->intrdisable); /* flush */
stat = dl_done_list(&gohci);
@@
-1843,7
+1833,7
@@
static int hc_interrupt(void)
/* FIXME: this assumes SOF (1/ms) interrupts don't get lost... */
if (ints & OHCI_INTR_SF) {
unsigned int frame = m16_swap(ohci->hcca->frame_no) & 1;
/* FIXME: this assumes SOF (1/ms) interrupts don't get lost... */
if (ints & OHCI_INTR_SF) {
unsigned int frame = m16_swap(ohci->hcca->frame_no) & 1;
-
wait_ms
(1);
+
mdelay
(1);
ohci_writel(OHCI_INTR_SF, ®s->intrdisable);
if (ohci->ed_rm_list[frame] != NULL)
ohci_writel(OHCI_INTR_SF, ®s->intrenable);
ohci_writel(OHCI_INTR_SF, ®s->intrdisable);
if (ohci->ed_rm_list[frame] != NULL)
ohci_writel(OHCI_INTR_SF, ®s->intrenable);
@@
-1875,7
+1865,7
@@
static void hc_release_ohci(ohci_t *ohci)
*/
static char ohci_inited = 0;
*/
static char ohci_inited = 0;
-int usb_lowlevel_init(
void
)
+int usb_lowlevel_init(
int index, void **controller
)
{
#ifdef CONFIG_PCI_OHCI
pci_dev_t pdev;
{
#ifdef CONFIG_PCI_OHCI
pci_dev_t pdev;
@@
-1975,13
+1965,13
@@
int usb_lowlevel_init(void)
#ifdef DEBUG
ohci_dump(&gohci, 1);
#else
#ifdef DEBUG
ohci_dump(&gohci, 1);
#else
-
wait_ms
(1);
+
mdelay
(1);
#endif
ohci_inited = 1;
return 0;
}
#endif
ohci_inited = 1;
return 0;
}
-int usb_lowlevel_stop(
void
)
+int usb_lowlevel_stop(
int index
)
{
/* this gets called really early - before the controller has */
/* even been initialized! */
{
/* this gets called really early - before the controller has */
/* even been initialized! */