Subject: [PATCH v3 1/1] USB: cns3xxx: Add EHCI and OHCI bus glue for cns3xxx SOCs

From: [email-masked] (Anton Vorontsov)
Date: Fri, 26 Nov 2010 21:23:28 +0300

On Fri, Nov 26, 2010 at 09:03:48AM -0800, Greg KH wrote:
[...]
> > > As far as the callbacks are concerned, this looks fine.
> > > 
> > > Acked-by: Alan Stern <[email-masked]>
> > 
> > Thanks Alan!
> > 
> > Greg, should I treat your 'to ack it as well' as 'Acked-by'? :-)
> 
> Yes please:
> 	Acked-by: Greg Kroah-Hartman <[email-masked]>

Thanks!

Lin,

Now that I tried these patches on the real hardware (EV1.3,
silicon ver. 0xA), USB doesn't seem to work for me. FWIW,
I use U-Boot from BSP release 1.0.

Here is how it looks:

ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
cns3xxx-ehci cns3xxx-ehci.0: CNS3XXX EHCI Host Controller
cns3xxx-ehci cns3xxx-ehci.0: new USB bus registered, assigned bus number 1
cns3xxx-ehci cns3xxx-ehci.0: irq 64, io mem 0x82000000
cns3xxx-ehci cns3xxx-ehci.0: USB 0.0 started, EHCI 0.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 0 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
cns3xxx-ohci cns3xxx-ohci.0: CNS3XXX OHCI Host controller
cns3xxx-ohci cns3xxx-ohci.0: new USB bus registered, assigned bus number 2
cns3xxx-ohci cns3xxx-ohci.0: irq 91, io mem 0x88000000
cns3xxx-ohci cns3xxx-ohci.0: init err (00000000 0000)
ohci_hcd: can't start cns3xxx-ohci.0
cns3xxx-ohci cns3xxx-ohci.0: startup error -75
cns3xxx-ohci cns3xxx-ohci.0: USB bus 2 deregistered
cns3xxx-ohci: probe of cns3xxx-ohci.0 failed with error -75

I assume this is somehow related to the old hardware I use,
but please take a look.

I tried this on both 2.6.36 and 2.6.37-rc3. You can find your
patches in this tree

  git://git.infradead.org/users/cbou/linux-cns3xxx.git master

I'll try to investigate (found a small issue already, patch
down below), but if you beat me to it, please send a patch
agaist the cns3xxx tree.

Thanks,

- - - -
ARM: cns3xxx: Make cns3xxx_pwr_soft_rst_force() to actually reset blocks

commit 6eb5d146d4535 ("ARM: cns3xxx: Use IO memory accessors everywhere")
breaks cns3xxx_pwr_soft_rst_force() function, so that it doesn't write
cleared bit into the register.

This patch fixes the issue by adding the necessary __raw_writel().

Signed-off-by: Anton Vorontsov <[email-masked]>
---
 arch/arm/mach-cns3xxx/pm.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-cns3xxx/pm.c b/arch/arm/mach-cns3xxx/pm.c
index 78fbaba..5e57955 100644
--- a/arch/arm/mach-cns3xxx/pm.c
+++ b/arch/arm/mach-cns3xxx/pm.c
@@ -67,6 +67,7 @@ static void cns3xxx_pwr_soft_rst_force(unsigned int block)
 		reg &= ~(block & PM_SOFT_RST_REG_MASK);
 	} else {
 		reg &= ~(block & PM_SOFT_RST_REG_MASK);
+		__raw_writel(reg, PM_SOFT_RST_REG);
 		reg |= (block & PM_SOFT_RST_REG_MASK);
 	}
 
-- 
1.7.0.5