apple_bl: Add register/unregister functions

Add functions to allow other modules to enable or disable apple_bl. This
will be used by the gmux driver to disable apple_bl when the gmux is
present, as it is a better and more reliable option for brightness
control.

Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
This commit is contained in:
Seth Forshee 2012-03-16 14:41:21 -05:00 коммит произвёл Matthew Garrett
Родитель f11f999e98
Коммит 83e72dd97a
2 изменённых файлов: 47 добавлений и 2 удалений

Просмотреть файл

@ -24,6 +24,7 @@
#include <linux/io.h>
#include <linux/pci.h>
#include <linux/acpi.h>
#include <linux/atomic.h>
static struct backlight_device *apple_backlight_device;
@ -221,14 +222,32 @@ static struct acpi_driver apple_bl_driver = {
},
};
static atomic_t apple_bl_registered = ATOMIC_INIT(0);
int apple_bl_register(void)
{
if (atomic_xchg(&apple_bl_registered, 1) == 0)
return acpi_bus_register_driver(&apple_bl_driver);
return 0;
}
EXPORT_SYMBOL_GPL(apple_bl_register);
void apple_bl_unregister(void)
{
if (atomic_xchg(&apple_bl_registered, 0) == 1)
acpi_bus_unregister_driver(&apple_bl_driver);
}
EXPORT_SYMBOL_GPL(apple_bl_unregister);
static int __init apple_bl_init(void)
{
return acpi_bus_register_driver(&apple_bl_driver);
return apple_bl_register();
}
static void __exit apple_bl_exit(void)
{
acpi_bus_unregister_driver(&apple_bl_driver);
apple_bl_unregister();
}
module_init(apple_bl_init);

26
include/linux/apple_bl.h Normal file
Просмотреть файл

@ -0,0 +1,26 @@
/*
* apple_bl exported symbols
*/
#ifndef _LINUX_APPLE_BL_H
#define _LINUX_APPLE_BL_H
#ifdef CONFIG_BACKLIGHT_APPLE
extern int apple_bl_register(void);
extern void apple_bl_unregister(void);
#else /* !CONFIG_BACKLIGHT_APPLE */
static inline int apple_bl_register(void)
{
return 0;
}
static inline void apple_bl_unregister(void)
{
}
#endif /* !CONFIG_BACKLIGHT_APPLE */
#endif /* _LINUX_APPLE_BL_H */