2019-05-29 16:57:49 -07:00
// SPDX-License-Identifier: GPL-2.0-only
2011-11-03 18:21:31 +00:00
/*
* GMA500 Backlight Interface
*
* Copyright ( c ) 2009 - 2011 , Intel Corporation .
*
* Authors : Eric Knopp
*/
# include "psb_drv.h"
# include "psb_intel_reg.h"
# include "psb_intel_drv.h"
# include "intel_bios.h"
# include "power.h"
2014-01-23 15:54:03 -08:00
# ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
2012-08-08 13:55:55 +00:00
static void do_gma_backlight_set ( struct drm_device * dev )
{
struct drm_psb_private * dev_priv = dev - > dev_private ;
backlight_update_status ( dev_priv - > backlight_device ) ;
}
2014-01-23 15:54:03 -08:00
# endif
2012-08-08 13:55:55 +00:00
void gma_backlight_enable ( struct drm_device * dev )
{
# ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
struct drm_psb_private * dev_priv = dev - > dev_private ;
dev_priv - > backlight_enabled = true ;
if ( dev_priv - > backlight_device ) {
dev_priv - > backlight_device - > props . brightness = dev_priv - > backlight_level ;
do_gma_backlight_set ( dev ) ;
}
# endif
}
void gma_backlight_disable ( struct drm_device * dev )
{
# ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
struct drm_psb_private * dev_priv = dev - > dev_private ;
dev_priv - > backlight_enabled = false ;
if ( dev_priv - > backlight_device ) {
dev_priv - > backlight_device - > props . brightness = 0 ;
do_gma_backlight_set ( dev ) ;
}
# endif
}
void gma_backlight_set ( struct drm_device * dev , int v )
{
# ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
struct drm_psb_private * dev_priv = dev - > dev_private ;
dev_priv - > backlight_level = v ;
if ( dev_priv - > backlight_device & & dev_priv - > backlight_enabled ) {
dev_priv - > backlight_device - > props . brightness = v ;
do_gma_backlight_set ( dev ) ;
}
# endif
}
2011-11-03 18:21:31 +00:00
int gma_backlight_init ( struct drm_device * dev )
{
# ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
struct drm_psb_private * dev_priv = dev - > dev_private ;
2012-08-08 13:55:55 +00:00
dev_priv - > backlight_enabled = true ;
2011-11-03 18:21:31 +00:00
return dev_priv - > ops - > backlight_init ( dev ) ;
# else
return 0 ;
# endif
}
void gma_backlight_exit ( struct drm_device * dev )
{
# ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
struct drm_psb_private * dev_priv = dev - > dev_private ;
if ( dev_priv - > backlight_device ) {
dev_priv - > backlight_device - > props . brightness = 0 ;
backlight_update_status ( dev_priv - > backlight_device ) ;
backlight_device_unregister ( dev_priv - > backlight_device ) ;
}
# endif
}