Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 128080
b: refs/heads/master
c: f87a1a5
h: refs/heads/master
v: v3
  • Loading branch information
Tony Vroon authored and Len Brown committed Jan 9, 2009
1 parent db86efa commit 579804b
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 94 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3a407086090bb4fa1908d4dc3739c9ebc8ad6686
refs/heads/master: f87a1a5f6cdaff6232fed2ef0ae0479df9e781e8
114 changes: 21 additions & 93 deletions trunk/drivers/misc/fujitsu-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,6 @@ struct fujitsu_t {

static struct fujitsu_t *fujitsu;
static int use_alt_lcd_levels = -1;
static int disable_brightness_keys = -1;
static int disable_brightness_adjust = -1;

/* Device used to access other hotkeys on the laptop */
Expand Down Expand Up @@ -413,36 +412,11 @@ static int get_max_brightness(void)
return fujitsu->max_brightness;
}

static int get_lcd_level_alt(void)
{
unsigned long long state = 0;
acpi_status status = AE_OK;

vdbg_printk(FUJLAPTOP_DBG_TRACE, "get lcd level via GBLS\n");

status =
acpi_evaluate_integer(fujitsu->acpi_handle, "GBLS", NULL, &state);
if (status < 0)
return status;

fujitsu->brightness_level = state & 0x0fffffff;

if (state & 0x80000000)
fujitsu->brightness_changed = 1;
else
fujitsu->brightness_changed = 0;

return fujitsu->brightness_level;
}

/* Backlight device stuff */

static int bl_get_brightness(struct backlight_device *b)
{
if (use_alt_lcd_levels)
return get_lcd_level_alt();
else
return get_lcd_level();
return get_lcd_level();
}

static int bl_update_status(struct backlight_device *b)
Expand Down Expand Up @@ -509,10 +483,7 @@ static ssize_t show_lcd_level(struct device *dev,

int ret;

if (use_alt_lcd_levels)
ret = get_lcd_level_alt();
else
ret = get_lcd_level();
ret = get_lcd_level();
if (ret < 0)
return ret;

Expand All @@ -537,10 +508,7 @@ static ssize_t store_lcd_level(struct device *dev,
if (ret < 0)
return ret;

if (use_alt_lcd_levels)
ret = get_lcd_level_alt();
else
ret = get_lcd_level();
ret = get_lcd_level();
if (ret < 0)
return ret;

Expand Down Expand Up @@ -622,24 +590,16 @@ static struct platform_driver fujitsupf_driver = {
static void dmi_check_cb_common(const struct dmi_system_id *id)
{
acpi_handle handle;
int have_blnf;
printk(KERN_INFO "fujitsu-laptop: Identified laptop model '%s'.\n",
id->ident);
have_blnf = ACPI_SUCCESS
(acpi_get_handle(NULL, "\\_SB.PCI0.GFX0.LCD.BLNF", &handle));
if (use_alt_lcd_levels == -1) {
vdbg_printk(FUJLAPTOP_DBG_TRACE, "auto-detecting usealt\n");
use_alt_lcd_levels = 1;
}
if (disable_brightness_keys == -1) {
vdbg_printk(FUJLAPTOP_DBG_TRACE,
"auto-detecting disable_keys\n");
disable_brightness_keys = have_blnf ? 1 : 0;
}
if (disable_brightness_adjust == -1) {
vdbg_printk(FUJLAPTOP_DBG_TRACE,
"auto-detecting disable_adjust\n");
disable_brightness_adjust = have_blnf ? 0 : 1;
if (ACPI_SUCCESS(acpi_get_handle(NULL,
"\\_SB.PCI0.LPCB.FJEX.SBL2", &handle)))
use_alt_lcd_levels = 1;
else
use_alt_lcd_levels = 0;
vdbg_printk(FUJLAPTOP_DBG_TRACE, "auto-detected usealt as "
"%i\n", use_alt_lcd_levels);
}
}

Expand Down Expand Up @@ -768,19 +728,14 @@ static int acpi_fujitsu_add(struct acpi_device *device)

/* do config (detect defaults) */
use_alt_lcd_levels = use_alt_lcd_levels == 1 ? 1 : 0;
disable_brightness_keys = disable_brightness_keys == 1 ? 1 : 0;
disable_brightness_adjust = disable_brightness_adjust == 1 ? 1 : 0;
vdbg_printk(FUJLAPTOP_DBG_INFO,
"config: [alt interface: %d], [key disable: %d], [adjust disable: %d]\n",
use_alt_lcd_levels, disable_brightness_keys,
disable_brightness_adjust);
"config: [alt interface: %d], [adjust disable: %d]\n",
use_alt_lcd_levels, disable_brightness_adjust);

if (get_max_brightness() <= 0)
fujitsu->max_brightness = FUJITSU_LCD_N_LEVELS;
if (use_alt_lcd_levels)
get_lcd_level_alt();
else
get_lcd_level();
get_lcd_level();

return result;

Expand Down Expand Up @@ -831,57 +786,33 @@ static void acpi_fujitsu_notify(acpi_handle handle, u32 event, void *data)
case ACPI_FUJITSU_NOTIFY_CODE1:
keycode = 0;
oldb = fujitsu->brightness_level;
get_lcd_level(); /* the alt version always yields changed */
get_lcd_level();
newb = fujitsu->brightness_level;

vdbg_printk(FUJLAPTOP_DBG_TRACE,
"brightness button event [%i -> %i (%i)]\n",
oldb, newb, fujitsu->brightness_changed);

if (oldb == newb && fujitsu->brightness_changed) {
keycode = 0;
if (disable_brightness_keys != 1) {
if (oldb == 0) {
acpi_bus_generate_proc_event
(fujitsu->dev,
ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS,
0);
keycode = KEY_BRIGHTNESSDOWN;
} else if (oldb ==
(fujitsu->max_brightness) - 1) {
acpi_bus_generate_proc_event
(fujitsu->dev,
ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS,
0);
keycode = KEY_BRIGHTNESSUP;
}
}
} else if (oldb < newb) {
if (oldb < newb) {
if (disable_brightness_adjust != 1) {
if (use_alt_lcd_levels)
set_lcd_level_alt(newb);
else
set_lcd_level(newb);
}
if (disable_brightness_keys != 1) {
acpi_bus_generate_proc_event(fujitsu->dev,
ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS, 0);
keycode = KEY_BRIGHTNESSUP;
}
acpi_bus_generate_proc_event(fujitsu->dev,
ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS, 0);
keycode = KEY_BRIGHTNESSUP;
} else if (oldb > newb) {
if (disable_brightness_adjust != 1) {
if (use_alt_lcd_levels)
set_lcd_level_alt(newb);
else
set_lcd_level(newb);
}
if (disable_brightness_keys != 1) {
acpi_bus_generate_proc_event(fujitsu->dev,
ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS, 0);
keycode = KEY_BRIGHTNESSDOWN;
}
} else {
keycode = KEY_UNKNOWN;
acpi_bus_generate_proc_event(fujitsu->dev,
ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS, 0);
keycode = KEY_BRIGHTNESSDOWN;
}
break;
default:
Expand Down Expand Up @@ -1336,9 +1267,6 @@ module_exit(fujitsu_cleanup);
module_param(use_alt_lcd_levels, uint, 0644);
MODULE_PARM_DESC(use_alt_lcd_levels,
"Use alternative interface for lcd_levels (needed for Lifebook s6410).");
module_param(disable_brightness_keys, uint, 0644);
MODULE_PARM_DESC(disable_brightness_keys,
"Disable brightness keys (eg. if they are already handled by the generic ACPI_VIDEO device).");
module_param(disable_brightness_adjust, uint, 0644);
MODULE_PARM_DESC(disable_brightness_adjust, "Disable brightness adjustment .");
#ifdef CONFIG_FUJITSU_LAPTOP_DEBUG
Expand Down

0 comments on commit 579804b

Please sign in to comment.