2011-11-03 18:21:31 +00:00
/*
* GMA500 Backlight Interface
*
* Copyright ( c ) 2009 - 2011 , Intel Corporation .
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms and conditions of the GNU General Public License ,
* version 2 , as published by the Free Software Foundation .
*
* This program is distributed in the hope it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License for
* more details .
*
* You should have received a copy of the GNU General Public License along with
* this program ; if not , write to the Free Software Foundation , Inc . ,
* 51 Franklin St - Fifth Floor , Boston , MA 02110 - 1301 USA .
*
* 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
}