Add Amiga Zorro bus modalias support Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> --- drivers/net/a2065.c | 1 + drivers/net/ariadne.c | 1 + drivers/net/hydra.c | 1 + drivers/net/zorro8390.c | 1 + drivers/scsi/zorro7xx.c | 1 + drivers/video/cirrusfb.c | 1 + drivers/video/fm2fb.c | 1 + drivers/zorro/zorro-sysfs.c | 11 +++++++++++ include/linux/mod_devicetable.h | 8 ++++++++ include/linux/zorro.h | 13 +------------ scripts/mod/file2alias.c | 15 +++++++++++++++ 11 files changed, 42 insertions(+), 12 deletions(-) --- a/drivers/net/a2065.c +++ b/drivers/net/a2065.c @@ -708,6 +708,7 @@ static struct zorro_device_id a2065_zorr { ZORRO_PROD_AMERISTAR_A2065 }, { 0 } }; +MODULE_DEVICE_TABLE(zorro, a2065_zorro_tbl); static struct zorro_driver a2065_driver = { .name = "a2065", --- a/drivers/net/ariadne.c +++ b/drivers/net/ariadne.c @@ -148,6 +148,7 @@ static struct zorro_device_id ariadne_zo { ZORRO_PROD_VILLAGE_TRONIC_ARIADNE }, { 0 } }; +MODULE_DEVICE_TABLE(zorro, ariadne_zorro_tbl); static struct zorro_driver ariadne_driver = { .name = "ariadne", --- a/drivers/net/hydra.c +++ b/drivers/net/hydra.c @@ -72,6 +72,7 @@ static struct zorro_device_id hydra_zorr { ZORRO_PROD_HYDRA_SYSTEMS_AMIGANET }, { 0 } }; +MODULE_DEVICE_TABLE(zorro, hydra_zorro_tbl); static struct zorro_driver hydra_driver = { .name = "hydra", --- a/drivers/net/zorro8390.c +++ b/drivers/net/zorro8390.c @@ -102,6 +102,7 @@ static struct zorro_device_id zorro8390_ { ZORRO_PROD_INDIVIDUAL_COMPUTERS_X_SURF, }, { 0 } }; +MODULE_DEVICE_TABLE(zorro, zorro8390_zorro_tbl); static struct zorro_driver zorro8390_driver = { .name = "zorro8390", --- a/drivers/scsi/zorro7xx.c +++ b/drivers/scsi/zorro7xx.c @@ -65,6 +65,7 @@ static struct zorro_device_id zorro7xx_z }, { 0 } }; +MODULE_DEVICE_TABLE(zorro, zorro7xx_zorro_tbl); static int __devinit zorro7xx_init_one(struct zorro_dev *z, const struct zorro_device_id *ent) --- a/drivers/video/cirrusfb.c +++ b/drivers/video/cirrusfb.c @@ -305,6 +305,7 @@ static const struct zorro_device_id cirr }, { 0 } }; +MODULE_DEVICE_TABLE(zorro, cirrusfb_zorro_table); static const struct { zorro_id id2; --- a/drivers/video/fm2fb.c +++ b/drivers/video/fm2fb.c @@ -217,6 +217,7 @@ static struct zorro_device_id fm2fb_devi { ZORRO_PROD_HELFRICH_RAINBOW_II }, { 0 } }; +MODULE_DEVICE_TABLE(zorro, fm2fb_devices); static struct zorro_driver fm2fb_driver = { .name = "fm2fb", --- a/drivers/zorro/zorro-sysfs.c +++ b/drivers/zorro/zorro-sysfs.c @@ -84,6 +84,16 @@ static struct bin_attribute zorro_config .read = zorro_read_config, }; +static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct zorro_dev *z = to_zorro_dev(dev); + + return sprintf(buf, "zorro:i%08X\n", z->id); +} + +static DEVICE_ATTR(modalias, S_IRUGO, modalias_show, NULL); + void zorro_create_sysfs_dev_files(struct zorro_dev *z) { struct device *dev = &z->dev; @@ -95,6 +105,7 @@ void zorro_create_sysfs_dev_files(struct device_create_file(dev, &dev_attr_slotaddr); device_create_file(dev, &dev_attr_slotsize); device_create_file(dev, &dev_attr_resource); + device_create_file(dev, &dev_attr_modalias); sysfs_create_bin_file(&dev->kobj, &zorro_config_attr); } --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -333,4 +333,12 @@ struct parisc_device_id { #define PA_HVERSION_ANY_ID 0xffff #define PA_SVERSION_ANY_ID 0xffffffff + +struct zorro_device_id { + __u32 id; /* Device ID or ZORRO_WILDCARD */ + kernel_ulong_t driver_data; /* Data private to the driver */ +}; + +#define ZORRO_WILDCARD (0xffffffff) /* not official */ + #endif /* LINUX_MOD_DEVICETABLE_H */ --- a/include/linux/zorro.h +++ b/include/linux/zorro.h @@ -38,8 +38,6 @@ typedef __u32 zorro_id; -#define ZORRO_WILDCARD (0xffffffff) /* not official */ - /* Include the ID list */ #include <linux/zorro_ids.h> @@ -116,6 +114,7 @@ struct ConfigDev { #include <linux/init.h> #include <linux/ioport.h> +#include <linux/mod_devicetable.h> #include <asm/zorro.h> @@ -155,16 +154,6 @@ extern struct bus_type zorro_bus_type; /* - * Zorro device IDs - */ - -struct zorro_device_id { - zorro_id id; /* Device ID or ZORRO_WILDCARD */ - unsigned long driver_data; /* Data private to the driver */ -}; - - - /* * Zorro device drivers */ --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -390,6 +390,7 @@ static int do_vio_entry(const char *file static int do_i2c_entry(const char *filename, struct i2c_device_id *i2c, char *alias) { + i2c->id = TO_NATIVE(i2c->id); strcpy(alias, "i2c:"); ADD(alias, "id", 1, i2c->id); return 1; @@ -476,6 +477,16 @@ static int do_parisc_entry(const char *f return 1; } +/* Looks like: zorro:iN. */ +static int do_zorro_entry(const char *filename, struct zorro_device_id *id, + char *alias) +{ + id->id = TO_NATIVE(id->id); + strcpy(alias, "zorro:"); + ADD(alias, "i", id->id != ZORRO_WILDCARD, id->id); + return 1; +} + /* Ignore any prefix, eg. v850 prepends _ */ static inline int sym_is(const char *symbol, const char *name) { @@ -587,6 +598,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_zorro_device_table")) + do_table(symval, sym->st_size, + sizeof(struct zorro_device_id), "zorro", + do_zorro_entry, mod); } /* Now add out buffered information to the generated C source */ Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds - To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html