• Michał Kępień's avatar
    platform/x86: fujitsu-laptop: use device-specific data in LED-related code · a823f8e7
    Michał Kępień authored
    In order to perform their duties, all LED callbacks need a pointer to
    the struct acpi_device representing the FUJ02E3 ACPI device.  To limit
    the use of the module-wide pointer, the same pointer should be extracted
    from data that gets passed to LED callbacks as arguments.  However, LED
    core does not currently support supplying driver-specific pointers to
    struct led_classdev callbacks, so the latter have to be implemented a
    bit differently than backlight device callbacks and platform device
    attribute callbacks.  As the FUJ02E3 ACPI device is the parent device of
    all LED class devices registered by fujitsu-laptop, struct acpi_device
    representing the former can be extracted by following the parent link
    present inside the struct device belonging to the struct led_classdev
    passed as an argument to each LED callback.
    
    To get rid of module-wide structures defining LED class devices,
    allocate them dynamically using devm_kzalloc() and initialize them in
    acpi_fujitsu_laptop_leds_register().
    Signed-off-by: default avatarMichał Kępień <kernel@kempniu.pl>
    Reviewed-by: default avatarJonathan Woithe <jwoithe@just42.net>
    Signed-off-by: default avatarDarren Hart (VMware) <dvhart@infradead.org>
    a823f8e7
fujitsu-laptop.c 28.6 KB