Skip to content

Commit 99c710c

Browse files
committed
Merge tag 'platform-drivers-x86-v5.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver fixes from Hans de Goede: - thinkpad_acpi fixes: two bug-fixes and three model specific quirks - fixes for misc other drivers: two bug-fixes and three model specific quirks * tag 'platform-drivers-x86-v5.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: platform/x86: touchscreen_dmi: Add info for the Irbis TW118 tablet platform/x86: touchscreen_dmi: Add info for the Predia Basic tablet platform/x86: intel-vbtn: Support for tablet mode on HP Pavilion 13 x360 PC platform/x86: toshiba_acpi: Fix the wrong variable assignment platform/x86: acer-wmi: add automatic keyboard background light toggle key as KEY_LIGHTS_TOGGLE platform/x86: thinkpad_acpi: Whitelist P15 firmware for dual fan control platform/x86: thinkpad_acpi: Send tablet mode switch at wakeup time platform/x86: thinkpad_acpi: Add BAT1 is primary battery quirk for Thinkpad Yoga 11e 4th gen platform/x86: thinkpad_acpi: Do not report SW_TABLET_MODE on Yoga 11e platform/x86: thinkpad_acpi: add P1 gen3 second fan support
2 parents 3913a2b + c9aa128 commit 99c710c

5 files changed

Lines changed: 70 additions & 3 deletions

File tree

drivers/platform/x86/acer-wmi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = {
111111
{KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */
112112
{KE_IGNORE, 0x81, {KEY_SLEEP} },
113113
{KE_KEY, 0x82, {KEY_TOUCHPAD_TOGGLE} }, /* Touch Pad Toggle */
114+
{KE_IGNORE, 0x84, {KEY_KBDILLUMTOGGLE} }, /* Automatic Keyboard background light toggle */
114115
{KE_KEY, KEY_TOUCHPAD_ON, {KEY_TOUCHPAD_ON} },
115116
{KE_KEY, KEY_TOUCHPAD_OFF, {KEY_TOUCHPAD_OFF} },
116117
{KE_IGNORE, 0x83, {KEY_TOUCHPAD_TOGGLE} },

drivers/platform/x86/intel-vbtn.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,12 @@ static const struct dmi_system_id dmi_switches_allow_list[] = {
206206
DMI_MATCH(DMI_PRODUCT_NAME, "HP Stream x360 Convertible PC 11"),
207207
},
208208
},
209+
{
210+
.matches = {
211+
DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
212+
DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion 13 x360 PC"),
213+
},
214+
},
209215
{} /* Array terminator */
210216
};
211217

drivers/platform/x86/thinkpad_acpi.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3218,7 +3218,14 @@ static int hotkey_init_tablet_mode(void)
32183218

32193219
in_tablet_mode = hotkey_gmms_get_tablet_mode(res,
32203220
&has_tablet_mode);
3221-
if (has_tablet_mode)
3221+
/*
3222+
* The Yoga 11e series has 2 accelerometers described by a
3223+
* BOSC0200 ACPI node. This setup relies on a Windows service
3224+
* which calls special ACPI methods on this node to report
3225+
* the laptop/tent/tablet mode to the EC. The bmc150 iio driver
3226+
* does not support this, so skip the hotkey on these models.
3227+
*/
3228+
if (has_tablet_mode && !acpi_dev_present("BOSC0200", "1", -1))
32223229
tp_features.hotkey_tablet = TP_HOTKEY_TABLET_USES_GMMS;
32233230
type = "GMMS";
32243231
} else if (acpi_evalf(hkey_handle, &res, "MHKG", "qd")) {
@@ -4228,6 +4235,7 @@ static void hotkey_resume(void)
42284235
pr_err("error while attempting to reset the event firmware interface\n");
42294236

42304237
tpacpi_send_radiosw_update();
4238+
tpacpi_input_send_tabletsw();
42314239
hotkey_tablet_mode_notify_change();
42324240
hotkey_wakeup_reason_notify_change();
42334241
hotkey_wakeup_hotunplug_complete_notify_change();
@@ -8776,6 +8784,8 @@ static const struct tpacpi_quirk fan_quirk_table[] __initconst = {
87768784
TPACPI_Q_LNV3('N', '2', 'C', TPACPI_FAN_2CTL), /* P52 / P72 */
87778785
TPACPI_Q_LNV3('N', '2', 'E', TPACPI_FAN_2CTL), /* P1 / X1 Extreme (1st gen) */
87788786
TPACPI_Q_LNV3('N', '2', 'O', TPACPI_FAN_2CTL), /* P1 / X1 Extreme (2nd gen) */
8787+
TPACPI_Q_LNV3('N', '2', 'V', TPACPI_FAN_2CTL), /* P1 / X1 Extreme (3nd gen) */
8788+
TPACPI_Q_LNV3('N', '3', '0', TPACPI_FAN_2CTL), /* P15 (1st gen) / P15v (1st gen) */
87798789
};
87808790

87818791
static int __init fan_init(struct ibm_init_struct *iibm)
@@ -9703,6 +9713,7 @@ static const struct tpacpi_quirk battery_quirk_table[] __initconst = {
97039713
TPACPI_Q_LNV3('R', '0', 'B', true), /* Thinkpad 11e gen 3 */
97049714
TPACPI_Q_LNV3('R', '0', 'C', true), /* Thinkpad 13 */
97059715
TPACPI_Q_LNV3('R', '0', 'J', true), /* Thinkpad 13 gen 2 */
9716+
TPACPI_Q_LNV3('R', '0', 'K', true), /* Thinkpad 11e gen 4 celeron BIOS */
97069717
};
97079718

97089719
static int __init tpacpi_battery_init(struct ibm_init_struct *ibm)

drivers/platform/x86/toshiba_acpi.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1478,7 +1478,7 @@ static ssize_t video_proc_write(struct file *file, const char __user *buf,
14781478
struct toshiba_acpi_dev *dev = PDE_DATA(file_inode(file));
14791479
char *buffer;
14801480
char *cmd;
1481-
int lcd_out, crt_out, tv_out;
1481+
int lcd_out = -1, crt_out = -1, tv_out = -1;
14821482
int remain = count;
14831483
int value;
14841484
int ret;
@@ -1510,7 +1510,6 @@ static ssize_t video_proc_write(struct file *file, const char __user *buf,
15101510

15111511
kfree(cmd);
15121512

1513-
lcd_out = crt_out = tv_out = -1;
15141513
ret = get_video_status(dev, &video_out);
15151514
if (!ret) {
15161515
unsigned int new_video_out = video_out;

drivers/platform/x86/touchscreen_dmi.c

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,21 @@ static const struct ts_dmi_data irbis_tw90_data = {
295295
.properties = irbis_tw90_props,
296296
};
297297

298+
static const struct property_entry irbis_tw118_props[] = {
299+
PROPERTY_ENTRY_U32("touchscreen-min-x", 20),
300+
PROPERTY_ENTRY_U32("touchscreen-min-y", 30),
301+
PROPERTY_ENTRY_U32("touchscreen-size-x", 1960),
302+
PROPERTY_ENTRY_U32("touchscreen-size-y", 1510),
303+
PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-irbis-tw118.fw"),
304+
PROPERTY_ENTRY_U32("silead,max-fingers", 10),
305+
{ }
306+
};
307+
308+
static const struct ts_dmi_data irbis_tw118_data = {
309+
.acpi_name = "MSSL1680:00",
310+
.properties = irbis_tw118_props,
311+
};
312+
298313
static const struct property_entry itworks_tw891_props[] = {
299314
PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
300315
PROPERTY_ENTRY_U32("touchscreen-min-y", 5),
@@ -623,6 +638,23 @@ static const struct ts_dmi_data pov_mobii_wintab_p1006w_v10_data = {
623638
.properties = pov_mobii_wintab_p1006w_v10_props,
624639
};
625640

641+
static const struct property_entry predia_basic_props[] = {
642+
PROPERTY_ENTRY_U32("touchscreen-min-x", 3),
643+
PROPERTY_ENTRY_U32("touchscreen-min-y", 10),
644+
PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
645+
PROPERTY_ENTRY_U32("touchscreen-size-y", 1144),
646+
PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
647+
PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-predia-basic.fw"),
648+
PROPERTY_ENTRY_U32("silead,max-fingers", 10),
649+
PROPERTY_ENTRY_BOOL("silead,home-button"),
650+
{ }
651+
};
652+
653+
static const struct ts_dmi_data predia_basic_data = {
654+
.acpi_name = "MSSL1680:00",
655+
.properties = predia_basic_props,
656+
};
657+
626658
static const struct property_entry schneider_sct101ctm_props[] = {
627659
PROPERTY_ENTRY_U32("touchscreen-size-x", 1715),
628660
PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
@@ -936,6 +968,14 @@ const struct dmi_system_id touchscreen_dmi_table[] = {
936968
DMI_MATCH(DMI_PRODUCT_NAME, "TW90"),
937969
},
938970
},
971+
{
972+
/* Irbis TW118 */
973+
.driver_data = (void *)&irbis_tw118_data,
974+
.matches = {
975+
DMI_MATCH(DMI_SYS_VENDOR, "IRBIS"),
976+
DMI_MATCH(DMI_PRODUCT_NAME, "TW118"),
977+
},
978+
},
939979
{
940980
/* I.T.Works TW891 */
941981
.driver_data = (void *)&itworks_tw891_data,
@@ -1109,6 +1149,16 @@ const struct dmi_system_id touchscreen_dmi_table[] = {
11091149
DMI_MATCH(DMI_BIOS_DATE, "10/24/2014"),
11101150
},
11111151
},
1152+
{
1153+
/* Predia Basic tablet) */
1154+
.driver_data = (void *)&predia_basic_data,
1155+
.matches = {
1156+
DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
1157+
DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"),
1158+
/* Above matches are too generic, add bios-version match */
1159+
DMI_MATCH(DMI_BIOS_VERSION, "Mx.WT107.KUBNGEA"),
1160+
},
1161+
},
11121162
{
11131163
/* Point of View mobii wintab p800w (v2.1) */
11141164
.driver_data = (void *)&pov_mobii_wintab_p800w_v21_data,

0 commit comments

Comments
 (0)