Re: ehci-hcd compile error

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

 



-ENOROGER :-p

On Thu, Jan 10, 2013 at 08:23:56PM +0200, Felipe Balbi wrote:
> Hi
> 
> On Thu, Jan 10, 2013 at 12:01:09PM -0500, Alan Stern wrote:
> > On Thu, 10 Jan 2013, Felipe Balbi wrote:
> > 
> > > Hi,
> > > 
> > > On Thu, Jan 10, 2013 at 10:36:27AM -0500, Alan Stern wrote:
> > > > On Thu, 10 Jan 2013, Felipe Balbi wrote:
> > > > 
> > > > > Hi Alan,
> > > > > 
> > > > > with v3.8-rc3, ehci-hcd fails to compile for ARM if I use allmodconfig:
> > > > > 
> > > > > drivers/usb/host/ehci-hcd.c:1285:0: warning: "PLATFORM_DRIVER" redefined [enabled by default]
> > > > > drivers/usb/host/ehci-hcd.c:1255:0: note: this is the location of the previous definition
> > > > > drivers/usb/host/ehci-mxc.c:280:31: warning: 'ehci_mxc_driver' defined but not used [-Wunused-variable]
> > > > > drivers/usb/host/ehci-hcd.c:1285:0: warning: "PLATFORM_DRIVER" redefined [enabled by default]
> > > > > drivers/usb/host/ehci-hcd.c:1255:0: note: this is the location of the previous definition
> > > > > 
> > > > > Looks like the recent ARM multi-arch patches didn't take into account
> > > > > EHCI-hcd.
> > > > 
> > > > Do you know why this problem didn't occur in 3.6-rc2?  I don't see any 
> > > > changes in -rc3 that would account for it (although I didn't look 
> > > > terribly thoroughly).
> > > 
> > > It's probably there, I just didn't look at it either :-)
> > 
> > It seems clear that CONFIG_EHCI_HCD_PLATFORM needs to be mutually 
> > exclusive with all the old-style drivers, in order to prevent this sort 
> > of conflict.  I just don't see why it never came up before...
> 
> you can't do that as you will break ARM single zImage builds.
> 
> > > > >  Now it becomes easy to see why giving ehci its own
> > > > > platform_device/driver would've been a lot easier ;-)
> > > > 
> > > > Not at all.  We merely need to finish the conversion that I started.  
> > > > It should be pretty easy to convert ehci-mxc over to the new scheme.
> > > > I don't have time to do it right now, but soon...
> > > 
> > > ehci-mxc isn't the only one redefining PLATFORM_DRIVER. All of below are
> > > potential offenders:
> > > 
> > > drivers/usb/host/ehci-hcd.c:#define	PLATFORM_DRIVER		ehci_fsl_driver
> > > drivers/usb/host/ehci-hcd.c:#define PLATFORM_DRIVER		ehci_mxc_driver
> > > drivers/usb/host/ehci-hcd.c:#define PLATFORM_DRIVER		ehci_hcd_sh_driver
> > > drivers/usb/host/ehci-hcd.c:#define        PLATFORM_DRIVER         ehci_hcd_omap_driver
> > > drivers/usb/host/ehci-hcd.c:#define	PLATFORM_DRIVER		ehci_orion_driver
> > > drivers/usb/host/ehci-hcd.c:#define	PLATFORM_DRIVER		ehci_hcd_w90x900_driver
> > > drivers/usb/host/ehci-hcd.c:#define	PLATFORM_DRIVER		ehci_atmel_driver
> > > drivers/usb/host/ehci-hcd.c:#define PLATFORM_DRIVER		ehci_octeon_driver
> > > drivers/usb/host/ehci-hcd.c:#define	PLATFORM_DRIVER		vt8500_ehci_driver
> > > drivers/usb/host/ehci-hcd.c:#define PLATFORM_DRIVER		spear_ehci_hcd_driver
> > > drivers/usb/host/ehci-hcd.c:#define PLATFORM_DRIVER		ehci_msm_driver
> > > drivers/usb/host/ehci-hcd.c:#define	PLATFORM_DRIVER		ehci_hcd_tilegx_driver
> > > drivers/usb/host/ehci-hcd.c:#define	PLATFORM_DRIVER		ehci_hcd_msp_driver
> > > drivers/usb/host/ehci-hcd.c:#define PLATFORM_DRIVER		tegra_ehci_driver
> > > drivers/usb/host/ehci-hcd.c:#define PLATFORM_DRIVER		s5p_ehci_driver
> > > drivers/usb/host/ehci-hcd.c:#define PLATFORM_DRIVER		ehci_grlib_driver
> > > drivers/usb/host/ehci-hcd.c:#define        PLATFORM_DRIVER         ehci_mv_driver
> > > drivers/usb/host/ehci-hcd.c:#define	PLATFORM_DRIVER		ehci_hcd_sead3_driver
> > 
> > Yes; those all are old-style drivers.  Most of them can be converted to
> > the new scheme with relatively little effort; a few will require more
> > work.
> > 
> > In fact, the only drivers that _have_ been converted so far are 
> > ehci-pci, chipidea, and ehci-platform.
> 
> Fair enough... Roger Quadros (now in Cc) can probably help converting
> ehci-omap to the new scheme if you're willing to provide your review :-)
> 
> > > By adding a platform_device to struct ehci-hcd.c we wouldn't need all of
> > > those defines.
> > 
> > And indeed, each time a driver is converted to the new scheme, its 
> > #define gets removed.
> 
> good, then I withdraw my previous comment :-)
> 
> > > Also note that not all of them will be able to simply use
> > > ehci-platform.c. OMAP, for instance, needs to reimplement parts of
> > > ehci_hub_control() due to silicon erratas (we need to reparent a clock
> > > at a specific spot during bus suspend), this means we will always have,
> > > at a minimum, ehci-omap.c. Tegra has other silicon erratas on and
> > > reimplements other ehci functions and so forth.
> > 
> > That's right.  But a driver can follow the new scheme without using 
> > ehci-platform.c.  For example, neither ehci-pci.c nor chipidea/host.c 
> > does.
> 
> that's good :-)
> 
> > > But fair enough, I just want to see this fixed but, like yourself, no
> > > time to look at that :-s
> > 
> > I can fix up ehci-mxc easily enough.  Don't all those other drivers
> > cause similar build problems, though?
> 
> they either already do, or will eventually.
> 
> > It wouldn't hurt to add some restrictions to the Kconfig entry for 
> > CONFIG_USB_EHCI_HCD_PLATFORM too.
> 
> Ok, maybe add a #warn "fix your freaking driver dude!!" to the
> non-converted ones would make people help ?
> 
> -- 
> balbi



-- 
balbi

Attachment: signature.asc
Description: Digital signature


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

  Powered by Linux