ipmi_si: Consolidate scanning the platform bus
authorCorey Minyard <cminyard@mvista.com>
Thu, 21 Feb 2019 23:41:47 +0000 (17:41 -0600)
committerCorey Minyard <cminyard@mvista.com>
Fri, 22 Feb 2019 13:12:41 +0000 (07:12 -0600)
The same basic code was in two places.

Signed-off-by: Corey Minyard <cminyard@mvista.com>
drivers/char/ipmi/ipmi_si.h
drivers/char/ipmi/ipmi_si_hardcode.c
drivers/char/ipmi/ipmi_si_hotmod.c
drivers/char/ipmi/ipmi_si_platform.c

index 2ae9ebdfab0daf9032a0ef6a4e1ea464f635b327..357a229c9012d0ce9edd39eb0ab9b97b38904d32 100644 (file)
@@ -29,6 +29,7 @@ void ipmi_si_hotmod_exit(void);
 int ipmi_si_hardcode_match(int addr_space, unsigned long addr);
 void ipmi_si_platform_init(void);
 void ipmi_si_platform_shutdown(void);
+void ipmi_remove_platform_device_by_name(char *name);
 
 extern struct platform_driver ipmi_platform_driver;
 
index 540b0871bff001a475313c208e3a94be8a5155f3..01946cad3d1381ba7eed020544c775ed9a6e3f5f 100644 (file)
@@ -144,23 +144,9 @@ void __init ipmi_hardcode_init(void)
 }
 
 
-static int pdev_match_name(struct device *dev, void *data)
-{
-       struct platform_device *pdev = to_platform_device(dev);
-
-       return strcmp(pdev->name, "hardcode-ipmi-si") == 0;
-}
-
 void ipmi_si_hardcode_exit(void)
 {
-       struct device *dev;
-
-       while ((dev = bus_find_device(&platform_bus_type, NULL, NULL,
-                                     pdev_match_name))) {
-               struct platform_device *pdev = to_platform_device(dev);
-
-               platform_device_unregister(pdev);
-       }
+       ipmi_remove_platform_device_by_name("hardcode-ipmi-si");
 }
 
 /*
index 230b10e7d288a56499739013130d96a98587f119..1433055a970543af762051ad9bf4ac1a3500123f 100644 (file)
@@ -239,21 +239,7 @@ out:
        return rv;
 }
 
-static int pdev_match_name(struct device *dev, void *data)
-{
-       struct platform_device *pdev = to_platform_device(dev);
-
-       return strcmp(pdev->name, "hotmod-ipmi-si") == 0;
-}
-
 void ipmi_si_hotmod_exit(void)
 {
-       struct device *dev;
-
-       while ((dev = bus_find_device(&platform_bus_type, NULL, NULL,
-                                     pdev_match_name))) {
-               struct platform_device *pdev = to_platform_device(dev);
-
-               platform_device_unregister(pdev);
-       }
+       ipmi_remove_platform_device_by_name("hotmod-ipmi-si");
 }
index 0f493fe8370179c22416301f7f6661090a9da15d..54c7ded2a1ff80c04f7ac82954da7ef171e56aee 100644 (file)
@@ -428,6 +428,26 @@ static int ipmi_remove(struct platform_device *pdev)
        return ipmi_si_remove_by_dev(&pdev->dev);
 }
 
+static int pdev_match_name(struct device *dev, void *data)
+{
+       struct platform_device *pdev = to_platform_device(dev);
+       const char *name = data;
+
+       return strcmp(pdev->name, name) == 0;
+}
+
+void ipmi_remove_platform_device_by_name(char *name)
+{
+       struct device *dev;
+
+       while ((dev = bus_find_device(&platform_bus_type, NULL, name,
+                                     pdev_match_name))) {
+               struct platform_device *pdev = to_platform_device(dev);
+
+               platform_device_unregister(pdev);
+       }
+}
+
 static const struct platform_device_id si_plat_ids[] = {
        { "dmi-ipmi-si", 0 },
        { "hardcode-ipmi-si", 0 },