Skip to content

Commit

Permalink
lcd: add corgibl_limit_intensity() to corgi_lcd
Browse files Browse the repository at this point in the history
This is not generic enough, added here for backward compatibility.
And make this an individual commit so future revert will be a bit
easier.

Signed-off-by: Eric Miao <eric.miao@marvell.com>
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Eric Miao authored and Russell King committed Sep 23, 2008
1 parent b18250a commit bfdcaa3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
27 changes: 27 additions & 0 deletions drivers/video/backlight/corgi_lcd.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ struct corgi_lcd {
struct lcd_device *lcd_dev;
struct backlight_device *bl_dev;

int limit_mask;
int intensity;
int power;
int mode;
Expand All @@ -97,6 +98,11 @@ struct corgi_lcd {

static int corgi_ssp_lcdtg_send(struct corgi_lcd *lcd, int reg, uint8_t val);

static struct corgi_lcd *the_corgi_lcd;
static unsigned long corgibl_flags;
#define CORGIBL_SUSPENDED 0x01
#define CORGIBL_BATTLOW 0x02

/*
* This is only a psuedo I2C interface. We can't use the standard kernel
* routines as the interface is write only. We just assume the data is acked...
Expand Down Expand Up @@ -413,9 +419,25 @@ static int corgi_bl_update_status(struct backlight_device *bd)
if (bd->props.fb_blank != FB_BLANK_UNBLANK)
intensity = 0;

if (corgibl_flags & CORGIBL_SUSPENDED)
intensity = 0;
if (corgibl_flags & CORGIBL_BATTLOW)
intensity &= lcd->limit_mask;

return corgi_bl_set_intensity(lcd, intensity);
}

void corgibl_limit_intensity(int limit)
{
if (limit)
corgibl_flags |= CORGIBL_BATTLOW;
else
corgibl_flags &= ~CORGIBL_BATTLOW;

backlight_update_status(the_corgi_lcd->bl_dev);
}
EXPORT_SYMBOL(corgibl_limit_intensity);

static struct backlight_ops corgi_bl_ops = {
.get_brightness = corgi_bl_get_intensity,
.update_status = corgi_bl_update_status,
Expand All @@ -426,6 +448,7 @@ static int corgi_lcd_suspend(struct spi_device *spi, pm_message_t state)
{
struct corgi_lcd *lcd = dev_get_drvdata(&spi->dev);

corgibl_flags |= CORGIBL_SUSPENDED;
corgi_bl_set_intensity(lcd, 0);
corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN);
return 0;
Expand All @@ -435,6 +458,7 @@ static int corgi_lcd_resume(struct spi_device *spi)
{
struct corgi_lcd *lcd = dev_get_drvdata(&spi->dev);

corgibl_flags &= ~CORGIBL_SUSPENDED;
corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_UNBLANK);
backlight_update_status(lcd->bl_dev);
return 0;
Expand Down Expand Up @@ -488,6 +512,9 @@ static int __devinit corgi_lcd_probe(struct spi_device *spi)
dev_set_drvdata(&spi->dev, lcd);
corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_UNBLANK);
backlight_update_status(lcd->bl_dev);

lcd->limit_mask = pdata->limit_mask;
the_corgi_lcd = lcd;
return 0;

err_unregister_lcd:
Expand Down
1 change: 1 addition & 0 deletions include/linux/spi/corgi_lcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ struct corgi_lcd_platform_data {
int init_mode;
int max_intensity;
int default_intensity;
int limit_mask;

void (*notify)(int intensity);
void (*kick_battery)(void);
Expand Down

0 comments on commit bfdcaa3

Please sign in to comment.