Re: ehci-hcd compile error

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

 



On 01/10/2013 10:28 PM, Alan Stern wrote:
> On Thu, 10 Jan 2013, Felipe Balbi wrote:
> 
>> -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.
> 
> As you point out below, they are already broken.
> 
>>>>>>>  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 :-)
> 
> Yes, I saw that and was going to recommend to him that the conversion 
> should be done before his changes are applied.  :-)
> 
> Roger, I'll send you a patch for ehci-omap.c shortly.  You should base 
> your work on top of it (after testing to make sure that it works okay).
> 
>>>> 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 ?
> 
> Heh.  :-)
> 
> Here's my attempt to convert ehci-mxc.  I don't have any simple way 
> even to compile it.  Please try it out to make sure that it fixes the 
> build problem without introducing any other errors.
> 
> Alan Stern
> 
> 
> 
> Index: usb-3.7/drivers/usb/host/Kconfig
> ===================================================================
> --- usb-3.7.orig/drivers/usb/host/Kconfig
> +++ usb-3.7/drivers/usb/host/Kconfig
> @@ -148,7 +148,7 @@ config USB_EHCI_FSL
>  	  Variation of ARC USB block used in some Freescale chips.
>  
>  config USB_EHCI_MXC
> -	bool "Support for Freescale i.MX on-chip EHCI USB controller"
> +	tristate "Support for Freescale i.MX on-chip EHCI USB controller"
>  	depends on USB_EHCI_HCD && ARCH_MXC
>  	select USB_EHCI_ROOT_HUB_TT
>  	---help---
> Index: usb-3.7/drivers/usb/host/Makefile
> ===================================================================
> --- usb-3.7.orig/drivers/usb/host/Makefile
> +++ usb-3.7/drivers/usb/host/Makefile
> @@ -26,6 +26,7 @@ obj-$(CONFIG_PCI)		+= pci-quirks.o
>  obj-$(CONFIG_USB_EHCI_HCD)	+= ehci-hcd.o
>  obj-$(CONFIG_USB_EHCI_PCI)	+= ehci-pci.o
>  obj-$(CONFIG_USB_EHCI_HCD_PLATFORM)	+= ehci-platform.o
> +obj-$(CONFIG_USB_EHCI_MXC)	+= ehci-mxc.o
>  
>  obj-$(CONFIG_USB_OXU210HP_HCD)	+= oxu210hp-hcd.o
>  obj-$(CONFIG_USB_ISP116X_HCD)	+= isp116x-hcd.o
> Index: usb-3.7/drivers/usb/host/ehci.h
> ===================================================================
> --- usb-3.7.orig/drivers/usb/host/ehci.h
> +++ usb-3.7/drivers/usb/host/ehci.h
> @@ -221,6 +221,8 @@ struct ehci_hcd {			/* one per controlle
>  #ifdef DEBUG
>  	struct dentry		*debug_dir;
>  #endif
> +
> +	unsigned long		priv[0];	/* platform-specific data */

Why can't it be void * ?

Also we need to put a comment there stating that priv must be the last
member in this structure, else it won't work.

cheers,
-roger
--
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