[POWERPC] ps3: don't call ps3_system_bus_driver_register on other platforms
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 <kou.ishizaki@toshiba.co.jp> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
89680a8c3c
Коммит
c243f983a5
|
@ -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 @@ static int __init ehci_hcd_init(void)
|
|||
#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 @@ static void __exit ehci_hcd_cleanup(void)
|
|||
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);
|
||||
|
|
|
@ -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 @@ static int __init ohci_hcd_mod_init(void)
|
|||
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 @@ static int __init ohci_hcd_mod_init(void)
|
|||
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 @@ static void __exit ohci_hcd_mod_exit(void)
|
|||
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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче