Merge tag 'v5.3-rc4' into next
Sync up with mainline to bring in device_property_count_u32 andother newer APIs.
This commit is contained in:
@@ -1827,6 +1827,31 @@ static int elantech_create_smbus(struct psmouse *psmouse,
|
||||
leave_breadcrumbs);
|
||||
}
|
||||
|
||||
static bool elantech_use_host_notify(struct psmouse *psmouse,
|
||||
struct elantech_device_info *info)
|
||||
{
|
||||
if (ETP_NEW_IC_SMBUS_HOST_NOTIFY(info->fw_version))
|
||||
return true;
|
||||
|
||||
switch (info->bus) {
|
||||
case ETP_BUS_PS2_ONLY:
|
||||
/* expected case */
|
||||
break;
|
||||
case ETP_BUS_SMB_HST_NTFY_ONLY:
|
||||
case ETP_BUS_PS2_SMB_HST_NTFY:
|
||||
/* SMbus implementation is stable since 2018 */
|
||||
if (dmi_get_bios_year() >= 2018)
|
||||
return true;
|
||||
/* fall through */
|
||||
default:
|
||||
psmouse_dbg(psmouse,
|
||||
"Ignoring SMBus bus provider %d\n", info->bus);
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* elantech_setup_smbus - called once the PS/2 devices are enumerated
|
||||
* and decides to instantiate a SMBus InterTouch device.
|
||||
@@ -1846,7 +1871,7 @@ static int elantech_setup_smbus(struct psmouse *psmouse,
|
||||
* i2c_blacklist_pnp_ids.
|
||||
* Old ICs are up to the user to decide.
|
||||
*/
|
||||
if (!ETP_NEW_IC_SMBUS_HOST_NOTIFY(info->fw_version) ||
|
||||
if (!elantech_use_host_notify(psmouse, info) ||
|
||||
psmouse_matches_pnp_id(psmouse, i2c_blacklist_pnp_ids))
|
||||
return -ENXIO;
|
||||
}
|
||||
@@ -1866,34 +1891,6 @@ static int elantech_setup_smbus(struct psmouse *psmouse,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool elantech_use_host_notify(struct psmouse *psmouse,
|
||||
struct elantech_device_info *info)
|
||||
{
|
||||
if (ETP_NEW_IC_SMBUS_HOST_NOTIFY(info->fw_version))
|
||||
return true;
|
||||
|
||||
switch (info->bus) {
|
||||
case ETP_BUS_PS2_ONLY:
|
||||
/* expected case */
|
||||
break;
|
||||
case ETP_BUS_SMB_ALERT_ONLY:
|
||||
/* fall-through */
|
||||
case ETP_BUS_PS2_SMB_ALERT:
|
||||
psmouse_dbg(psmouse, "Ignoring SMBus provider through alert protocol.\n");
|
||||
break;
|
||||
case ETP_BUS_SMB_HST_NTFY_ONLY:
|
||||
/* fall-through */
|
||||
case ETP_BUS_PS2_SMB_HST_NTFY:
|
||||
return true;
|
||||
default:
|
||||
psmouse_dbg(psmouse,
|
||||
"Ignoring SMBus bus provider %d.\n",
|
||||
info->bus);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int elantech_init_smbus(struct psmouse *psmouse)
|
||||
{
|
||||
struct elantech_device_info info;
|
||||
|
@@ -173,6 +173,7 @@ static const char * const smbus_pnp_ids[] = {
|
||||
"LEN0072", /* X1 Carbon Gen 5 (2017) - Elan/ALPS trackpoint */
|
||||
"LEN0073", /* X1 Carbon G5 (Elantech) */
|
||||
"LEN0092", /* X1 Carbon 6 */
|
||||
"LEN0093", /* T480 */
|
||||
"LEN0096", /* X280 */
|
||||
"LEN0097", /* X280 -> ALPS trackpoint */
|
||||
"LEN009b", /* T580 */
|
||||
@@ -181,6 +182,7 @@ static const char * const smbus_pnp_ids[] = {
|
||||
"LEN2055", /* E580 */
|
||||
"SYN3052", /* HP EliteBook 840 G4 */
|
||||
"SYN3221", /* HP 15-ay000 */
|
||||
"SYN323d", /* HP Spectre X360 13-w013dx */
|
||||
NULL
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user