Skip to content

Commit

Permalink
eeepc-laptop: move platform device initialisation to a separate function
Browse files Browse the repository at this point in the history
This moves the sysfs_create_group() call just after the declaration of
the platform device attributes.  It should make it easier to examine
the implementation of the platform device attributes in isolation
from the rest of the code.  (The next commit will apply this pattern
to all of the sub-devices as well).

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Alan Jenkins authored and Len Brown committed Dec 9, 2009
1 parent 22072e9 commit 9db106b
Showing 1 changed file with 39 additions and 25 deletions.
64 changes: 39 additions & 25 deletions drivers/platform/x86/eeepc-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,38 @@ static struct attribute_group platform_attribute_group = {
.attrs = platform_attributes
};

static int eeepc_platform_init(void)
{
int result;

platform_device = platform_device_alloc(EEEPC_HOTK_FILE, -1);
if (!platform_device)
return -ENOMEM;

result = platform_device_add(platform_device);
if (result)
goto fail_platform_device;

result = sysfs_create_group(&platform_device->dev.kobj,
&platform_attribute_group);
if (result)
goto fail_sysfs;
return 0;

fail_sysfs:
platform_device_del(platform_device);
fail_platform_device:
platform_device_put(platform_device);
return result;
}

static void eeepc_platform_exit(void)
{
sysfs_remove_group(&platform_device->dev.kobj,
&platform_attribute_group);
platform_device_unregister(platform_device);
}

/*
* LEDs
*/
Expand Down Expand Up @@ -1276,22 +1308,12 @@ static int __devinit eeepc_hotk_add(struct acpi_device *device)

result = eeepc_hotk_init();
if (result)
goto fail_platform_device1;
goto fail_platform;
eeepc_enable_camera();

/* Register platform stuff */
platform_device = platform_device_alloc(EEEPC_HOTK_FILE, -1);
if (!platform_device) {
result = -ENOMEM;
goto fail_platform_device1;
}
result = platform_device_add(platform_device);
result = eeepc_platform_init();
if (result)
goto fail_platform_device2;
result = sysfs_create_group(&platform_device->dev.kobj,
&platform_attribute_group);
if (result)
goto fail_sysfs;
goto fail_platform;

dev = &platform_device->dev;

Expand All @@ -1300,8 +1322,7 @@ static int __devinit eeepc_hotk_add(struct acpi_device *device)
if (result)
goto fail_backlight;
} else
pr_info("Backlight controlled by ACPI video "
"driver\n");
pr_info("Backlight controlled by ACPI video driver\n");

result = eeepc_input_init(dev);
if (result)
Expand Down Expand Up @@ -1330,13 +1351,8 @@ static int __devinit eeepc_hotk_add(struct acpi_device *device)
fail_input:
eeepc_backlight_exit();
fail_backlight:
sysfs_remove_group(&platform_device->dev.kobj,
&platform_attribute_group);
fail_sysfs:
platform_device_del(platform_device);
fail_platform_device2:
platform_device_put(platform_device);
fail_platform_device1:
eeepc_platform_exit();
fail_platform:
kfree(ehotk);

return result;
Expand All @@ -1349,9 +1365,7 @@ static int eeepc_hotk_remove(struct acpi_device *device, int type)
eeepc_input_exit();
eeepc_hwmon_exit();
eeepc_led_exit();
sysfs_remove_group(&platform_device->dev.kobj,
&platform_attribute_group);
platform_device_unregister(platform_device);
eeepc_platform_exit();

kfree(ehotk);
return 0;
Expand Down

0 comments on commit 9db106b

Please sign in to comment.