This makes the build system magic generate the appropriate modaliases for MODULE_DEVICE_TABLE(ssb, ...) Signed-off-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> Signed-off-by: Michael Buesch <mb@xxxxxxxxx> Index: ssb-merge-new/include/linux/mod_devicetable.h =================================================================== --- ssb-merge-new.orig/include/linux/mod_devicetable.h 2007-08-11 01:57:43.000000000 +0200 +++ ssb-merge-new/include/linux/mod_devicetable.h 2007-08-11 20:26:09.000000000 +0200 @@ -339,4 +339,19 @@ struct parisc_device_id { #define PA_HVERSION_ANY_ID 0xffff #define PA_SVERSION_ANY_ID 0xffffffff +/* SSB core, see drivers/ssb/ */ +struct ssb_device_id { + __u16 vendor; + __u16 coreid; + __u8 revision; +}; +#define SSB_DEVICE(_vendor, _coreid, _revision) \ + { .vendor = _vendor, .coreid = _coreid, .revision = _revision, } +#define SSB_DEVTABLE_END \ + { 0, }, + +#define SSB_ANY_VENDOR 0xFFFF +#define SSB_ANY_ID 0xFFFF +#define SSB_ANY_REV 0xFF + #endif /* LINUX_MOD_DEVICETABLE_H */ Index: ssb-merge-new/include/linux/ssb/ssb.h =================================================================== --- ssb-merge-new.orig/include/linux/ssb/ssb.h 2007-08-11 01:57:44.000000000 +0200 +++ ssb-merge-new/include/linux/ssb/ssb.h 2007-08-11 20:26:09.000000000 +0200 @@ -6,6 +6,7 @@ #include <linux/types.h> #include <linux/spinlock.h> #include <linux/pci.h> +#include <linux/mod_devicetable.h> #include <linux/ssb/ssb_regs.h> @@ -153,20 +154,6 @@ struct ssb_bus_ops { /* Vendor-ID values */ #define SSB_VENDOR_BROADCOM 0x4243 -struct ssb_device_id { - u16 vendor; - u16 coreid; - u8 revision; -}; -#define SSB_DEVICE(_vendor, _coreid, _revision) \ - { .vendor = _vendor, .coreid = _coreid, .revision = _revision, } -#define SSB_DEVTABLE_END \ - { 0, }, - -#define SSB_ANY_VENDOR 0xFFFF -#define SSB_ANY_ID 0xFFFF -#define SSB_ANY_REV 0xFF - /* Some kernel subsystems poke with dev->drvdata, so we must use the * following ugly workaround to get from struct device to struct ssb_device */ struct __ssb_dev_wrapper { Index: ssb-merge-new/scripts/mod/file2alias.c =================================================================== --- ssb-merge-new.orig/scripts/mod/file2alias.c 2007-08-11 01:57:48.000000000 +0200 +++ ssb-merge-new/scripts/mod/file2alias.c 2007-08-11 20:26:09.000000000 +0200 @@ -484,6 +484,21 @@ static int do_parisc_entry(const char *f return 1; } +/* Looks like: ssb:vNidNrevN. */ +static int do_ssb_entry(const char *filename, + struct ssb_device_id *id, char *alias) +{ + id->vendor = TO_NATIVE(id->vendor); + id->coreid = TO_NATIVE(id->coreid); + id->revision = TO_NATIVE(id->revision); + + strcpy(alias, "ssb:"); + ADD(alias, "v", id->vendor != SSB_ANY_VENDOR, id->vendor); + ADD(alias, "id", id->coreid != SSB_ANY_ID, id->coreid); + ADD(alias, "rev", id->revision != SSB_ANY_REV, id->revision); + return 1; +} + /* Ignore any prefix, eg. v850 prepends _ */ static inline int sym_is(const char *symbol, const char *name) { @@ -599,6 +614,10 @@ void handle_moddevtable(struct module *m do_table(symval, sym->st_size, sizeof(struct parisc_device_id), "parisc", do_parisc_entry, mod); + else if (sym_is(symname, "__mod_ssb_device_table")) + do_table(symval, sym->st_size, + sizeof(struct ssb_device_id), "ssb", + do_ssb_entry, mod); } /* Now add out buffered information to the generated C source */ -- - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html