mirror of
https://github.com/fail0verflow/switch-linux.git
synced 2025-05-04 02:34:21 -04:00
asus_acpi: add support for F3Sa
Add support for ASUS F3Sa notebook. Features: - LCD on/off - Brightness - Wifi kill - Bluetooth kill Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Cc: Corentin Chary <corentincj@iksaif.net> Cc: Karol Kozimor <sziwan@users.sourceforge.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
e1af14e4b3
commit
31e0729a85
1 changed files with 45 additions and 10 deletions
|
@ -142,6 +142,7 @@ struct asus_hotk {
|
||||||
xxN, //M2400N, M3700N, M5200N, M6800N, S1300N, S5200N
|
xxN, //M2400N, M3700N, M5200N, M6800N, S1300N, S5200N
|
||||||
A4S, //Z81sp
|
A4S, //Z81sp
|
||||||
//(Centrino)
|
//(Centrino)
|
||||||
|
F3Sa,
|
||||||
END_MODEL
|
END_MODEL
|
||||||
} model; //Models currently supported
|
} model; //Models currently supported
|
||||||
u16 event_count[128]; //count for each event TODO make this better
|
u16 event_count[128]; //count for each event TODO make this better
|
||||||
|
@ -405,7 +406,20 @@ static struct model_data model_conf[END_MODEL] = {
|
||||||
.brightness_get = "GPLV",
|
.brightness_get = "GPLV",
|
||||||
.mt_bt_switch = "BLED",
|
.mt_bt_switch = "BLED",
|
||||||
.mt_wled = "WLED"
|
.mt_wled = "WLED"
|
||||||
}
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
.name = "F3Sa",
|
||||||
|
.mt_bt_switch = "BLED",
|
||||||
|
.mt_wled = "WLED",
|
||||||
|
.mt_mled = "MLED",
|
||||||
|
.brightness_get = "GPLV",
|
||||||
|
.brightness_set = "SPLV",
|
||||||
|
.mt_lcd_switch = "\\_SB.PCI0.SBRG.EC0._Q10",
|
||||||
|
.lcd_status = "\\_SB.PCI0.SBRG.EC0.RPIN",
|
||||||
|
.display_get = "\\ADVG",
|
||||||
|
.display_set = "SDSP",
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -710,15 +724,8 @@ static int get_lcd_state(void)
|
||||||
{
|
{
|
||||||
int lcd = 0;
|
int lcd = 0;
|
||||||
|
|
||||||
if (hotk->model != L3H) {
|
if (hotk->model == L3H) {
|
||||||
/* We don't have to check anything if we are here */
|
/* L3H and the like have to be handled differently */
|
||||||
if (!read_acpi_int(NULL, hotk->methods->lcd_status, &lcd))
|
|
||||||
printk(KERN_WARNING
|
|
||||||
"Asus ACPI: Error reading LCD status\n");
|
|
||||||
|
|
||||||
if (hotk->model == L2D)
|
|
||||||
lcd = ~lcd;
|
|
||||||
} else { /* L3H and the like have to be handled differently */
|
|
||||||
acpi_status status = 0;
|
acpi_status status = 0;
|
||||||
struct acpi_object_list input;
|
struct acpi_object_list input;
|
||||||
union acpi_object mt_params[2];
|
union acpi_object mt_params[2];
|
||||||
|
@ -745,6 +752,32 @@ static int get_lcd_state(void)
|
||||||
if (out_obj.type == ACPI_TYPE_INTEGER)
|
if (out_obj.type == ACPI_TYPE_INTEGER)
|
||||||
/* That's what the AML code does */
|
/* That's what the AML code does */
|
||||||
lcd = out_obj.integer.value >> 8;
|
lcd = out_obj.integer.value >> 8;
|
||||||
|
} else if (hotk->model == F3Sa) {
|
||||||
|
unsigned long tmp;
|
||||||
|
union acpi_object param;
|
||||||
|
struct acpi_object_list input;
|
||||||
|
acpi_status status;
|
||||||
|
|
||||||
|
/* Read pin 11 */
|
||||||
|
param.type = ACPI_TYPE_INTEGER;
|
||||||
|
param.integer.value = 0x11;
|
||||||
|
input.count = 1;
|
||||||
|
input.pointer = ¶m;
|
||||||
|
|
||||||
|
status = acpi_evaluate_integer(NULL, hotk->methods->lcd_status,
|
||||||
|
&input, &tmp);
|
||||||
|
if (status != AE_OK)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
lcd = tmp;
|
||||||
|
} else {
|
||||||
|
/* We don't have to check anything if we are here */
|
||||||
|
if (!read_acpi_int(NULL, hotk->methods->lcd_status, &lcd))
|
||||||
|
printk(KERN_WARNING
|
||||||
|
"Asus ACPI: Error reading LCD status\n");
|
||||||
|
|
||||||
|
if (hotk->model == L2D)
|
||||||
|
lcd = ~lcd;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (lcd & 1);
|
return (lcd & 1);
|
||||||
|
@ -1134,6 +1167,8 @@ static int asus_model_match(char *model)
|
||||||
return W5A;
|
return W5A;
|
||||||
else if (strncmp(model, "A4S", 3) == 0)
|
else if (strncmp(model, "A4S", 3) == 0)
|
||||||
return A4S;
|
return A4S;
|
||||||
|
else if (strncmp(model, "F3Sa", 4) == 0)
|
||||||
|
return F3Sa;
|
||||||
else
|
else
|
||||||
return END_MODEL;
|
return END_MODEL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue