diff options
Diffstat (limited to 'packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt')
-rw-r--r-- | packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt b/packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt new file mode 100644 index 0000000000..93859bdebd --- /dev/null +++ b/packages/linux/linux-efika-2.6.20/0016-macintosh-Use-the-new-of_device-common-uevent-handler.txt @@ -0,0 +1,130 @@ +From 2507b27c0841752a6f419439896fcb089fa4a5ba Mon Sep 17 00:00:00 2001 +From: Sylvain Munaut <tnt@246tNt.com> +Date: Sat, 23 Dec 2006 23:13:56 +0100 +Subject: [PATCH] [PATCH] macintosh: Use the new of_device common uevent handler + +The generation of the uevent is now common to all bus using +of_device. + +Signed-off-by: Sylvain Munaut <tnt@246tNt.com> +--- + drivers/macintosh/macio_asic.c | 98 +--------------------------------------- + 1 files changed, 1 insertions(+), 97 deletions(-) + +diff --git a/drivers/macintosh/macio_asic.c b/drivers/macintosh/macio_asic.c +index d562160..e851266 100644 +--- a/drivers/macintosh/macio_asic.c ++++ b/drivers/macintosh/macio_asic.c +@@ -134,108 +134,12 @@ static int macio_device_resume(struct device * dev) + return 0; + } + +-static int macio_uevent(struct device *dev, char **envp, int num_envp, +- char *buffer, int buffer_size) +-{ +- struct macio_dev * macio_dev; +- struct of_device * of; +- char *scratch; +- const char *compat, *compat2; +- +- int i = 0; +- int length, cplen, cplen2, seen = 0; +- +- if (!dev) +- return -ENODEV; +- +- macio_dev = to_macio_device(dev); +- if (!macio_dev) +- return -ENODEV; +- +- of = &macio_dev->ofdev; +- +- /* stuff we want to pass to /sbin/hotplug */ +- envp[i++] = scratch = buffer; +- length = scnprintf (scratch, buffer_size, "OF_NAME=%s", of->node->name); +- ++length; +- buffer_size -= length; +- if ((buffer_size <= 0) || (i >= num_envp)) +- return -ENOMEM; +- scratch += length; +- +- envp[i++] = scratch; +- length = scnprintf (scratch, buffer_size, "OF_TYPE=%s", of->node->type); +- ++length; +- buffer_size -= length; +- if ((buffer_size <= 0) || (i >= num_envp)) +- return -ENOMEM; +- scratch += length; +- +- /* Since the compatible field can contain pretty much anything +- * it's not really legal to split it out with commas. We split it +- * up using a number of environment variables instead. */ +- +- compat = get_property(of->node, "compatible", &cplen); +- compat2 = compat; +- cplen2= cplen; +- while (compat && cplen > 0) { +- envp[i++] = scratch; +- length = scnprintf (scratch, buffer_size, +- "OF_COMPATIBLE_%d=%s", seen, compat); +- ++length; +- buffer_size -= length; +- if ((buffer_size <= 0) || (i >= num_envp)) +- return -ENOMEM; +- scratch += length; +- length = strlen (compat) + 1; +- compat += length; +- cplen -= length; +- seen++; +- } +- +- envp[i++] = scratch; +- length = scnprintf (scratch, buffer_size, "OF_COMPATIBLE_N=%d", seen); +- ++length; +- buffer_size -= length; +- if ((buffer_size <= 0) || (i >= num_envp)) +- return -ENOMEM; +- scratch += length; +- +- envp[i++] = scratch; +- length = scnprintf (scratch, buffer_size, "MODALIAS=of:N%sT%s", +- of->node->name, of->node->type); +- /* overwrite '\0' */ +- buffer_size -= length; +- if ((buffer_size <= 0) || (i >= num_envp)) +- return -ENOMEM; +- scratch += length; +- +- if (!compat2) { +- compat2 = ""; +- cplen2 = 1; +- } +- while (cplen2 > 0) { +- length = snprintf (scratch, buffer_size, "C%s", compat2); +- buffer_size -= length; +- if (buffer_size <= 0) +- return -ENOMEM; +- scratch += length; +- length = strlen (compat2) + 1; +- compat2 += length; +- cplen2 -= length; +- } +- +- envp[i] = NULL; +- +- return 0; +-} +- + extern struct device_attribute macio_dev_attrs[]; + + struct bus_type macio_bus_type = { + .name = "macio", + .match = macio_bus_match, +- .uevent = macio_uevent, ++ .uevent = of_device_uevent, + .probe = macio_device_probe, + .remove = macio_device_remove, + .shutdown = macio_device_shutdown, +-- +1.4.4.2 + |