All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/3] openfirmware: implements hotplug for macio devices
@ 2005-03-01 21:18 Jeffrey Mahoney
  2005-03-02 23:33 ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 2+ messages in thread
From: Jeffrey Mahoney @ 2005-03-01 21:18 UTC (permalink / raw)
  To: Andrew Morton, Linus Torvalds, Linux Kernel Mailing List,
	Benjamin Herrenschmidt

This patch adds the hotplug routine for generating hotplug events when
devices are seen on the macio bus. It uses the attributed created by the
sysfs nodes to generate the hotplug environment vars for userspace.

In order for hotplug to work with macio devices, patches to module-init-tools
and hotplug must be applied. Those patches are available at:

ftp://ftp.suse.com/pub/people/jeffm/linux/macio-hotplug/

Signed-off-by: Jeff Mahoney <jeffm@suse.com>

diff -rupN -X dontdiff linux-2.6.8/drivers/macintosh/macio_asic.c linux-2.6.8.devel/drivers/macintosh/macio_asic.c
--- linux-2.6.8/drivers/macintosh/macio_asic.c	2004-08-14 01:36:45.000000000 -0400
+++ linux-2.6.8.devel/drivers/macintosh/macio_asic.c	2004-09-16 17:12:37.242920008 -0400
@@ -126,11 +126,77 @@ static int macio_device_resume(struct de
 	return 0;
 }
 
+static int macio_hotplug (struct device *dev, char **envp, int num_envp,
+                          char *buffer, int buffer_size)
+{
+	struct macio_dev * macio_dev;
+	struct of_device * of;
+	char *scratch, *compat;
+	int i = 0;
+	int length = 0;
+	int cplen, seen = 0;
+
+	if (!dev)
+		return -ENODEV;
+
+	macio_dev = to_macio_device(dev);
+	if (!macio_dev)
+		return -ENODEV;
+
+	of = &macio_dev->ofdev;
+	scratch = buffer;
+
+	/* stuff we want to pass to /sbin/hotplug */
+	envp[i++] = scratch;
+	length += scnprintf (scratch, buffer_size - length, "OF_NAME=%s",
+	                     of->node->name);
+	if ((buffer_size - length <= 0) || (i >= num_envp))
+		return -ENOMEM;
+	++length;
+	scratch += length;
+
+	envp[i++] = scratch;
+	length += scnprintf (scratch, buffer_size - length, "OF_TYPE=%s",
+	                     of->node->type);
+	if ((buffer_size - length <= 0) || (i >= num_envp))
+		return -ENOMEM;
+	++length;
+	scratch += length;
+
+	envp[i++] = scratch;
+	length += scnprintf (scratch, buffer_size - length,
+	                     "OF_COMPATIBLE=");
+	if ((buffer_size - length <= 0) || (i >= num_envp))
+		return -ENOMEM;
+	++length;
+	scratch += length;
+
+	compat = (char *) get_property(of->node, "compatible", &cplen);
+	while (compat && cplen > 0) {
+		int l;
+		length += scnprintf (scratch, buffer_size - length,
+		                     "%s%s", seen ? "," : "", compat);
+		if ((buffer_size - length <= 0) || (i >= num_envp))
+			return -ENOMEM;
+		length++;
+		scratch += length;
+		l = strlen (compat) + 1;
+		compat += l;
+		cplen -= l;
+		seen++;
+	}
+
+	envp[i] = NULL;
+
+	return 0;
+
+}
 extern struct device_attribute macio_dev_attrs[];
 
 struct bus_type macio_bus_type = {
        .name	= "macio",
        .match	= macio_bus_match,
+       .hotplug = macio_hotplug,
        .suspend	= macio_device_suspend,
        .resume	= macio_device_resume,
        .dev_attrs = macio_dev_attrs,
 };
 
 static int __init macio_bus_driver_init(void)
-- 
Jeff Mahoney
SuSE Labs

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 3/3] openfirmware: implements hotplug for macio devices
  2005-03-01 21:18 [PATCH 3/3] openfirmware: implements hotplug for macio devices Jeffrey Mahoney
@ 2005-03-02 23:33 ` Benjamin Herrenschmidt
  0 siblings, 0 replies; 2+ messages in thread
From: Benjamin Herrenschmidt @ 2005-03-02 23:33 UTC (permalink / raw)
  To: Jeffrey Mahoney; +Cc: Andrew Morton, Linus Torvalds, Linux Kernel Mailing List

On Tue, 2005-03-01 at 16:18 -0500, Jeffrey Mahoney wrote:
> This patch adds the hotplug routine for generating hotplug events when
> devices are seen on the macio bus. It uses the attributed created by the
> sysfs nodes to generate the hotplug environment vars for userspace.
> 
> In order for hotplug to work with macio devices, patches to module-init-tools
> and hotplug must be applied. Those patches are available at:
> 
> ftp://ftp.suse.com/pub/people/jeffm/linux/macio-hotplug/

Ok, looks good too. It would be interesting to convert the media-bay
stuff to use hotplug now too :) But that mean some serious work on swim3
and ide-pmac to make them more hotplug friendly... Not sure it's worth
the pain. The current mecanism actually works, even if it's not pretty,
and mediabay-based machines are a thing of the past.

Ben.



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-03-02 23:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-01 21:18 [PATCH 3/3] openfirmware: implements hotplug for macio devices Jeffrey Mahoney
2005-03-02 23:33 ` Benjamin Herrenschmidt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.