|
@@ -11,11 +11,6 @@
|
|
|
/* #undef DEBUG */
|
|
|
/* #undef VERBOSE_DEBUG */
|
|
|
|
|
|
-#if defined(CONFIG_USB_LANGWELL_OTG)
|
|
|
-#define OTG_TRANSCEIVER
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
#include <linux/module.h>
|
|
|
#include <linux/pci.h>
|
|
|
#include <linux/dma-mapping.h>
|
|
@@ -2315,13 +2310,9 @@ static void handle_setup_packet(struct langwell_udc *dev,
|
|
|
|
|
|
if (!gadget_is_otg(&dev->gadget))
|
|
|
break;
|
|
|
- else if (setup->bRequest == USB_DEVICE_B_HNP_ENABLE) {
|
|
|
+ else if (setup->bRequest == USB_DEVICE_B_HNP_ENABLE)
|
|
|
dev->gadget.b_hnp_enable = 1;
|
|
|
-#ifdef OTG_TRANSCEIVER
|
|
|
- if (!dev->lotg->otg.default_a)
|
|
|
- dev->lotg->hsm.b_hnp_enable = 1;
|
|
|
-#endif
|
|
|
- } else if (setup->bRequest == USB_DEVICE_A_HNP_SUPPORT)
|
|
|
+ else if (setup->bRequest == USB_DEVICE_A_HNP_SUPPORT)
|
|
|
dev->gadget.a_hnp_support = 1;
|
|
|
else if (setup->bRequest ==
|
|
|
USB_DEVICE_A_ALT_HNP_SUPPORT)
|
|
@@ -2752,12 +2743,6 @@ static void handle_usb_reset(struct langwell_udc *dev)
|
|
|
dev->usb_state = USB_STATE_ATTACHED;
|
|
|
}
|
|
|
|
|
|
-#ifdef OTG_TRANSCEIVER
|
|
|
- /* refer to USB OTG 6.6.2.3 b_hnp_en is cleared */
|
|
|
- if (!dev->lotg->otg.default_a)
|
|
|
- dev->lotg->hsm.b_hnp_enable = 0;
|
|
|
-#endif
|
|
|
-
|
|
|
dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__);
|
|
|
}
|
|
|
|
|
@@ -2770,29 +2755,6 @@ static void handle_bus_suspend(struct langwell_udc *dev)
|
|
|
dev->resume_state = dev->usb_state;
|
|
|
dev->usb_state = USB_STATE_SUSPENDED;
|
|
|
|
|
|
-#ifdef OTG_TRANSCEIVER
|
|
|
- if (dev->lotg->otg.default_a) {
|
|
|
- if (dev->lotg->hsm.b_bus_suspend_vld == 1) {
|
|
|
- dev->lotg->hsm.b_bus_suspend = 1;
|
|
|
- /* notify transceiver the state changes */
|
|
|
- if (spin_trylock(&dev->lotg->wq_lock)) {
|
|
|
- langwell_update_transceiver();
|
|
|
- spin_unlock(&dev->lotg->wq_lock);
|
|
|
- }
|
|
|
- }
|
|
|
- dev->lotg->hsm.b_bus_suspend_vld++;
|
|
|
- } else {
|
|
|
- if (!dev->lotg->hsm.a_bus_suspend) {
|
|
|
- dev->lotg->hsm.a_bus_suspend = 1;
|
|
|
- /* notify transceiver the state changes */
|
|
|
- if (spin_trylock(&dev->lotg->wq_lock)) {
|
|
|
- langwell_update_transceiver();
|
|
|
- spin_unlock(&dev->lotg->wq_lock);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-#endif
|
|
|
-
|
|
|
/* report suspend to the driver */
|
|
|
if (dev->driver) {
|
|
|
if (dev->driver->suspend) {
|
|
@@ -2823,11 +2785,6 @@ static void handle_bus_resume(struct langwell_udc *dev)
|
|
|
if (dev->pdev->device != 0x0829)
|
|
|
langwell_phy_low_power(dev, 0);
|
|
|
|
|
|
-#ifdef OTG_TRANSCEIVER
|
|
|
- if (dev->lotg->otg.default_a == 0)
|
|
|
- dev->lotg->hsm.a_bus_suspend = 0;
|
|
|
-#endif
|
|
|
-
|
|
|
/* report resume to the driver */
|
|
|
if (dev->driver) {
|
|
|
if (dev->driver->resume) {
|
|
@@ -3020,7 +2977,6 @@ static void langwell_udc_remove(struct pci_dev *pdev)
|
|
|
|
|
|
dev->done = &done;
|
|
|
|
|
|
-#ifndef OTG_TRANSCEIVER
|
|
|
/* free dTD dma_pool and dQH */
|
|
|
if (dev->dtd_pool)
|
|
|
dma_pool_destroy(dev->dtd_pool);
|
|
@@ -3032,7 +2988,6 @@ static void langwell_udc_remove(struct pci_dev *pdev)
|
|
|
/* release SRAM caching */
|
|
|
if (dev->has_sram && dev->got_sram)
|
|
|
sram_deinit(dev);
|
|
|
-#endif
|
|
|
|
|
|
if (dev->status_req) {
|
|
|
kfree(dev->status_req->req.buf);
|
|
@@ -3045,7 +3000,6 @@ static void langwell_udc_remove(struct pci_dev *pdev)
|
|
|
if (dev->got_irq)
|
|
|
free_irq(pdev->irq, dev);
|
|
|
|
|
|
-#ifndef OTG_TRANSCEIVER
|
|
|
if (dev->cap_regs)
|
|
|
iounmap(dev->cap_regs);
|
|
|
|
|
@@ -3055,13 +3009,6 @@ static void langwell_udc_remove(struct pci_dev *pdev)
|
|
|
|
|
|
if (dev->enabled)
|
|
|
pci_disable_device(pdev);
|
|
|
-#else
|
|
|
- if (dev->transceiver) {
|
|
|
- otg_put_transceiver(dev->transceiver);
|
|
|
- dev->transceiver = NULL;
|
|
|
- dev->lotg = NULL;
|
|
|
- }
|
|
|
-#endif
|
|
|
|
|
|
dev->cap_regs = NULL;
|
|
|
|
|
@@ -3072,9 +3019,7 @@ static void langwell_udc_remove(struct pci_dev *pdev)
|
|
|
device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
|
|
|
device_remove_file(&pdev->dev, &dev_attr_remote_wakeup);
|
|
|
|
|
|
-#ifndef OTG_TRANSCEIVER
|
|
|
pci_set_drvdata(pdev, NULL);
|
|
|
-#endif
|
|
|
|
|
|
/* free dev, wait for the release() finished */
|
|
|
wait_for_completion(&done);
|
|
@@ -3089,9 +3034,7 @@ static int langwell_udc_probe(struct pci_dev *pdev,
|
|
|
const struct pci_device_id *id)
|
|
|
{
|
|
|
struct langwell_udc *dev;
|
|
|
-#ifndef OTG_TRANSCEIVER
|
|
|
unsigned long resource, len;
|
|
|
-#endif
|
|
|
void __iomem *base = NULL;
|
|
|
size_t size;
|
|
|
int retval;
|
|
@@ -3109,16 +3052,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
|
|
|
dev->pdev = pdev;
|
|
|
dev_dbg(&dev->pdev->dev, "---> %s()\n", __func__);
|
|
|
|
|
|
-#ifdef OTG_TRANSCEIVER
|
|
|
- /* PCI device is already enabled by otg_transceiver driver */
|
|
|
- dev->enabled = 1;
|
|
|
-
|
|
|
- /* mem region and register base */
|
|
|
- dev->region = 1;
|
|
|
- dev->transceiver = otg_get_transceiver();
|
|
|
- dev->lotg = otg_to_langwell(dev->transceiver);
|
|
|
- base = dev->lotg->regs;
|
|
|
-#else
|
|
|
pci_set_drvdata(pdev, dev);
|
|
|
|
|
|
/* now all the pci goodies ... */
|
|
@@ -3139,7 +3072,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
|
|
|
dev->region = 1;
|
|
|
|
|
|
base = ioremap_nocache(resource, len);
|
|
|
-#endif
|
|
|
if (base == NULL) {
|
|
|
dev_err(&dev->pdev->dev, "can't map memory\n");
|
|
|
retval = -EFAULT;
|
|
@@ -3163,7 +3095,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
|
|
|
dev->got_sram = 0;
|
|
|
dev_vdbg(&dev->pdev->dev, "dev->has_sram: %d\n", dev->has_sram);
|
|
|
|
|
|
-#ifndef OTG_TRANSCEIVER
|
|
|
/* enable SRAM caching if detected */
|
|
|
if (dev->has_sram && !dev->got_sram)
|
|
|
sram_init(dev);
|
|
@@ -3182,7 +3113,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
|
|
|
goto error;
|
|
|
}
|
|
|
dev->got_irq = 1;
|
|
|
-#endif
|
|
|
|
|
|
/* set stopped bit */
|
|
|
dev->stopped = 1;
|
|
@@ -3257,10 +3187,8 @@ static int langwell_udc_probe(struct pci_dev *pdev,
|
|
|
dev->remote_wakeup = 0;
|
|
|
dev->dev_status = 1 << USB_DEVICE_SELF_POWERED;
|
|
|
|
|
|
-#ifndef OTG_TRANSCEIVER
|
|
|
/* reset device controller */
|
|
|
langwell_udc_reset(dev);
|
|
|
-#endif
|
|
|
|
|
|
/* initialize gadget structure */
|
|
|
dev->gadget.ops = &langwell_ops; /* usb_gadget_ops */
|
|
@@ -3268,9 +3196,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
|
|
|
INIT_LIST_HEAD(&dev->gadget.ep_list); /* ep_list */
|
|
|
dev->gadget.speed = USB_SPEED_UNKNOWN; /* speed */
|
|
|
dev->gadget.max_speed = USB_SPEED_HIGH; /* support dual speed */
|
|
|
-#ifdef OTG_TRANSCEIVER
|
|
|
- dev->gadget.is_otg = 1; /* support otg mode */
|
|
|
-#endif
|
|
|
|
|
|
/* the "gadget" abstracts/virtualizes the controller */
|
|
|
dev_set_name(&dev->gadget.dev, "gadget");
|
|
@@ -3282,10 +3207,8 @@ static int langwell_udc_probe(struct pci_dev *pdev,
|
|
|
/* controller endpoints reinit */
|
|
|
eps_reinit(dev);
|
|
|
|
|
|
-#ifndef OTG_TRANSCEIVER
|
|
|
/* reset ep0 dQH and endptctrl */
|
|
|
ep0_reset(dev);
|
|
|
-#endif
|
|
|
|
|
|
/* create dTD dma_pool resource */
|
|
|
dev->dtd_pool = dma_pool_create("langwell_dtd",
|
|
@@ -3525,22 +3448,14 @@ static struct pci_driver langwell_pci_driver = {
|
|
|
|
|
|
static int __init init(void)
|
|
|
{
|
|
|
-#ifdef OTG_TRANSCEIVER
|
|
|
- return langwell_register_peripheral(&langwell_pci_driver);
|
|
|
-#else
|
|
|
return pci_register_driver(&langwell_pci_driver);
|
|
|
-#endif
|
|
|
}
|
|
|
module_init(init);
|
|
|
|
|
|
|
|
|
static void __exit cleanup(void)
|
|
|
{
|
|
|
-#ifdef OTG_TRANSCEIVER
|
|
|
- return langwell_unregister_peripheral(&langwell_pci_driver);
|
|
|
-#else
|
|
|
pci_unregister_driver(&langwell_pci_driver);
|
|
|
-#endif
|
|
|
}
|
|
|
module_exit(cleanup);
|
|
|
|