diff options
Diffstat (limited to 'drivers/gpu/drm/gma500/backlight.c')
-rw-r--r-- | drivers/gpu/drm/gma500/backlight.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/drivers/gpu/drm/gma500/backlight.c b/drivers/gpu/drm/gma500/backlight.c index 20793951fca..143eba3309c 100644 --- a/drivers/gpu/drm/gma500/backlight.c +++ b/drivers/gpu/drm/gma500/backlight.c | |||
@@ -26,10 +26,55 @@ | |||
26 | #include "intel_bios.h" | 26 | #include "intel_bios.h" |
27 | #include "power.h" | 27 | #include "power.h" |
28 | 28 | ||
29 | static void do_gma_backlight_set(struct drm_device *dev) | ||
30 | { | ||
31 | #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE | ||
32 | struct drm_psb_private *dev_priv = dev->dev_private; | ||
33 | backlight_update_status(dev_priv->backlight_device); | ||
34 | #endif | ||
35 | } | ||
36 | |||
37 | void gma_backlight_enable(struct drm_device *dev) | ||
38 | { | ||
39 | #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE | ||
40 | struct drm_psb_private *dev_priv = dev->dev_private; | ||
41 | dev_priv->backlight_enabled = true; | ||
42 | if (dev_priv->backlight_device) { | ||
43 | dev_priv->backlight_device->props.brightness = dev_priv->backlight_level; | ||
44 | do_gma_backlight_set(dev); | ||
45 | } | ||
46 | #endif | ||
47 | } | ||
48 | |||
49 | void gma_backlight_disable(struct drm_device *dev) | ||
50 | { | ||
51 | #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE | ||
52 | struct drm_psb_private *dev_priv = dev->dev_private; | ||
53 | dev_priv->backlight_enabled = false; | ||
54 | if (dev_priv->backlight_device) { | ||
55 | dev_priv->backlight_device->props.brightness = 0; | ||
56 | do_gma_backlight_set(dev); | ||
57 | } | ||
58 | #endif | ||
59 | } | ||
60 | |||
61 | void gma_backlight_set(struct drm_device *dev, int v) | ||
62 | { | ||
63 | #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE | ||
64 | struct drm_psb_private *dev_priv = dev->dev_private; | ||
65 | dev_priv->backlight_level = v; | ||
66 | if (dev_priv->backlight_device && dev_priv->backlight_enabled) { | ||
67 | dev_priv->backlight_device->props.brightness = v; | ||
68 | do_gma_backlight_set(dev); | ||
69 | } | ||
70 | #endif | ||
71 | } | ||
72 | |||
29 | int gma_backlight_init(struct drm_device *dev) | 73 | int gma_backlight_init(struct drm_device *dev) |
30 | { | 74 | { |
31 | #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE | 75 | #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE |
32 | struct drm_psb_private *dev_priv = dev->dev_private; | 76 | struct drm_psb_private *dev_priv = dev->dev_private; |
77 | dev_priv->backlight_enabled = true; | ||
33 | return dev_priv->ops->backlight_init(dev); | 78 | return dev_priv->ops->backlight_init(dev); |
34 | #else | 79 | #else |
35 | return 0; | 80 | return 0; |