[POWERPC] PS3: Split device setup for static vs. dynamic devices
authorGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Fri, 28 Mar 2008 16:53:38 +0000 (03:53 +1100)
committerPaul Mackerras <paulus@samba.org>
Tue, 1 Apr 2008 09:43:09 +0000 (20:43 +1100)
Split the device setup code in ps3_register_repository_device() in two
routines:
  1. ps3_setup_static_device(), to handle the setup of static devices in the
     PS3 repository, which can be __init,
  2. ps3_setup_dynamic_device(), to handle the setup of storage devices that
     may appear later in the PS3 repository.

This fixes a few section mismatch warnings.

Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/ps3/device-init.c

index 9d251d0..3866deb 100644 (file)
@@ -499,41 +499,14 @@ static int __init ps3_register_graphics_devices(void)
 }
 
 /**
- * ps3_register_repository_device - Register a device from the repositiory info.
- *
+ * ps3_setup_dynamic_device - Setup a dynamic device from the repository
  */
 
-static int ps3_register_repository_device(
-       const struct ps3_repository_device *repo)
+static int ps3_setup_dynamic_device(const struct ps3_repository_device *repo)
 {
        int result;
 
        switch (repo->dev_type) {
-       case PS3_DEV_TYPE_SB_GELIC:
-               result = ps3_setup_gelic_device(repo);
-               if (result) {
-                       pr_debug("%s:%d ps3_setup_gelic_device failed\n",
-                               __func__, __LINE__);
-               }
-               break;
-       case PS3_DEV_TYPE_SB_USB:
-
-               /* Each USB device has both an EHCI and an OHCI HC */
-
-               result = ps3_setup_ehci_device(repo);
-
-               if (result) {
-                       pr_debug("%s:%d ps3_setup_ehci_device failed\n",
-                               __func__, __LINE__);
-               }
-
-               result = ps3_setup_ohci_device(repo);
-
-               if (result) {
-                       pr_debug("%s:%d ps3_setup_ohci_device failed\n",
-                               __func__, __LINE__);
-               }
-               break;
        case PS3_DEV_TYPE_STOR_DISK:
                result = ps3_setup_storage_dev(repo, PS3_MATCH_ID_STOR_DISK);
 
@@ -572,6 +545,48 @@ static int ps3_register_repository_device(
        return result;
 }
 
+/**
+ * ps3_setup_static_device - Setup a static device from the repository
+ */
+
+static int __init ps3_setup_static_device(const struct ps3_repository_device *repo)
+{
+       int result;
+
+       switch (repo->dev_type) {
+       case PS3_DEV_TYPE_SB_GELIC:
+               result = ps3_setup_gelic_device(repo);
+               if (result) {
+                       pr_debug("%s:%d ps3_setup_gelic_device failed\n",
+                               __func__, __LINE__);
+               }
+               break;
+       case PS3_DEV_TYPE_SB_USB:
+
+               /* Each USB device has both an EHCI and an OHCI HC */
+
+               result = ps3_setup_ehci_device(repo);
+
+               if (result) {
+                       pr_debug("%s:%d ps3_setup_ehci_device failed\n",
+                               __func__, __LINE__);
+               }
+
+               result = ps3_setup_ohci_device(repo);
+
+               if (result) {
+                       pr_debug("%s:%d ps3_setup_ohci_device failed\n",
+                               __func__, __LINE__);
+               }
+               break;
+
+       default:
+               return ps3_setup_dynamic_device(repo);
+       }
+
+       return result;
+}
+
 static void ps3_find_and_add_device(u64 bus_id, u64 dev_id)
 {
        struct ps3_repository_device repo;
@@ -601,7 +616,7 @@ found:
                pr_debug("%s:%u: device %lu:%lu found after %u retries\n",
                         __func__, __LINE__, bus_id, dev_id, retries);
 
-       ps3_register_repository_device(&repo);
+       ps3_setup_dynamic_device(&repo);
        return;
 }
 
@@ -905,8 +920,7 @@ static int __init ps3_register_devices(void)
 
        ps3_register_graphics_devices();
 
-       ps3_repository_find_devices(PS3_BUS_TYPE_SB,
-               ps3_register_repository_device);
+       ps3_repository_find_devices(PS3_BUS_TYPE_SB, ps3_setup_static_device);
 
        ps3_register_sound_devices();