On Fri, Jan 31, 2014 at 12:15:26PM -0600, Felipe Balbi wrote:
> Hi,
> 
> On Fri, Jan 31, 2014 at 07:12:36PM +0100, Andre Heider wrote:
> > Hi,
> > 
> > On Mon, Jan 13, 2014 at 01:50:09PM -0800, Paul Zimmerman wrote:
> > > The DWC2 driver should now be in good enough shape to move out of
> > > staging. I have stress tested it overnight on RPI running mass
> > > storage and Ethernet transfers in parallel, and for several days
> > > on our proprietary PCI-based platform.
> > > 
> > > Signed-off-by: Paul Zimmerman <pa...@synopsys.com>
> > > ---
> > > v4: Also change directory path in MAINTAINERS
> > > 
> > > Greg,
> > > I believe I have addressed all of the feedback since I last
> > > submitted this. Is there still time to do this before you
> > > close your trees?
> > > 
> > >  MAINTAINERS                               |  2 +-
> > >  drivers/staging/Kconfig                   |  2 --
> > >  drivers/staging/Makefile                  |  1 -
> > >  drivers/staging/dwc2/TODO                 | 33 
> > > -------------------------------
> > >  drivers/usb/Kconfig                       |  2 ++
> > >  drivers/usb/Makefile                      |  1 +
> > >  drivers/{staging => usb}/dwc2/Kconfig     |  0
> > >  drivers/{staging => usb}/dwc2/Makefile    |  0
> > >  drivers/{staging => usb}/dwc2/core.c      |  0
> > >  drivers/{staging => usb}/dwc2/core.h      |  0
> > >  drivers/{staging => usb}/dwc2/core_intr.c |  0
> > >  drivers/{staging => usb}/dwc2/hcd.c       |  0
> > >  drivers/{staging => usb}/dwc2/hcd.h       |  0
> > >  drivers/{staging => usb}/dwc2/hcd_ddma.c  |  0
> > >  drivers/{staging => usb}/dwc2/hcd_intr.c  |  0
> > >  drivers/{staging => usb}/dwc2/hcd_queue.c |  0
> > >  drivers/{staging => usb}/dwc2/hw.h        |  0
> > >  drivers/{staging => usb}/dwc2/pci.c       |  0
> > >  drivers/{staging => usb}/dwc2/platform.c  |  0
> > >  19 files changed, 4 insertions(+), 37 deletions(-)
> > >  delete mode 100644 drivers/staging/dwc2/TODO
> > >  rename drivers/{staging => usb}/dwc2/Kconfig (100%)
> > >  rename drivers/{staging => usb}/dwc2/Makefile (100%)
> > >  rename drivers/{staging => usb}/dwc2/core.c (100%)
> > >  rename drivers/{staging => usb}/dwc2/core.h (100%)
> > >  rename drivers/{staging => usb}/dwc2/core_intr.c (100%)
> > >  rename drivers/{staging => usb}/dwc2/hcd.c (100%)
> > >  rename drivers/{staging => usb}/dwc2/hcd.h (100%)
> > >  rename drivers/{staging => usb}/dwc2/hcd_ddma.c (100%)
> > >  rename drivers/{staging => usb}/dwc2/hcd_intr.c (100%)
> > >  rename drivers/{staging => usb}/dwc2/hcd_queue.c (100%)
> > >  rename drivers/{staging => usb}/dwc2/hw.h (100%)
> > >  rename drivers/{staging => usb}/dwc2/pci.c (100%)
> > >  rename drivers/{staging => usb}/dwc2/platform.c (100%)
> > 
> > this looks just fine, but for whatever reason it breaks sdhci on my rpi.
> > With today's Linus' master the dwc2 controller seems to initialize fine,
> > but I get this upon boot:
> > 
> > [    1.783316] sdhci-bcm2835 20300000.sdhci: sdhci_pltfm_init failed -12
> > [    1.794820] sdhci-bcm2835: probe of 20300000.sdhci failed with error -12
> > 
> > That is:
> > 
> >             struct sdhci_host *sdhci_pltfm_init(struct platform_device 
> > *pdev,
> >                                                     const struct 
> > sdhci_pltfm_data *pdata,
> >                                                     size_t priv_size)
> >             {
> >                     ...
> > 
> >                     iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> >                     if (!iomem) {
> >                             ret = -ENOMEM;
> >                             goto err;
> >                     }
> > 
> >                     ...
> > 
> > So far it's 100% reproducible. No further infos since my root device
> > went away.  Same behavior with bcm2835_defconfig.
> > 
> > Bisecting points to this commit, and if I move this driver back to
> > staging (revert 197ba5f406cc) usb and sdhci are both working properly.
> > 
> > Without the revert, this patch on top...
> > 
> > diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
> > index d01d0d3..eaba547 100644
> > --- a/drivers/usb/dwc2/platform.c
> > +++ b/drivers/usb/dwc2/platform.c
> > @@ -124,6 +124,9 @@ static int dwc2_driver_probe(struct platform_device 
> > *dev)
> >     int retval;
> >     int irq;
> >  
> > +   if (usb_disabled())
> > +           return -ENODEV;
> > +
> >     match = of_match_device(dwc2_of_match_table, &dev->dev);
> >     if (match && match->data) {
> >             params = match->data;
> > 
> > ...and "nousb" in the cmdline (with crashes without the patch), sdhci works
> > again. I don't see any obvious clues, any idea what's going on?
> 
> wait, what ? How can a driver rename cause sdhci to die ? Your error is
> because you don't have that resource as part of your platform_device.
> 
> -ECONFUSED. Have you really bisected it down to Paul's patch ?

This silly move doesn't trigger the sdhci ENOMEM:

diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
index b021c96..f739b80 100644
--- a/arch/arm/boot/dts/bcm2835.dtsi
+++ b/arch/arm/boot/dts/bcm2835.dtsi
@@ -100,6 +100,12 @@
                        status = "disabled";
                };
 
+               usb {
+                       compatible = "brcm,bcm2835-usb";
+                       reg = <0x7e980000 0x10000>;
+                       interrupts = <1 9>;
+               };
+
                sdhci: sdhci {
                        compatible = "brcm,bcm2835-sdhci";
                        reg = <0x7e300000 0x100>;
@@ -107,12 +113,6 @@
                        clocks = <&clk_mmc>;
                        status = "disabled";
                };
-
-               usb {
-                       compatible = "brcm,bcm2835-usb";
-                       reg = <0x7e980000 0x10000>;
-                       interrupts = <1 9>;
-               };
        };
 
        clocks {

Maybe there's some kind of race, or something even messing at the .dtb
at runtime?

Regards,
Andre
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to