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-01-08 10:30:15 +0000
commitf787ce7f81ebca4bbe558394680bee1cba8e9fe4 (patch)
tree0e9a46980d2919a3d1f5398b2bce0e6fa321b667
parentd38c8fbf810860dac8c7165ffcde649b11c8cfce (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},