[PATCH] ps3: don't call ps3_system_bus_driver_register on other platforms
Ishizaki Kou
kou.ishizaki at toshiba.co.jp
Wed Feb 14 18:04:17 EST 2007
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 at toshiba.co.jp>
---
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);
More information about the Linuxppc-dev
mailing list