PS3 patches for 2.6.26
Subsystems (2)
cover PS3 patches for 2.6.26
Paul and Jeff,
This is a small set of PS3 patches for 2.6.26. Patches 1-5 are ready to apply to the powerpc tree.
Patch 6 for the network driver needs an ACK by Jeff.
[1/6] PS3: Fix unlikely typo in ps3_get_irq [2/6] PS3: Add ps3_get_speid routine
[3/6] PS3: Bootwrapper improvements
[4/6] PS3: Save power in busy loops on halt [5/6] PS3: Sys-manager Wake-on-LAN support [6/6] PS3: Gelic network driver Wake-on-LAN support
-Geoff
PATCH 1/1 PS3: Split device setup for static vs. dynamic devices
From: Geert Uytterhoeven <[email protected]>
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.
---
Hi Paul,
Here is another one for 2.6.26 that Geert just sent me. Please apply.
-Geoff
arch/powerpc/platforms/ps3/device-init.c | 78 ++++++++++++++++++------------- 1 file changed, 46 insertions(+), 32 deletions(-)
arch/powerpc/platforms/ps3/device-init.c +46 -32
@@ -499,41 +499,14 @@ static int __init ps3_register_graphics_ }/** -* 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_devicreturn 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(vps3_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 ();