mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'platform-drivers-x86-v6.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver updates from Ilpo Järvinen:
"acer-wmi:
- Add support for PH14-51, PH16-72, and Nitro AN515-58
- Add proper hwmon support
- Improve error handling when reading "gaming system info"
- Replace direct EC reads for the current platform profile with WMI
calls to handle EC address variations
- Replace custom platform_profile cycling with the generic one
ACPI:
- platform_profile: Major refactoring and improvements
- Support registering multiple platform_profile handlers concurrently
to avoid the need to quirk which handler takes precedence
- Support reporting "custom" profile for cases where the current
profile is ambiguous or when settings tweaks are done outside the
pre-defined profile
- Abstract and layer platform_profile API better using the class_dev
and drvdata
- Various minor improvements
- Add Documentation and kerneldoc
amd/hsmp:
- Add support for HSMP protocol v7
amd/pmc:
- Support AMD 1Ah family 70h
- Support STB with Ryzen desktop SoCs
amd/pmf:
- Support Custom BIOS inputs for PMF TA
- Support passing SRA sensor data from AMD SFH (HID) to PMF TA
dell-smo8800:
- Move SMO88xx quirk away from the generic i2c-i801 driver
- Add accelerometer support for Dell Latitude E6330/E6430 and XPS
9550
- Support probing accelerometer for models yet to be listed in the
DMI mapping table because ACPI lacks i2c-address for the
accelerometer (behind a module parameter because probing might be
dangerous)
HID:
- amd_sfh: Add support for exporting SRA sensor data
hp-wmi:
- Add fan and thermal support for Victus 16-s1000
input:
- Add key for phone linking
- i8042: Add context for the i8042 filter to enable cleaning up the
filter related global variables from pdx86 drivers
lenovo-wmi-camera:
- Use SW_CAMERA_LENS_COVER instead of KEY_CAMERA_ACCESS
mellanox mlxbf-pmc:
- Add support for monitoring cycle count
- Add Documentation
thinkpad_acpi:
- Add support for phone link key
tools/power/x86/intel-speed-select:
- Fix Turbo Ratio Limit restore
x86-android-tables:
- Add support for Vexia EDU ATLA 10 Bluetooth and EC battery driver
And miscellaneous cleanups / refactoring / improvements"
* tag 'platform-drivers-x86-v6.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (133 commits)
platform/x86: acer-wmi: Fix initialization of last_non_turbo_profile
platform/x86: acer-wmi: Ignore AC events
platform/mellanox: mlxreg-io: use sysfs_emit() instead of sprintf()
platform/mellanox: mlxreg-hotplug: use sysfs_emit() instead of sprintf()
platform/mellanox: mlxbf-bootctl: use sysfs_emit() instead of sprintf()
platform/x86: hp-wmi: Add fan and thermal profile support for Victus 16-s1000
ACPI: platform_profile: Add a prefix to log messages
ACPI: platform_profile: Add documentation
ACPI: platform_profile: Clean platform_profile_handler
ACPI: platform_profile: Move platform_profile_handler
ACPI: platform_profile: Remove platform_profile_handler from exported symbols
platform/x86: thinkpad_acpi: Use devm_platform_profile_register()
platform/x86: inspur_platform_profile: Use devm_platform_profile_register()
platform/x86: hp-wmi: Use devm_platform_profile_register()
platform/x86: ideapad-laptop: Use devm_platform_profile_register()
platform/x86: dell-pc: Use devm_platform_profile_register()
platform/x86: asus-wmi: Use devm_platform_profile_register()
platform/x86: amd: pmf: sps: Use devm_platform_profile_register()
platform/x86: acer-wmi: Use devm_platform_profile_register()
platform/surface: surface_platform_profile: Use devm_platform_profile_register()
...
This commit is contained in:
@@ -1162,128 +1162,6 @@ static void dmi_check_onboard_devices(const struct dmi_header *dm, void *adap)
|
||||
}
|
||||
}
|
||||
|
||||
/* NOTE: Keep this list in sync with drivers/platform/x86/dell-smo8800.c */
|
||||
static const char *const acpi_smo8800_ids[] = {
|
||||
"SMO8800",
|
||||
"SMO8801",
|
||||
"SMO8810",
|
||||
"SMO8811",
|
||||
"SMO8820",
|
||||
"SMO8821",
|
||||
"SMO8830",
|
||||
"SMO8831",
|
||||
};
|
||||
|
||||
static acpi_status check_acpi_smo88xx_device(acpi_handle obj_handle,
|
||||
u32 nesting_level,
|
||||
void *context,
|
||||
void **return_value)
|
||||
{
|
||||
struct acpi_device_info *info;
|
||||
acpi_status status;
|
||||
char *hid;
|
||||
int i;
|
||||
|
||||
status = acpi_get_object_info(obj_handle, &info);
|
||||
if (ACPI_FAILURE(status))
|
||||
return AE_OK;
|
||||
|
||||
if (!(info->valid & ACPI_VALID_HID))
|
||||
goto smo88xx_not_found;
|
||||
|
||||
hid = info->hardware_id.string;
|
||||
if (!hid)
|
||||
goto smo88xx_not_found;
|
||||
|
||||
i = match_string(acpi_smo8800_ids, ARRAY_SIZE(acpi_smo8800_ids), hid);
|
||||
if (i < 0)
|
||||
goto smo88xx_not_found;
|
||||
|
||||
kfree(info);
|
||||
|
||||
*return_value = NULL;
|
||||
return AE_CTRL_TERMINATE;
|
||||
|
||||
smo88xx_not_found:
|
||||
kfree(info);
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
static bool is_dell_system_with_lis3lv02d(void)
|
||||
{
|
||||
void *err = ERR_PTR(-ENOENT);
|
||||
|
||||
if (!dmi_match(DMI_SYS_VENDOR, "Dell Inc."))
|
||||
return false;
|
||||
|
||||
/*
|
||||
* Check that ACPI device SMO88xx is present and is functioning.
|
||||
* Function acpi_get_devices() already filters all ACPI devices
|
||||
* which are not present or are not functioning.
|
||||
* ACPI device SMO88xx represents our ST microelectronics lis3lv02d
|
||||
* accelerometer but unfortunately ACPI does not provide any other
|
||||
* information (like I2C address).
|
||||
*/
|
||||
acpi_get_devices(NULL, check_acpi_smo88xx_device, NULL, &err);
|
||||
|
||||
return !IS_ERR(err);
|
||||
}
|
||||
|
||||
/*
|
||||
* Accelerometer's I2C address is not specified in DMI nor ACPI,
|
||||
* so it is needed to define mapping table based on DMI product names.
|
||||
*/
|
||||
static const struct {
|
||||
const char *dmi_product_name;
|
||||
unsigned short i2c_addr;
|
||||
} dell_lis3lv02d_devices[] = {
|
||||
/*
|
||||
* Dell platform team told us that these Latitude devices have
|
||||
* ST microelectronics accelerometer at I2C address 0x29.
|
||||
*/
|
||||
{ "Latitude E5250", 0x29 },
|
||||
{ "Latitude E5450", 0x29 },
|
||||
{ "Latitude E5550", 0x29 },
|
||||
{ "Latitude E6440", 0x29 },
|
||||
{ "Latitude E6440 ATG", 0x29 },
|
||||
{ "Latitude E6540", 0x29 },
|
||||
/*
|
||||
* Additional individual entries were added after verification.
|
||||
*/
|
||||
{ "Latitude 5480", 0x29 },
|
||||
{ "Precision 3540", 0x29 },
|
||||
{ "Precision M6800", 0x29 },
|
||||
{ "Vostro V131", 0x1d },
|
||||
{ "Vostro 5568", 0x29 },
|
||||
{ "XPS 15 7590", 0x29 },
|
||||
};
|
||||
|
||||
static void register_dell_lis3lv02d_i2c_device(struct i801_priv *priv)
|
||||
{
|
||||
struct i2c_board_info info;
|
||||
const char *dmi_product_name;
|
||||
int i;
|
||||
|
||||
dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||
for (i = 0; i < ARRAY_SIZE(dell_lis3lv02d_devices); ++i) {
|
||||
if (strcmp(dmi_product_name,
|
||||
dell_lis3lv02d_devices[i].dmi_product_name) == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == ARRAY_SIZE(dell_lis3lv02d_devices)) {
|
||||
dev_warn(&priv->pci_dev->dev,
|
||||
"Accelerometer lis3lv02d is present on SMBus but its"
|
||||
" address is unknown, skipping registration\n");
|
||||
return;
|
||||
}
|
||||
|
||||
memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
info.addr = dell_lis3lv02d_devices[i].i2c_addr;
|
||||
strscpy(info.type, "lis3lv02d", I2C_NAME_SIZE);
|
||||
i2c_new_client_device(&priv->adapter, &info);
|
||||
}
|
||||
|
||||
/* Register optional targets */
|
||||
static void i801_probe_optional_targets(struct i801_priv *priv)
|
||||
{
|
||||
@@ -1303,9 +1181,6 @@ static void i801_probe_optional_targets(struct i801_priv *priv)
|
||||
if (dmi_name_in_vendors("FUJITSU"))
|
||||
dmi_walk(dmi_check_onboard_devices, &priv->adapter);
|
||||
|
||||
if (is_dell_system_with_lis3lv02d())
|
||||
register_dell_lis3lv02d_i2c_device(priv);
|
||||
|
||||
/* Instantiate SPD EEPROMs unless the SMBus is multiplexed */
|
||||
#ifdef CONFIG_I2C_I801_MUX
|
||||
if (!priv->mux_pdev)
|
||||
|
||||
Reference in New Issue
Block a user