public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] pcmcia driver model support [5/5]
@ 2004-08-05 22:32 Adam Belay
  0 siblings, 0 replies; only message in thread
From: Adam Belay @ 2004-08-05 22:32 UTC (permalink / raw)
  To: rmk; +Cc: linux, akpm, rml, linux-kernel, linux-pcmcia

I'm alright with dropping this patch if it creates a potential compatibility
problem with possible 2.6 future *hotplug interfaces, but I do think that it is
rather reasonable and close to whatever the final interface will be.

[PCMCIA] add *hotplug support

This patch allows for hotplug events.  It reports vers_1 information.

--- a/drivers/pcmcia/ds.c	2004-08-05 21:28:48.000000000 +0000
+++ b/drivers/pcmcia/ds.c	2004-08-05 21:34:29.000000000 +0000
@@ -577,6 +577,59 @@
 	up(&s->device_mutex);
 }
 
+#ifdef	CONFIG_HOTPLUG
+
+int pcmcia_bus_hotplug(struct device *pdev, char **envp, int num_envp,
+		 char *buffer, int buffer_size)
+{
+	struct pcmcia_device *dev;
+	char *scratch;
+	int i = 0;
+	int length = 0;
+
+	if (!pdev)
+		return -ENODEV;
+
+	dev = to_pcmcia_device(pdev);
+
+	scratch = buffer;
+
+	/* stuff we want to pass to /sbin/hotplug */
+	envp[i++] = scratch;
+	length += snprintf (scratch, buffer_size - length, "PRODUCT=");
+	for (i = 0; i < dev->vers_1.ns; i++) {
+		length += snprintf(scratch,buffer_size - length, "%s\"%s\"", (i>0) ? "," : "",
+			       dev->vers_1.str+dev->vers_1.ofs[i]);
+	}
+
+	if ((buffer_size - length <= 0) || (i >= num_envp))
+		return -ENOMEM;
+	++length;
+	scratch += length;
+
+	envp [i++] = scratch;
+	length += snprintf (scratch, buffer_size - length, "MANFID=0x%04x,0x%04x",
+			    dev->manfid.manf, dev->manfid.card);
+	if ((buffer_size - length <= 0) || (i >= num_envp))
+		return -ENOMEM;
+	++length;
+	scratch += length;
+
+	envp[i] = 0;
+
+	return 0;
+}
+
+#else /* CONFIG_HOTPLUG */
+
+int pcmcia_bus_hotplug(struct device *pdev, char **envp, int num_envp,
+		 char *buffer, int buffer_size)
+{
+	return -ENODEV;
+}
+
+#endif /* CONFIG_HOTPLUG */
+
 /*======================================================================
 
     These manage a ring buffer of events pending for one user process
@@ -1332,6 +1385,7 @@
 
 struct bus_type pcmcia_bus_type = {
 	.name = "pcmcia",
+	.hotplug = pcmcia_bus_hotplug,
 };
 
 EXPORT_SYMBOL(pcmcia_bus_type);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-08-06  2:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-05 22:32 [PATCH] pcmcia driver model support [5/5] Adam Belay

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox