Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 297014
b: refs/heads/master
c: 6e0044b
h: refs/heads/master
v: v3
  • Loading branch information
AceLan Kao authored and Matthew Garrett committed Mar 26, 2012
1 parent fd9f452 commit 600bd4f
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 17 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: c87992d1fa51a6a3d8f0e980ca4d2bdec7e78a17
refs/heads/master: 6e0044bedc1fc94a61cc32fa25dcab9a4e4a9218
33 changes: 20 additions & 13 deletions trunk/drivers/platform/x86/asus-wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1076,7 +1076,12 @@ static int asus_wmi_hwmon_init(struct asus_wmi *asus)
*/
static int read_backlight_power(struct asus_wmi *asus)
{
int ret = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_BACKLIGHT);
int ret;
if (asus->driver->quirks->store_backlight_power)
ret = !asus->driver->panel_power;
else
ret = asus_wmi_get_devstate_simple(asus,
ASUS_WMI_DEVID_BACKLIGHT);

if (ret < 0)
return ret;
Expand Down Expand Up @@ -1138,24 +1143,23 @@ static int update_bl_status(struct backlight_device *bd)
{
struct asus_wmi *asus = bl_get_data(bd);
u32 ctrl_param;
int power, err;

if (asus->driver->quirks->scalar_panel_brightness)
ctrl_param = get_scalar_command(bd);
else
ctrl_param = bd->props.brightness;

err = asus_wmi_set_devstate(ASUS_WMI_DEVID_BRIGHTNESS,
ctrl_param, NULL);

if (err < 0)
return err;
int power, err = 0;

power = read_backlight_power(asus);
if (power != -ENODEV && bd->props.power != power) {
ctrl_param = !!(bd->props.power == FB_BLANK_UNBLANK);
err = asus_wmi_set_devstate(ASUS_WMI_DEVID_BACKLIGHT,
ctrl_param, NULL);
if (asus->driver->quirks->store_backlight_power)
asus->driver->panel_power = bd->props.power;
} else {
if (asus->driver->quirks->scalar_panel_brightness)
ctrl_param = get_scalar_command(bd);
else
ctrl_param = bd->props.brightness;

err = asus_wmi_set_devstate(ASUS_WMI_DEVID_BRIGHTNESS,
ctrl_param, NULL);
}
return err;
}
Expand Down Expand Up @@ -1217,6 +1221,9 @@ static int asus_wmi_backlight_init(struct asus_wmi *asus)

asus->backlight_device = bd;

if (asus->driver->quirks->store_backlight_power)
asus->driver->panel_power = power;

bd->props.brightness = read_brightness(bd);
bd->props.power = power;
backlight_update_status(bd);
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/platform/x86/asus-wmi.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,13 @@ struct asus_wmi;
struct quirk_entry {
bool hotplug_wireless;
bool scalar_panel_brightness;
bool store_backlight_power;
};

struct asus_wmi_driver {
int wapf;
int brightness;
int panel_power;

const char *name;
struct module *owner;
Expand Down
15 changes: 12 additions & 3 deletions trunk/drivers/platform/x86/eeepc-wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include <linux/input.h>
#include <linux/input/sparse-keymap.h>
#include <linux/dmi.h>
#include <linux/fb.h>
#include <acpi/acpi_bus.h>

#include "asus-wmi.h"
Expand Down Expand Up @@ -98,8 +99,13 @@ static struct quirk_entry quirk_asus_1000h = {
.hotplug_wireless = true,
};

static struct quirk_entry quirk_asus_et2012_type1 = {
.store_backlight_power = true,
};

static struct quirk_entry quirk_asus_et2012_type3 = {
.scalar_panel_brightness = true,
.store_backlight_power = true,
};

static int dmi_matched(const struct dmi_system_id *dmi)
Expand All @@ -111,10 +117,12 @@ static int dmi_matched(const struct dmi_system_id *dmi)
if (unlikely(strncmp(model, "ET2012", 6) == 0)) {
const struct dmi_device *dev = NULL;
char oemstring[30];
while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING, NULL,
dev))) {
while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING,
NULL, dev))) {
if (sscanf(dev->name, "AEMS%24c", oemstring) == 1) {
if (oemstring[18] == '3')
if (oemstring[18] == '1')
quirks = &quirk_asus_et2012_type1;
else if (oemstring[18] == '3')
quirks = &quirk_asus_et2012_type3;
break;
}
Expand Down Expand Up @@ -202,6 +210,7 @@ static int eeepc_wmi_probe(struct platform_device *pdev)
static void eeepc_wmi_quirks(struct asus_wmi_driver *driver)
{
driver->wapf = -1;
driver->panel_power = FB_BLANK_UNBLANK;
driver->quirks = &quirk_asus_unknown;
driver->quirks->hotplug_wireless = hotplug_wireless;
dmi_check_system(asus_quirks);
Expand Down

0 comments on commit 600bd4f

Please sign in to comment.