2012-10-03 15:16:25

by Florian Fainelli

[permalink] [raw]
Subject: [PATCH 07/25] MIPS: Alchemy: use the ehci platform driver

Use the ehci platform driver power_{on,suspend,off} callbacks to perform the
USB block gate enabling/disabling as what the ehci-au1xxx.c driver does.

Signed-off-by: Florian Fainelli <[email protected]>
---
arch/mips/alchemy/common/platform.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/arch/mips/alchemy/common/platform.c b/arch/mips/alchemy/common/platform.c
index c0f3ce6..57335a2 100644
--- a/arch/mips/alchemy/common/platform.c
+++ b/arch/mips/alchemy/common/platform.c
@@ -17,6 +17,7 @@
#include <linux/platform_device.h>
#include <linux/serial_8250.h>
#include <linux/slab.h>
+#include <linux/usb/ehci_pdriver.h>

#include <asm/mach-au1x00/au1000.h>
#include <asm/mach-au1x00/au1xxx_dbdma.h>
@@ -122,6 +123,25 @@ static void __init alchemy_setup_uarts(int ctype)
static u64 alchemy_ohci_dmamask = DMA_BIT_MASK(32);
static u64 __maybe_unused alchemy_ehci_dmamask = DMA_BIT_MASK(32);

+/* Power on callback for the ehci platform driver */
+static int alchemy_ehci_power_on(struct platform_device *pdev)
+{
+ return alchemy_usb_control(ALCHEMY_USB_EHCI0, 1);
+}
+
+/* Power off/suspend callback for the ehci platform driver */
+static void alchemy_ehci_power_off(struct platform_device *pdev)
+{
+ alchemy_usb_control(ALCHEMY_USB_EHCI0, 0);
+}
+
+static struct usb_ehci_pdata alchemy_ehci_pdata = {
+ .need_io_watchdog = 0,
+ .power_on = alchemy_ehci_power_on,
+ .power_off = alchemy_ehci_power_off,
+ .power_suspend = alchemy_ehci_power_off,
+};
+
static unsigned long alchemy_ohci_data[][2] __initdata = {
[ALCHEMY_CPU_AU1000] = { AU1000_USB_OHCI_PHYS_ADDR, AU1000_USB_HOST_INT },
[ALCHEMY_CPU_AU1500] = { AU1000_USB_OHCI_PHYS_ADDR, AU1500_USB_HOST_INT },
@@ -188,9 +208,10 @@ static void __init alchemy_setup_usb(int ctype)
res[1].start = alchemy_ehci_data[ctype][1];
res[1].end = res[1].start;
res[1].flags = IORESOURCE_IRQ;
- pdev->name = "au1xxx-ehci";
+ pdev->name = "ehci-platform";
pdev->id = 0;
pdev->dev.dma_mask = &alchemy_ehci_dmamask;
+ pdev->dev.platform_data = &alchemy_ehci_pdata;

if (platform_device_register(pdev))
printk(KERN_INFO "Alchemy USB: cannot add EHCI0\n");
--
1.7.9.5


2012-10-03 15:15:06

by Manuel Lauss

[permalink] [raw]
Subject: Re: [PATCH 07/25] MIPS: Alchemy: use the ehci platform driver

On Wed, Oct 3, 2012 at 5:03 PM, Florian Fainelli <[email protected]> wrote:
> Use the ehci platform driver power_{on,suspend,off} callbacks to perform the
> USB block gate enabling/disabling as what the ehci-au1xxx.c driver does.
>
> Signed-off-by: Florian Fainelli <[email protected]>
> ---
> arch/mips/alchemy/common/platform.c | 23 ++++++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/arch/mips/alchemy/common/platform.c b/arch/mips/alchemy/common/platform.c
> index c0f3ce6..57335a2 100644
> --- a/arch/mips/alchemy/common/platform.c
> +++ b/arch/mips/alchemy/common/platform.c
> @@ -17,6 +17,7 @@
> #include <linux/platform_device.h>
> #include <linux/serial_8250.h>
> #include <linux/slab.h>
> +#include <linux/usb/ehci_pdriver.h>
>
> #include <asm/mach-au1x00/au1000.h>
> #include <asm/mach-au1x00/au1xxx_dbdma.h>
> @@ -122,6 +123,25 @@ static void __init alchemy_setup_uarts(int ctype)
> static u64 alchemy_ohci_dmamask = DMA_BIT_MASK(32);
> static u64 __maybe_unused alchemy_ehci_dmamask = DMA_BIT_MASK(32);
>
> +/* Power on callback for the ehci platform driver */
> +static int alchemy_ehci_power_on(struct platform_device *pdev)
> +{
> + return alchemy_usb_control(ALCHEMY_USB_EHCI0, 1);
> +}
> +
> +/* Power off/suspend callback for the ehci platform driver */
> +static void alchemy_ehci_power_off(struct platform_device *pdev)
> +{
> + alchemy_usb_control(ALCHEMY_USB_EHCI0, 0);
> +}
> +
> +static struct usb_ehci_pdata alchemy_ehci_pdata = {
> + .need_io_watchdog = 0,

This member doesn't exist.

Manuel

2012-10-03 15:21:18

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH 07/25] MIPS: Alchemy: use the ehci platform driver

On Wednesday 03 October 2012 17:14:21 Manuel Lauss wrote:
> On Wed, Oct 3, 2012 at 5:03 PM, Florian Fainelli <[email protected]> wrote:
> > Use the ehci platform driver power_{on,suspend,off} callbacks to perform
the
> > USB block gate enabling/disabling as what the ehci-au1xxx.c driver does.
> >
> > Signed-off-by: Florian Fainelli <[email protected]>
> > ---
> > arch/mips/alchemy/common/platform.c | 23 ++++++++++++++++++++++-
> > 1 file changed, 22 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/mips/alchemy/common/platform.c
b/arch/mips/alchemy/common/platform.c
> > index c0f3ce6..57335a2 100644
> > --- a/arch/mips/alchemy/common/platform.c
> > +++ b/arch/mips/alchemy/common/platform.c
> > @@ -17,6 +17,7 @@
> > #include <linux/platform_device.h>
> > #include <linux/serial_8250.h>
> > #include <linux/slab.h>
> > +#include <linux/usb/ehci_pdriver.h>
> >
> > #include <asm/mach-au1x00/au1000.h>
> > #include <asm/mach-au1x00/au1xxx_dbdma.h>
> > @@ -122,6 +123,25 @@ static void __init alchemy_setup_uarts(int ctype)
> > static u64 alchemy_ohci_dmamask = DMA_BIT_MASK(32);
> > static u64 __maybe_unused alchemy_ehci_dmamask = DMA_BIT_MASK(32);
> >
> > +/* Power on callback for the ehci platform driver */
> > +static int alchemy_ehci_power_on(struct platform_device *pdev)
> > +{
> > + return alchemy_usb_control(ALCHEMY_USB_EHCI0, 1);
> > +}
> > +
> > +/* Power off/suspend callback for the ehci platform driver */
> > +static void alchemy_ehci_power_off(struct platform_device *pdev)
> > +{
> > + alchemy_usb_control(ALCHEMY_USB_EHCI0, 0);
> > +}
> > +
> > +static struct usb_ehci_pdata alchemy_ehci_pdata = {
> > + .need_io_watchdog = 0,
>
> This member doesn't exist.

Thanks to get_maintainers.pl you did not get the patch that adds it, and it
seems like the mailing-list archives did not get it everywhere too, I can
ensure you that's is there, it's actually PATCH 6/25 of this serie.
--
Florian