forked from Minki/linux
platform-drivers-x86 for v5.9-2
* Attempt #3 of enabling Tablet Mode reporting w/o regressions * Improve battery recognition code in ASUS WMI driver * Fix Kconfig dependency warning for Fujitsu and LG laptop drivers * Add fixes in Thinkpad ACPI driver for _BCL method and NVRAM polling * Fix power supply extended topology in Mellanox driver * Fix memory leak in OLPC EC driver * Avoid static struct device in Intel PMC core driver * Add support for the touchscreen found in MPMAN Converter9 2-in-1 * Update MAINTAINERS to reflect the real state of affairs The following is an automated git shortlog grouped by driver: asus-nb-wmi: - Revert "Do not load on Asus T100TA and T200TA" asus-wmi: - Add BATC battery name to the list of supported intel_pmc_core: - do not create a static struct device intel-vbtn: - Switch to an allow-list for SW_TABLET_MODE reporting - Revert "Fix SW_TABLET_MODE always reporting 1 on the HP Pavilion 11 x360" - Fix SW_TABLET_MODE always reporting 1 on the HP Pavilion 11 x360 MAINTAINERS: - Add Mark Gross and Hans de Goede as x86 platform drivers maintainers mlx-platform: - Fix extended topology configuration for power supply units pcengines-apuv2: - Fix typo on define of AMD_FCH_GPIO_REG_GPIO55_DEVSLP0 Platform: - fix kconfig dependency warning for FUJITSU_LAPTOP - fix kconfig dependency warning for LG_LAPTOP - OLPC: Fix memleak in olpc_ec_probe thinkpad_acpi: - re-initialize ACPI buffer size when reuse - initialize tp_nvram_state variable - fix underline length build warning touchscreen_dmi: - Add info for the MPMAN Converter9 2-in-1 -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEqaflIX74DDDzMJJtb7wzTHR8rCgFAl97IFAACgkQb7wzTHR8 rCjE8Q/9HvCzXq26X6HdcGgsV/+Ri+Kf0LyEFwTRgJJEuWt3RcBUARseryH6W1Gd KOPnAHTt3EIEiFE2hXHIZOaLnNuuCA5Vlp78S/kLDk4Mn9p3dtvy6WK3ab07/Nok 0K+1eQsqNhgO8+ALcnZW6Q1iTl/aY0qzCWzd7GB5b1H0CXCqnJHBw6EchzOOX0qW 5eh8dDXfcgnh+PxHibFPBw6NLOG2ZyGv7R0dpGTzBtMyGA0+74A24nXjyG5oIANY S7izmdcyTAvIxtx9tf92VdfiIJFk9l1qI6mUAfxtRQGgnBiwg/EiFd52Ot05b/j/ 1Iih3c4U/fqbUrmKi31plPKS3QSn5qx1fEv2hsWQy+k4Eun9lGEVO/nYa5hScQ4u 2WQe32Wi+a4MxZFsQ70NWc3/d6LIRLJ3bt9VrZYN/hcTd3m0ixK4jzKlm2iE8rij sRP5L7hzceg68nW0e83t7L02V7+h0dcHkKpAQ+7V2Q2Ku9l3opCWI/NXaDAioRiV 704zLVOHYlJXDs4j3HPqiQd2ePKpw2XC7hbz7sVq/lTaG83sRIwRs3C5XAyilxVf /1x8v65s1N93f3/pXZKWjPbu8+RDMbJJlIt4zxidv0dHwaWt9QKIuCU+4Y85C1I3 jN7OGg1niM+3eyXF++WX4t79L+6CqjAHMdw29E/JeBv0ezB2Ol4= =OmqG -----END PGP SIGNATURE----- Merge tag 'platform-drivers-x86-v5.9-2' of git://git.infradead.org/linux-platform-drivers-x86 Pull x86 platform driver fixes from Andy Shevchenko: "We have some fixes for Tablet Mode reporting in particular, that users are complaining a lot about. Summary: - Attempt #3 of enabling Tablet Mode reporting w/o regressions - Improve battery recognition code in ASUS WMI driver - Fix Kconfig dependency warning for Fujitsu and LG laptop drivers - Add fixes in Thinkpad ACPI driver for _BCL method and NVRAM polling - Fix power supply extended topology in Mellanox driver - Fix memory leak in OLPC EC driver - Avoid static struct device in Intel PMC core driver - Add support for the touchscreen found in MPMAN Converter9 2-in-1 - Update MAINTAINERS to reflect the real state of affairs" * tag 'platform-drivers-x86-v5.9-2' of git://git.infradead.org/linux-platform-drivers-x86: platform/x86: thinkpad_acpi: re-initialize ACPI buffer size when reuse MAINTAINERS: Add Mark Gross and Hans de Goede as x86 platform drivers maintainers platform/x86: intel-vbtn: Switch to an allow-list for SW_TABLET_MODE reporting platform/x86: intel-vbtn: Revert "Fix SW_TABLET_MODE always reporting 1 on the HP Pavilion 11 x360" platform/x86: intel_pmc_core: do not create a static struct device platform/x86: mlx-platform: Fix extended topology configuration for power supply units platform/x86: pcengines-apuv2: Fix typo on define of AMD_FCH_GPIO_REG_GPIO55_DEVSLP0 platform/x86: fix kconfig dependency warning for FUJITSU_LAPTOP platform/x86: fix kconfig dependency warning for LG_LAPTOP platform/x86: thinkpad_acpi: initialize tp_nvram_state variable platform/x86: intel-vbtn: Fix SW_TABLET_MODE always reporting 1 on the HP Pavilion 11 x360 platform/x86: asus-wmi: Add BATC battery name to the list of supported platform/x86: asus-nb-wmi: Revert "Do not load on Asus T100TA and T200TA" platform/x86: touchscreen_dmi: Add info for the MPMAN Converter9 2-in-1 Documentation: laptops: thinkpad-acpi: fix underline length build warning Platform: OLPC: Fix memleak in olpc_ec_probe
This commit is contained in:
commit
7575fdda56
@ -18890,10 +18890,10 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/mm
|
||||
F: arch/x86/mm/
|
||||
|
||||
X86 PLATFORM DRIVERS
|
||||
M: Darren Hart <dvhart@infradead.org>
|
||||
M: Andy Shevchenko <andy@infradead.org>
|
||||
M: Hans de Goede <hdegoede@redhat.com>
|
||||
M: Mark Gross <mgross@linux.intel.com>
|
||||
L: platform-driver-x86@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
S: Maintained
|
||||
T: git git://git.infradead.org/linux-platform-drivers-x86.git
|
||||
F: drivers/platform/olpc/
|
||||
F: drivers/platform/x86/
|
||||
|
@ -439,7 +439,9 @@ static int olpc_ec_probe(struct platform_device *pdev)
|
||||
&config);
|
||||
if (IS_ERR(ec->dcon_rdev)) {
|
||||
dev_err(&pdev->dev, "failed to register DCON regulator\n");
|
||||
return PTR_ERR(ec->dcon_rdev);
|
||||
err = PTR_ERR(ec->dcon_rdev);
|
||||
kfree(ec);
|
||||
return err;
|
||||
}
|
||||
|
||||
ec->dbgfs_dir = olpc_ec_setup_debugfs();
|
||||
|
@ -469,6 +469,7 @@ config FUJITSU_LAPTOP
|
||||
depends on BACKLIGHT_CLASS_DEVICE
|
||||
depends on ACPI_VIDEO || ACPI_VIDEO = n
|
||||
select INPUT_SPARSEKMAP
|
||||
select NEW_LEDS
|
||||
select LEDS_CLASS
|
||||
help
|
||||
This is a driver for laptops built by Fujitsu:
|
||||
@ -1112,6 +1113,7 @@ config LG_LAPTOP
|
||||
depends on ACPI_WMI
|
||||
depends on INPUT
|
||||
select INPUT_SPARSEKMAP
|
||||
select NEW_LEDS
|
||||
select LEDS_CLASS
|
||||
help
|
||||
This driver adds support for hotkeys as well as control of keyboard
|
||||
|
@ -593,33 +593,9 @@ static struct asus_wmi_driver asus_nb_wmi_driver = {
|
||||
.detect_quirks = asus_nb_wmi_quirks,
|
||||
};
|
||||
|
||||
static const struct dmi_system_id asus_nb_wmi_blacklist[] __initconst = {
|
||||
{
|
||||
/*
|
||||
* asus-nb-wm adds no functionality. The T100TA has a detachable
|
||||
* USB kbd, so no hotkeys and it has no WMI rfkill; and loading
|
||||
* asus-nb-wm causes the camera LED to turn and _stay_ on.
|
||||
*/
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T100TA"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* The Asus T200TA has the same issue as the T100TA */
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T200TA"),
|
||||
},
|
||||
},
|
||||
{} /* Terminating entry */
|
||||
};
|
||||
|
||||
static int __init asus_nb_wmi_init(void)
|
||||
{
|
||||
if (dmi_check_system(asus_nb_wmi_blacklist))
|
||||
return -ENODEV;
|
||||
|
||||
return asus_wmi_register_driver(&asus_nb_wmi_driver);
|
||||
}
|
||||
|
||||
|
@ -442,6 +442,7 @@ static int asus_wmi_battery_add(struct power_supply *battery)
|
||||
*/
|
||||
if (strcmp(battery->desc->name, "BAT0") != 0 &&
|
||||
strcmp(battery->desc->name, "BAT1") != 0 &&
|
||||
strcmp(battery->desc->name, "BATC") != 0 &&
|
||||
strcmp(battery->desc->name, "BATT") != 0)
|
||||
return -ENODEV;
|
||||
|
||||
|
@ -167,20 +167,54 @@ static bool intel_vbtn_has_buttons(acpi_handle handle)
|
||||
return ACPI_SUCCESS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
* There are several laptops (non 2-in-1) models out there which support VGBS,
|
||||
* but simply always return 0, which we translate to SW_TABLET_MODE=1. This in
|
||||
* turn causes userspace (libinput) to suppress events from the builtin
|
||||
* keyboard and touchpad, making the laptop essentially unusable.
|
||||
*
|
||||
* Since the problem of wrongly reporting SW_TABLET_MODE=1 in combination
|
||||
* with libinput, leads to a non-usable system. Where as OTOH many people will
|
||||
* not even notice when SW_TABLET_MODE is not being reported, a DMI based allow
|
||||
* list is used here. This list mainly matches on the chassis-type of 2-in-1s.
|
||||
*
|
||||
* There are also some 2-in-1s which use the intel-vbtn ACPI interface to report
|
||||
* SW_TABLET_MODE with a chassis-type of 8 ("Portable") or 10 ("Notebook"),
|
||||
* these are matched on a per model basis, since many normal laptops with a
|
||||
* possible broken VGBS ACPI-method also use these chassis-types.
|
||||
*/
|
||||
static const struct dmi_system_id dmi_switches_allow_list[] = {
|
||||
{
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "31" /* Convertible */),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "32" /* Detachable */),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Venue 11 Pro 7130"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "HP Stream x360 Convertible PC 11"),
|
||||
},
|
||||
},
|
||||
{} /* Array terminator */
|
||||
};
|
||||
|
||||
static bool intel_vbtn_has_switches(acpi_handle handle)
|
||||
{
|
||||
const char *chassis_type = dmi_get_system_info(DMI_CHASSIS_TYPE);
|
||||
unsigned long long vgbs;
|
||||
acpi_status status;
|
||||
|
||||
/*
|
||||
* Some normal laptops have a VGBS method despite being non-convertible
|
||||
* and their VGBS method always returns 0, causing detect_tablet_mode()
|
||||
* to report SW_TABLET_MODE=1 to userspace, which causes issues.
|
||||
* These laptops have a DMI chassis_type of 9 ("Laptop"), do not report
|
||||
* switches on any devices with a DMI chassis_type of 9.
|
||||
*/
|
||||
if (chassis_type && strcmp(chassis_type, "9") == 0)
|
||||
if (!dmi_check_system(dmi_switches_allow_list))
|
||||
return false;
|
||||
|
||||
status = acpi_evaluate_integer(handle, "VGBS", NULL, &vgbs);
|
||||
|
@ -20,15 +20,10 @@
|
||||
|
||||
static void intel_pmc_core_release(struct device *dev)
|
||||
{
|
||||
/* Nothing to do. */
|
||||
kfree(dev);
|
||||
}
|
||||
|
||||
static struct platform_device pmc_core_device = {
|
||||
.name = "intel_pmc_core",
|
||||
.dev = {
|
||||
.release = intel_pmc_core_release,
|
||||
},
|
||||
};
|
||||
static struct platform_device *pmc_core_device;
|
||||
|
||||
/*
|
||||
* intel_pmc_core_platform_ids is the list of platforms where we want to
|
||||
@ -52,6 +47,8 @@ MODULE_DEVICE_TABLE(x86cpu, intel_pmc_core_platform_ids);
|
||||
|
||||
static int __init pmc_core_platform_init(void)
|
||||
{
|
||||
int retval;
|
||||
|
||||
/* Skip creating the platform device if ACPI already has a device */
|
||||
if (acpi_dev_present("INT33A1", NULL, -1))
|
||||
return -ENODEV;
|
||||
@ -59,12 +56,23 @@ static int __init pmc_core_platform_init(void)
|
||||
if (!x86_match_cpu(intel_pmc_core_platform_ids))
|
||||
return -ENODEV;
|
||||
|
||||
return platform_device_register(&pmc_core_device);
|
||||
pmc_core_device = kzalloc(sizeof(*pmc_core_device), GFP_KERNEL);
|
||||
if (!pmc_core_device)
|
||||
return -ENOMEM;
|
||||
|
||||
pmc_core_device->name = "intel_pmc_core";
|
||||
pmc_core_device->dev.release = intel_pmc_core_release;
|
||||
|
||||
retval = platform_device_register(pmc_core_device);
|
||||
if (retval)
|
||||
kfree(pmc_core_device);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void __exit pmc_core_platform_exit(void)
|
||||
{
|
||||
platform_device_unregister(&pmc_core_device);
|
||||
platform_device_unregister(pmc_core_device);
|
||||
}
|
||||
|
||||
module_init(pmc_core_platform_init);
|
||||
|
@ -171,7 +171,6 @@
|
||||
#define MLXPLAT_CPLD_NR_NONE -1
|
||||
#define MLXPLAT_CPLD_PSU_DEFAULT_NR 10
|
||||
#define MLXPLAT_CPLD_PSU_MSNXXXX_NR 4
|
||||
#define MLXPLAT_CPLD_PSU_MSNXXXX_NR2 3
|
||||
#define MLXPLAT_CPLD_FAN1_DEFAULT_NR 11
|
||||
#define MLXPLAT_CPLD_FAN2_DEFAULT_NR 12
|
||||
#define MLXPLAT_CPLD_FAN3_DEFAULT_NR 13
|
||||
@ -347,6 +346,15 @@ static struct i2c_board_info mlxplat_mlxcpld_pwr[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct i2c_board_info mlxplat_mlxcpld_ext_pwr[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("dps460", 0x5b),
|
||||
},
|
||||
{
|
||||
I2C_BOARD_INFO("dps460", 0x5a),
|
||||
},
|
||||
};
|
||||
|
||||
static struct i2c_board_info mlxplat_mlxcpld_fan[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("24c32", 0x50),
|
||||
@ -921,15 +929,15 @@ static struct mlxreg_core_data mlxplat_mlxcpld_ext_pwr_items_data[] = {
|
||||
.label = "pwr3",
|
||||
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||
.mask = BIT(2),
|
||||
.hpdev.brdinfo = &mlxplat_mlxcpld_pwr[0],
|
||||
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR2,
|
||||
.hpdev.brdinfo = &mlxplat_mlxcpld_ext_pwr[0],
|
||||
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR,
|
||||
},
|
||||
{
|
||||
.label = "pwr4",
|
||||
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||
.mask = BIT(3),
|
||||
.hpdev.brdinfo = &mlxplat_mlxcpld_pwr[1],
|
||||
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR2,
|
||||
.hpdev.brdinfo = &mlxplat_mlxcpld_ext_pwr[1],
|
||||
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#define APU2_GPIO_REG_LED3 AMD_FCH_GPIO_REG_GPIO59_DEVSLP1
|
||||
#define APU2_GPIO_REG_MODESW AMD_FCH_GPIO_REG_GPIO32_GE1
|
||||
#define APU2_GPIO_REG_SIMSWAP AMD_FCH_GPIO_REG_GPIO33_GE2
|
||||
#define APU2_GPIO_REG_MPCIE2 AMD_FCH_GPIO_REG_GPIO59_DEVSLP0
|
||||
#define APU2_GPIO_REG_MPCIE2 AMD_FCH_GPIO_REG_GPIO55_DEVSLP0
|
||||
#define APU2_GPIO_REG_MPCIE3 AMD_FCH_GPIO_REG_GPIO51
|
||||
|
||||
/* Order in which the GPIO lines are defined in the register list */
|
||||
|
@ -2569,7 +2569,7 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,
|
||||
*/
|
||||
static int hotkey_kthread(void *data)
|
||||
{
|
||||
struct tp_nvram_state s[2];
|
||||
struct tp_nvram_state s[2] = { 0 };
|
||||
u32 poll_mask, event_mask;
|
||||
unsigned int si, so;
|
||||
unsigned long t;
|
||||
@ -6829,8 +6829,10 @@ static int __init tpacpi_query_bcl_levels(acpi_handle handle)
|
||||
list_for_each_entry(child, &device->children, node) {
|
||||
acpi_status status = acpi_evaluate_object(child->handle, "_BCL",
|
||||
NULL, &buffer);
|
||||
if (ACPI_FAILURE(status))
|
||||
if (ACPI_FAILURE(status)) {
|
||||
buffer.length = ACPI_ALLOCATE_BUFFER;
|
||||
continue;
|
||||
}
|
||||
|
||||
obj = (union acpi_object *)buffer.pointer;
|
||||
if (!obj || (obj->type != ACPI_TYPE_PACKAGE)) {
|
||||
|
@ -373,6 +373,23 @@ static const struct ts_dmi_data jumper_ezpad_mini3_data = {
|
||||
.properties = jumper_ezpad_mini3_props,
|
||||
};
|
||||
|
||||
static const struct property_entry mpman_converter9_props[] = {
|
||||
PROPERTY_ENTRY_U32("touchscreen-min-x", 8),
|
||||
PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
|
||||
PROPERTY_ENTRY_U32("touchscreen-size-x", 1664),
|
||||
PROPERTY_ENTRY_U32("touchscreen-size-y", 880),
|
||||
PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
|
||||
PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
|
||||
PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-mpman-converter9.fw"),
|
||||
PROPERTY_ENTRY_U32("silead,max-fingers", 10),
|
||||
{ }
|
||||
};
|
||||
|
||||
static const struct ts_dmi_data mpman_converter9_data = {
|
||||
.acpi_name = "MSSL1680:00",
|
||||
.properties = mpman_converter9_props,
|
||||
};
|
||||
|
||||
static const struct property_entry mpman_mpwin895cl_props[] = {
|
||||
PROPERTY_ENTRY_U32("touchscreen-min-x", 3),
|
||||
PROPERTY_ENTRY_U32("touchscreen-min-y", 9),
|
||||
@ -976,6 +993,14 @@ const struct dmi_system_id touchscreen_dmi_table[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "FlexBook edge11 - M-FBE11"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* MP Man Converter 9 */
|
||||
.driver_data = (void *)&mpman_converter9_data,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "MPMAN"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Converter9"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* MP Man MPWIN895CL */
|
||||
.driver_data = (void *)&mpman_mpwin895cl_data,
|
||||
|
@ -19,7 +19,7 @@
|
||||
#define AMD_FCH_GPIO_REG_GPIO49 0x40
|
||||
#define AMD_FCH_GPIO_REG_GPIO50 0x41
|
||||
#define AMD_FCH_GPIO_REG_GPIO51 0x42
|
||||
#define AMD_FCH_GPIO_REG_GPIO59_DEVSLP0 0x43
|
||||
#define AMD_FCH_GPIO_REG_GPIO55_DEVSLP0 0x43
|
||||
#define AMD_FCH_GPIO_REG_GPIO57 0x44
|
||||
#define AMD_FCH_GPIO_REG_GPIO58 0x45
|
||||
#define AMD_FCH_GPIO_REG_GPIO59_DEVSLP1 0x46
|
||||
|
Loading…
Reference in New Issue
Block a user