From 6e9275ea26495089e3e4ab13728f61d659eba6c1 Mon Sep 17 00:00:00 2001 From: hcg Date: Wed, 18 Mar 2009 15:59:08 +0000 Subject: Backport of ps3vram from 2.6.29 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14940 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...rpc-ps3-Add-sub-match-id-modalias-support.patch | 176 +++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 target/linux/ps3/patches-2.6.28/0003-powerpc-ps3-Add-sub-match-id-modalias-support.patch (limited to 'target/linux/ps3/patches-2.6.28/0003-powerpc-ps3-Add-sub-match-id-modalias-support.patch') diff --git a/target/linux/ps3/patches-2.6.28/0003-powerpc-ps3-Add-sub-match-id-modalias-support.patch b/target/linux/ps3/patches-2.6.28/0003-powerpc-ps3-Add-sub-match-id-modalias-support.patch new file mode 100644 index 000000000..5f42184cf --- /dev/null +++ b/target/linux/ps3/patches-2.6.28/0003-powerpc-ps3-Add-sub-match-id-modalias-support.patch @@ -0,0 +1,176 @@ +From 46d01492b2c50791b9b66f9b9154ac8d25acaeb9 Mon Sep 17 00:00:00 2001 +From: Geert Uytterhoeven +Date: Wed, 3 Dec 2008 13:52:21 +0000 +Subject: powerpc/ps3: Add sub-match id modalias support + +commit 059e4938f8b060b10c4352e6c45739473bc73267 ("powerpc/ps3: Add a sub-match +id to ps3_system_bus") forgot to update the module alias support: + - Add the sub-match ids to the module aliases, so udev can distinguish + between different types of sub-devices. + - Rename PS3_MODULE_ALIAS_GRAPHICS to PS3_MODULE_ALIAS_GPU_FB, as ps3fb + binds to the "FB" sub-device. + +Signed-off-by: Geert Uytterhoeven +Signed-off-by: Geoff Levand +Signed-off-by: Paul Mackerras +--- + arch/powerpc/include/asm/ps3.h | 53 ++++++++++++++--------------- + arch/powerpc/platforms/ps3/device-init.c | 4 +- + arch/powerpc/platforms/ps3/system-bus.c | 10 +++-- + drivers/video/ps3fb.c | 6 ++-- + 4 files changed, 37 insertions(+), 36 deletions(-) + +diff --git a/arch/powerpc/include/asm/ps3.h b/arch/powerpc/include/asm/ps3.h +index 4299365..cff30c0 100644 +--- a/arch/powerpc/include/asm/ps3.h ++++ b/arch/powerpc/include/asm/ps3.h +@@ -305,30 +305,34 @@ static inline const char* ps3_result(int result) + /* system bus routines */ + + enum ps3_match_id { +- PS3_MATCH_ID_EHCI = 1, +- PS3_MATCH_ID_OHCI = 2, +- PS3_MATCH_ID_GELIC = 3, +- PS3_MATCH_ID_AV_SETTINGS = 4, +- PS3_MATCH_ID_SYSTEM_MANAGER = 5, +- PS3_MATCH_ID_STOR_DISK = 6, +- PS3_MATCH_ID_STOR_ROM = 7, +- PS3_MATCH_ID_STOR_FLASH = 8, +- PS3_MATCH_ID_SOUND = 9, +- PS3_MATCH_ID_GRAPHICS = 10, +- PS3_MATCH_ID_LPM = 11, ++ PS3_MATCH_ID_EHCI = 1, ++ PS3_MATCH_ID_OHCI = 2, ++ PS3_MATCH_ID_GELIC = 3, ++ PS3_MATCH_ID_AV_SETTINGS = 4, ++ PS3_MATCH_ID_SYSTEM_MANAGER = 5, ++ PS3_MATCH_ID_STOR_DISK = 6, ++ PS3_MATCH_ID_STOR_ROM = 7, ++ PS3_MATCH_ID_STOR_FLASH = 8, ++ PS3_MATCH_ID_SOUND = 9, ++ PS3_MATCH_ID_GPU = 10, ++ PS3_MATCH_ID_LPM = 11, + }; + +-#define PS3_MODULE_ALIAS_EHCI "ps3:1" +-#define PS3_MODULE_ALIAS_OHCI "ps3:2" +-#define PS3_MODULE_ALIAS_GELIC "ps3:3" +-#define PS3_MODULE_ALIAS_AV_SETTINGS "ps3:4" +-#define PS3_MODULE_ALIAS_SYSTEM_MANAGER "ps3:5" +-#define PS3_MODULE_ALIAS_STOR_DISK "ps3:6" +-#define PS3_MODULE_ALIAS_STOR_ROM "ps3:7" +-#define PS3_MODULE_ALIAS_STOR_FLASH "ps3:8" +-#define PS3_MODULE_ALIAS_SOUND "ps3:9" +-#define PS3_MODULE_ALIAS_GRAPHICS "ps3:10" +-#define PS3_MODULE_ALIAS_LPM "ps3:11" ++enum ps3_match_sub_id { ++ PS3_MATCH_SUB_ID_GPU_FB = 1, ++}; ++ ++#define PS3_MODULE_ALIAS_EHCI "ps3:1:0" ++#define PS3_MODULE_ALIAS_OHCI "ps3:2:0" ++#define PS3_MODULE_ALIAS_GELIC "ps3:3:0" ++#define PS3_MODULE_ALIAS_AV_SETTINGS "ps3:4:0" ++#define PS3_MODULE_ALIAS_SYSTEM_MANAGER "ps3:5:0" ++#define PS3_MODULE_ALIAS_STOR_DISK "ps3:6:0" ++#define PS3_MODULE_ALIAS_STOR_ROM "ps3:7:0" ++#define PS3_MODULE_ALIAS_STOR_FLASH "ps3:8:0" ++#define PS3_MODULE_ALIAS_SOUND "ps3:9:0" ++#define PS3_MODULE_ALIAS_GPU_FB "ps3:10:1" ++#define PS3_MODULE_ALIAS_LPM "ps3:11:0" + + enum ps3_system_bus_device_type { + PS3_DEVICE_TYPE_IOC0 = 1, +@@ -337,11 +341,6 @@ enum ps3_system_bus_device_type { + PS3_DEVICE_TYPE_LPM, + }; + +-enum ps3_match_sub_id { +- /* for PS3_MATCH_ID_GRAPHICS */ +- PS3_MATCH_SUB_ID_FB = 1, +-}; +- + /** + * struct ps3_system_bus_device - a device on the system bus + */ +diff --git a/arch/powerpc/platforms/ps3/device-init.c b/arch/powerpc/platforms/ps3/device-init.c +index 43816da..dbc124e 100644 +--- a/arch/powerpc/platforms/ps3/device-init.c ++++ b/arch/powerpc/platforms/ps3/device-init.c +@@ -497,8 +497,8 @@ static int __init ps3_register_graphics_devices(void) + if (!p) + return -ENOMEM; + +- p->dev.match_id = PS3_MATCH_ID_GRAPHICS; +- p->dev.match_sub_id = PS3_MATCH_SUB_ID_FB; ++ p->dev.match_id = PS3_MATCH_ID_GPU; ++ p->dev.match_sub_id = PS3_MATCH_SUB_ID_GPU_FB; + p->dev.dev_type = PS3_DEVICE_TYPE_IOC0; + + result = ps3_system_bus_device_register(&p->dev); +diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c +index 661e9f7..d3da1e6 100644 +--- a/arch/powerpc/platforms/ps3/system-bus.c ++++ b/arch/powerpc/platforms/ps3/system-bus.c +@@ -175,7 +175,7 @@ int ps3_open_hv_device(struct ps3_system_bus_device *dev) + return ps3_open_hv_device_sb(dev); + + case PS3_MATCH_ID_SOUND: +- case PS3_MATCH_ID_GRAPHICS: ++ case PS3_MATCH_ID_GPU: + return ps3_open_hv_device_gpu(dev); + + case PS3_MATCH_ID_AV_SETTINGS: +@@ -213,7 +213,7 @@ int ps3_close_hv_device(struct ps3_system_bus_device *dev) + return ps3_close_hv_device_sb(dev); + + case PS3_MATCH_ID_SOUND: +- case PS3_MATCH_ID_GRAPHICS: ++ case PS3_MATCH_ID_GPU: + return ps3_close_hv_device_gpu(dev); + + case PS3_MATCH_ID_AV_SETTINGS: +@@ -453,7 +453,8 @@ static int ps3_system_bus_uevent(struct device *_dev, struct kobj_uevent_env *en + { + struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); + +- if (add_uevent_var(env, "MODALIAS=ps3:%d", dev->match_id)) ++ if (add_uevent_var(env, "MODALIAS=ps3:%d:%d", dev->match_id, ++ dev->match_sub_id)) + return -ENOMEM; + return 0; + } +@@ -462,7 +463,8 @@ static ssize_t modalias_show(struct device *_dev, struct device_attribute *a, + char *buf) + { + struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); +- int len = snprintf(buf, PAGE_SIZE, "ps3:%d\n", dev->match_id); ++ int len = snprintf(buf, PAGE_SIZE, "ps3:%d:%d\n", dev->match_id, ++ dev->match_sub_id); + + return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; + } +diff --git a/drivers/video/ps3fb.c b/drivers/video/ps3fb.c +index bd3e39b..38ac805 100644 +--- a/drivers/video/ps3fb.c ++++ b/drivers/video/ps3fb.c +@@ -1289,8 +1289,8 @@ static int ps3fb_shutdown(struct ps3_system_bus_device *dev) + } + + static struct ps3_system_bus_driver ps3fb_driver = { +- .match_id = PS3_MATCH_ID_GRAPHICS, +- .match_sub_id = PS3_MATCH_SUB_ID_FB, ++ .match_id = PS3_MATCH_ID_GPU, ++ .match_sub_id = PS3_MATCH_SUB_ID_GPU_FB, + .core.name = DEVICE_NAME, + .core.owner = THIS_MODULE, + .probe = ps3fb_probe, +@@ -1348,4 +1348,4 @@ module_exit(ps3fb_exit); + MODULE_LICENSE("GPL"); + MODULE_DESCRIPTION("PS3 GPU Frame Buffer Driver"); + MODULE_AUTHOR("Sony Computer Entertainment Inc."); +-MODULE_ALIAS(PS3_MODULE_ALIAS_GRAPHICS); ++MODULE_ALIAS(PS3_MODULE_ALIAS_GPU_FB); +-- +1.6.0.4 + -- cgit v1.2.3