Blame view
include/linux/backlight.h
3.95 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 |
/* * Backlight Lowlevel Control Abstraction * * Copyright (C) 2003,2004 Hewlett-Packard Company * */ #ifndef _LINUX_BACKLIGHT_H #define _LINUX_BACKLIGHT_H #include <linux/device.h> |
28ee086d5 backlight: Fix ex... |
12 |
#include <linux/mutex.h> |
1da177e4c Linux-2.6.12-rc2 |
13 |
#include <linux/notifier.h> |
28ee086d5 backlight: Fix ex... |
14 15 |
/* Notes on locking: * |
599a52d12 backlight: Separa... |
16 17 |
* backlight_device->ops_lock is an internal backlight lock protecting the * ops pointer and no code outside the core should need to touch it. |
28ee086d5 backlight: Fix ex... |
18 19 20 21 22 23 24 25 26 27 |
* * Access to update_status() is serialised by the update_lock mutex since * most drivers seem to need this and historically get it wrong. * * Most drivers don't need locking on their get_brightness() method. * If yours does, you need to implement it in the driver. You can use the * update_lock mutex if appropriate. * * Any other use of the locks below is probably wrong. */ |
325253a6b backlight: Allow ... |
28 29 30 31 |
enum backlight_update_reason { BACKLIGHT_UPDATE_HOTKEY, BACKLIGHT_UPDATE_SYSFS, }; |
1da177e4c Linux-2.6.12-rc2 |
32 33 |
struct backlight_device; struct fb_info; |
599a52d12 backlight: Separa... |
34 |
struct backlight_ops { |
b4144e4f6 backlight: Revert... |
35 |
unsigned int options; |
c835ee7f4 backlight: Add su... |
36 37 |
#define BL_CORE_SUSPENDRESUME (1 << 0) |
6ca017658 [PATCH] backlight... |
38 |
/* Notify the backlight driver some property has changed */ |
b4144e4f6 backlight: Revert... |
39 |
int (*update_status)(struct backlight_device *); |
6ca017658 [PATCH] backlight... |
40 41 |
/* Return the current backlight brightness (accounting for power, fb_blank etc.) */ |
b4144e4f6 backlight: Revert... |
42 |
int (*get_brightness)(struct backlight_device *); |
1da177e4c Linux-2.6.12-rc2 |
43 44 |
/* Check if given framebuffer device is the one bound to this backlight; return 0 if not, !=0 if it is. If NULL, backlight always matches the fb. */ |
57e148b6a backlight: Add ba... |
45 |
int (*check_fb)(struct backlight_device *, struct fb_info *); |
599a52d12 backlight: Separa... |
46 |
}; |
6ca017658 [PATCH] backlight... |
47 |
|
599a52d12 backlight: Separa... |
48 49 |
/* This structure defines all the properties of a backlight */ struct backlight_properties { |
6ca017658 [PATCH] backlight... |
50 51 52 53 54 55 56 57 |
/* Current User requested brightness (0 - max_brightness) */ int brightness; /* Maximal value for brightness (read-only) */ int max_brightness; /* Current FB Power mode (0: full on, 1..3: power saving modes; 4: full off), see FB_BLANK_XXX */ int power; /* FB Blanking active? (values as for power) */ |
c835ee7f4 backlight: Add su... |
58 |
/* Due to be removed, please use (state & BL_CORE_FBBLANK) */ |
6ca017658 [PATCH] backlight... |
59 |
int fb_blank; |
c835ee7f4 backlight: Add su... |
60 61 62 63 64 65 66 67 68 69 |
/* Flags used to signal drivers of state changes */ /* Upper 4 bits are reserved for driver internal use */ unsigned int state; #define BL_CORE_SUSPENDED (1 << 0) /* backlight is suspended */ #define BL_CORE_FBBLANK (1 << 1) /* backlight is under an fb blank event */ #define BL_CORE_DRIVER4 (1 << 28) /* reserved for driver specific use */ #define BL_CORE_DRIVER3 (1 << 29) /* reserved for driver specific use */ #define BL_CORE_DRIVER2 (1 << 30) /* reserved for driver specific use */ #define BL_CORE_DRIVER1 (1 << 31) /* reserved for driver specific use */ |
1da177e4c Linux-2.6.12-rc2 |
70 71 72 |
}; struct backlight_device { |
599a52d12 backlight: Separa... |
73 74 |
/* Backlight properties */ struct backlight_properties props; |
28ee086d5 backlight: Fix ex... |
75 76 |
/* Serialise access to update_status method */ struct mutex update_lock; |
599a52d12 backlight: Separa... |
77 78 79 80 81 |
/* This protects the 'ops' field. If 'ops' is NULL, the driver that registered this device has been unloaded, and if class_get_devdata() points to something in the body of that driver, it is also invalid. */ struct mutex ops_lock; |
9905a43b2 backlight: Consti... |
82 |
const struct backlight_ops *ops; |
599a52d12 backlight: Separa... |
83 |
|
1da177e4c Linux-2.6.12-rc2 |
84 85 |
/* The framebuffer notifier block */ struct notifier_block fb_notif; |
655bfd7ae backlight: Conver... |
86 87 |
struct device dev; |
1da177e4c Linux-2.6.12-rc2 |
88 |
}; |
28ee086d5 backlight: Fix ex... |
89 90 91 |
static inline void backlight_update_status(struct backlight_device *bd) { mutex_lock(&bd->update_lock); |
599a52d12 backlight: Separa... |
92 93 |
if (bd->ops && bd->ops->update_status) bd->ops->update_status(bd); |
28ee086d5 backlight: Fix ex... |
94 95 |
mutex_unlock(&bd->update_lock); } |
1da177e4c Linux-2.6.12-rc2 |
96 |
extern struct backlight_device *backlight_device_register(const char *name, |
a19a6ee6c backlight: Allow ... |
97 98 |
struct device *dev, void *devdata, const struct backlight_ops *ops, const struct backlight_properties *props); |
1da177e4c Linux-2.6.12-rc2 |
99 |
extern void backlight_device_unregister(struct backlight_device *bd); |
325253a6b backlight: Allow ... |
100 101 |
extern void backlight_force_update(struct backlight_device *bd, enum backlight_update_reason reason); |
1da177e4c Linux-2.6.12-rc2 |
102 |
|
655bfd7ae backlight: Conver... |
103 104 105 106 107 108 |
#define to_backlight_device(obj) container_of(obj, struct backlight_device, dev) static inline void * bl_get_data(struct backlight_device *bl_dev) { return dev_get_drvdata(&bl_dev->dev); } |
1da177e4c Linux-2.6.12-rc2 |
109 |
|
c3f8f6504 backlight: Conver... |
110 111 112 113 114 115 116 117 |
struct generic_bl_info { const char *name; int max_intensity; int default_intensity; int limit_mask; void (*set_bl_intensity)(int intensity); void (*kick_battery)(void); }; |
1da177e4c Linux-2.6.12-rc2 |
118 |
#endif |