From: Adam Belay <ambx1@neo.rr.com>

This patch updates file2alias.c to support pnp ids.  It is from Takashi
Iwai <tiwai@suse.de>.



---

 scripts/file2alias.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+)

diff -puN scripts/file2alias.c~pnp-file2alias-update scripts/file2alias.c
--- 25/scripts/file2alias.c~pnp-file2alias-update	2004-01-29 22:40:33.000000000 -0800
+++ 25-akpm/scripts/file2alias.c	2004-01-29 22:40:33.000000000 -0800
@@ -176,6 +176,29 @@ static int do_ccw_entry(const char *file
 	return 1;
 }
 
+/* looks like: "pnp:dD" */
+static int do_pnp_entry(const char *filename,
+			struct pnp_device_id *id, char *alias)
+{
+	sprintf(alias, "pnp:d%s", id->id);
+	return 1;
+}
+
+/* looks like: "pnp:cCdD..." */
+static int do_pnp_card_entry(const char *filename,
+			struct pnp_card_device_id *id, char *alias)
+{
+	int i;
+
+	sprintf(alias, "pnp:c%s", id->id);
+	for (i = 0; i < PNP_MAX_DEVICES; i++) {
+		if (! *id->devs[i].id)
+			break;
+		sprintf(alias + strlen(alias), "d%s", id->devs[i].id);
+	}
+	return 1;
+}
+
 /* Ignore any prefix, eg. v850 prepends _ */
 static inline int sym_is(const char *symbol, const char *name)
 {
@@ -242,6 +265,12 @@ void handle_moddevtable(struct module *m
 	else if (sym_is(symname, "__mod_ccw_device_table"))
 		do_table(symval, sym->st_size, sizeof(struct ccw_device_id),
 			 do_ccw_entry, mod);
+	else if (sym_is(symname, "__mod_pnp_device_table"))
+		do_table(symval, sym->st_size, sizeof(struct pnp_device_id),
+			 do_pnp_entry, mod);
+	else if (sym_is(symname, "__mod_pnp_card_device_table"))
+		do_table(symval, sym->st_size, sizeof(struct pnp_card_device_id),
+			 do_pnp_card_entry, mod);
 }
 
 /* Now add out buffered information to the generated C source */

_