]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] add ieee1394 module dev table
authorBen Collins <bcollins@debian.org>
Sun, 4 May 2003 04:03:53 +0000 (21:03 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sun, 4 May 2003 04:03:53 +0000 (21:03 -0700)
This adds ieee1394 for module table registration.

include/linux/mod_devicetable.h
scripts/file2alias.c

index 9baa5a4486846808a8d4aad9dcbc920eea286fae..4442b47c8dc2842c980648bd1a4ed0cd7994842b 100644 (file)
@@ -21,6 +21,22 @@ struct pci_device_id {
        kernel_ulong_t driver_data;     /* Data private to the driver */
 };
 
+
+#define IEEE1394_MATCH_VENDOR_ID       0x0001
+#define IEEE1394_MATCH_MODEL_ID                0x0002
+#define IEEE1394_MATCH_SPECIFIER_ID    0x0004
+#define IEEE1394_MATCH_VERSION         0x0008
+
+struct ieee1394_device_id {
+       __u32 match_flags;
+       __u32 vendor_id;
+       __u32 model_id;
+       __u32 specifier_id;
+       __u32 version;
+       kernel_ulong_t driver_data;
+};
+
+
 /*
  * Device table entry for "new style" table-driven USB drivers.
  * User mode code can read these tables to choose which modules to load.
index 113ce6e91075a5b06a1febc6c396b6826698fda9..b2700f747136eb89df9081525f3e2b7798a4191f 100644 (file)
@@ -81,6 +81,29 @@ static int do_usb_entry(const char *filename,
        return 1;
 }
 
+/* Looks like: ieee1394:venNmoNspNverN */
+static int do_ieee1394_entry(const char *filename,
+                            struct ieee1394_device_id *id, char *alias)
+{
+       id->match_flags = TO_NATIVE(id->match_flags);
+       id->vendor_id = TO_NATIVE(id->vendor_id);
+       id->model_id = TO_NATIVE(id->model_id);
+       id->specifier_id = TO_NATIVE(id->specifier_id);
+       id->version = TO_NATIVE(id->version);
+
+       strcpy(alias, "ieee1394:");
+       ADD(alias, "ven", id->match_flags & IEEE1394_MATCH_VENDOR_ID,
+           id->vendor_id);
+       ADD(alias, "mo", id->match_flags & IEEE1394_MATCH_MODEL_ID,
+           id->model_id);
+       ADD(alias, "sp", id->match_flags & IEEE1394_MATCH_SPECIFIER_ID,
+           id->specifier_id);
+       ADD(alias, "ver", id->match_flags & IEEE1394_MATCH_VERSION,
+           id->version);
+
+       return 1;
+}
+
 /* Looks like: pci:vNdNsvNsdNbcNscNiN. */
 static int do_pci_entry(const char *filename,
                        struct pci_device_id *id, char *alias)
@@ -184,6 +207,9 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
        else if (sym_is(symname, "__mod_usb_device_table"))
                do_table(symval, sym->st_size, sizeof(struct usb_device_id),
                         do_usb_entry, mod);
+       else if (sym_is(symname, "__mod_ieee1394_device_table"))
+               do_table(symval, sym->st_size, sizeof(struct ieee1394_device_id),
+                        do_ieee1394_entry, mod);
 }
 
 /* Now add out buffered information to the generated C source */