Re: [PATCH 13/14] powerpc: add ps3 platform system bus support
From: Olaf Hering <hidden>
Date: 2007-04-30 15:58:29
On Mon, Apr 30, Geoff Levand wrote:
quoted
The generated modalias files do not match anything.Module support is still todo. I am just now started on it. David Woodhouse sent a few patches, but I just merged them in without testing.
This is my version, compile tested. ps3fb calls into ps3av. ps3av can be a module, but it does not force ps3fb to be a module as well. Maybe this can be enforced via some Kconfig tweaks. --- arch/powerpc/platforms/ps3/system-bus.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-)
--- a/arch/powerpc/platforms/ps3/system-bus.c
+++ b/arch/powerpc/platforms/ps3/system-bus.c@@ -167,6 +167,30 @@ static int ps3_system_bus_remove(struct return 0; } +static const char *ps3_system_bus_modalias(enum ps3_match_id match_id) +{ + const char *p; + switch (match_id) { + case PS3_MATCH_ID_EHCI: + p = "ps3-ehci"; + break; + case PS3_MATCH_ID_OHCI: + p = "ps3-ohci"; + break; + case PS3_MATCH_ID_GELIC: + p = "gelic_net"; + break; + case PS3_MATCH_ID_AV_SETTINGS: + p = "ps3av"; + break; + case PS3_MATCH_ID_SYSTEM_MANAGER: + default: + p = "unknown"; + break; + } + return p; +} + static int ps3_system_bus_uevent(struct device *_dev, char **envp, int num_envp, char *buffer, int buffer_size) {
@@ -174,8 +198,8 @@ static int ps3_system_bus_uevent(struct int i=0, length = 0; if (add_uevent_var(envp, num_envp, &i, buffer, buffer_size, - &length, "MODALIAS=ps3:%d", - dev->match_id)) + &length, "MODALIAS=%s", + ps3_system_bus_modalias(dev->match_id))) return -ENOMEM; envp[i] = NULL;
@@ -186,7 +210,7 @@ static ssize_t modalias_show(struct devi char *buf) { struct ps3_system_bus_device *dev = to_ps3_system_bus_device(_dev); - int len = snprintf(buf, PAGE_SIZE, "ps3:%d\n", dev->match_id); + int len = snprintf(buf, PAGE_SIZE, "%s\n", ps3_system_bus_modalias(dev->match_id)); return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; }