Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 671adbec authored by Kristen Carlson Accardi's avatar Kristen Carlson Accardi Committed by Len Brown
Browse files

ACPI: dock: Make the dock station driver a platform device driver.



Make the dock station driver a platform device driver so that
we can create sysfs entries under /sys/device/platform.

Signed-off-by: default avatarKristen Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent ec0bf39a
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <linux/init.h>
#include <linux/types.h>
#include <linux/notifier.h>
#include <linux/platform_device.h>
#include <linux/jiffies.h>
#include <acpi/acpi_bus.h>
#include <acpi/acpi_drivers.h>
@@ -39,6 +40,8 @@ MODULE_DESCRIPTION(ACPI_DOCK_DRIVER_NAME);
MODULE_LICENSE("GPL");

static struct atomic_notifier_head dock_notifier_list;
static struct platform_device dock_device;
static char dock_device_name[] = "dock";

struct dock_station {
	acpi_handle handle;
@@ -629,6 +632,15 @@ static int dock_add(acpi_handle handle)
	spin_lock_init(&dock_station->hp_lock);
	ATOMIC_INIT_NOTIFIER_HEAD(&dock_notifier_list);

	/* initialize platform device stuff */
	dock_device.name = dock_device_name;
	ret = platform_device_register(&dock_device);
	if (ret) {
		printk(KERN_ERR PREFIX "Error registering dock device\n", ret);
		kfree(dock_station);
		return ret;
	}

	/* Find dependent devices */
	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
			    ACPI_UINT32_MAX, find_dock_devices, dock_station,
@@ -638,7 +650,8 @@ static int dock_add(acpi_handle handle)
	dd = alloc_dock_dependent_device(handle);
	if (!dd) {
		kfree(dock_station);
		return -ENOMEM;
		ret = -ENOMEM;
		goto dock_add_err_unregister;
	}
	add_dock_dependent_device(dock_station, dd);

@@ -658,8 +671,10 @@ static int dock_add(acpi_handle handle)
	return 0;

dock_add_err:
	kfree(dock_station);
	kfree(dd);
dock_add_err_unregister:
	platform_device_unregister(&dock_device);
	kfree(dock_station);
	return ret;
}

@@ -686,6 +701,9 @@ static int dock_remove(void)
	if (ACPI_FAILURE(status))
		printk(KERN_ERR "Error removing notify handler\n");

	/* cleanup sysfs */
	platform_device_unregister(&dock_device);

	/* free dock station memory */
	kfree(dock_station);
	return 0;