ralink: fix mt7620 ohci 3.14

the ohci phy was not reset properly

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 42291
This commit is contained in:
John Crispin 2014-08-25 16:31:05 +00:00
parent ca737049d2
commit 843fc45e27
2 changed files with 45 additions and 50 deletions

View file

@ -11,11 +11,11 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
3 files changed, 199 insertions(+) 3 files changed, 199 insertions(+)
create mode 100644 drivers/usb/phy/ralink-phy.c create mode 100644 drivers/usb/phy/ralink-phy.c
diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig Index: linux-3.14.16/drivers/usb/phy/Kconfig
index 7d1451d..fc04d76 100644 ===================================================================
--- a/drivers/usb/phy/Kconfig --- linux-3.14.16.orig/drivers/usb/phy/Kconfig 2014-08-08 01:50:59.000000000 +0200
+++ b/drivers/usb/phy/Kconfig +++ linux-3.14.16/drivers/usb/phy/Kconfig 2014-08-24 12:39:21.094371467 +0200
@@ -251,6 +251,14 @@ config USB_RCAR_GEN2_PHY @@ -251,6 +251,14 @@
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called phy-rcar-gen2-usb. module will be called phy-rcar-gen2-usb.
@ -30,21 +30,20 @@ index 7d1451d..fc04d76 100644
config USB_ULPI config USB_ULPI
bool "Generic ULPI Transceiver Driver" bool "Generic ULPI Transceiver Driver"
depends on ARM depends on ARM
diff --git a/drivers/usb/phy/Makefile b/drivers/usb/phy/Makefile Index: linux-3.14.16/drivers/usb/phy/Makefile
index be58ada..52d59c1 100644 ===================================================================
--- a/drivers/usb/phy/Makefile --- linux-3.14.16.orig/drivers/usb/phy/Makefile 2014-08-08 01:50:59.000000000 +0200
+++ b/drivers/usb/phy/Makefile +++ linux-3.14.16/drivers/usb/phy/Makefile 2014-08-24 12:39:21.094371467 +0200
@@ -33,3 +33,4 @@ obj-$(CONFIG_USB_RCAR_GEN2_PHY) += phy-rcar-gen2-usb.o @@ -33,3 +33,4 @@
obj-$(CONFIG_USB_ULPI) += phy-ulpi.o obj-$(CONFIG_USB_ULPI) += phy-ulpi.o
obj-$(CONFIG_USB_ULPI_VIEWPORT) += phy-ulpi-viewport.o obj-$(CONFIG_USB_ULPI_VIEWPORT) += phy-ulpi-viewport.o
obj-$(CONFIG_KEYSTONE_USB_PHY) += phy-keystone.o obj-$(CONFIG_KEYSTONE_USB_PHY) += phy-keystone.o
+obj-$(CONFIG_RALINK_USBPHY) += ralink-phy.o +obj-$(CONFIG_RALINK_USBPHY) += ralink-phy.o
diff --git a/drivers/usb/phy/ralink-phy.c b/drivers/usb/phy/ralink-phy.c Index: linux-3.14.16/drivers/usb/phy/ralink-phy.c
new file mode 100644 ===================================================================
index 0000000..28046e5 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
--- /dev/null +++ linux-3.14.16/drivers/usb/phy/ralink-phy.c 2014-08-24 14:28:35.886531881 +0200
+++ b/drivers/usb/phy/ralink-phy.c @@ -0,0 +1,191 @@
@@ -0,0 +1,190 @@
+/* +/*
+ * Copyright (C) 2013 John Crispin <blogic@openwrt.org> + * Copyright (C) 2013 John Crispin <blogic@openwrt.org>
+ * + *
@ -75,6 +74,7 @@ index 0000000..28046e5
+#define RT_SYSCFG1_USB0_HOST_MODE BIT(10) +#define RT_SYSCFG1_USB0_HOST_MODE BIT(10)
+ +
+#define MT7620_CLKCFG1_UPHY0_CLK_EN BIT(25) +#define MT7620_CLKCFG1_UPHY0_CLK_EN BIT(25)
+#define MT7620_CLKCFG1_UPHY1_CLK_EN BIT(22)
+#define RT_CLKCFG1_UPHY1_CLK_EN BIT(20) +#define RT_CLKCFG1_UPHY1_CLK_EN BIT(20)
+#define RT_CLKCFG1_UPHY0_CLK_EN BIT(18) +#define RT_CLKCFG1_UPHY0_CLK_EN BIT(18)
+ +
@ -158,7 +158,7 @@ index 0000000..28046e5
+ +
+static const struct of_device_id ralink_usbphy_dt_match[] = { +static const struct of_device_id ralink_usbphy_dt_match[] = {
+ { .compatible = "ralink,rt3xxx-usbphy", .data = (void *) (RT_CLKCFG1_UPHY1_CLK_EN | RT_CLKCFG1_UPHY0_CLK_EN) }, + { .compatible = "ralink,rt3xxx-usbphy", .data = (void *) (RT_CLKCFG1_UPHY1_CLK_EN | RT_CLKCFG1_UPHY0_CLK_EN) },
+ { .compatible = "ralink,mt7620a-usbphy", .data = (void *) MT7620_CLKCFG1_UPHY0_CLK_EN }, + { .compatible = "ralink,mt7620a-usbphy", .data = (void *) (MT7620_CLKCFG1_UPHY1_CLK_EN | MT7620_CLKCFG1_UPHY0_CLK_EN) },
+ {}, + {},
+}; +};
+MODULE_DEVICE_TABLE(of, ralink_usbphy_dt_match); +MODULE_DEVICE_TABLE(of, ralink_usbphy_dt_match);
@ -235,6 +235,3 @@ index 0000000..28046e5
+MODULE_LICENSE("GPL v2"); +MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("Ralink USB phy"); +MODULE_DESCRIPTION("Ralink USB phy");
+MODULE_AUTHOR("John Crispin <blogic@openwrt.org>"); +MODULE_AUTHOR("John Crispin <blogic@openwrt.org>");
--
1.7.10.4

View file

@ -12,11 +12,11 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
drivers/usb/host/ohci-platform.c | 37 +++++++++++++++++++++++++++++++------ drivers/usb/host/ohci-platform.c | 37 +++++++++++++++++++++++++++++++------
3 files changed, 50 insertions(+), 11 deletions(-) 3 files changed, 50 insertions(+), 11 deletions(-)
diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile Index: linux-3.14.16/drivers/usb/Makefile
index 1ae2bf3..aaa15d9 100644 ===================================================================
--- a/drivers/usb/Makefile --- linux-3.14.16.orig/drivers/usb/Makefile 2014-08-08 01:50:59.000000000 +0200
+++ b/drivers/usb/Makefile +++ linux-3.14.16/drivers/usb/Makefile 2014-08-24 14:33:57.590539754 +0200
@@ -11,6 +11,8 @@ obj-$(CONFIG_USB_DWC2) += dwc2/ @@ -11,6 +11,8 @@
obj-$(CONFIG_USB_MON) += mon/ obj-$(CONFIG_USB_MON) += mon/
@ -25,7 +25,7 @@ index 1ae2bf3..aaa15d9 100644
obj-$(CONFIG_PCI) += host/ obj-$(CONFIG_PCI) += host/
obj-$(CONFIG_USB_EHCI_HCD) += host/ obj-$(CONFIG_USB_EHCI_HCD) += host/
obj-$(CONFIG_USB_ISP116X_HCD) += host/ obj-$(CONFIG_USB_ISP116X_HCD) += host/
@@ -41,7 +43,6 @@ obj-$(CONFIG_USB_TMC) += class/ @@ -41,7 +43,6 @@
obj-$(CONFIG_USB_STORAGE) += storage/ obj-$(CONFIG_USB_STORAGE) += storage/
obj-$(CONFIG_USB) += storage/ obj-$(CONFIG_USB) += storage/
@ -33,10 +33,10 @@ index 1ae2bf3..aaa15d9 100644
obj-$(CONFIG_USB_MICROTEK) += image/ obj-$(CONFIG_USB_MICROTEK) += image/
obj-$(CONFIG_USB_SERIAL) += serial/ obj-$(CONFIG_USB_SERIAL) += serial/
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c Index: linux-3.14.16/drivers/usb/host/ehci-platform.c
index 01536cf..1b9a8f4 100644 ===================================================================
--- a/drivers/usb/host/ehci-platform.c --- linux-3.14.16.orig/drivers/usb/host/ehci-platform.c 2014-08-24 12:39:18.806371411 +0200
+++ b/drivers/usb/host/ehci-platform.c +++ linux-3.14.16/drivers/usb/host/ehci-platform.c 2014-08-24 12:39:21.102371467 +0200
@@ -29,6 +29,8 @@ @@ -29,6 +29,8 @@
#include <linux/usb.h> #include <linux/usb.h>
#include <linux/usb/hcd.h> #include <linux/usb/hcd.h>
@ -46,7 +46,7 @@ index 01536cf..1b9a8f4 100644
#include "ehci.h" #include "ehci.h"
@@ -123,6 +125,15 @@ static int ehci_platform_probe(struct platform_device *dev) @@ -124,6 +126,15 @@
hcd->rsrc_start = res_mem->start; hcd->rsrc_start = res_mem->start;
hcd->rsrc_len = resource_size(res_mem); hcd->rsrc_len = resource_size(res_mem);
@ -62,7 +62,7 @@ index 01536cf..1b9a8f4 100644
hcd->regs = devm_ioremap_resource(&dev->dev, res_mem); hcd->regs = devm_ioremap_resource(&dev->dev, res_mem);
if (IS_ERR(hcd->regs)) { if (IS_ERR(hcd->regs)) {
err = PTR_ERR(hcd->regs); err = PTR_ERR(hcd->regs);
@@ -160,6 +171,9 @@ static int ehci_platform_remove(struct platform_device *dev) @@ -161,6 +172,9 @@
if (pdata == &ehci_platform_defaults) if (pdata == &ehci_platform_defaults)
dev->dev.platform_data = NULL; dev->dev.platform_data = NULL;
@ -72,7 +72,7 @@ index 01536cf..1b9a8f4 100644
return 0; return 0;
} }
@@ -204,9 +218,8 @@ static int ehci_platform_resume(struct device *dev) @@ -205,9 +219,8 @@
#define ehci_platform_resume NULL #define ehci_platform_resume NULL
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
@ -84,7 +84,7 @@ index 01536cf..1b9a8f4 100644
{} {}
}; };
@@ -230,7 +243,7 @@ static struct platform_driver ehci_platform_driver = { @@ -231,7 +244,7 @@
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ehci-platform", .name = "ehci-platform",
.pm = &ehci_platform_pm_ops, .pm = &ehci_platform_pm_ops,
@ -93,13 +93,15 @@ index 01536cf..1b9a8f4 100644
} }
}; };
diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c Index: linux-3.14.16/drivers/usb/host/ohci-platform.c
index 68f674c..2a73fed 100644 ===================================================================
--- a/drivers/usb/host/ohci-platform.c --- linux-3.14.16.orig/drivers/usb/host/ohci-platform.c 2014-08-08 01:50:59.000000000 +0200
+++ b/drivers/usb/host/ohci-platform.c +++ linux-3.14.16/drivers/usb/host/ohci-platform.c 2014-08-24 12:41:51.422375146 +0200
@@ -23,17 +23,20 @@ @@ -22,18 +22,22 @@
#include <linux/platform_device.h>
#include <linux/usb/ohci_pdriver.h> #include <linux/usb/ohci_pdriver.h>
#include <linux/usb.h> #include <linux/usb.h>
+#include <linux/usb/phy.h>
#include <linux/usb/hcd.h> #include <linux/usb/hcd.h>
+#include <linux/dma-mapping.h> +#include <linux/dma-mapping.h>
+#include <linux/of.h> +#include <linux/of.h>
@ -115,11 +117,11 @@ index 68f674c..2a73fed 100644
{ {
struct platform_device *pdev = to_platform_device(hcd->self.controller); struct platform_device *pdev = to_platform_device(hcd->self.controller);
- struct usb_ohci_pdata *pdata = dev_get_platdata(&pdev->dev); - struct usb_ohci_pdata *pdata = dev_get_platdata(&pdev->dev);
+ struct usb_ohci_pdata *pdata; + struct usb_ohci_pdata *pdata = dev_get_platdata(&pdev->dev);;
struct ohci_hcd *ohci = hcd_to_ohci(hcd); struct ohci_hcd *ohci = hcd_to_ohci(hcd);
if (pdata->big_endian_desc) if (pdata->big_endian_desc)
@@ -63,11 +66,18 @@ static int ohci_platform_probe(struct platform_device *dev) @@ -63,11 +67,18 @@
int irq; int irq;
int err = -ENOMEM; int err = -ENOMEM;
@ -127,7 +129,6 @@ index 68f674c..2a73fed 100644
- WARN_ON(1); - WARN_ON(1);
- return -ENODEV; - return -ENODEV;
- } - }
-
+ /* + /*
+ * use reasonable defaults so platforms don't have to provide these. + * use reasonable defaults so platforms don't have to provide these.
+ * with DT probing on ARM, none of these are set. + * with DT probing on ARM, none of these are set.
@ -138,12 +139,12 @@ index 68f674c..2a73fed 100644
+ dev->dev.dma_mask = &dev->dev.coherent_dma_mask; + dev->dev.dma_mask = &dev->dev.coherent_dma_mask;
+ if (!dev->dev.coherent_dma_mask) + if (!dev->dev.coherent_dma_mask)
+ dev->dev.coherent_dma_mask = DMA_BIT_MASK(32); + dev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
+
+ pdata = dev->dev.platform_data; + pdata = dev->dev.platform_data;
if (usb_disabled()) if (usb_disabled())
return -ENODEV; return -ENODEV;
@@ -99,6 +109,12 @@ static int ohci_platform_probe(struct platform_device *dev) @@ -99,6 +110,12 @@
hcd->rsrc_start = res_mem->start; hcd->rsrc_start = res_mem->start;
hcd->rsrc_len = resource_size(res_mem); hcd->rsrc_len = resource_size(res_mem);
@ -156,7 +157,7 @@ index 68f674c..2a73fed 100644
hcd->regs = devm_ioremap_resource(&dev->dev, res_mem); hcd->regs = devm_ioremap_resource(&dev->dev, res_mem);
if (IS_ERR(hcd->regs)) { if (IS_ERR(hcd->regs)) {
err = PTR_ERR(hcd->regs); err = PTR_ERR(hcd->regs);
@@ -134,6 +150,9 @@ static int ohci_platform_remove(struct platform_device *dev) @@ -134,6 +151,9 @@
if (pdata->power_off) if (pdata->power_off)
pdata->power_off(dev); pdata->power_off(dev);
@ -166,7 +167,7 @@ index 68f674c..2a73fed 100644
return 0; return 0;
} }
@@ -180,6 +199,11 @@ static int ohci_platform_resume(struct device *dev) @@ -180,6 +200,11 @@
#define ohci_platform_resume NULL #define ohci_platform_resume NULL
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
@ -178,7 +179,7 @@ index 68f674c..2a73fed 100644
static const struct platform_device_id ohci_platform_table[] = { static const struct platform_device_id ohci_platform_table[] = {
{ "ohci-platform", 0 }, { "ohci-platform", 0 },
{ } { }
@@ -200,6 +224,7 @@ static struct platform_driver ohci_platform_driver = { @@ -200,6 +225,7 @@
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "ohci-platform", .name = "ohci-platform",
.pm = &ohci_platform_pm_ops, .pm = &ohci_platform_pm_ops,
@ -186,6 +187,3 @@ index 68f674c..2a73fed 100644
} }
}; };
--
1.7.10.4