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: Kristen Carlson Accardi <kristen.c.accardi@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
ec0bf39a47
commit
671adbec21
|
@ -27,6 +27,7 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
#include <linux/jiffies.h>
|
#include <linux/jiffies.h>
|
||||||
#include <acpi/acpi_bus.h>
|
#include <acpi/acpi_bus.h>
|
||||||
#include <acpi/acpi_drivers.h>
|
#include <acpi/acpi_drivers.h>
|
||||||
|
@ -39,6 +40,8 @@ MODULE_DESCRIPTION(ACPI_DOCK_DRIVER_NAME);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
static struct atomic_notifier_head dock_notifier_list;
|
static struct atomic_notifier_head dock_notifier_list;
|
||||||
|
static struct platform_device dock_device;
|
||||||
|
static char dock_device_name[] = "dock";
|
||||||
|
|
||||||
struct dock_station {
|
struct dock_station {
|
||||||
acpi_handle handle;
|
acpi_handle handle;
|
||||||
|
@ -629,6 +632,15 @@ static int dock_add(acpi_handle handle)
|
||||||
spin_lock_init(&dock_station->hp_lock);
|
spin_lock_init(&dock_station->hp_lock);
|
||||||
ATOMIC_INIT_NOTIFIER_HEAD(&dock_notifier_list);
|
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 */
|
/* Find dependent devices */
|
||||||
acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
|
acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
|
||||||
ACPI_UINT32_MAX, find_dock_devices, dock_station,
|
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);
|
dd = alloc_dock_dependent_device(handle);
|
||||||
if (!dd) {
|
if (!dd) {
|
||||||
kfree(dock_station);
|
kfree(dock_station);
|
||||||
return -ENOMEM;
|
ret = -ENOMEM;
|
||||||
|
goto dock_add_err_unregister;
|
||||||
}
|
}
|
||||||
add_dock_dependent_device(dock_station, dd);
|
add_dock_dependent_device(dock_station, dd);
|
||||||
|
|
||||||
|
@ -658,8 +671,10 @@ static int dock_add(acpi_handle handle)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
dock_add_err:
|
dock_add_err:
|
||||||
kfree(dock_station);
|
|
||||||
kfree(dd);
|
kfree(dd);
|
||||||
|
dock_add_err_unregister:
|
||||||
|
platform_device_unregister(&dock_device);
|
||||||
|
kfree(dock_station);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -686,6 +701,9 @@ static int dock_remove(void)
|
||||||
if (ACPI_FAILURE(status))
|
if (ACPI_FAILURE(status))
|
||||||
printk(KERN_ERR "Error removing notify handler\n");
|
printk(KERN_ERR "Error removing notify handler\n");
|
||||||
|
|
||||||
|
/* cleanup sysfs */
|
||||||
|
platform_device_unregister(&dock_device);
|
||||||
|
|
||||||
/* free dock station memory */
|
/* free dock station memory */
|
||||||
kfree(dock_station);
|
kfree(dock_station);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue