oxu210hp-hcd.c (05909cd9a0c8811731b38697af13075e8954314f) oxu210hp-hcd.c (93c747ed00c1c74316645f7761f0cdb3f3d3952d)
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (c) 2008 Rodolfo Giometti <giometti@linux.it>
4 * Copyright (c) 2008 Eurotech S.p.A. <info@eurtech.it>
5 *
6 * This code is *strongly* based on EHCI-HCD code by David Brownell since
7 * the chip is a quasi-EHCI compatible.
8 */

--- 10 unchanged lines hidden (view full) ---

19#include <linux/timer.h>
20#include <linux/list.h>
21#include <linux/interrupt.h>
22#include <linux/usb.h>
23#include <linux/usb/hcd.h>
24#include <linux/moduleparam.h>
25#include <linux/dma-mapping.h>
26#include <linux/io.h>
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (c) 2008 Rodolfo Giometti <giometti@linux.it>
4 * Copyright (c) 2008 Eurotech S.p.A. <info@eurtech.it>
5 *
6 * This code is *strongly* based on EHCI-HCD code by David Brownell since
7 * the chip is a quasi-EHCI compatible.
8 */

--- 10 unchanged lines hidden (view full) ---

19#include <linux/timer.h>
20#include <linux/list.h>
21#include <linux/interrupt.h>
22#include <linux/usb.h>
23#include <linux/usb/hcd.h>
24#include <linux/moduleparam.h>
25#include <linux/dma-mapping.h>
26#include <linux/io.h>
27#include <linux/iopoll.h>
27
28#include <asm/irq.h>
29#include <asm/unaligned.h>
30
31#include <linux/irq.h>
32#include <linux/platform_device.h>
33
34#define DRIVER_VERSION "0.0.50"

--- 708 unchanged lines hidden (view full) ---

743 * That last failure should_only happen in cases like physical cardbus eject
744 * before driver shutdown. But it also seems to be caused by bugs in cardbus
745 * bridge shutdown: shutting down the bridge before the devices using it.
746 */
747static int handshake(struct oxu_hcd *oxu, void __iomem *ptr,
748 u32 mask, u32 done, int usec)
749{
750 u32 result;
28
29#include <asm/irq.h>
30#include <asm/unaligned.h>
31
32#include <linux/irq.h>
33#include <linux/platform_device.h>
34
35#define DRIVER_VERSION "0.0.50"

--- 708 unchanged lines hidden (view full) ---

744 * That last failure should_only happen in cases like physical cardbus eject
745 * before driver shutdown. But it also seems to be caused by bugs in cardbus
746 * bridge shutdown: shutting down the bridge before the devices using it.
747 */
748static int handshake(struct oxu_hcd *oxu, void __iomem *ptr,
749 u32 mask, u32 done, int usec)
750{
751 u32 result;
752 int ret;
751
753
752 do {
753 result = readl(ptr);
754 if (result == ~(u32)0) /* card removed */
755 return -ENODEV;
756 result &= mask;
757 if (result == done)
758 return 0;
759 udelay(1);
760 usec--;
761 } while (usec > 0);
762 return -ETIMEDOUT;
754 ret = readl_poll_timeout_atomic(ptr, result,
755 ((result & mask) == done ||
756 result == U32_MAX),
757 1, usec);
758 if (result == U32_MAX) /* card removed */
759 return -ENODEV;
760
761 return ret;
763}
764
765/* Force HC to halt state from unknown (EHCI spec section 2.3) */
766static int ehci_halt(struct oxu_hcd *oxu)
767{
768 u32 temp = readl(&oxu->regs->status);
769
770 /* disable any irqs left enabled by previous code */

--- 590 unchanged lines hidden (view full) ---

1361 }
1362 qh_put(qh);
1363 }
1364
1365 urb->hcpriv = NULL;
1366 switch (urb->status) {
1367 case -EINPROGRESS: /* success */
1368 urb->status = 0;
762}
763
764/* Force HC to halt state from unknown (EHCI spec section 2.3) */
765static int ehci_halt(struct oxu_hcd *oxu)
766{
767 u32 temp = readl(&oxu->regs->status);
768
769 /* disable any irqs left enabled by previous code */

--- 590 unchanged lines hidden (view full) ---

1360 }
1361 qh_put(qh);
1362 }
1363
1364 urb->hcpriv = NULL;
1365 switch (urb->status) {
1366 case -EINPROGRESS: /* success */
1367 urb->status = 0;
1368 break;
1369 default: /* fault */
1370 break;
1371 case -EREMOTEIO: /* fault or normal */
1372 if (!(urb->transfer_flags & URB_SHORT_NOT_OK))
1373 urb->status = 0;
1374 break;
1375 case -ECONNRESET: /* canceled */
1376 case -ENOENT:

--- 2958 unchanged lines hidden ---
1369 default: /* fault */
1370 break;
1371 case -EREMOTEIO: /* fault or normal */
1372 if (!(urb->transfer_flags & URB_SHORT_NOT_OK))
1373 urb->status = 0;
1374 break;
1375 case -ECONNRESET: /* canceled */
1376 case -ENOENT:

--- 2958 unchanged lines hidden ---