summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch (renamed from packages/linux/linux-rp-2.6.23/tmio-ohci-r8.patch)135
1 files changed, 11 insertions, 124 deletions
diff --git a/packages/linux/linux-rp-2.6.23/tmio-ohci-r8.patch b/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch
index 9b8434a0bc..034acc7b8e 100644
--- a/packages/linux/linux-rp-2.6.23/tmio-ohci-r8.patch
+++ b/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch
@@ -3,8 +3,8 @@ Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.23/drivers/usb/host/ohci-tmio.c 2007-11-14 16:58:47.637707413 +0300
-@@ -0,0 +1,530 @@
++++ linux-2.6.23/drivers/usb/host/ohci-tmio.c 2007-11-13 01:35:13.049455112 +0300
+@@ -0,0 +1,417 @@
+/*
+ * OHCI HCD(Host Controller Driver) for USB.
+ *
@@ -53,14 +53,6 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+
+/*-------------------------------------------------------------------------*/
+
-+#define MAX_TMIO_USB_PORTS 2
-+static bool default_tmio_ports[MAX_TMIO_USB_PORTS];
-+module_param_array(default_tmio_ports, bool, NULL, 0644);
-+MODULE_PARM_DESC(default_tmio_ports,
-+ "disable specified TC6393 usb ports (default: all enabled)");
-+
-+/*-------------------------------------------------------------------------*/
-+
+/*
+ * USB Host Controller Configuration Register
+ */
@@ -95,8 +87,8 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+struct {
+ unsigned gcken:1; /* D0 */
+ unsigned ckrnen:1; /* D1 */
-+ unsigned uspw0:1; /* D2 USB Port 1 Power Disable */
-+ unsigned uspw1:1; /* D3 USB Port 2 Power Disable */
++ unsigned uspw1:1; /* D2 USB Port 1 Power Disable */
++ unsigned uspw2:1; /* D3 USB Port 2 Power Disable */
+ unsigned x00:4;
+ unsigned pmee:1; /* D8 */
+ unsigned x01:6;
@@ -108,7 +100,6 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+
+struct tmio_hcd {
+ struct tmio_uhccr __iomem *ccr;
-+ bool disabled_ports[MAX_TMIO_USB_PORTS];
+};
+
+#define hcd_to_tmio(hcd) ((struct tmio_hcd *)(hcd_to_ohci(hcd) + 1))
@@ -116,39 +107,6 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+
+/*-------------------------------------------------------------------------*/
+
-+struct indexed_device_attribute{
-+ struct device_attribute dev_attr;
-+ int index;
-+};
-+#define to_indexed_dev_attr(_dev_attr) \
-+ container_of(_dev_attr, struct indexed_device_attribute, dev_attr)
-+
-+#define INDEXED_ATTR(_name, _mode, _show, _store, _index) \
-+ { .dev_attr = __ATTR(_name ## _index, _mode, _show, _store), \
-+ .index = _index }
-+
-+#define INDEXED_DEVICE_ATTR(_name, _mode, _show, _store, _index) \
-+struct indexed_device_attribute dev_attr_##_name ## _index \
-+ = INDEXED_ATTR(_name, _mode, _show, _store, _index)
-+
-+/*-------------------------------------------------------------------------*/
-+
-+
-+static void tmio_fill_pm(struct tmio_hcd *tmio, union tmio_uhccr_pm *pm)
-+{
-+ pm->raw = 0;
-+
-+ pm->pmee = 1;
-+ pm->pmes = 1;
-+ pm->gcken = 1;
-+ pm->ckrnen = 1;
-+
-+ if (tmio->disabled_ports[0])
-+ pm->uspw0 = 1;
-+ if (tmio->disabled_ports[1])
-+ pm->uspw1 = 1;
-+}
-+
+static void tmio_stop_hc(struct device *dev)
+{
+ struct tmio_device *tdev = dev_to_tdev(dev);
@@ -159,8 +117,8 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+
+ pm.gcken = 1;
+ pm.ckrnen = 1;
-+ pm.uspw0 = 1;
+ pm.uspw1 = 1;
++ pm.uspw2 = 1;
+
+ iowrite8(0, &ccr->intc);
+ iowrite8(0, &ccr->ilme);
@@ -181,7 +139,10 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ union tmio_uhccr_pm pm = {0};
+ unsigned long base = hcd->rsrc_start;
+
-+ tmio_fill_pm(tmio, &pm);
++ pm.pmes = 1;
++ pm.pmee = 1;
++ pm.ckrnen = 1;
++ pm.gcken = 1;
+
+ tdev->ops->clock(dev, 1);
+ tdev->ops->function(dev, 1);
@@ -196,54 +157,6 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ ioread8(&ccr->revid), hcd->rsrc_start, hcd->irq);
+}
+
-+static ssize_t tmio_disabled_port_show(struct device *dev,
-+ struct device_attribute *attr,
-+ char *buf)
-+{
-+ struct usb_hcd *hcd = dev_get_drvdata(dev);
-+ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
-+ int index = to_indexed_dev_attr(attr)->index;
-+ return snprintf(buf, PAGE_SIZE, "%c",
-+ tmio->disabled_ports[index]? 'Y': 'N');
-+}
-+
-+static ssize_t tmio_disabled_port_store(struct device *dev,
-+ struct device_attribute *attr,
-+ const char *buf, size_t count)
-+{
-+ struct usb_hcd *hcd = dev_get_drvdata(dev);
-+ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
-+ struct tmio_uhccr __iomem *ccr = tmio->ccr;
-+ union tmio_uhccr_pm pm = {0};
-+ int index = to_indexed_dev_attr(attr)->index;
-+
-+ if (!count)
-+ return -EINVAL;
-+
-+ switch (buf[0]) {
-+ case 'y': case 'Y': case '1':
-+ tmio->disabled_ports[index] = true;
-+ break;
-+ case 'n': case 'N': case '0':
-+ tmio->disabled_ports[index] = false;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ tmio_fill_pm(tmio, &pm);
-+
-+ iowrite16(pm.raw, &ccr->pm);
-+
-+ return 1;
-+}
-+
-+
-+static INDEXED_DEVICE_ATTR(disabled_usb_port, S_IRUGO | S_IWUSR,
-+ tmio_disabled_port_show, tmio_disabled_port_store, 0);
-+static INDEXED_DEVICE_ATTR(disabled_usb_port, S_IRUGO | S_IWUSR,
-+ tmio_disabled_port_show, tmio_disabled_port_store, 1);
-+
+static int usb_hcd_tmio_probe(const struct hc_driver *driver,
+ struct device *dev)
+{
@@ -282,9 +195,6 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ hcd->rsrc_len = regs->end - regs->start + 1;
+
+ tmio = hcd_to_tmio(hcd);
-+ memcpy(tmio->disabled_ports,
-+ default_tmio_ports,
-+ sizeof(default_tmio_ports));
+
+ tmio->ccr = ioremap(config->start, config->end - config->start + 1);
+ if (!tmio->ccr) {
@@ -314,23 +224,11 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ ohci = hcd_to_ohci(hcd);
+ ohci_hcd_init(ohci);
+
-+ retval = device_create_file(dev,
-+ &dev_attr_disabled_usb_port0.dev_attr);
-+ retval |= device_create_file(dev,
-+ &dev_attr_disabled_usb_port1.dev_attr);
-+
-+ if (retval)
-+ goto err_create_file;
-+
+ retval = usb_add_hcd(hcd, irq->start, IRQF_DISABLED);
+
+ if (retval == 0)
+ return retval;
+
-+err_create_file:
-+ device_remove_file(dev, &dev_attr_disabled_usb_port1.dev_attr);
-+ device_remove_file(dev, &dev_attr_disabled_usb_port0.dev_attr);
-+
+ tmio_stop_hc(dev);
+
+ dmabounce_unregister_dev(dev);
@@ -358,8 +256,6 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
+
+ usb_remove_hcd(hcd);
-+ device_remove_file(dev, &dev_attr_disabled_usb_port1.dev_attr);
-+ device_remove_file(dev, &dev_attr_disabled_usb_port0.dev_attr);
+ tmio_stop_hc(dev);
+ dmabounce_unregister_dev(dev);
+ dma_release_declared_memory(dev);
@@ -447,22 +343,13 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+static int ohci_hcd_tmio_drv_probe(struct device *dev)
+{
+ struct resource *sram = tmio_resource_mem(dev);
-+ int retval;
+
+ dev->dma_mask = &dma_mask;
+ dev->coherent_dma_mask = DMA_32BIT_MASK;
+
-+ /* FIXME: move dmabounce checkers to tc6393 core? */
+ dmabounce_register_checker(tmio_dmabounce_check, sram);
+
-+ retval = usb_hcd_tmio_probe(&ohci_tmio_hc_driver, dev);
-+
-+ if (retval == 0)
-+ return retval;
-+
-+ dmabounce_remove_checker(tmio_dmabounce_check, sram);
-+
-+ return retval;
++ return usb_hcd_tmio_probe(&ohci_tmio_hc_driver, dev);
+}
+
+static int ohci_hcd_tmio_drv_remove(struct device *dev)
@@ -550,7 +437,7 @@ Index: linux-2.6.23/drivers/usb/host/Kconfig
Index: linux-2.6.23/drivers/usb/host/ohci-hcd.c
===================================================================
--- linux-2.6.23.orig/drivers/usb/host/ohci-hcd.c 2007-11-12 13:46:52.894560883 +0300
-+++ linux-2.6.23/drivers/usb/host/ohci-hcd.c 2007-11-14 16:44:32.788069355 +0300
++++ linux-2.6.23/drivers/usb/host/ohci-hcd.c 2007-11-13 01:03:53.950798640 +0300
@@ -915,6 +915,10 @@
#define PLATFORM_DRIVER usb_hcd_pnx4008_driver
#endif