lkml.org 
[lkml]   [2004]   [Aug]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] pcmcia driver model support [5/5]
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);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 14:04    [W:0.039 / U:0.216 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site