summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2016-09-24 23:38:59 +0100
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2024-03-26 12:09:21 +0000
commit802c8efc2babd56368aacfeef80eb045d49cd4fc (patch)
treef4dd1038ef1c7de9f93c24f173d15cb35cdc61d3
parent9c9fec92524e9b96ac1f82c25f1d4a4efed43fa5 (diff)
module: add iPAQ sleeve device table and module alias support
Add support for iPAQ sleeve device table and module alias support, so that sleeve drivers can be automatically modprobed into the kernel at run time. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r--include/linux/mod_devicetable.h10
-rw-r--r--scripts/mod/devicetable-offsets.c4
-rw-r--r--scripts/mod/file2alias.c11
3 files changed, 25 insertions, 0 deletions
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index f458469c5ce5..26327be36589 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -653,6 +653,16 @@ struct isapnp_device_id {
};
/**
+ * struct ipaq_option_id - iPAQ sleeve option id
+ * @vendor: 16-bit vendor identifier
+ * @device: 16-bit device identifier
+ */
+struct ipaq_option_id {
+ __u16 vendor;
+ __u16 device;
+};
+
+/**
* struct amba_id - identifies a device on an AMBA bus
* @id: The significant bits if the hardware device ID
* @mask: Bitmask specifying which bits of the id field are significant when
diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c
index e91a3c38143b..0dc91c57aa54 100644
--- a/scripts/mod/devicetable-offsets.c
+++ b/scripts/mod/devicetable-offsets.c
@@ -178,6 +178,10 @@ int main(void)
DEVID_FIELD(ipack_device_id, vendor);
DEVID_FIELD(ipack_device_id, device);
+ DEVID(ipaq_option_id);
+ DEVID_FIELD(ipaq_option_id, vendor);
+ DEVID_FIELD(ipaq_option_id, device);
+
DEVID(amba_id);
DEVID_FIELD(amba_id, id);
DEVID_FIELD(amba_id, mask);
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 4829680a0a6d..257d095e6c3a 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -1140,6 +1140,16 @@ static void append_nibble_mask(char **outp,
*outp = p;
}
+/* Looks like: ipaq:vNdN */
+static int do_ipaq_entry(const char *filename, void *symval, char *alias)
+{
+ DEF_FIELD(symval, ipaq_option_id, vendor);
+ DEF_FIELD(symval, ipaq_option_id, device);
+
+ sprintf(alias, "ipaq:v%04Xd%04X", vendor, device);
+ return 1;
+}
+
/*
* looks like: "amba:dN"
*
@@ -1553,6 +1563,7 @@ static const struct devtable devtable[] = {
{"zorro", SIZE_zorro_device_id, do_zorro_entry},
{"isapnp", SIZE_isapnp_device_id, do_isapnp_entry},
{"ipack", SIZE_ipack_device_id, do_ipack_entry},
+ {"ipaq", SIZE_ipaq_option_id, do_ipaq_entry},
{"amba", SIZE_amba_id, do_amba_entry},
{"mipscdmm", SIZE_mips_cdmm_device_id, do_mips_cdmm_entry},
{"x86cpu", SIZE_x86_cpu_id, do_x86cpu_entry},