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 --- |