#ifndef _LINUXKPI_LINUX_BACKLIGHT_H_
#define _LINUXKPI_LINUX_BACKLIGHT_H_
#include <linux/notifier.h>
struct backlight_device;
enum backlight_type {
BACKLIGHT_RAW = 0,
};
struct backlight_properties {
int type;
int max_brightness;
int brightness;
int power;
};
enum backlight_notification {
BACKLIGHT_REGISTERED,
BACKLIGHT_UNREGISTERED,
};
enum backlight_update_reason {
BACKLIGHT_UPDATE_HOTKEY = 0
};
struct backlight_ops {
int options;
#define BL_CORE_SUSPENDRESUME 1
int (*update_status)(struct backlight_device *);
int (*get_brightness)(struct backlight_device *);
};
struct backlight_device {
const struct backlight_ops *ops;
struct backlight_properties props;
void *data;
struct device *dev;
char *name;
};
#define bl_get_data(bd) (bd)->data
struct backlight_device *linux_backlight_device_register(const char *name,
struct device *dev, void *data, const struct backlight_ops *ops, struct backlight_properties *props);
void linux_backlight_device_unregister(struct backlight_device *bd);
#define backlight_device_register(name, dev, data, ops, props) \
linux_backlight_device_register(name, dev, data, ops, props)
#define backlight_device_unregister(bd) linux_backlight_device_unregister(bd)
static inline int
backlight_update_status(struct backlight_device *bd)
{
return (bd->ops->update_status(bd));
}
static inline void
backlight_force_update(struct backlight_device *bd, int reason)
{
bd->props.brightness = bd->ops->get_brightness(bd);
}
static inline int
backlight_get_brightness(struct backlight_device *bd)
{
return (bd->props.brightness);
}
static inline int
backlight_device_set_brightness(struct backlight_device *bd, int brightness)
{
if (brightness > bd->props.max_brightness)
return (EINVAL);
bd->props.brightness = brightness;
return (bd->ops->update_status(bd));
}
static inline int
backlight_enable(struct backlight_device *bd)
{
if (bd == NULL)
return (0);
bd->props.power = 0;
return (backlight_update_status(bd));
}
static inline int
backlight_disable(struct backlight_device *bd)
{
if (bd == NULL)
return (0);
bd->props.power = 4;
return (backlight_update_status(bd));
}
static inline bool
backlight_is_blank(struct backlight_device *bd)
{
return (bd->props.power != 0);
}
#endif