aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/mod/file2alias.c
diff options
context:
space:
mode:
authorHaavard Skinnemoen <haavard.skinnemoen@atmel.com>2009-03-27 11:14:38 -0400
committerHaavard Skinnemoen <haavard.skinnemoen@atmel.com>2009-03-27 11:14:38 -0400
commitb92efa9abffc4a634cd2e7a0f81f8aa6310d67c9 (patch)
tree9847508d9b8d4e585f90db4a453bfbc3700c997e /scripts/mod/file2alias.c
parenta16fffdd8eb95ebab7dc22414896fe6493951e0e (diff)
parentbe0ea69674ed95e1e98cb3687a241badc756d228 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into avr32-arch
Diffstat (limited to 'scripts/mod/file2alias.c')
-rw-r--r--scripts/mod/file2alias.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index d4dc222a74f3..a3344285ccf4 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -210,6 +210,7 @@ static void do_usb_table(void *symval, unsigned long size,
210static int do_hid_entry(const char *filename, 210static int do_hid_entry(const char *filename,
211 struct hid_device_id *id, char *alias) 211 struct hid_device_id *id, char *alias)
212{ 212{
213 id->bus = TO_NATIVE(id->bus);
213 id->vendor = TO_NATIVE(id->vendor); 214 id->vendor = TO_NATIVE(id->vendor);
214 id->product = TO_NATIVE(id->product); 215 id->product = TO_NATIVE(id->product);
215 216
@@ -366,11 +367,17 @@ static void do_pnp_device_entry(void *symval, unsigned long size,
366 367
367 for (i = 0; i < count; i++) { 368 for (i = 0; i < count; i++) {
368 const char *id = (char *)devs[i].id; 369 const char *id = (char *)devs[i].id;
370 char acpi_id[sizeof(devs[0].id)];
371 int j;
369 372
370 buf_printf(&mod->dev_table_buf, 373 buf_printf(&mod->dev_table_buf,
371 "MODULE_ALIAS(\"pnp:d%s*\");\n", id); 374 "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
375
376 /* fix broken pnp bus lowercasing */
377 for (j = 0; j < sizeof(acpi_id); j++)
378 acpi_id[j] = toupper(id[j]);
372 buf_printf(&mod->dev_table_buf, 379 buf_printf(&mod->dev_table_buf,
373 "MODULE_ALIAS(\"acpi*:%s:*\");\n", id); 380 "MODULE_ALIAS(\"acpi*:%s:*\");\n", acpi_id);
374 } 381 }
375} 382}
376 383
@@ -416,10 +423,17 @@ static void do_pnp_card_entries(void *symval, unsigned long size,
416 423
417 /* add an individual alias for every device entry */ 424 /* add an individual alias for every device entry */
418 if (!dup) { 425 if (!dup) {
426 char acpi_id[sizeof(card->devs[0].id)];
427 int k;
428
419 buf_printf(&mod->dev_table_buf, 429 buf_printf(&mod->dev_table_buf,
420 "MODULE_ALIAS(\"pnp:d%s*\");\n", id); 430 "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
431
432 /* fix broken pnp bus lowercasing */
433 for (k = 0; k < sizeof(acpi_id); k++)
434 acpi_id[k] = toupper(id[k]);
421 buf_printf(&mod->dev_table_buf, 435 buf_printf(&mod->dev_table_buf,
422 "MODULE_ALIAS(\"acpi*:%s:*\");\n", id); 436 "MODULE_ALIAS(\"acpi*:%s:*\");\n", acpi_id);
423 } 437 }
424 } 438 }
425 } 439 }
@@ -696,6 +710,14 @@ static int do_dmi_entry(const char *filename, struct dmi_system_id *id,
696 strcat(alias, ":"); 710 strcat(alias, ":");
697 return 1; 711 return 1;
698} 712}
713
714static int do_platform_entry(const char *filename,
715 struct platform_device_id *id, char *alias)
716{
717 sprintf(alias, PLATFORM_MODULE_PREFIX "%s", id->name);
718 return 1;
719}
720
699/* Ignore any prefix, eg. some architectures prepend _ */ 721/* Ignore any prefix, eg. some architectures prepend _ */
700static inline int sym_is(const char *symbol, const char *name) 722static inline int sym_is(const char *symbol, const char *name)
701{ 723{
@@ -835,6 +857,10 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
835 do_table(symval, sym->st_size, 857 do_table(symval, sym->st_size,
836 sizeof(struct dmi_system_id), "dmi", 858 sizeof(struct dmi_system_id), "dmi",
837 do_dmi_entry, mod); 859 do_dmi_entry, mod);
860 else if (sym_is(symname, "__mod_platform_device_table"))
861 do_table(symval, sym->st_size,
862 sizeof(struct platform_device_id), "platform",
863 do_platform_entry, mod);
838 free(zeros); 864 free(zeros);
839} 865}
840 866