Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream
This commit is contained in:
@@ -110,29 +110,18 @@ config USB_ISP116X_HCD
|
||||
|
||||
config USB_ISP1760_HCD
|
||||
tristate "ISP 1760 HCD support"
|
||||
depends on USB && EXPERIMENTAL
|
||||
depends on USB && EXPERIMENTAL && (PCI || PPC_OF)
|
||||
---help---
|
||||
The ISP1760 chip is a USB 2.0 host controller.
|
||||
|
||||
This driver does not support isochronous transfers or OTG.
|
||||
This USB controller is usually attached to a non-DMA-Master
|
||||
capable bus. NXP's eval kit brings this chip on PCI card
|
||||
where the chip itself is behind a PLB to simulate such
|
||||
a bus.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called isp1760-hcd.
|
||||
|
||||
config USB_ISP1760_PCI
|
||||
bool "Support for the PCI bus"
|
||||
depends on USB_ISP1760_HCD && PCI
|
||||
---help---
|
||||
Enables support for the device present on the PCI bus.
|
||||
This should only be required if you happen to have the eval kit from
|
||||
NXP and you are going to test it.
|
||||
|
||||
config USB_ISP1760_OF
|
||||
bool "Support for the OF platform bus"
|
||||
depends on USB_ISP1760_HCD && PPC_OF
|
||||
---help---
|
||||
Enables support for the device present on the PowerPC
|
||||
OpenFirmware platform bus.
|
||||
module will be called isp1760.
|
||||
|
||||
config USB_OHCI_HCD
|
||||
tristate "OHCI HCD support"
|
||||
|
@@ -643,7 +643,7 @@ static int ehci_run (struct usb_hcd *hcd)
|
||||
static irqreturn_t ehci_irq (struct usb_hcd *hcd)
|
||||
{
|
||||
struct ehci_hcd *ehci = hcd_to_ehci (hcd);
|
||||
u32 status, pcd_status = 0, cmd;
|
||||
u32 status, masked_status, pcd_status = 0, cmd;
|
||||
int bh;
|
||||
|
||||
spin_lock (&ehci->lock);
|
||||
@@ -656,14 +656,14 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
|
||||
goto dead;
|
||||
}
|
||||
|
||||
status &= INTR_MASK;
|
||||
if (!status) { /* irq sharing? */
|
||||
masked_status = status & INTR_MASK;
|
||||
if (!masked_status) { /* irq sharing? */
|
||||
spin_unlock(&ehci->lock);
|
||||
return IRQ_NONE;
|
||||
}
|
||||
|
||||
/* clear (just) interrupts */
|
||||
ehci_writel(ehci, status, &ehci->regs->status);
|
||||
ehci_writel(ehci, masked_status, &ehci->regs->status);
|
||||
cmd = ehci_readl(ehci, &ehci->regs->command);
|
||||
bh = 0;
|
||||
|
||||
@@ -734,18 +734,17 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
|
||||
|
||||
/* PCI errors [4.15.2.4] */
|
||||
if (unlikely ((status & STS_FATAL) != 0)) {
|
||||
ehci_err(ehci, "fatal error\n");
|
||||
dbg_cmd(ehci, "fatal", cmd);
|
||||
dbg_status(ehci, "fatal", status);
|
||||
if (status & STS_HALT) {
|
||||
ehci_err (ehci, "fatal error\n");
|
||||
ehci_halt(ehci);
|
||||
dead:
|
||||
ehci_reset (ehci);
|
||||
ehci_writel(ehci, 0, &ehci->regs->configured_flag);
|
||||
/* generic layer kills/unlinks all urbs, then
|
||||
* uses ehci_stop to clean up the rest
|
||||
*/
|
||||
bh = 1;
|
||||
}
|
||||
ehci_reset(ehci);
|
||||
ehci_writel(ehci, 0, &ehci->regs->configured_flag);
|
||||
/* generic layer kills/unlinks all urbs, then
|
||||
* uses ehci_stop to clean up the rest
|
||||
*/
|
||||
bh = 1;
|
||||
}
|
||||
|
||||
if (bh)
|
||||
|
@@ -205,6 +205,7 @@ static int ps3_ehci_remove(struct ps3_system_bus_device *dev)
|
||||
|
||||
tmp = hcd->irq;
|
||||
|
||||
ehci_shutdown(hcd);
|
||||
usb_remove_hcd(hcd);
|
||||
|
||||
ps3_system_bus_set_driver_data(dev, NULL);
|
||||
|
@@ -918,7 +918,7 @@ iso_stream_init (
|
||||
*/
|
||||
stream->usecs = HS_USECS_ISO (maxp);
|
||||
bandwidth = stream->usecs * 8;
|
||||
bandwidth /= 1 << (interval - 1);
|
||||
bandwidth /= interval;
|
||||
|
||||
} else {
|
||||
u32 addr;
|
||||
@@ -951,7 +951,7 @@ iso_stream_init (
|
||||
} else
|
||||
stream->raw_mask = smask_out [hs_transfers - 1];
|
||||
bandwidth = stream->usecs + stream->c_usecs;
|
||||
bandwidth /= 1 << (interval + 2);
|
||||
bandwidth /= interval << 3;
|
||||
|
||||
/* stream->splits gets created from raw_mask later */
|
||||
stream->address = cpu_to_hc32(ehci, addr);
|
||||
|
@@ -14,16 +14,16 @@
|
||||
#include "../core/hcd.h"
|
||||
#include "isp1760-hcd.h"
|
||||
|
||||
#ifdef CONFIG_USB_ISP1760_OF
|
||||
#ifdef CONFIG_PPC_OF
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_ISP1760_PCI
|
||||
#ifdef CONFIG_PCI
|
||||
#include <linux/pci.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_ISP1760_OF
|
||||
#ifdef CONFIG_PPC_OF
|
||||
static int of_isp1760_probe(struct of_device *dev,
|
||||
const struct of_device_id *match)
|
||||
{
|
||||
@@ -128,7 +128,7 @@ static struct of_platform_driver isp1760_of_driver = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_ISP1760_PCI
|
||||
#ifdef CONFIG_PCI
|
||||
static u32 nxp_pci_io_base;
|
||||
static u32 iolength;
|
||||
static u32 pci_mem_phy0;
|
||||
@@ -288,28 +288,28 @@ static struct pci_driver isp1761_pci_driver = {
|
||||
|
||||
static int __init isp1760_init(void)
|
||||
{
|
||||
int ret = -ENODEV;
|
||||
int ret;
|
||||
|
||||
init_kmem_once();
|
||||
|
||||
#ifdef CONFIG_USB_ISP1760_OF
|
||||
#ifdef CONFIG_PPC_OF
|
||||
ret = of_register_platform_driver(&isp1760_of_driver);
|
||||
if (ret) {
|
||||
deinit_kmem_cache();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_USB_ISP1760_PCI
|
||||
#ifdef CONFIG_PCI
|
||||
ret = pci_register_driver(&isp1761_pci_driver);
|
||||
if (ret)
|
||||
goto unreg_of;
|
||||
#endif
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_USB_ISP1760_PCI
|
||||
#ifdef CONFIG_PCI
|
||||
unreg_of:
|
||||
#endif
|
||||
#ifdef CONFIG_USB_ISP1760_OF
|
||||
#ifdef CONFIG_PPC_OF
|
||||
of_unregister_platform_driver(&isp1760_of_driver);
|
||||
#endif
|
||||
deinit_kmem_cache();
|
||||
@@ -319,10 +319,10 @@ module_init(isp1760_init);
|
||||
|
||||
static void __exit isp1760_exit(void)
|
||||
{
|
||||
#ifdef CONFIG_USB_ISP1760_OF
|
||||
#ifdef CONFIG_PPC_OF
|
||||
of_unregister_platform_driver(&isp1760_of_driver);
|
||||
#endif
|
||||
#ifdef CONFIG_USB_ISP1760_PCI
|
||||
#ifdef CONFIG_PCI
|
||||
pci_unregister_driver(&isp1761_pci_driver);
|
||||
#endif
|
||||
deinit_kmem_cache();
|
||||
|
@@ -192,7 +192,7 @@ fail_start:
|
||||
return result;
|
||||
}
|
||||
|
||||
static int ps3_ohci_remove (struct ps3_system_bus_device *dev)
|
||||
static int ps3_ohci_remove(struct ps3_system_bus_device *dev)
|
||||
{
|
||||
unsigned int tmp;
|
||||
struct usb_hcd *hcd =
|
||||
@@ -205,6 +205,7 @@ static int ps3_ohci_remove (struct ps3_system_bus_device *dev)
|
||||
|
||||
tmp = hcd->irq;
|
||||
|
||||
ohci_shutdown(hcd);
|
||||
usb_remove_hcd(hcd);
|
||||
|
||||
ps3_system_bus_set_driver_data(dev, NULL);
|
||||
|
@@ -1763,11 +1763,12 @@ static void r8a66597_timer(unsigned long _r8a66597)
|
||||
{
|
||||
struct r8a66597 *r8a66597 = (struct r8a66597 *)_r8a66597;
|
||||
unsigned long flags;
|
||||
int port;
|
||||
|
||||
spin_lock_irqsave(&r8a66597->lock, flags);
|
||||
|
||||
r8a66597_root_hub_control(r8a66597, 0);
|
||||
r8a66597_root_hub_control(r8a66597, 1);
|
||||
for (port = 0; port < R8A66597_MAX_ROOT_HUB; port++)
|
||||
r8a66597_root_hub_control(r8a66597, port);
|
||||
|
||||
spin_unlock_irqrestore(&r8a66597->lock, flags);
|
||||
}
|
||||
|
Reference in New Issue
Block a user