Re: [PATCH v4] Move DWC2 driver out of staging

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <paulz@xxxxxxxxxxxx>
> > > ---
> > > 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 ?

Yeah, I did. Since that confused me too I tried a clean build with the
defconfig and even another compiler I had lying around (4.8.2 and 4.7.2).

All with the same result. And then sdhci works again with "nousb", which
seems consistent but still doesn't make much sense to me.

Regards,
Andre
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux