Re: [PATCH] ps3: don't call ps3_system_bus_driver_register on other platforms

Benjamin Herrenschmidt <[email protected]>
Newsgroups gmane.linux.usb.devel,gmane.linux.ports.ppc64.devel
Message-ID <[email protected]>
On Wed, 2007-02-14 at 16:04 +0900, Ishizaki Kou wrote:
> ps3_system_bus_driver_register is PS3 platform specific function.
> On other platforms, it triggers WARN_ON in kref_get.
> 
> Signed-off-by: Kou Ishizaki <[email protected]>

A bit nasty but that's the price of wanting to have all the bus glues in
one file (I didn't agree but that's what David prefers...)

Acked-by: Benjamin Herrenschmidt <[email protected]>

> ---
> 
> Index: linux-powerpc-git/drivers/usb/host/ehci-hcd.c
> diff -u linux-powerpc-git/drivers/usb/host/ehci-hcd.c:1.1.1.2 linux-powerpc-git/drivers/usb/host/ehci-hcd.c:1.4
> --- linux-powerpc-git/drivers/usb/host/ehci-hcd.c:1.1.1.2	Fri Feb  9 13:44:37 2007
> +++ linux-powerpc-git/drivers/usb/host/ehci-hcd.c	Wed Feb 14 12:30:56 2007
> @@ -42,6 +42,9 @@
>  #include <asm/irq.h>
>  #include <asm/system.h>
>  #include <asm/unaligned.h>
> +#ifdef CONFIG_PPC_PS3
> +#include <asm/firmware.h>
> +#endif
>  
> 
>  /*-------------------------------------------------------------------------*/
> @@ -951,15 +954,18 @@
>  #endif
>  
>  #ifdef PS3_SYSTEM_BUS_DRIVER
> -	retval = ps3_system_bus_driver_register(&PS3_SYSTEM_BUS_DRIVER);
> -	if (retval < 0) {
> +	if (firmware_has_feature(FW_FEATURE_PS3_LV1)) {
> +		retval = ps3_system_bus_driver_register(
> +				&PS3_SYSTEM_BUS_DRIVER);
> +		if (retval < 0) {
>  #ifdef PLATFORM_DRIVER
> -		platform_driver_unregister(&PLATFORM_DRIVER);
> +			platform_driver_unregister(&PLATFORM_DRIVER);
>  #endif
>  #ifdef PCI_DRIVER
> -		pci_unregister_driver(&PCI_DRIVER);
> +			pci_unregister_driver(&PCI_DRIVER);
>  #endif
> -		return retval;
> +			return retval;
> +		}
>  	}
>  #endif
>  
> @@ -976,7 +982,8 @@
>  	pci_unregister_driver(&PCI_DRIVER);
>  #endif
>  #ifdef PS3_SYSTEM_BUS_DRIVER
> -	ps3_system_bus_driver_unregister(&PS3_SYSTEM_BUS_DRIVER);
> +	if (firmware_has_feature(FW_FEATURE_PS3_LV1))
> +		ps3_system_bus_driver_unregister(&PS3_SYSTEM_BUS_DRIVER);
>  #endif
>  }
>  module_exit(ehci_hcd_cleanup);
> Index: linux-powerpc-git/drivers/usb/host/ohci-hcd.c
> diff -u linux-powerpc-git/drivers/usb/host/ohci-hcd.c:1.1.1.4 linux-powerpc-git/drivers/usb/host/ohci-hcd.c:1.2
> --- linux-powerpc-git/drivers/usb/host/ohci-hcd.c:1.1.1.4	Fri Feb  9 13:44:37 2007
> +++ linux-powerpc-git/drivers/usb/host/ohci-hcd.c	Wed Feb 14 12:30:56 2007
> @@ -42,6 +42,9 @@
>  #include <asm/system.h>
>  #include <asm/unaligned.h>
>  #include <asm/byteorder.h>
> +#ifdef CONFIG_PPC_PS3
> +#include <asm/firmware.h>
> +#endif
>  
>  #include "../core/hcd.h"
>  
> @@ -944,9 +947,12 @@
>  		sizeof (struct ed), sizeof (struct td));
>  
>  #ifdef PS3_SYSTEM_BUS_DRIVER
> -	retval = ps3_system_bus_driver_register(&PS3_SYSTEM_BUS_DRIVER);
> -	if (retval < 0)
> -		goto error_ps3;
> +	if (firmware_has_feature(FW_FEATURE_PS3_LV1)) {
> +		retval = ps3_system_bus_driver_register(
> +				&PS3_SYSTEM_BUS_DRIVER);
> +		if (retval < 0)
> +			goto error_ps3;
> +	}
>  #endif
>  
>  #ifdef PLATFORM_DRIVER
> @@ -992,7 +998,8 @@
>   error_platform:
>  #endif
>  #ifdef PS3_SYSTEM_BUS_DRIVER
> -	ps3_system_bus_driver_unregister(&PS3_SYSTEM_BUS_DRIVER);
> +	if (firmware_has_feature(FW_FEATURE_PS3_LV1))
> +		ps3_system_bus_driver_unregister(&PS3_SYSTEM_BUS_DRIVER);
>   error_ps3:
>  #endif
>  	return retval;
> @@ -1014,7 +1021,8 @@
>  	platform_driver_unregister(&PLATFORM_DRIVER);
>  #endif
>  #ifdef PS3_SYSTEM_BUS_DRIVER
> -	ps3_system_bus_driver_unregister(&PS3_SYSTEM_BUS_DRIVER);
> +	if (firmware_has_feature(FW_FEATURE_PS3_LV1))
> +		ps3_system_bus_driver_unregister(&PS3_SYSTEM_BUS_DRIVER);
>  #endif
>  }
>  module_exit(ohci_hcd_mod_exit);
> _______________________________________________
> Linuxppc-dev mailing list
> [email protected]
> https://ozlabs.org/mailman/listinfo/linuxppc-dev


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.