Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 112396
b: refs/heads/master
c: bfdcaa3
h: refs/heads/master
v: v3
  • Loading branch information
Eric Miao authored and Russell King committed Sep 23, 2008
1 parent 10a8a86 commit 826538d
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b18250a8f66050bd2a52287cd543fb93100e8ee0
refs/heads/master: bfdcaa3b6899bbfc6ba633aff3f5f2422486c8c1
27 changes: 27 additions & 0 deletions trunk/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 trunk/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 826538d

Please sign in to comment.