ipmi: Remove platform driver overrides and use the id_table
authorCorey Minyard <cminyard@mvista.com>
Thu, 30 Aug 2018 19:36:09 +0000 (14:36 -0500)
committerCorey Minyard <cminyard@mvista.com>
Tue, 18 Sep 2018 21:15:33 +0000 (16:15 -0500)
The IPMI DMI code was adding platform overrides, which is not
really an ideal solution.  Switch to using the id_table in
the drivers to identify the devices.

Signed-off-by: Corey Minyard <cminyard@mvista.com>
drivers/char/ipmi/ipmi_dmi.c
drivers/char/ipmi/ipmi_si_platform.c
drivers/char/ipmi/ipmi_ssif.c

index 8e0c786..2498804 100644 (file)
@@ -44,7 +44,7 @@ static void __init dmi_add_platform_ipmi(unsigned long base_addr,
        unsigned int num_r = 1, size;
        struct property_entry p[5];
        unsigned int pidx = 0;
-       char *name, *override;
+       char *name;
        int rv;
        enum si_type si_type;
        struct ipmi_dmi_info *info;
@@ -52,11 +52,9 @@ static void __init dmi_add_platform_ipmi(unsigned long base_addr,
        memset(p, 0, sizeof(p));
 
        name = "dmi-ipmi-si";
-       override = "ipmi_si";
        switch (type) {
        case IPMI_DMI_TYPE_SSIF:
                name = "dmi-ipmi-ssif";
-               override = "ipmi_ssif";
                offset = 1;
                size = 1;
                si_type = SI_TYPE_INVALID;
@@ -101,10 +99,6 @@ static void __init dmi_add_platform_ipmi(unsigned long base_addr,
                pr_err("Error allocation IPMI platform device\n");
                return;
        }
-       pdev->driver_override = kasprintf(GFP_KERNEL, "%s",
-                                         override);
-       if (!pdev->driver_override)
-               goto err;
 
        if (type == IPMI_DMI_TYPE_SSIF) {
                p[pidx++] = PROPERTY_ENTRY_U16("i2c-addr", base_addr);
index 999fba2..15cf819 100644 (file)
@@ -419,6 +419,11 @@ static int ipmi_remove(struct platform_device *pdev)
        return ipmi_si_remove_by_dev(&pdev->dev);
 }
 
+static const struct platform_device_id si_plat_ids[] = {
+    { "dmi-ipmi-si", 0 },
+    { }
+};
+
 struct platform_driver ipmi_platform_driver = {
        .driver = {
                .name = DEVICE_NAME,
@@ -427,6 +432,7 @@ struct platform_driver ipmi_platform_driver = {
        },
        .probe          = ipmi_probe,
        .remove         = ipmi_remove,
+       .id_table       = si_plat_ids
 };
 
 void ipmi_si_platform_init(void)
index 1ba787b..764d305 100644 (file)
@@ -1844,12 +1844,18 @@ static int ssif_platform_remove(struct platform_device *dev)
        return 0;
 }
 
+static const struct platform_device_id ssif_plat_ids[] = {
+    { "dmi-ipmi-ssif", 0 },
+    { }
+};
+
 static struct platform_driver ipmi_driver = {
        .driver = {
                .name = DEVICE_NAME,
        },
        .probe          = ssif_platform_probe,
        .remove         = ssif_platform_remove,
+       .id_table       = ssif_plat_ids
 };
 
 static int init_ipmi_ssif(void)