Commit e17c6571 authored by Corey Minyard's avatar Corey Minyard
Browse files

ipmi_si: Consolidate scanning the platform bus



The same basic code was in two places.

Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
parent bdb57b7b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;

+1 −15
Original line number Diff line number Diff line
@@ -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");
}

/*
+1 −15
Original line number Diff line number Diff line
@@ -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");
}
+20 −0
Original line number Diff line number Diff line
@@ -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 },