Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

USB: OHCI: remove Alchemy OHCI platform driver.

All users have been converted to use the OHCI platform driver instead, thus
making ohci-au1xxx obsolete, remove it.

Signed-off-by: Florian Fainelli <florian@openwrt.org>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Florian Fainelli and committed by
Greg Kroah-Hartman
bb5da43e e223a4cc

-239
-234
drivers/usb/host/ohci-au1xxx.c
··· 1 - /* 2 - * OHCI HCD (Host Controller Driver) for USB. 3 - * 4 - * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> 5 - * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> 6 - * (C) Copyright 2002 Hewlett-Packard Company 7 - * 8 - * Bus Glue for AMD Alchemy Au1xxx 9 - * 10 - * Written by Christopher Hoover <ch@hpl.hp.com> 11 - * Based on fragments of previous driver by Russell King et al. 12 - * 13 - * Modified for LH7A404 from ohci-sa1111.c 14 - * by Durgesh Pattamatta <pattamattad@sharpsec.com> 15 - * Modified for AMD Alchemy Au1xxx 16 - * by Matt Porter <mporter@kernel.crashing.org> 17 - * 18 - * This file is licenced under the GPL. 19 - */ 20 - 21 - #include <linux/platform_device.h> 22 - #include <linux/signal.h> 23 - 24 - #include <asm/mach-au1x00/au1000.h> 25 - 26 - 27 - extern int usb_disabled(void); 28 - 29 - static int __devinit ohci_au1xxx_start(struct usb_hcd *hcd) 30 - { 31 - struct ohci_hcd *ohci = hcd_to_ohci(hcd); 32 - int ret; 33 - 34 - ohci_dbg(ohci, "ohci_au1xxx_start, ohci:%p", ohci); 35 - 36 - if ((ret = ohci_init(ohci)) < 0) 37 - return ret; 38 - 39 - if ((ret = ohci_run(ohci)) < 0) { 40 - dev_err(hcd->self.controller, "can't start %s", 41 - hcd->self.bus_name); 42 - ohci_stop(hcd); 43 - return ret; 44 - } 45 - 46 - return 0; 47 - } 48 - 49 - static const struct hc_driver ohci_au1xxx_hc_driver = { 50 - .description = hcd_name, 51 - .product_desc = "Au1xxx OHCI", 52 - .hcd_priv_size = sizeof(struct ohci_hcd), 53 - 54 - /* 55 - * generic hardware linkage 56 - */ 57 - .irq = ohci_irq, 58 - .flags = HCD_USB11 | HCD_MEMORY, 59 - 60 - /* 61 - * basic lifecycle operations 62 - */ 63 - .start = ohci_au1xxx_start, 64 - .stop = ohci_stop, 65 - .shutdown = ohci_shutdown, 66 - 67 - /* 68 - * managing i/o requests and associated device resources 69 - */ 70 - .urb_enqueue = ohci_urb_enqueue, 71 - .urb_dequeue = ohci_urb_dequeue, 72 - .endpoint_disable = ohci_endpoint_disable, 73 - 74 - /* 75 - * scheduling support 76 - */ 77 - .get_frame_number = ohci_get_frame, 78 - 79 - /* 80 - * root hub support 81 - */ 82 - .hub_status_data = ohci_hub_status_data, 83 - .hub_control = ohci_hub_control, 84 - #ifdef CONFIG_PM 85 - .bus_suspend = ohci_bus_suspend, 86 - .bus_resume = ohci_bus_resume, 87 - #endif 88 - .start_port_reset = ohci_start_port_reset, 89 - }; 90 - 91 - static int ohci_hcd_au1xxx_drv_probe(struct platform_device *pdev) 92 - { 93 - int ret, unit; 94 - struct usb_hcd *hcd; 95 - 96 - if (usb_disabled()) 97 - return -ENODEV; 98 - 99 - if (pdev->resource[1].flags != IORESOURCE_IRQ) { 100 - pr_debug("resource[1] is not IORESOURCE_IRQ\n"); 101 - return -ENOMEM; 102 - } 103 - 104 - hcd = usb_create_hcd(&ohci_au1xxx_hc_driver, &pdev->dev, "au1xxx"); 105 - if (!hcd) 106 - return -ENOMEM; 107 - 108 - hcd->rsrc_start = pdev->resource[0].start; 109 - hcd->rsrc_len = pdev->resource[0].end - pdev->resource[0].start + 1; 110 - 111 - if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { 112 - pr_debug("request_mem_region failed\n"); 113 - ret = -EBUSY; 114 - goto err1; 115 - } 116 - 117 - hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); 118 - if (!hcd->regs) { 119 - pr_debug("ioremap failed\n"); 120 - ret = -ENOMEM; 121 - goto err2; 122 - } 123 - 124 - unit = (hcd->rsrc_start == AU1300_USB_OHCI1_PHYS_ADDR) ? 125 - ALCHEMY_USB_OHCI1 : ALCHEMY_USB_OHCI0; 126 - if (alchemy_usb_control(unit, 1)) { 127 - printk(KERN_INFO "%s: controller init failed!\n", pdev->name); 128 - ret = -ENODEV; 129 - goto err3; 130 - } 131 - 132 - ohci_hcd_init(hcd_to_ohci(hcd)); 133 - 134 - ret = usb_add_hcd(hcd, pdev->resource[1].start, 135 - IRQF_SHARED); 136 - if (ret == 0) { 137 - platform_set_drvdata(pdev, hcd); 138 - return ret; 139 - } 140 - 141 - alchemy_usb_control(unit, 0); 142 - err3: 143 - iounmap(hcd->regs); 144 - err2: 145 - release_mem_region(hcd->rsrc_start, hcd->rsrc_len); 146 - err1: 147 - usb_put_hcd(hcd); 148 - return ret; 149 - } 150 - 151 - static int ohci_hcd_au1xxx_drv_remove(struct platform_device *pdev) 152 - { 153 - struct usb_hcd *hcd = platform_get_drvdata(pdev); 154 - int unit; 155 - 156 - unit = (hcd->rsrc_start == AU1300_USB_OHCI1_PHYS_ADDR) ? 157 - ALCHEMY_USB_OHCI1 : ALCHEMY_USB_OHCI0; 158 - usb_remove_hcd(hcd); 159 - alchemy_usb_control(unit, 0); 160 - iounmap(hcd->regs); 161 - release_mem_region(hcd->rsrc_start, hcd->rsrc_len); 162 - usb_put_hcd(hcd); 163 - platform_set_drvdata(pdev, NULL); 164 - 165 - return 0; 166 - } 167 - 168 - #ifdef CONFIG_PM 169 - static int ohci_hcd_au1xxx_drv_suspend(struct device *dev) 170 - { 171 - struct usb_hcd *hcd = dev_get_drvdata(dev); 172 - struct ohci_hcd *ohci = hcd_to_ohci(hcd); 173 - unsigned long flags; 174 - int rc; 175 - 176 - rc = 0; 177 - 178 - /* Root hub was already suspended. Disable irq emission and 179 - * mark HW unaccessible, bail out if RH has been resumed. Use 180 - * the spinlock to properly synchronize with possible pending 181 - * RH suspend or resume activity. 182 - */ 183 - spin_lock_irqsave(&ohci->lock, flags); 184 - if (ohci->rh_state != OHCI_RH_SUSPENDED) { 185 - rc = -EINVAL; 186 - goto bail; 187 - } 188 - ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable); 189 - (void)ohci_readl(ohci, &ohci->regs->intrdisable); 190 - 191 - clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); 192 - 193 - alchemy_usb_control(ALCHEMY_USB_OHCI0, 0); 194 - bail: 195 - spin_unlock_irqrestore(&ohci->lock, flags); 196 - 197 - return rc; 198 - } 199 - 200 - static int ohci_hcd_au1xxx_drv_resume(struct device *dev) 201 - { 202 - struct usb_hcd *hcd = dev_get_drvdata(dev); 203 - 204 - alchemy_usb_control(ALCHEMY_USB_OHCI0, 1); 205 - 206 - set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); 207 - ohci_finish_controller_resume(hcd); 208 - 209 - return 0; 210 - } 211 - 212 - static const struct dev_pm_ops au1xxx_ohci_pmops = { 213 - .suspend = ohci_hcd_au1xxx_drv_suspend, 214 - .resume = ohci_hcd_au1xxx_drv_resume, 215 - }; 216 - 217 - #define AU1XXX_OHCI_PMOPS &au1xxx_ohci_pmops 218 - 219 - #else 220 - #define AU1XXX_OHCI_PMOPS NULL 221 - #endif 222 - 223 - static struct platform_driver ohci_hcd_au1xxx_driver = { 224 - .probe = ohci_hcd_au1xxx_drv_probe, 225 - .remove = ohci_hcd_au1xxx_drv_remove, 226 - .shutdown = usb_hcd_platform_shutdown, 227 - .driver = { 228 - .name = "au1xxx-ohci", 229 - .owner = THIS_MODULE, 230 - .pm = AU1XXX_OHCI_PMOPS, 231 - }, 232 - }; 233 - 234 - MODULE_ALIAS("platform:au1xxx-ohci");
-5
drivers/usb/host/ohci-hcd.c
··· 1130 1130 #define PLATFORM_DRIVER ohci_hcd_ep93xx_driver 1131 1131 #endif 1132 1132 1133 - #ifdef CONFIG_MIPS_ALCHEMY 1134 - #include "ohci-au1xxx.c" 1135 - #define PLATFORM_DRIVER ohci_hcd_au1xxx_driver 1136 - #endif 1137 - 1138 1133 #ifdef CONFIG_ARCH_AT91 1139 1134 #include "ohci-at91.c" 1140 1135 #define PLATFORM_DRIVER ohci_hcd_at91_driver