Sync up with 'for-linus' branch to resolve conflict in Elan touchpad driver.
Unified · Split
| @@ -105,6 +105,14 @@ · 104 unmodified lines | |||
| 105 | linux,code = <SW_FRONT_PROXIMITY>; | 105 | linux,code = <SW_FRONT_PROXIMITY>; |
| 106 | linux,can-disable; | 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 | isp1707: isp1707 { | 118 | isp1707: isp1707 { |
| @@ -819,10 +827,6 @@ · 708 unmodified lines | |||
| 819 | pinctrl-0 = <&mmc1_pins>; | 827 | pinctrl-0 = <&mmc1_pins>; |
| 820 | vmmc-supply = <&vmmc1>; | 828 | vmmc-supply = <&vmmc1>; |
| 821 | bus-width = <4>; | 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 | /* most boards use vaux3, only some old versions use vmmc2 instead */ | 832 | /* most boards use vaux3, only some old versions use vmmc2 instead */ |
| @@ -45,6 +45,7 @@ config JOYSTICK_A3D · 44 unmodified lines | |||
| 45 | config JOYSTICK_ADI | 45 | config JOYSTICK_ADI |
| 46 | tristate "Logitech ADI digital joysticks and gamepads" | 46 | tristate "Logitech ADI digital joysticks and gamepads" |
| 47 | select GAMEPORT | 47 | select GAMEPORT |
| 48 | depends on ADI!=m # avoid module name conflict | ||
| 48 | help | 49 | help |
| 49 | Say Y here if you have a Logitech controller using the ADI | 50 | Say Y here if you have a Logitech controller using the ADI |
| 50 | protocol over the PC gameport. | 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 | u8 hover_info = packet[ETP_HOVER_INFO_OFFSET]; | 997 | u8 hover_info = packet[ETP_HOVER_INFO_OFFSET]; |
| 998 | bool contact_valid, hover_event; | 998 | bool contact_valid, hover_event; |
| 999 | 999 | ||
| 1000 | pm_wakeup_event(&data->client->dev, 0); | ||
| 1001 | |||
| 1000 | hover_event = hover_info & BIT(6); | 1002 | hover_event = hover_info & BIT(6); |
| 1001 | 1003 | ||
| 1002 | for (i = 0; i < ETP_MAX_FINGERS; i++) { | 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 | u8 *packet = &report[ETP_REPORT_ID_OFFSET + 1]; | 1023 | u8 *packet = &report[ETP_REPORT_ID_OFFSET + 1]; |
| 1022 | int x, y; | 1024 | int x, y; |
| 1023 | 1025 | ||
| 1026 | pm_wakeup_event(&data->client->dev, 0); | ||
| 1027 | |||
| 1024 | if (!data->tp_input) { | 1028 | if (!data->tp_input) { |
| 1025 | dev_warn_once(&data->client->dev, | 1029 | dev_warn_once(&data->client->dev, |
| 1026 | "received a trackpoint report while no trackpoint device has been created. Please report upstream.\n"); | 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 | static irqreturn_t elan_isr(int irq, void *dev_id) | 1049 | static irqreturn_t elan_isr(int irq, void *dev_id) |
| 1046 | { | 1050 | { |
| 1047 | struct elan_tp_data *data = dev_id; | 1051 | struct elan_tp_data *data = dev_id; |
| 1048 | struct device *dev = &data->client->dev; | ||
| 1049 | int error; | 1052 | int error; |
| 1050 | u8 report[ETP_MAX_REPORT_LEN]; | 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 | if (error) | 1066 | if (error) |
| 1064 | goto out; | 1067 | goto out; |
| 1065 | 1068 | ||
| 1066 | pm_wakeup_event(dev, 0); | ||
| 1067 | |||
| 1068 | switch (report[ETP_REPORT_ID_OFFSET]) { | 1069 | switch (report[ETP_REPORT_ID_OFFSET]) { |
| 1069 | case ETP_REPORT_ID: | 1070 | case ETP_REPORT_ID: |
| 1070 | elan_report_absolute(data, report, false); | 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 | elan_report_trackpoint(data, report); | 1077 | elan_report_trackpoint(data, report); |
| 1077 | break; | 1078 | break; |
| 1078 | default: | 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 | report[ETP_REPORT_ID_OFFSET]); | 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 | "LEN0093", /* T480 */ | 179 | "LEN0093", /* T480 */ |
| 180 | "LEN0096", /* X280 */ | 180 | "LEN0096", /* X280 */ |
| 181 | "LEN0097", /* X280 -> ALPS trackpoint */ | 181 | "LEN0097", /* X280 -> ALPS trackpoint */ |
| 182 | "LEN0099", /* X1 Extreme 1st */ | ||
| 182 | "LEN009b", /* T580 */ | 183 | "LEN009b", /* T580 */ |
| 183 | "LEN200f", /* T450s */ | 184 | "LEN200f", /* T450s */ |
| 184 | "LEN2044", /* L470 */ | 185 | "LEN2044", /* L470 */ |
| @@ -425,6 +425,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { · 424 unmodified lines | |||
| 425 | DMI_MATCH(DMI_PRODUCT_NAME, "076804U"), | 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 | .matches = { | 436 | .matches = { |
| 430 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | 437 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), |
| @@ -1325,7 +1325,6 @@ static int elants_i2c_probe(struct i2c_client *client, · 1324 unmodified lines | |||
| 1325 | 0, MT_TOOL_PALM, 0, 0); | 1325 | 0, MT_TOOL_PALM, 0, 0); |
| 1326 | input_abs_set_res(ts->input, ABS_MT_POSITION_X, ts->x_res); | 1326 | input_abs_set_res(ts->input, ABS_MT_POSITION_X, ts->x_res); |
| 1327 | input_abs_set_res(ts->input, ABS_MT_POSITION_Y, ts->y_res); | 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 | touchscreen_parse_properties(ts->input, true, &ts->prop); | 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 | { "ELAN062B", 0 }, | 67 | { "ELAN062B", 0 }, |
| 68 | { "ELAN062C", 0 }, | 68 | { "ELAN062C", 0 }, |
| 69 | { "ELAN062D", 0 }, | 69 | { "ELAN062D", 0 }, |
| 70 | { "ELAN062E", 0 }, /* Lenovo V340 Whiskey Lake U */ | ||
| 71 | { "ELAN062F", 0 }, /* Lenovo V340 Comet Lake U */ | ||
| 70 | { "ELAN0631", 0 }, | 72 | { "ELAN0631", 0 }, |
| 71 | { "ELAN0632", 0 }, | 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 | { "ELAN1000", 0 }, | 79 | { "ELAN1000", 0 }, |
| 73 | { } | 80 | { } |
| 74 | }; | 81 | }; |
| @@ -318,7 +318,7 @@ struct pcmcia_device_id { · 317 unmodified lines | |||
| 318 | #define INPUT_DEVICE_ID_LED_MAX 0x0f | 318 | #define INPUT_DEVICE_ID_LED_MAX 0x0f |
| 319 | #define INPUT_DEVICE_ID_SND_MAX 0x07 | 319 | #define INPUT_DEVICE_ID_SND_MAX 0x07 |
| 320 | #define INPUT_DEVICE_ID_FF_MAX 0x7f | 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 | #define INPUT_DEVICE_ID_PROP_MAX 0x1f | 322 | #define INPUT_DEVICE_ID_PROP_MAX 0x1f |
| 323 | 323 | ||
| 324 | #define INPUT_DEVICE_ID_MATCH_BUS 1 | 324 | #define INPUT_DEVICE_ID_MATCH_BUS 1 |
| @@ -888,7 +888,8 @@ · 887 unmodified lines | |||
| 888 | #define SW_LINEIN_INSERT 0x0d /* set = inserted */ | 888 | #define SW_LINEIN_INSERT 0x0d /* set = inserted */ |
| 889 | #define SW_MUTE_DEVICE 0x0e /* set = device disabled */ | 889 | #define SW_MUTE_DEVICE 0x0e /* set = device disabled */ |
| 890 | #define SW_PEN_INSERTED 0x0f /* set = pen inserted */ | 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 | #define SW_CNT (SW_MAX+1) | 893 | #define SW_CNT (SW_MAX+1) |
| 893 | 894 | ||
| 894 | /* | 895 | /* |