backlight.c (2116B)
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * GMA500 Backlight Interface 4 * 5 * Copyright (c) 2009-2011, Intel Corporation. 6 * 7 * Authors: Eric Knopp 8 */ 9 10#include "psb_drv.h" 11#include "psb_intel_reg.h" 12#include "psb_intel_drv.h" 13#include "intel_bios.h" 14#include "power.h" 15 16#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE 17static void do_gma_backlight_set(struct drm_device *dev) 18{ 19 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 20 backlight_update_status(dev_priv->backlight_device); 21} 22#endif 23 24void gma_backlight_enable(struct drm_device *dev) 25{ 26#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE 27 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 28 dev_priv->backlight_enabled = true; 29 if (dev_priv->backlight_device) { 30 dev_priv->backlight_device->props.brightness = dev_priv->backlight_level; 31 do_gma_backlight_set(dev); 32 } 33#endif 34} 35 36void gma_backlight_disable(struct drm_device *dev) 37{ 38#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE 39 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 40 dev_priv->backlight_enabled = false; 41 if (dev_priv->backlight_device) { 42 dev_priv->backlight_device->props.brightness = 0; 43 do_gma_backlight_set(dev); 44 } 45#endif 46} 47 48void gma_backlight_set(struct drm_device *dev, int v) 49{ 50#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE 51 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 52 dev_priv->backlight_level = v; 53 if (dev_priv->backlight_device && dev_priv->backlight_enabled) { 54 dev_priv->backlight_device->props.brightness = v; 55 do_gma_backlight_set(dev); 56 } 57#endif 58} 59 60int gma_backlight_init(struct drm_device *dev) 61{ 62#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE 63 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 64 dev_priv->backlight_enabled = true; 65 return dev_priv->ops->backlight_init(dev); 66#else 67 return 0; 68#endif 69} 70 71void gma_backlight_exit(struct drm_device *dev) 72{ 73#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE 74 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 75 if (dev_priv->backlight_device) { 76 dev_priv->backlight_device->props.brightness = 0; 77 backlight_update_status(dev_priv->backlight_device); 78 backlight_device_unregister(dev_priv->backlight_device); 79 } 80#endif 81}