Sync up with 'for-linus' branch to resolve conflict in Elan touchpad driver.
Unified · Split
| @@ -105,6 +105,14 @@ · 104 unmodified lines | ||
| 105 | 105 | linux,code = <SW_FRONT_PROXIMITY>; |
| 106 | 106 | linux,can-disable; |
| 107 | 107 | }; |
| 108 | + | |
| 109 | + machine_cover { | |
| 110 | + label = "Machine Cover"; | |
| 111 | + gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */ | |
| 112 | + linux,input-type = <EV_SW>; | |
| 113 | + linux,code = <SW_MACHINE_COVER>; | |
| 114 | + linux,can-disable; | |
| 115 | + }; | |
| 108 | 116 | }; |
| 109 | 117 | |
| 110 | 118 | isp1707: isp1707 { |
| @@ -819,10 +827,6 @@ · 708 unmodified lines | ||
| 819 | 827 | pinctrl-0 = <&mmc1_pins>; |
| 820 | 828 | vmmc-supply = <&vmmc1>; |
| 821 | 829 | bus-width = <4>; |
| 822 | − /* For debugging, it is often good idea to remove this GPIO. | |
| 823 | − It means you can remove back cover (to reboot by removing | |
| 824 | − battery) and still use the MMC card. */ | |
| 825 | − cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */ | |
| 826 | 830 | }; |
| 827 | 831 | |
| 828 | 832 | /* most boards use vaux3, only some old versions use vmmc2 instead */ |
| @@ -45,6 +45,7 @@ config JOYSTICK_A3D · 44 unmodified lines | ||
| 45 | 45 | config JOYSTICK_ADI |
| 46 | 46 | tristate "Logitech ADI digital joysticks and gamepads" |
| 47 | 47 | select GAMEPORT |
| 48 | + depends on ADI!=m # avoid module name conflict | |
| 48 | 49 | help |
| 49 | 50 | Say Y here if you have a Logitech controller using the ADI |
| 50 | 51 | protocol over the PC gameport. |
| @@ -997,6 +997,8 @@ static void elan_report_absolute(struct elan_tp_data *data, u8 *packet, · 996 unmodified lines | ||
| 997 | 997 | u8 hover_info = packet[ETP_HOVER_INFO_OFFSET]; |
| 998 | 998 | bool contact_valid, hover_event; |
| 999 | 999 | |
| 1000 | + pm_wakeup_event(&data->client->dev, 0); | |
| 1001 | + | |
| 1000 | 1002 | hover_event = hover_info & BIT(6); |
| 1001 | 1003 | |
| 1002 | 1004 | for (i = 0; i < ETP_MAX_FINGERS; i++) { |
| @@ -1021,6 +1023,8 @@ static void elan_report_trackpoint(struct elan_tp_data *data, u8 *report) · 18 unmodified lines | ||
| 1021 | 1023 | u8 *packet = &report[ETP_REPORT_ID_OFFSET + 1]; |
| 1022 | 1024 | int x, y; |
| 1023 | 1025 | |
| 1026 | + pm_wakeup_event(&data->client->dev, 0); | |
| 1027 | + | |
| 1024 | 1028 | if (!data->tp_input) { |
| 1025 | 1029 | dev_warn_once(&data->client->dev, |
| 1026 | 1030 | "received a trackpoint report while no trackpoint device has been created. Please report upstream.\n"); |
| @@ -1045,7 +1049,6 @@ static void elan_report_trackpoint(struct elan_tp_data *data, u8 *report) · 18 unmodified lines | ||
| 1045 | 1049 | static irqreturn_t elan_isr(int irq, void *dev_id) |
| 1046 | 1050 | { |
| 1047 | 1051 | struct elan_tp_data *data = dev_id; |
| 1048 | − struct device *dev = &data->client->dev; | |
| 1049 | 1052 | int error; |
| 1050 | 1053 | u8 report[ETP_MAX_REPORT_LEN]; |
| 1051 | 1054 | |
| @@ -1063,8 +1066,6 @@ static irqreturn_t elan_isr(int irq, void *dev_id) · 11 unmodified lines | ||
| 1063 | 1066 | if (error) |
| 1064 | 1067 | goto out; |
| 1065 | 1068 | |
| 1066 | − pm_wakeup_event(dev, 0); | |
| 1067 | − | |
| 1068 | 1069 | switch (report[ETP_REPORT_ID_OFFSET]) { |
| 1069 | 1070 | case ETP_REPORT_ID: |
| 1070 | 1071 | elan_report_absolute(data, report, false); |
| @@ -1076,7 +1077,7 @@ static irqreturn_t elan_isr(int irq, void *dev_id) · 5 unmodified lines | ||
| 1076 | 1077 | elan_report_trackpoint(data, report); |
| 1077 | 1078 | break; |
| 1078 | 1079 | default: |
| 1079 | − dev_err(dev, "invalid report id data (%x)\n", | |
| 1080 | + dev_err(&data->client->dev, "invalid report id data (%x)\n", | |
| 1080 | 1081 | report[ETP_REPORT_ID_OFFSET]); |
| 1081 | 1082 | } |
| 1082 | 1083 | |
| @@ -179,6 +179,7 @@ static const char * const smbus_pnp_ids[] = { · 178 unmodified lines | ||
| 179 | 179 | "LEN0093", /* T480 */ |
| 180 | 180 | "LEN0096", /* X280 */ |
| 181 | 181 | "LEN0097", /* X280 -> ALPS trackpoint */ |
| 182 | + "LEN0099", /* X1 Extreme 1st */ | |
| 182 | 183 | "LEN009b", /* T580 */ |
| 183 | 184 | "LEN200f", /* T450s */ |
| 184 | 185 | "LEN2044", /* L470 */ |
| @@ -425,6 +425,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { · 424 unmodified lines | ||
| 425 | 425 | DMI_MATCH(DMI_PRODUCT_NAME, "076804U"), |
| 426 | 426 | }, |
| 427 | 427 | }, |
| 428 | + { | |
| 429 | + /* Lenovo XiaoXin Air 12 */ | |
| 430 | + .matches = { | |
| 431 | + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), | |
| 432 | + DMI_MATCH(DMI_PRODUCT_NAME, "80UN"), | |
| 433 | + }, | |
| 434 | + }, | |
| 428 | 435 | { |
| 429 | 436 | .matches = { |
| 430 | 437 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), |
| @@ -1325,7 +1325,6 @@ static int elants_i2c_probe(struct i2c_client *client, · 1324 unmodified lines | ||
| 1325 | 1325 | 0, MT_TOOL_PALM, 0, 0); |
| 1326 | 1326 | input_abs_set_res(ts->input, ABS_MT_POSITION_X, ts->x_res); |
| 1327 | 1327 | input_abs_set_res(ts->input, ABS_MT_POSITION_Y, ts->y_res); |
| 1328 | − input_abs_set_res(ts->input, ABS_MT_TOUCH_MAJOR, 1); | |
| 1329 | 1328 | |
| 1330 | 1329 | touchscreen_parse_properties(ts->input, true, &ts->prop); |
| 1331 | 1330 | |
| @@ -67,8 +67,15 @@ static const struct acpi_device_id elan_acpi_id[] = { · 66 unmodified lines | ||
| 67 | 67 | { "ELAN062B", 0 }, |
| 68 | 68 | { "ELAN062C", 0 }, |
| 69 | 69 | { "ELAN062D", 0 }, |
| 70 | + { "ELAN062E", 0 }, /* Lenovo V340 Whiskey Lake U */ | |
| 71 | + { "ELAN062F", 0 }, /* Lenovo V340 Comet Lake U */ | |
| 70 | 72 | { "ELAN0631", 0 }, |
| 71 | 73 | { "ELAN0632", 0 }, |
| 74 | + { "ELAN0633", 0 }, /* Lenovo S145 */ | |
| 75 | + { "ELAN0634", 0 }, /* Lenovo V340 Ice lake */ | |
| 76 | + { "ELAN0635", 0 }, /* Lenovo V1415-IIL */ | |
| 77 | + { "ELAN0636", 0 }, /* Lenovo V1415-Dali */ | |
| 78 | + { "ELAN0637", 0 }, /* Lenovo V1415-IGLR */ | |
| 72 | 79 | { "ELAN1000", 0 }, |
| 73 | 80 | { } |
| 74 | 81 | }; |
| @@ -318,7 +318,7 @@ struct pcmcia_device_id { · 317 unmodified lines | ||
| 318 | 318 | #define INPUT_DEVICE_ID_LED_MAX 0x0f |
| 319 | 319 | #define INPUT_DEVICE_ID_SND_MAX 0x07 |
| 320 | 320 | #define INPUT_DEVICE_ID_FF_MAX 0x7f |
| 321 | −#define INPUT_DEVICE_ID_SW_MAX 0x0f | |
| 321 | +#define INPUT_DEVICE_ID_SW_MAX 0x10 | |
| 322 | 322 | #define INPUT_DEVICE_ID_PROP_MAX 0x1f |
| 323 | 323 | |
| 324 | 324 | #define INPUT_DEVICE_ID_MATCH_BUS 1 |
| @@ -888,7 +888,8 @@ · 887 unmodified lines | ||
| 888 | 888 | #define SW_LINEIN_INSERT 0x0d /* set = inserted */ |
| 889 | 889 | #define SW_MUTE_DEVICE 0x0e /* set = device disabled */ |
| 890 | 890 | #define SW_PEN_INSERTED 0x0f /* set = pen inserted */ |
| 891 | −#define SW_MAX 0x0f | |
| 891 | +#define SW_MACHINE_COVER 0x10 /* set = cover closed */ | |
| 892 | +#define SW_MAX 0x10 | |
| 892 | 893 | #define SW_CNT (SW_MAX+1) |
| 893 | 894 | |
| 894 | 895 | /* |