mirror of https://github.com/torvalds/linux.git
platform-drivers-x86 for v6.18-4
Fixes
- acer-wmi: Ignore backlight event
- alienware-wmi-wmax: Fix quirk match table order & drop redundant entries
- amd/pmc:
- Add Xbox Ally to spurious 8042 quirk list
- Quirk list Lenovo Legion Go 2 NVMe resume
- msi-wmi-platform:
- Correct GUID to uppercase
- GUID is uncleverly copy-pasted from an example so add a DMI whitelist
- intel/speed_select_if: PCIBIOS_* return code conversion
- intel-uncore-freq & ISST: Fix kernel doc warnings
New HW support
- alienware-wmi-wmax:
- Alienware 16 Aurora support
- Alienware M support
- Alienware X support
- Dell G support
- amd/pmc:
- ROG Xbox Ally (non-X) support
- huaway-wmi: HONOR MagicBoox X16/X14 PrintScreen & YOYO keys
- hp-wmi:
- Omen 16-wf1xxx fan support
- Omen MAX 16-ah0xx fan + thermal profile support
- Victus 16-r0 and 16-s0 fan + thermal profile support
- intel/hid: Intel Nova Lake support
- intel-uncore-freq:
- Intel Panther Lake support
- Intel Wildcat Lake support
- Intel Nova Lake support
The following is an automated shortlog grouped by driver:
acer-wmi:
- Ignore backlight event
alienware-wmi-wmax:
- Add AWCC support to Alienware 16 Aurora
- Add support for the whole "G" family
- Add support for the whole "M" family
- Add support for the whole "X" family
- Drop redundant DMI entries
- Fix "Alienware m16 R1 AMD" quirk order
amd: pmc:
- Add Lenovo Legion Go 2 to pmc quirk list
amd/pmc:
- Add spurious_8042 to Xbox Ally
- Add support for Van Gogh SoC
hp-wmi:
- Add Omen 16-wf1xxx fan support
- Add Omen MAX 16-ah0xx fan support and thermal profile
- mark Victus 16-r0 and 16-s0 for victus_s fan and thermal profile support
huawei-wmi:
- add keys for HONOR models
intel/hid:
- Add Nova Lake support
intel/speed_select_if:
- Convert PCIBIOS_* return codes to errnos
intel-uncore-freq:
- Add additional client processors
- fix all header kernel-doc warnings
ISST: isst_if.h:
- fix all kernel-doc warnings
msi-wmi-platform:
- Fix typo in WMI GUID
- Only load on MSI devices
-----BEGIN PGP SIGNATURE-----
iHUEABYIAB0WIQSCSUwRdwTNL2MhaBlZrE9hU+XOMQUCaR9GsgAKCRBZrE9hU+XO
MU2qAQD8C75ebO/ltd9LZ4oTzfe0P6kmV+28z0D97tFsFmt0hwEA/fZHU/bV1+3c
+gRnoLCl4yPh214OgWnmsciPhW3iyAM=
=AtKC
-----END PGP SIGNATURE-----
Merge tag 'platform-drivers-x86-v6.18-4' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver fixes from Ilpo Järvinen:
"This one has lots of new HW entries which adds to the size in diffstat
but the individual changes are simple.
Fixes
- acer-wmi: Ignore backlight event
- alienware-wmi-wmax: Fix quirk match table order & drop redundant
entries
- amd/pmc:
- Add Xbox Ally to spurious 8042 quirk list
- Quirk list Lenovo Legion Go 2 NVMe resume
- msi-wmi-platform:
- Correct GUID to uppercase
- GUID is uncleverly copy-pasted from an example so add a DMI
whitelist
- intel/speed_select_if: PCIBIOS_* return code conversion
- intel-uncore-freq & ISST: Fix kernel doc warnings
New HW support
- alienware-wmi-wmax:
- Alienware 16 Aurora support
- Alienware M support
- Alienware X support
- Dell G support
- amd/pmc:
- ROG Xbox Ally (non-X) support
- huaway-wmi: HONOR MagicBoox X16/X14 PrintScreen & YOYO keys
- hp-wmi:
- Omen 16-wf1xxx fan support
- Omen MAX 16-ah0xx fan + thermal profile support
- Victus 16-r0 and 16-s0 fan + thermal profile support
- intel/hid: Intel Nova Lake support
- intel-uncore-freq:
- Intel Panther Lake support
- Intel Wildcat Lake support
- Intel Nova Lake support"
* tag 'platform-drivers-x86-v6.18-4' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (21 commits)
platform/x86: intel-uncore-freq: fix all header kernel-doc warnings
platform/x86: acer-wmi: Ignore backlight event
platform/x86/intel/speed_select_if: Convert PCIBIOS_* return codes to errnos
platform/x86/intel/hid: Add Nova Lake support
platform/x86: alienware-wmi-wmax: Add AWCC support to Alienware 16 Aurora
platform/x86: hp-wmi: Add Omen MAX 16-ah0xx fan support and thermal profile
platform/x86: msi-wmi-platform: Fix typo in WMI GUID
platform/x86: msi-wmi-platform: Only load on MSI devices
platform/x86/amd: pmc: Add Lenovo Legion Go 2 to pmc quirk list
platform/x86/amd/pmc: Add spurious_8042 to Xbox Ally
platform/x86/amd/pmc: Add support for Van Gogh SoC
platform/x86: alienware-wmi-wmax: Add support for the whole "G" family
platform/x86: alienware-wmi-wmax: Add support for the whole "X" family
platform/x86: alienware-wmi-wmax: Add support for the whole "M" family
platform/x86: alienware-wmi-wmax: Drop redundant DMI entries
platform/x86: alienware-wmi-wmax: Fix "Alienware m16 R1 AMD" quirk order
platform/x86: ISST: isst_if.h: fix all kernel-doc warnings
platform/x86: intel-uncore-freq: Add additional client processors
platform/x86: hp-wmi: Add Omen 16-wf1xxx fan support
platform/x86: huawei-wmi: add keys for HONOR models
...
This commit is contained in:
commit
6ba3bb3348
|
|
@ -54,6 +54,7 @@ to matching WMI devices using a struct wmi_device_id table:
|
||||||
::
|
::
|
||||||
|
|
||||||
static const struct wmi_device_id foo_id_table[] = {
|
static const struct wmi_device_id foo_id_table[] = {
|
||||||
|
/* Only use uppercase letters! */
|
||||||
{ "936DA01F-9ABD-4D9D-80C7-02AF85C822A8", NULL },
|
{ "936DA01F-9ABD-4D9D-80C7-02AF85C822A8", NULL },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -545,6 +545,7 @@ config MSI_WMI
|
||||||
config MSI_WMI_PLATFORM
|
config MSI_WMI_PLATFORM
|
||||||
tristate "MSI WMI Platform features"
|
tristate "MSI WMI Platform features"
|
||||||
depends on ACPI_WMI
|
depends on ACPI_WMI
|
||||||
|
depends on DMI
|
||||||
depends on HWMON
|
depends on HWMON
|
||||||
help
|
help
|
||||||
Say Y here if you want to have support for WMI-based platform features
|
Say Y here if you want to have support for WMI-based platform features
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,7 @@ MODULE_ALIAS("wmi:676AA15E-6A47-4D9F-A2CC-1E6D18D14026");
|
||||||
|
|
||||||
enum acer_wmi_event_ids {
|
enum acer_wmi_event_ids {
|
||||||
WMID_HOTKEY_EVENT = 0x1,
|
WMID_HOTKEY_EVENT = 0x1,
|
||||||
|
WMID_BACKLIGHT_EVENT = 0x4,
|
||||||
WMID_ACCEL_OR_KBD_DOCK_EVENT = 0x5,
|
WMID_ACCEL_OR_KBD_DOCK_EVENT = 0x5,
|
||||||
WMID_GAMING_TURBO_KEY_EVENT = 0x7,
|
WMID_GAMING_TURBO_KEY_EVENT = 0x7,
|
||||||
WMID_AC_EVENT = 0x8,
|
WMID_AC_EVENT = 0x8,
|
||||||
|
|
@ -2369,6 +2370,9 @@ static void acer_wmi_notify(union acpi_object *obj, void *context)
|
||||||
sparse_keymap_report_event(acer_wmi_input_dev, scancode, 1, true);
|
sparse_keymap_report_event(acer_wmi_input_dev, scancode, 1, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case WMID_BACKLIGHT_EVENT:
|
||||||
|
/* Already handled by acpi-video */
|
||||||
|
break;
|
||||||
case WMID_ACCEL_OR_KBD_DOCK_EVENT:
|
case WMID_ACCEL_OR_KBD_DOCK_EVENT:
|
||||||
acer_gsensor_event();
|
acer_gsensor_event();
|
||||||
acer_kbd_dock_event(&return_value);
|
acer_kbd_dock_event(&return_value);
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,14 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "21A1"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "21A1"),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.ident = "ROG Xbox Ally RC73YA",
|
||||||
|
.driver_data = &quirk_spurious_8042,
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "RC73YA"),
|
||||||
|
}
|
||||||
|
},
|
||||||
/* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */
|
/* https://bugzilla.kernel.org/show_bug.cgi?id=218024 */
|
||||||
{
|
{
|
||||||
.ident = "V14 G4 AMN",
|
.ident = "V14 G4 AMN",
|
||||||
|
|
@ -204,6 +212,23 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "82ND"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "82ND"),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
/* https://gitlab.freedesktop.org/drm/amd/-/issues/4618 */
|
||||||
|
{
|
||||||
|
.ident = "Lenovo Legion Go 2",
|
||||||
|
.driver_data = &quirk_s2idle_bug,
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "83N0"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.ident = "Lenovo Legion Go 2",
|
||||||
|
.driver_data = &quirk_s2idle_bug,
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "83N1"),
|
||||||
|
}
|
||||||
|
},
|
||||||
/* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
|
/* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
|
||||||
{
|
{
|
||||||
.ident = "HP Laptop 15s-eq2xxx",
|
.ident = "HP Laptop 15s-eq2xxx",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@ static void amd_pmc_get_ip_info(struct amd_pmc_dev *dev)
|
||||||
switch (dev->cpu_id) {
|
switch (dev->cpu_id) {
|
||||||
case AMD_CPU_ID_PCO:
|
case AMD_CPU_ID_PCO:
|
||||||
case AMD_CPU_ID_RN:
|
case AMD_CPU_ID_RN:
|
||||||
|
case AMD_CPU_ID_VG:
|
||||||
case AMD_CPU_ID_YC:
|
case AMD_CPU_ID_YC:
|
||||||
case AMD_CPU_ID_CB:
|
case AMD_CPU_ID_CB:
|
||||||
dev->num_ips = 12;
|
dev->num_ips = 12;
|
||||||
|
|
@ -517,6 +518,7 @@ static int amd_pmc_get_os_hint(struct amd_pmc_dev *dev)
|
||||||
case AMD_CPU_ID_PCO:
|
case AMD_CPU_ID_PCO:
|
||||||
return MSG_OS_HINT_PCO;
|
return MSG_OS_HINT_PCO;
|
||||||
case AMD_CPU_ID_RN:
|
case AMD_CPU_ID_RN:
|
||||||
|
case AMD_CPU_ID_VG:
|
||||||
case AMD_CPU_ID_YC:
|
case AMD_CPU_ID_YC:
|
||||||
case AMD_CPU_ID_CB:
|
case AMD_CPU_ID_CB:
|
||||||
case AMD_CPU_ID_PS:
|
case AMD_CPU_ID_PS:
|
||||||
|
|
@ -717,6 +719,7 @@ static const struct pci_device_id pmc_pci_ids[] = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_RV) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_RV) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SP) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SP) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SHP) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_SHP) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_VG) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_ROOT) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_ROOT) },
|
||||||
{ }
|
{ }
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,7 @@ void amd_mp2_stb_deinit(struct amd_pmc_dev *dev);
|
||||||
#define AMD_CPU_ID_RN 0x1630
|
#define AMD_CPU_ID_RN 0x1630
|
||||||
#define AMD_CPU_ID_PCO AMD_CPU_ID_RV
|
#define AMD_CPU_ID_PCO AMD_CPU_ID_RV
|
||||||
#define AMD_CPU_ID_CZN AMD_CPU_ID_RN
|
#define AMD_CPU_ID_CZN AMD_CPU_ID_RN
|
||||||
|
#define AMD_CPU_ID_VG 0x1645
|
||||||
#define AMD_CPU_ID_YC 0x14B5
|
#define AMD_CPU_ID_YC 0x14B5
|
||||||
#define AMD_CPU_ID_CB 0x14D8
|
#define AMD_CPU_ID_CB 0x14D8
|
||||||
#define AMD_CPU_ID_PS 0x14E8
|
#define AMD_CPU_ID_PS 0x14E8
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,14 @@ static struct awcc_quirks generic_quirks = {
|
||||||
static struct awcc_quirks empty_quirks;
|
static struct awcc_quirks empty_quirks;
|
||||||
|
|
||||||
static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
||||||
|
{
|
||||||
|
.ident = "Alienware 16 Aurora",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware 16 Aurora"),
|
||||||
|
},
|
||||||
|
.driver_data = &g_series_quirks,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware Area-51m",
|
.ident = "Alienware Area-51m",
|
||||||
.matches = {
|
.matches = {
|
||||||
|
|
@ -98,26 +106,18 @@ static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware Area-51m R2",
|
.ident = "Alienware m15",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware Area-51m R2"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15"),
|
||||||
},
|
},
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware m15 R5",
|
.ident = "Alienware m16 R1 AMD",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15 R5"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m16 R1 AMD"),
|
||||||
},
|
|
||||||
.driver_data = &generic_quirks,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.ident = "Alienware m15 R7",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m15 R7"),
|
|
||||||
},
|
},
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
|
|
@ -129,14 +129,6 @@ static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
||||||
},
|
},
|
||||||
.driver_data = &g_series_quirks,
|
.driver_data = &g_series_quirks,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
.ident = "Alienware m16 R1 AMD",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m16 R1 AMD"),
|
|
||||||
},
|
|
||||||
.driver_data = &generic_quirks,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
.ident = "Alienware m16 R2",
|
.ident = "Alienware m16 R2",
|
||||||
.matches = {
|
.matches = {
|
||||||
|
|
@ -146,114 +138,66 @@ static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware m17 R5",
|
.ident = "Alienware m17",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17 R5 AMD"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17"),
|
||||||
},
|
},
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware m18 R2",
|
.ident = "Alienware m18",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18 R2"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18"),
|
||||||
},
|
},
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware x15 R1",
|
.ident = "Alienware x15",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15 R1"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15"),
|
||||||
},
|
},
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware x15 R2",
|
.ident = "Alienware x17",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x15 R2"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x17"),
|
||||||
},
|
},
|
||||||
.driver_data = &generic_quirks,
|
.driver_data = &generic_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Alienware x17 R2",
|
.ident = "Dell Inc. G15",
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware x17 R2"),
|
|
||||||
},
|
|
||||||
.driver_data = &generic_quirks,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.ident = "Dell Inc. G15 5510",
|
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5510"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15"),
|
||||||
},
|
},
|
||||||
.driver_data = &g_series_quirks,
|
.driver_data = &g_series_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Dell Inc. G15 5511",
|
.ident = "Dell Inc. G16",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5511"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Dell G16"),
|
||||||
},
|
},
|
||||||
.driver_data = &g_series_quirks,
|
.driver_data = &g_series_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Dell Inc. G15 5515",
|
.ident = "Dell Inc. G3",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5515"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "G3"),
|
||||||
},
|
},
|
||||||
.driver_data = &g_series_quirks,
|
.driver_data = &g_series_quirks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.ident = "Dell Inc. G15 5530",
|
.ident = "Dell Inc. G5",
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5530"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "G5"),
|
||||||
},
|
|
||||||
.driver_data = &g_series_quirks,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.ident = "Dell Inc. G16 7630",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell G16 7630"),
|
|
||||||
},
|
|
||||||
.driver_data = &g_series_quirks,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.ident = "Dell Inc. G3 3500",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "G3 3500"),
|
|
||||||
},
|
|
||||||
.driver_data = &g_series_quirks,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.ident = "Dell Inc. G3 3590",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "G3 3590"),
|
|
||||||
},
|
|
||||||
.driver_data = &g_series_quirks,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.ident = "Dell Inc. G5 5500",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "G5 5500"),
|
|
||||||
},
|
|
||||||
.driver_data = &g_series_quirks,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.ident = "Dell Inc. G5 5505",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "G5 5505"),
|
|
||||||
},
|
},
|
||||||
.driver_data = &g_series_quirks,
|
.driver_data = &g_series_quirks,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -92,9 +92,11 @@ static const char * const victus_thermal_profile_boards[] = {
|
||||||
"8A25"
|
"8A25"
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DMI Board names of Victus 16-r1000 and Victus 16-s1000 laptops */
|
/* DMI Board names of Victus 16-r and Victus 16-s laptops */
|
||||||
static const char * const victus_s_thermal_profile_boards[] = {
|
static const char * const victus_s_thermal_profile_boards[] = {
|
||||||
"8C99", "8C9C"
|
"8BBE", "8BD4", "8BD5",
|
||||||
|
"8C78", "8C99", "8C9C",
|
||||||
|
"8D41",
|
||||||
};
|
};
|
||||||
|
|
||||||
enum hp_wmi_radio {
|
enum hp_wmi_radio {
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,10 @@ static const struct key_entry huawei_wmi_keymap[] = {
|
||||||
{ KE_KEY, 0x289, { KEY_WLAN } },
|
{ KE_KEY, 0x289, { KEY_WLAN } },
|
||||||
// Huawei |M| key
|
// Huawei |M| key
|
||||||
{ KE_KEY, 0x28a, { KEY_CONFIG } },
|
{ KE_KEY, 0x28a, { KEY_CONFIG } },
|
||||||
|
// HONOR YOYO key
|
||||||
|
{ KE_KEY, 0x28b, { KEY_NOTIFICATION_CENTER } },
|
||||||
|
// HONOR print screen
|
||||||
|
{ KE_KEY, 0x28e, { KEY_PRINT } },
|
||||||
// Keyboard backlit
|
// Keyboard backlit
|
||||||
{ KE_IGNORE, 0x293, { KEY_KBDILLUMTOGGLE } },
|
{ KE_IGNORE, 0x293, { KEY_KBDILLUMTOGGLE } },
|
||||||
{ KE_IGNORE, 0x294, { KEY_KBDILLUMUP } },
|
{ KE_IGNORE, 0x294, { KEY_KBDILLUMUP } },
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ static const struct acpi_device_id intel_hid_ids[] = {
|
||||||
{ "INTC10CB" },
|
{ "INTC10CB" },
|
||||||
{ "INTC10CC" },
|
{ "INTC10CC" },
|
||||||
{ "INTC10F1" },
|
{ "INTC10F1" },
|
||||||
|
{ "INTC10F2" },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(acpi, intel_hid_ids);
|
MODULE_DEVICE_TABLE(acpi, intel_hid_ids);
|
||||||
|
|
|
||||||
|
|
@ -108,11 +108,11 @@ static int isst_if_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
|
|
||||||
ret = pci_read_config_dword(pdev, 0xD0, &mmio_base);
|
ret = pci_read_config_dword(pdev, 0xD0, &mmio_base);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return pcibios_err_to_errno(ret);
|
||||||
|
|
||||||
ret = pci_read_config_dword(pdev, 0xFC, &pcu_base);
|
ret = pci_read_config_dword(pdev, 0xFC, &pcu_base);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return pcibios_err_to_errno(ret);
|
||||||
|
|
||||||
pcu_base &= GENMASK(10, 0);
|
pcu_base &= GENMASK(10, 0);
|
||||||
base_addr = (u64)mmio_base << 23 | (u64) pcu_base << 12;
|
base_addr = (u64)mmio_base << 23 | (u64) pcu_base << 12;
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
* @agent_type_mask: Bit mask of all hardware agents for this domain
|
* @agent_type_mask: Bit mask of all hardware agents for this domain
|
||||||
* @uncore_attr_group: Attribute group storage
|
* @uncore_attr_group: Attribute group storage
|
||||||
* @max_freq_khz_kobj_attr: Storage for kobject attribute max_freq_khz
|
* @max_freq_khz_kobj_attr: Storage for kobject attribute max_freq_khz
|
||||||
* @mix_freq_khz_kobj_attr: Storage for kobject attribute min_freq_khz
|
* @min_freq_khz_kobj_attr: Storage for kobject attribute min_freq_khz
|
||||||
* @initial_max_freq_khz_kobj_attr: Storage for kobject attribute initial_max_freq_khz
|
* @initial_max_freq_khz_kobj_attr: Storage for kobject attribute initial_max_freq_khz
|
||||||
* @initial_min_freq_khz_kobj_attr: Storage for kobject attribute initial_min_freq_khz
|
* @initial_min_freq_khz_kobj_attr: Storage for kobject attribute initial_min_freq_khz
|
||||||
* @current_freq_khz_kobj_attr: Storage for kobject attribute current_freq_khz
|
* @current_freq_khz_kobj_attr: Storage for kobject attribute current_freq_khz
|
||||||
|
|
@ -48,13 +48,14 @@
|
||||||
* @fabric_cluster_id_kobj_attr: Storage for kobject attribute fabric_cluster_id
|
* @fabric_cluster_id_kobj_attr: Storage for kobject attribute fabric_cluster_id
|
||||||
* @package_id_kobj_attr: Storage for kobject attribute package_id
|
* @package_id_kobj_attr: Storage for kobject attribute package_id
|
||||||
* @elc_low_threshold_percent_kobj_attr:
|
* @elc_low_threshold_percent_kobj_attr:
|
||||||
Storage for kobject attribute elc_low_threshold_percent
|
* Storage for kobject attribute elc_low_threshold_percent
|
||||||
* @elc_high_threshold_percent_kobj_attr:
|
* @elc_high_threshold_percent_kobj_attr:
|
||||||
Storage for kobject attribute elc_high_threshold_percent
|
* Storage for kobject attribute elc_high_threshold_percent
|
||||||
* @elc_high_threshold_enable_kobj_attr:
|
* @elc_high_threshold_enable_kobj_attr:
|
||||||
Storage for kobject attribute elc_high_threshold_enable
|
* Storage for kobject attribute elc_high_threshold_enable
|
||||||
* @elc_floor_freq_khz_kobj_attr: Storage for kobject attribute elc_floor_freq_khz
|
* @elc_floor_freq_khz_kobj_attr: Storage for kobject attribute elc_floor_freq_khz
|
||||||
* @agent_types_kobj_attr: Storage for kobject attribute agent_type
|
* @agent_types_kobj_attr: Storage for kobject attribute agent_type
|
||||||
|
* @die_id_kobj_attr: Attribute storage for die_id information
|
||||||
* @uncore_attrs: Attribute storage for group creation
|
* @uncore_attrs: Attribute storage for group creation
|
||||||
*
|
*
|
||||||
* This structure is used to encapsulate all data related to uncore sysfs
|
* This structure is used to encapsulate all data related to uncore sysfs
|
||||||
|
|
|
||||||
|
|
@ -256,6 +256,10 @@ static const struct x86_cpu_id intel_uncore_cpu_ids[] = {
|
||||||
X86_MATCH_VFM(INTEL_ARROWLAKE, NULL),
|
X86_MATCH_VFM(INTEL_ARROWLAKE, NULL),
|
||||||
X86_MATCH_VFM(INTEL_ARROWLAKE_H, NULL),
|
X86_MATCH_VFM(INTEL_ARROWLAKE_H, NULL),
|
||||||
X86_MATCH_VFM(INTEL_LUNARLAKE_M, NULL),
|
X86_MATCH_VFM(INTEL_LUNARLAKE_M, NULL),
|
||||||
|
X86_MATCH_VFM(INTEL_PANTHERLAKE_L, NULL),
|
||||||
|
X86_MATCH_VFM(INTEL_WILDCATLAKE_L, NULL),
|
||||||
|
X86_MATCH_VFM(INTEL_NOVALAKE, NULL),
|
||||||
|
X86_MATCH_VFM(INTEL_NOVALAKE_L, NULL),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(x86cpu, intel_uncore_cpu_ids);
|
MODULE_DEVICE_TABLE(x86cpu, intel_uncore_cpu_ids);
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
#include <linux/debugfs.h>
|
#include <linux/debugfs.h>
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
#include <linux/device/driver.h>
|
#include <linux/device/driver.h>
|
||||||
|
#include <linux/dmi.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/hwmon.h>
|
#include <linux/hwmon.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
|
@ -28,7 +29,7 @@
|
||||||
|
|
||||||
#define DRIVER_NAME "msi-wmi-platform"
|
#define DRIVER_NAME "msi-wmi-platform"
|
||||||
|
|
||||||
#define MSI_PLATFORM_GUID "ABBC0F6E-8EA1-11d1-00A0-C90629100000"
|
#define MSI_PLATFORM_GUID "ABBC0F6E-8EA1-11D1-00A0-C90629100000"
|
||||||
|
|
||||||
#define MSI_WMI_PLATFORM_INTERFACE_VERSION 2
|
#define MSI_WMI_PLATFORM_INTERFACE_VERSION 2
|
||||||
|
|
||||||
|
|
@ -448,7 +449,45 @@ static struct wmi_driver msi_wmi_platform_driver = {
|
||||||
.probe = msi_wmi_platform_probe,
|
.probe = msi_wmi_platform_probe,
|
||||||
.no_singleton = true,
|
.no_singleton = true,
|
||||||
};
|
};
|
||||||
module_wmi_driver(msi_wmi_platform_driver);
|
|
||||||
|
/*
|
||||||
|
* MSI reused the WMI GUID from the WMI-ACPI sample code provided by Microsoft,
|
||||||
|
* so other manufacturers might use it as well for their WMI-ACPI implementations.
|
||||||
|
*/
|
||||||
|
static const struct dmi_system_id msi_wmi_platform_whitelist[] __initconst = {
|
||||||
|
{
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "MICRO-STAR INT"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init msi_wmi_platform_module_init(void)
|
||||||
|
{
|
||||||
|
if (!dmi_check_system(msi_wmi_platform_whitelist)) {
|
||||||
|
if (!force)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
pr_warn("Ignoring DMI whitelist\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return wmi_driver_register(&msi_wmi_platform_driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __exit msi_wmi_platform_module_exit(void)
|
||||||
|
{
|
||||||
|
wmi_driver_unregister(&msi_wmi_platform_driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(msi_wmi_platform_module_init);
|
||||||
|
module_exit(msi_wmi_platform_module_exit);
|
||||||
|
|
||||||
|
|
||||||
MODULE_AUTHOR("Armin Wolf <W_Armin@gmx.de>");
|
MODULE_AUTHOR("Armin Wolf <W_Armin@gmx.de>");
|
||||||
MODULE_DESCRIPTION("MSI WMI platform features");
|
MODULE_DESCRIPTION("MSI WMI platform features");
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ struct isst_if_cpu_map {
|
||||||
/**
|
/**
|
||||||
* struct isst_if_cpu_maps - structure for CPU map IOCTL
|
* struct isst_if_cpu_maps - structure for CPU map IOCTL
|
||||||
* @cmd_count: Number of CPU mapping command in cpu_map[]
|
* @cmd_count: Number of CPU mapping command in cpu_map[]
|
||||||
* @cpu_map[]: Holds one or more CPU map data structure
|
* @cpu_map: Holds one or more CPU map data structure
|
||||||
*
|
*
|
||||||
* This structure used with ioctl ISST_IF_GET_PHY_ID to send
|
* This structure used with ioctl ISST_IF_GET_PHY_ID to send
|
||||||
* one or more CPU mapping commands. Here IOCTL return value indicates
|
* one or more CPU mapping commands. Here IOCTL return value indicates
|
||||||
|
|
@ -82,8 +82,8 @@ struct isst_if_io_reg {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct isst_if_io_regs - structure for IO register commands
|
* struct isst_if_io_regs - structure for IO register commands
|
||||||
* @cmd_count: Number of io reg commands in io_reg[]
|
* @req_count: Number of io reg commands in io_reg[]
|
||||||
* @io_reg[]: Holds one or more io_reg command structure
|
* @io_reg: Holds one or more io_reg command structure
|
||||||
*
|
*
|
||||||
* This structure used with ioctl ISST_IF_IO_CMD to send
|
* This structure used with ioctl ISST_IF_IO_CMD to send
|
||||||
* one or more read/write commands to PUNIT. Here IOCTL return value
|
* one or more read/write commands to PUNIT. Here IOCTL return value
|
||||||
|
|
@ -120,7 +120,7 @@ struct isst_if_mbox_cmd {
|
||||||
/**
|
/**
|
||||||
* struct isst_if_mbox_cmds - structure for mailbox commands
|
* struct isst_if_mbox_cmds - structure for mailbox commands
|
||||||
* @cmd_count: Number of mailbox commands in mbox_cmd[]
|
* @cmd_count: Number of mailbox commands in mbox_cmd[]
|
||||||
* @mbox_cmd[]: Holds one or more mbox commands
|
* @mbox_cmd: Holds one or more mbox commands
|
||||||
*
|
*
|
||||||
* This structure used with ioctl ISST_IF_MBOX_COMMAND to send
|
* This structure used with ioctl ISST_IF_MBOX_COMMAND to send
|
||||||
* one or more mailbox commands to PUNIT. Here IOCTL return value
|
* one or more mailbox commands to PUNIT. Here IOCTL return value
|
||||||
|
|
@ -152,7 +152,7 @@ struct isst_if_msr_cmd {
|
||||||
/**
|
/**
|
||||||
* struct isst_if_msr_cmds - structure for msr commands
|
* struct isst_if_msr_cmds - structure for msr commands
|
||||||
* @cmd_count: Number of mailbox commands in msr_cmd[]
|
* @cmd_count: Number of mailbox commands in msr_cmd[]
|
||||||
* @msr_cmd[]: Holds one or more msr commands
|
* @msr_cmd: Holds one or more msr commands
|
||||||
*
|
*
|
||||||
* This structure used with ioctl ISST_IF_MSR_COMMAND to send
|
* This structure used with ioctl ISST_IF_MSR_COMMAND to send
|
||||||
* one or more MSR commands. IOCTL return value indicates number of
|
* one or more MSR commands. IOCTL return value indicates number of
|
||||||
|
|
@ -167,8 +167,9 @@ struct isst_if_msr_cmds {
|
||||||
* struct isst_core_power - Structure to get/set core_power feature
|
* struct isst_core_power - Structure to get/set core_power feature
|
||||||
* @get_set: 0: Get, 1: Set
|
* @get_set: 0: Get, 1: Set
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @enable: Feature enable status
|
* @enable: Feature enable status
|
||||||
|
* @supported: Power domain supports SST_CP interface
|
||||||
* @priority_type: Priority type for the feature (ordered/proportional)
|
* @priority_type: Priority type for the feature (ordered/proportional)
|
||||||
*
|
*
|
||||||
* Structure to get/set core_power feature state using IOCTL
|
* Structure to get/set core_power feature state using IOCTL
|
||||||
|
|
@ -187,11 +188,11 @@ struct isst_core_power {
|
||||||
* struct isst_clos_param - Structure to get/set clos praram
|
* struct isst_clos_param - Structure to get/set clos praram
|
||||||
* @get_set: 0: Get, 1: Set
|
* @get_set: 0: Get, 1: Set
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* clos: Clos ID for the parameters
|
* @clos: Clos ID for the parameters
|
||||||
* min_freq_mhz: Minimum frequency in MHz
|
* @min_freq_mhz: Minimum frequency in MHz
|
||||||
* max_freq_mhz: Maximum frequency in MHz
|
* @max_freq_mhz: Maximum frequency in MHz
|
||||||
* prop_prio: Proportional priority from 0-15
|
* @prop_prio: Proportional priority from 0-15
|
||||||
*
|
*
|
||||||
* Structure to get/set per clos property using IOCTL
|
* Structure to get/set per clos property using IOCTL
|
||||||
* ISST_IF_CLOS_PARAM.
|
* ISST_IF_CLOS_PARAM.
|
||||||
|
|
@ -209,7 +210,7 @@ struct isst_clos_param {
|
||||||
/**
|
/**
|
||||||
* struct isst_if_clos_assoc - Structure to assign clos to a CPU
|
* struct isst_if_clos_assoc - Structure to assign clos to a CPU
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @logical_cpu: CPU number
|
* @logical_cpu: CPU number
|
||||||
* @clos: Clos ID to assign to the logical CPU
|
* @clos: Clos ID to assign to the logical CPU
|
||||||
*
|
*
|
||||||
|
|
@ -228,6 +229,7 @@ struct isst_if_clos_assoc {
|
||||||
* @get_set: Request is for get or set
|
* @get_set: Request is for get or set
|
||||||
* @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
|
* @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
|
||||||
* Linux CPU number
|
* Linux CPU number
|
||||||
|
* @assoc_info: CLOS data for this CPU
|
||||||
*
|
*
|
||||||
* Structure used to get/set associate CPUs to clos using IOCTL
|
* Structure used to get/set associate CPUs to clos using IOCTL
|
||||||
* ISST_IF_CLOS_ASSOC.
|
* ISST_IF_CLOS_ASSOC.
|
||||||
|
|
@ -257,7 +259,7 @@ struct isst_tpmi_instance_count {
|
||||||
/**
|
/**
|
||||||
* struct isst_perf_level_info - Structure to get information on SST-PP levels
|
* struct isst_perf_level_info - Structure to get information on SST-PP levels
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @logical_cpu: CPU number
|
* @logical_cpu: CPU number
|
||||||
* @clos: Clos ID to assign to the logical CPU
|
* @clos: Clos ID to assign to the logical CPU
|
||||||
* @max_level: Maximum performance level supported by the platform
|
* @max_level: Maximum performance level supported by the platform
|
||||||
|
|
@ -267,8 +269,8 @@ struct isst_tpmi_instance_count {
|
||||||
* @feature_state: SST-BF and SST-TF (enabled/disabled) status at current level
|
* @feature_state: SST-BF and SST-TF (enabled/disabled) status at current level
|
||||||
* @locked: SST-PP performance level change is locked/unlocked
|
* @locked: SST-PP performance level change is locked/unlocked
|
||||||
* @enabled: SST-PP feature is enabled or not
|
* @enabled: SST-PP feature is enabled or not
|
||||||
* @sst-tf_support: SST-TF support status at this level
|
* @sst_tf_support: SST-TF support status at this level
|
||||||
* @sst-bf_support: SST-BF support status at this level
|
* @sst_bf_support: SST-BF support status at this level
|
||||||
*
|
*
|
||||||
* Structure to get SST-PP details using IOCTL ISST_IF_PERF_LEVELS.
|
* Structure to get SST-PP details using IOCTL ISST_IF_PERF_LEVELS.
|
||||||
*/
|
*/
|
||||||
|
|
@ -289,7 +291,7 @@ struct isst_perf_level_info {
|
||||||
/**
|
/**
|
||||||
* struct isst_perf_level_control - Structure to set SST-PP level
|
* struct isst_perf_level_control - Structure to set SST-PP level
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @level: level to set
|
* @level: level to set
|
||||||
*
|
*
|
||||||
* Structure used change SST-PP level using IOCTL ISST_IF_PERF_SET_LEVEL.
|
* Structure used change SST-PP level using IOCTL ISST_IF_PERF_SET_LEVEL.
|
||||||
|
|
@ -303,7 +305,7 @@ struct isst_perf_level_control {
|
||||||
/**
|
/**
|
||||||
* struct isst_perf_feature_control - Structure to activate SST-BF/SST-TF
|
* struct isst_perf_feature_control - Structure to activate SST-BF/SST-TF
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @feature: bit 0 = SST-BF state, bit 1 = SST-TF state
|
* @feature: bit 0 = SST-BF state, bit 1 = SST-TF state
|
||||||
*
|
*
|
||||||
* Structure used to enable SST-BF/SST-TF using IOCTL ISST_IF_PERF_SET_FEATURE.
|
* Structure used to enable SST-BF/SST-TF using IOCTL ISST_IF_PERF_SET_FEATURE.
|
||||||
|
|
@ -320,7 +322,7 @@ struct isst_perf_feature_control {
|
||||||
/**
|
/**
|
||||||
* struct isst_perf_level_data_info - Structure to get SST-PP level details
|
* struct isst_perf_level_data_info - Structure to get SST-PP level details
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @level: SST-PP level for which caller wants to get information
|
* @level: SST-PP level for which caller wants to get information
|
||||||
* @tdp_ratio: TDP Ratio
|
* @tdp_ratio: TDP Ratio
|
||||||
* @base_freq_mhz: Base frequency in MHz
|
* @base_freq_mhz: Base frequency in MHz
|
||||||
|
|
@ -341,8 +343,8 @@ struct isst_perf_feature_control {
|
||||||
* @pm_fabric_freq_mhz: Fabric (Uncore) minimum frequency
|
* @pm_fabric_freq_mhz: Fabric (Uncore) minimum frequency
|
||||||
* @max_buckets: Maximum trl buckets
|
* @max_buckets: Maximum trl buckets
|
||||||
* @max_trl_levels: Maximum trl levels
|
* @max_trl_levels: Maximum trl levels
|
||||||
* @bucket_core_counts[TRL_MAX_BUCKETS]: Number of cores per bucket
|
* @bucket_core_counts: Number of cores per bucket
|
||||||
* @trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS]: maximum frequency
|
* @trl_freq_mhz: maximum frequency
|
||||||
* for a bucket and trl level
|
* for a bucket and trl level
|
||||||
*
|
*
|
||||||
* Structure used to get information on frequencies and TDP for a SST-PP
|
* Structure used to get information on frequencies and TDP for a SST-PP
|
||||||
|
|
@ -402,7 +404,7 @@ struct isst_perf_level_fabric_info {
|
||||||
/**
|
/**
|
||||||
* struct isst_perf_level_cpu_mask - Structure to get SST-PP level CPU mask
|
* struct isst_perf_level_cpu_mask - Structure to get SST-PP level CPU mask
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @level: SST-PP level for which caller wants to get information
|
* @level: SST-PP level for which caller wants to get information
|
||||||
* @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
|
* @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
|
||||||
* Linux CPU number. If 0 CPU buffer is copied to user space
|
* Linux CPU number. If 0 CPU buffer is copied to user space
|
||||||
|
|
@ -430,7 +432,7 @@ struct isst_perf_level_cpu_mask {
|
||||||
/**
|
/**
|
||||||
* struct isst_base_freq_info - Structure to get SST-BF frequencies
|
* struct isst_base_freq_info - Structure to get SST-BF frequencies
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @level: SST-PP level for which caller wants to get information
|
* @level: SST-PP level for which caller wants to get information
|
||||||
* @high_base_freq_mhz: High priority CPU base frequency
|
* @high_base_freq_mhz: High priority CPU base frequency
|
||||||
* @low_base_freq_mhz: Low priority CPU base frequency
|
* @low_base_freq_mhz: Low priority CPU base frequency
|
||||||
|
|
@ -453,9 +455,11 @@ struct isst_base_freq_info {
|
||||||
/**
|
/**
|
||||||
* struct isst_turbo_freq_info - Structure to get SST-TF frequencies
|
* struct isst_turbo_freq_info - Structure to get SST-TF frequencies
|
||||||
* @socket_id: Socket/package id
|
* @socket_id: Socket/package id
|
||||||
* @power_domain: Power Domain id
|
* @power_domain_id: Power Domain id
|
||||||
* @level: SST-PP level for which caller wants to get information
|
* @level: SST-PP level for which caller wants to get information
|
||||||
* @max_clip_freqs: Maximum number of low priority core clipping frequencies
|
* @max_clip_freqs: Maximum number of low priority core clipping frequencies
|
||||||
|
* @max_buckets: Maximum trl buckets
|
||||||
|
* @max_trl_levels: Maximum trl levels
|
||||||
* @lp_clip_freq_mhz: Clip frequencies per trl level
|
* @lp_clip_freq_mhz: Clip frequencies per trl level
|
||||||
* @bucket_core_counts: Maximum number of cores for a bucket
|
* @bucket_core_counts: Maximum number of cores for a bucket
|
||||||
* @trl_freq_mhz: Frequencies per trl level for each bucket
|
* @trl_freq_mhz: Frequencies per trl level for each bucket
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue