0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include "psb_drv.h"
0011 #include "psb_intel_reg.h"
0012 #include "psb_intel_drv.h"
0013 #include "intel_bios.h"
0014 #include "power.h"
0015
0016 #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
0017 static void do_gma_backlight_set(struct drm_device *dev)
0018 {
0019 struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
0020 backlight_update_status(dev_priv->backlight_device);
0021 }
0022 #endif
0023
0024 void gma_backlight_enable(struct drm_device *dev)
0025 {
0026 #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
0027 struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
0028 dev_priv->backlight_enabled = true;
0029 if (dev_priv->backlight_device) {
0030 dev_priv->backlight_device->props.brightness = dev_priv->backlight_level;
0031 do_gma_backlight_set(dev);
0032 }
0033 #endif
0034 }
0035
0036 void gma_backlight_disable(struct drm_device *dev)
0037 {
0038 #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
0039 struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
0040 dev_priv->backlight_enabled = false;
0041 if (dev_priv->backlight_device) {
0042 dev_priv->backlight_device->props.brightness = 0;
0043 do_gma_backlight_set(dev);
0044 }
0045 #endif
0046 }
0047
0048 void gma_backlight_set(struct drm_device *dev, int v)
0049 {
0050 #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
0051 struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
0052 dev_priv->backlight_level = v;
0053 if (dev_priv->backlight_device && dev_priv->backlight_enabled) {
0054 dev_priv->backlight_device->props.brightness = v;
0055 do_gma_backlight_set(dev);
0056 }
0057 #endif
0058 }
0059
0060 int gma_backlight_init(struct drm_device *dev)
0061 {
0062 #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
0063 struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
0064 dev_priv->backlight_enabled = true;
0065 return dev_priv->ops->backlight_init(dev);
0066 #else
0067 return 0;
0068 #endif
0069 }
0070
0071 void gma_backlight_exit(struct drm_device *dev)
0072 {
0073 #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
0074 struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
0075 if (dev_priv->backlight_device) {
0076 dev_priv->backlight_device->props.brightness = 0;
0077 backlight_update_status(dev_priv->backlight_device);
0078 backlight_device_unregister(dev_priv->backlight_device);
0079 }
0080 #endif
0081 }