mirror of
https://github.com/torvalds/linux.git
synced 2026-03-07 23:04:33 +01:00
platform-drivers-x86 for v7.0-2
Fixes and New HW Support
- alienware-wmi-wmax: Add G-Mode support to m18 laptops
- asus-armoury: Add support for FA401UM, G733QS, GX650RX
- dell-wmi-sysman: Don't hex dump plaintext password data
- hp-bioscfg: Support large number of enumeration attributes
- hp-wmi: Add support for Omen 14-fb1xxx, 16-xd0xxx and 16-wf0xxx,
Victus-d0xxx
- int3472: Handle GPIO type 0x10 (DOVDD)
- intel-hid:
- Add Dell 14 & 16 Plus 2-in-1 to dmi_vgbs_allow_list
- Enable 5-button array on ThinkPad X1 Fold 16 Gen 1
- mellanox: mlxreg: Fix kernel-doc warnings
- oxpec: Add support for OneXPlayer X1 Air, X1z, APEX, and Aokzoe A2 Pro
- redmi-wmi: Add more Fn hotkey mappings
- thinkpad_acpi: Fix errors reading battery thresholds
- touchscreen_dmi: Add quirk for y-inverted Goodix touchscreen on SUPI S10
- uniwill-laptop:
- FN lock/super key lock attributes rename
- Fix crash on unexpected battery event
- A special key combination can alter FN lock status so mark it volatile
- Handle FN lock event
The following is an automated shortlog grouped by driver:
alienware-wmi-wmax:
- Add G-Mode support to m18 laptops
asus-armoury:
- add support for FA401UM
- add support for G733QS
- add support for GX650RX
dell-wmi:
- Add audio/mic mute key codes
dell-wmi-sysman:
- Don't hex dump plaintext password data
hp-bioscfg:
- Support allocations of larger data
hp-wmi:
- add Omen 14-fb1xxx (board 8E41) support
- Add Omen 16-wf0xxx fan and thermal support
- Add Omen 16-xd0xxx fan and thermal support
- Add Victus 16-d0xxx support
int3472:
- Handle GPIO type 0x10 (DOVDD)
intel-hid:
- Add Dell 14 Plus 2-in-1 to dmi_vgbs_allow_list
- Add Dell 16 Plus 2-in-1 to dmi_vgbs_allow_list
- Enable 5-button array on ThinkPad X1 Fold 16 Gen 1
oxpec:
- Add support for Aokzoe A2 Pro
- Add support for OneXPlayer APEX
- Add support for OneXPlayer X1 Air
- Add support for OneXPlayer X1z
platform_data/mlxreg: mlxreg.h:
- fix all kernel-doc warnings
redmi-wmi:
- Add more hotkey mappings
thinkpad_acpi:
- Fix errors reading battery thresholds
touchscreen_dmi:
- Add quirk for y-inverted Goodix touchscreen on SUPI S10
uniwill-laptop:
- Fix crash on unexpected battery event
- Handle FN lock event
- Mark FN lock status as being volatile
- Rename FN lock and super key lock attrs
-----BEGIN PGP SIGNATURE-----
iHUEABYIAB0WIQSCSUwRdwTNL2MhaBlZrE9hU+XOMQUCaarJlgAKCRBZrE9hU+XO
MY05AQCR1izfLKgDn88+dlYyLvEaZ7CPTH+nhUddRxb/W5eF4wEAxgkiQaSMk7IV
7GBLuoazK+XDgCK3J1Coq1BiU+JpWgM=
=oUiT
-----END PGP SIGNATURE-----
Merge tag 'platform-drivers-x86-v7.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver fixes from Ilpo Järvinen:
- alienware-wmi-wmax: Add G-Mode support to m18 laptops
- asus-armoury: Add support for FA401UM, G733QS, GX650RX
- dell-wmi-sysman: Don't hex dump plaintext password data
- hp-bioscfg: Support large number of enumeration attributes
- hp-wmi: Add support for Omen 14-fb1xxx, 16-xd0xxx, 16-wf0xxx, and
Victus-d0xxx
- int3472: Handle GPIO type 0x10 (DOVDD)
- intel-hid:
- Add Dell 14 & 16 Plus 2-in-1 to dmi_vgbs_allow_list
- Enable 5-button array on ThinkPad X1 Fold 16 Gen 1
- mellanox: mlxreg: Fix kernel-doc warnings
- oxpec: Add support for OneXPlayer X1 Air, X1z, APEX, and Aokzoe A2
Pro
- redmi-wmi: Add more Fn hotkey mappings
- thinkpad_acpi: Fix errors reading battery thresholds
- touchscreen_dmi: Add quirk for y-inverted Goodix touchscreen on SUPI
S10
- uniwill-laptop:
- FN lock/super key lock attributes rename
- Fix crash on unexpected battery event
- A special key combination can alter FN lock status so mark it
volatile
- Handle FN lock event
* tag 'platform-drivers-x86-v7.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (27 commits)
platform/x86: dell-wmi-sysman: Don't hex dump plaintext password data
platform_data/mlxreg: mlxreg.h: fix all kernel-doc warnings
platform/x86: asus-armoury: add support for FA401UM
platform/x86: asus-armoury: add support for GX650RX
platform/x86: hp-bioscfg: Support allocations of larger data
platform/x86: oxpec: Add support for Aokzoe A2 Pro
platform/x86: oxpec: Add support for OneXPlayer X1 Air
platform/x86: oxpec: Add support for OneXPlayer X1z
platform/x86: oxpec: Add support for OneXPlayer APEX
platform/x86: uniwill-laptop: Handle FN lock event
platform/x86: uniwill-laptop: Mark FN lock status as being volatile
platform/x86: uniwill-laptop: Fix crash on unexpected battery event
platform/x86: uniwill-laptop: Rename FN lock and super key lock attrs
platform/x86: redmi-wmi: Add more hotkey mappings
platform/x86: alienware-wmi-wmax: Add G-Mode support to m18 laptops
platform/x86: hp-wmi: add Omen 14-fb1xxx (board 8E41) support
platform/x86: dell-wmi: Add audio/mic mute key codes
platform/x86: hp-wmi: Add Victus 16-d0xxx support
platform/x86: intel-hid: Enable 5-button array on ThinkPad X1 Fold 16 Gen 1
platform/x86: int3472: Handle GPIO type 0x10 (DOVDD)
...
This commit is contained in:
commit
54de8b835b
18 changed files with 294 additions and 63 deletions
|
|
@ -1,4 +1,4 @@
|
|||
What: /sys/bus/platform/devices/INOU0000:XX/fn_lock_toggle_enable
|
||||
What: /sys/bus/platform/devices/INOU0000:XX/fn_lock
|
||||
Date: November 2025
|
||||
KernelVersion: 6.19
|
||||
Contact: Armin Wolf <W_Armin@gmx.de>
|
||||
|
|
@ -8,15 +8,15 @@ Description:
|
|||
|
||||
Reading this file returns the current enable status of the FN lock functionality.
|
||||
|
||||
What: /sys/bus/platform/devices/INOU0000:XX/super_key_toggle_enable
|
||||
What: /sys/bus/platform/devices/INOU0000:XX/super_key_enable
|
||||
Date: November 2025
|
||||
KernelVersion: 6.19
|
||||
Contact: Armin Wolf <W_Armin@gmx.de>
|
||||
Description:
|
||||
Allows userspace applications to enable/disable the super key functionality
|
||||
of the integrated keyboard by writing "1"/"0" into this file.
|
||||
Allows userspace applications to enable/disable the super key of the integrated
|
||||
keyboard by writing "1"/"0" into this file.
|
||||
|
||||
Reading this file returns the current enable status of the super key functionality.
|
||||
Reading this file returns the current enable status of the super key.
|
||||
|
||||
What: /sys/bus/platform/devices/INOU0000:XX/touchpad_toggle_enable
|
||||
Date: November 2025
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ Keyboard settings
|
|||
|
||||
The ``uniwill-laptop`` driver allows the user to enable/disable:
|
||||
|
||||
- the FN and super key lock functionality of the integrated keyboard
|
||||
- the FN lock and super key of the integrated keyboard
|
||||
- the touchpad toggle functionality of the integrated touchpad
|
||||
|
||||
See Documentation/ABI/testing/sysfs-driver-uniwill-laptop for details.
|
||||
|
|
|
|||
|
|
@ -346,6 +346,35 @@ struct power_data {
|
|||
* _def is not required and will be assumed to be default == max if missing.
|
||||
*/
|
||||
static const struct dmi_system_id power_limits[] = {
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "FA401UM"),
|
||||
},
|
||||
.driver_data = &(struct power_data) {
|
||||
.ac_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 15,
|
||||
.ppt_pl1_spl_max = 80,
|
||||
.ppt_pl2_sppt_min = 35,
|
||||
.ppt_pl2_sppt_max = 80,
|
||||
.ppt_pl3_fppt_min = 35,
|
||||
.ppt_pl3_fppt_max = 80,
|
||||
.nv_dynamic_boost_min = 5,
|
||||
.nv_dynamic_boost_max = 15,
|
||||
.nv_temp_target_min = 75,
|
||||
.nv_temp_target_max = 87,
|
||||
},
|
||||
.dc_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 25,
|
||||
.ppt_pl1_spl_max = 35,
|
||||
.ppt_pl2_sppt_min = 31,
|
||||
.ppt_pl2_sppt_max = 44,
|
||||
.ppt_pl3_fppt_min = 45,
|
||||
.ppt_pl3_fppt_max = 65,
|
||||
.nv_temp_target_min = 75,
|
||||
.nv_temp_target_max = 87,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "FA401UV"),
|
||||
|
|
@ -1457,6 +1486,38 @@ static const struct dmi_system_id power_limits[] = {
|
|||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "GX650RX"),
|
||||
},
|
||||
.driver_data = &(struct power_data) {
|
||||
.ac_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 28,
|
||||
.ppt_pl1_spl_def = 70,
|
||||
.ppt_pl1_spl_max = 90,
|
||||
.ppt_pl2_sppt_min = 28,
|
||||
.ppt_pl2_sppt_def = 70,
|
||||
.ppt_pl2_sppt_max = 100,
|
||||
.ppt_pl3_fppt_min = 28,
|
||||
.ppt_pl3_fppt_def = 110,
|
||||
.ppt_pl3_fppt_max = 125,
|
||||
.nv_dynamic_boost_min = 5,
|
||||
.nv_dynamic_boost_max = 25,
|
||||
.nv_temp_target_min = 76,
|
||||
.nv_temp_target_max = 87,
|
||||
},
|
||||
.dc_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 28,
|
||||
.ppt_pl1_spl_max = 50,
|
||||
.ppt_pl2_sppt_min = 28,
|
||||
.ppt_pl2_sppt_max = 50,
|
||||
.ppt_pl3_fppt_min = 28,
|
||||
.ppt_pl3_fppt_max = 65,
|
||||
.nv_temp_target_min = 76,
|
||||
.nv_temp_target_max = 87,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "G513I"),
|
||||
|
|
@ -1708,6 +1769,20 @@ static const struct dmi_system_id power_limits[] = {
|
|||
.requires_fan_curve = true,
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "G733QS"),
|
||||
},
|
||||
.driver_data = &(struct power_data) {
|
||||
.ac_data = &(struct power_limits) {
|
||||
.ppt_pl1_spl_min = 15,
|
||||
.ppt_pl1_spl_max = 80,
|
||||
.ppt_pl2_sppt_min = 15,
|
||||
.ppt_pl2_sppt_max = 80,
|
||||
},
|
||||
.requires_fan_curve = false,
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "G814J"),
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ static const struct dmi_system_id awcc_dmi_table[] __initconst = {
|
|||
DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m18"),
|
||||
},
|
||||
.driver_data = &generic_quirks,
|
||||
.driver_data = &g_series_quirks,
|
||||
},
|
||||
{
|
||||
.ident = "Alienware x15",
|
||||
|
|
|
|||
|
|
@ -80,6 +80,12 @@ static const struct dmi_system_id dell_wmi_smbios_list[] __initconst = {
|
|||
static const struct key_entry dell_wmi_keymap_type_0000[] = {
|
||||
{ KE_IGNORE, 0x003a, { KEY_CAPSLOCK } },
|
||||
|
||||
/* Audio mute toggle */
|
||||
{ KE_KEY, 0x0109, { KEY_MUTE } },
|
||||
|
||||
/* Mic mute toggle */
|
||||
{ KE_KEY, 0x0150, { KEY_MICMUTE } },
|
||||
|
||||
/* Meta key lock */
|
||||
{ KE_IGNORE, 0xe000, { KEY_RIGHTMETA } },
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,6 @@ int set_new_password(const char *password_type, const char *new)
|
|||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
print_hex_dump_bytes("set new password data: ", DUMP_PREFIX_NONE, buffer, buffer_size);
|
||||
ret = call_password_interface(wmi_priv.password_attr_wdev, buffer, buffer_size);
|
||||
/* on success copy the new password to current password */
|
||||
if (!ret)
|
||||
|
|
|
|||
|
|
@ -94,8 +94,11 @@ int hp_alloc_enumeration_data(void)
|
|||
bioscfg_drv.enumeration_instances_count =
|
||||
hp_get_instance_count(HP_WMI_BIOS_ENUMERATION_GUID);
|
||||
|
||||
bioscfg_drv.enumeration_data = kzalloc_objs(*bioscfg_drv.enumeration_data,
|
||||
bioscfg_drv.enumeration_instances_count);
|
||||
if (!bioscfg_drv.enumeration_instances_count)
|
||||
return -EINVAL;
|
||||
bioscfg_drv.enumeration_data = kvcalloc(bioscfg_drv.enumeration_instances_count,
|
||||
sizeof(*bioscfg_drv.enumeration_data), GFP_KERNEL);
|
||||
|
||||
if (!bioscfg_drv.enumeration_data) {
|
||||
bioscfg_drv.enumeration_instances_count = 0;
|
||||
return -ENOMEM;
|
||||
|
|
@ -444,6 +447,6 @@ void hp_exit_enumeration_attributes(void)
|
|||
}
|
||||
bioscfg_drv.enumeration_instances_count = 0;
|
||||
|
||||
kfree(bioscfg_drv.enumeration_data);
|
||||
kvfree(bioscfg_drv.enumeration_data);
|
||||
bioscfg_drv.enumeration_data = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,6 +146,7 @@ static const char * const omen_thermal_profile_boards[] = {
|
|||
"8900", "8901", "8902", "8912", "8917", "8918", "8949", "894A", "89EB",
|
||||
"8A15", "8A42",
|
||||
"8BAD",
|
||||
"8E41",
|
||||
};
|
||||
|
||||
/* DMI Board names of Omen laptops that are specifically set to be thermal
|
||||
|
|
@ -166,17 +167,26 @@ static const char * const omen_timed_thermal_profile_boards[] = {
|
|||
"8BAD",
|
||||
};
|
||||
|
||||
/* DMI Board names of Victus 16-d1xxx laptops */
|
||||
/* DMI Board names of Victus 16-d laptops */
|
||||
static const char * const victus_thermal_profile_boards[] = {
|
||||
"88F8",
|
||||
"8A25",
|
||||
};
|
||||
|
||||
/* DMI Board names of Victus 16-r and Victus 16-s laptops */
|
||||
static const struct dmi_system_id victus_s_thermal_profile_boards[] __initconst = {
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BAB") },
|
||||
.driver_data = (void *)&omen_v1_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BBE") },
|
||||
.driver_data = (void *)&victus_s_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BCD") },
|
||||
.driver_data = (void *)&omen_v1_thermal_params,
|
||||
},
|
||||
{
|
||||
.matches = { DMI_MATCH(DMI_BOARD_NAME, "8BD4") },
|
||||
.driver_data = (void *)&victus_s_thermal_params,
|
||||
|
|
|
|||
|
|
@ -135,6 +135,13 @@ static const struct dmi_system_id button_array_table[] = {
|
|||
DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Tablet Gen 2"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "Lenovo ThinkPad X1 Fold 16 Gen 1",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Fold 16 Gen 1"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "Microsoft Surface Go 3",
|
||||
.matches = {
|
||||
|
|
@ -189,6 +196,18 @@ static const struct dmi_system_id dmi_vgbs_allow_list[] = {
|
|||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell Pro Rugged 12 Tablet RA02260"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell 14 Plus 2-in-1 DB04250"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Dell 16 Plus 2-in-1 DB06250"),
|
||||
},
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -223,6 +223,10 @@ static void int3472_get_con_id_and_polarity(struct int3472_discrete_device *int3
|
|||
*con_id = "avdd";
|
||||
*gpio_flags = GPIO_ACTIVE_HIGH;
|
||||
break;
|
||||
case INT3472_GPIO_TYPE_DOVDD:
|
||||
*con_id = "dovdd";
|
||||
*gpio_flags = GPIO_ACTIVE_HIGH;
|
||||
break;
|
||||
case INT3472_GPIO_TYPE_HANDSHAKE:
|
||||
*con_id = "dvdd";
|
||||
*gpio_flags = GPIO_ACTIVE_HIGH;
|
||||
|
|
@ -251,6 +255,7 @@ static void int3472_get_con_id_and_polarity(struct int3472_discrete_device *int3
|
|||
* 0x0b Power enable
|
||||
* 0x0c Clock enable
|
||||
* 0x0d Privacy LED
|
||||
* 0x10 DOVDD (digital I/O voltage)
|
||||
* 0x13 Hotplug detect
|
||||
*
|
||||
* There are some known platform specific quirks where that does not quite
|
||||
|
|
@ -332,6 +337,7 @@ static int skl_int3472_handle_gpio_resources(struct acpi_resource *ares,
|
|||
case INT3472_GPIO_TYPE_CLK_ENABLE:
|
||||
case INT3472_GPIO_TYPE_PRIVACY_LED:
|
||||
case INT3472_GPIO_TYPE_POWER_ENABLE:
|
||||
case INT3472_GPIO_TYPE_DOVDD:
|
||||
case INT3472_GPIO_TYPE_HANDSHAKE:
|
||||
gpio = skl_int3472_gpiod_get_from_temp_lookup(int3472, agpio, con_id, gpio_flags);
|
||||
if (IS_ERR(gpio)) {
|
||||
|
|
@ -356,6 +362,7 @@ static int skl_int3472_handle_gpio_resources(struct acpi_resource *ares,
|
|||
case INT3472_GPIO_TYPE_POWER_ENABLE:
|
||||
second_sensor = int3472->quirks.avdd_second_sensor;
|
||||
fallthrough;
|
||||
case INT3472_GPIO_TYPE_DOVDD:
|
||||
case INT3472_GPIO_TYPE_HANDSHAKE:
|
||||
ret = skl_int3472_register_regulator(int3472, gpio, enable_time_us,
|
||||
con_id, second_sensor);
|
||||
|
|
|
|||
|
|
@ -9525,14 +9525,16 @@ static int tpacpi_battery_get(int what, int battery, int *ret)
|
|||
{
|
||||
switch (what) {
|
||||
case THRESHOLD_START:
|
||||
if ACPI_FAILURE(tpacpi_battery_acpi_eval(GET_START, ret, battery))
|
||||
if (!battery_info.batteries[battery].start_support ||
|
||||
ACPI_FAILURE(tpacpi_battery_acpi_eval(GET_START, ret, battery)))
|
||||
return -ENODEV;
|
||||
|
||||
/* The value is in the low 8 bits of the response */
|
||||
*ret = *ret & 0xFF;
|
||||
return 0;
|
||||
case THRESHOLD_STOP:
|
||||
if ACPI_FAILURE(tpacpi_battery_acpi_eval(GET_STOP, ret, battery))
|
||||
if (!battery_info.batteries[battery].stop_support ||
|
||||
ACPI_FAILURE(tpacpi_battery_acpi_eval(GET_STOP, ret, battery)))
|
||||
return -ENODEV;
|
||||
/* Value is in lower 8 bits */
|
||||
*ret = *ret & 0xFF;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
*
|
||||
* Copyright (C) 2022 Joaquín I. Aramendía <samsagax@gmail.com>
|
||||
* Copyright (C) 2024 Derek J. Clark <derekjohn.clark@gmail.com>
|
||||
* Copyright (C) 2025 Antheas Kapenekakis <lkml@antheas.dev>
|
||||
* Copyright (C) 2025-2026 Antheas Kapenekakis <lkml@antheas.dev>
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
|
|
@ -114,6 +114,13 @@ static const struct dmi_system_id dmi_table[] = {
|
|||
},
|
||||
.driver_data = (void *)aok_zoe_a1,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AOKZOE"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AOKZOE A2 Pro"),
|
||||
},
|
||||
.driver_data = (void *)aok_zoe_a1,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AOKZOE"),
|
||||
|
|
@ -142,6 +149,13 @@ static const struct dmi_system_id dmi_table[] = {
|
|||
},
|
||||
.driver_data = (void *)oxp_2,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER APEX"),
|
||||
},
|
||||
.driver_data = (void *)oxp_fly,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
|
||||
|
|
@ -212,6 +226,13 @@ static const struct dmi_system_id dmi_table[] = {
|
|||
},
|
||||
.driver_data = (void *)oxp_mini_amd_pro,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER X1z"),
|
||||
},
|
||||
.driver_data = (void *)oxp_x1,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
|
||||
|
|
@ -226,6 +247,13 @@ static const struct dmi_system_id dmi_table[] = {
|
|||
},
|
||||
.driver_data = (void *)oxp_x1,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER X1Air"),
|
||||
},
|
||||
.driver_data = (void *)oxp_x1,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
|
||||
|
|
|
|||
|
|
@ -20,7 +20,10 @@
|
|||
static const struct key_entry redmi_wmi_keymap[] = {
|
||||
{KE_KEY, 0x00000201, {KEY_SELECTIVE_SCREENSHOT}},
|
||||
{KE_KEY, 0x00000301, {KEY_ALL_APPLICATIONS}},
|
||||
{KE_KEY, 0x00001b01, {KEY_SETUP}},
|
||||
{KE_KEY, 0x00001b01, {KEY_CONFIG}},
|
||||
{KE_KEY, 0x00011b01, {KEY_CONFIG}},
|
||||
{KE_KEY, 0x00010101, {KEY_SWITCHVIDEOMODE}},
|
||||
{KE_KEY, 0x00001a01, {KEY_REFRESH_RATE_TOGGLE}},
|
||||
|
||||
/* AI button has code for each position */
|
||||
{KE_KEY, 0x00011801, {KEY_ASSISTANT}},
|
||||
|
|
@ -32,6 +35,26 @@ static const struct key_entry redmi_wmi_keymap[] = {
|
|||
{KE_IGNORE, 0x00050501, {}},
|
||||
{KE_IGNORE, 0x000a0501, {}},
|
||||
|
||||
/* Xiaomi G Command Center */
|
||||
{KE_KEY, 0x00010a01, {KEY_VENDOR}},
|
||||
|
||||
/* OEM preset power mode */
|
||||
{KE_IGNORE, 0x00011601, {}},
|
||||
{KE_IGNORE, 0x00021601, {}},
|
||||
{KE_IGNORE, 0x00031601, {}},
|
||||
{KE_IGNORE, 0x00041601, {}},
|
||||
|
||||
/* Fn Lock state */
|
||||
{KE_IGNORE, 0x00000701, {}},
|
||||
{KE_IGNORE, 0x00010701, {}},
|
||||
|
||||
/* Fn+`/1/2/3/4 */
|
||||
{KE_KEY, 0x00011101, {KEY_F13}},
|
||||
{KE_KEY, 0x00011201, {KEY_F14}},
|
||||
{KE_KEY, 0x00011301, {KEY_F15}},
|
||||
{KE_KEY, 0x00011401, {KEY_F16}},
|
||||
{KE_KEY, 0x00011501, {KEY_F17}},
|
||||
|
||||
{KE_END}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -410,6 +410,16 @@ static const struct ts_dmi_data gdix1002_upside_down_data = {
|
|||
.properties = gdix1001_upside_down_props,
|
||||
};
|
||||
|
||||
static const struct property_entry gdix1001_y_inverted_props[] = {
|
||||
PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
|
||||
{ }
|
||||
};
|
||||
|
||||
static const struct ts_dmi_data gdix1001_y_inverted_data = {
|
||||
.acpi_name = "GDIX1001",
|
||||
.properties = gdix1001_y_inverted_props,
|
||||
};
|
||||
|
||||
static const struct property_entry gp_electronic_t701_props[] = {
|
||||
PROPERTY_ENTRY_U32("touchscreen-size-x", 960),
|
||||
PROPERTY_ENTRY_U32("touchscreen-size-y", 640),
|
||||
|
|
@ -1658,6 +1668,14 @@ const struct dmi_system_id touchscreen_dmi_table[] = {
|
|||
DMI_MATCH(DMI_PRODUCT_SKU, "PN20170413488"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* SUPI S10 */
|
||||
.driver_data = (void *)&gdix1001_y_inverted_data,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "SUPI"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "S10"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* Techbite Arc 11.6 */
|
||||
.driver_data = (void *)&techbite_arc_11_6_data,
|
||||
|
|
|
|||
|
|
@ -314,8 +314,8 @@
|
|||
#define LED_CHANNELS 3
|
||||
#define LED_MAX_BRIGHTNESS 200
|
||||
|
||||
#define UNIWILL_FEATURE_FN_LOCK_TOGGLE BIT(0)
|
||||
#define UNIWILL_FEATURE_SUPER_KEY_TOGGLE BIT(1)
|
||||
#define UNIWILL_FEATURE_FN_LOCK BIT(0)
|
||||
#define UNIWILL_FEATURE_SUPER_KEY BIT(1)
|
||||
#define UNIWILL_FEATURE_TOUCHPAD_TOGGLE BIT(2)
|
||||
#define UNIWILL_FEATURE_LIGHTBAR BIT(3)
|
||||
#define UNIWILL_FEATURE_BATTERY BIT(4)
|
||||
|
|
@ -330,6 +330,7 @@ struct uniwill_data {
|
|||
struct acpi_battery_hook hook;
|
||||
unsigned int last_charge_ctrl;
|
||||
struct mutex battery_lock; /* Protects the list of currently registered batteries */
|
||||
unsigned int last_status;
|
||||
unsigned int last_switch_status;
|
||||
struct mutex super_key_lock; /* Protects the toggling of the super key lock state */
|
||||
struct list_head batteries;
|
||||
|
|
@ -377,11 +378,15 @@ static const struct key_entry uniwill_keymap[] = {
|
|||
{ KE_IGNORE, UNIWILL_OSD_CAPSLOCK, { KEY_CAPSLOCK }},
|
||||
{ KE_IGNORE, UNIWILL_OSD_NUMLOCK, { KEY_NUMLOCK }},
|
||||
|
||||
/* Reported when the user locks/unlocks the super key */
|
||||
{ KE_IGNORE, UNIWILL_OSD_SUPER_KEY_LOCK_ENABLE, { KEY_UNKNOWN }},
|
||||
{ KE_IGNORE, UNIWILL_OSD_SUPER_KEY_LOCK_DISABLE, { KEY_UNKNOWN }},
|
||||
/*
|
||||
* Reported when the user enables/disables the super key.
|
||||
* Those events might even be reported when the change was done
|
||||
* using the sysfs attribute!
|
||||
*/
|
||||
{ KE_IGNORE, UNIWILL_OSD_SUPER_KEY_DISABLE, { KEY_UNKNOWN }},
|
||||
{ KE_IGNORE, UNIWILL_OSD_SUPER_KEY_ENABLE, { KEY_UNKNOWN }},
|
||||
/* Optional, might not be reported by all devices */
|
||||
{ KE_IGNORE, UNIWILL_OSD_SUPER_KEY_LOCK_CHANGED, { KEY_UNKNOWN }},
|
||||
{ KE_IGNORE, UNIWILL_OSD_SUPER_KEY_STATE_CHANGED, { KEY_UNKNOWN }},
|
||||
|
||||
/* Reported in manual mode when toggling the airplane mode status */
|
||||
{ KE_KEY, UNIWILL_OSD_RFKILL, { KEY_RFKILL }},
|
||||
|
|
@ -401,9 +406,6 @@ static const struct key_entry uniwill_keymap[] = {
|
|||
/* Reported when the user wants to toggle the mute status */
|
||||
{ KE_IGNORE, UNIWILL_OSD_MUTE, { KEY_MUTE }},
|
||||
|
||||
/* Reported when the user locks/unlocks the Fn key */
|
||||
{ KE_IGNORE, UNIWILL_OSD_FN_LOCK, { KEY_FN_ESC }},
|
||||
|
||||
/* Reported when the user wants to toggle the brightness of the keyboard */
|
||||
{ KE_KEY, UNIWILL_OSD_KBDILLUMTOGGLE, { KEY_KBDILLUMTOGGLE }},
|
||||
{ KE_KEY, UNIWILL_OSD_KB_LED_LEVEL0, { KEY_KBDILLUMTOGGLE }},
|
||||
|
|
@ -576,6 +578,7 @@ static bool uniwill_volatile_reg(struct device *dev, unsigned int reg)
|
|||
case EC_ADDR_SECOND_FAN_RPM_1:
|
||||
case EC_ADDR_SECOND_FAN_RPM_2:
|
||||
case EC_ADDR_BAT_ALERT:
|
||||
case EC_ADDR_BIOS_OEM:
|
||||
case EC_ADDR_PWM_1:
|
||||
case EC_ADDR_PWM_2:
|
||||
case EC_ADDR_TRIGGER:
|
||||
|
|
@ -600,8 +603,8 @@ static const struct regmap_config uniwill_ec_config = {
|
|||
.use_single_write = true,
|
||||
};
|
||||
|
||||
static ssize_t fn_lock_toggle_enable_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t fn_lock_store(struct device *dev, struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct uniwill_data *data = dev_get_drvdata(dev);
|
||||
unsigned int value;
|
||||
|
|
@ -624,8 +627,7 @@ static ssize_t fn_lock_toggle_enable_store(struct device *dev, struct device_att
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t fn_lock_toggle_enable_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t fn_lock_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct uniwill_data *data = dev_get_drvdata(dev);
|
||||
unsigned int value;
|
||||
|
|
@ -638,10 +640,10 @@ static ssize_t fn_lock_toggle_enable_show(struct device *dev, struct device_attr
|
|||
return sysfs_emit(buf, "%d\n", !!(value & FN_LOCK_STATUS));
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_RW(fn_lock_toggle_enable);
|
||||
static DEVICE_ATTR_RW(fn_lock);
|
||||
|
||||
static ssize_t super_key_toggle_enable_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t super_key_enable_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct uniwill_data *data = dev_get_drvdata(dev);
|
||||
unsigned int value;
|
||||
|
|
@ -673,8 +675,7 @@ static ssize_t super_key_toggle_enable_store(struct device *dev, struct device_a
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t super_key_toggle_enable_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t super_key_enable_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct uniwill_data *data = dev_get_drvdata(dev);
|
||||
unsigned int value;
|
||||
|
|
@ -687,7 +688,7 @@ static ssize_t super_key_toggle_enable_show(struct device *dev, struct device_at
|
|||
return sysfs_emit(buf, "%d\n", !(value & SUPER_KEY_LOCK_STATUS));
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_RW(super_key_toggle_enable);
|
||||
static DEVICE_ATTR_RW(super_key_enable);
|
||||
|
||||
static ssize_t touchpad_toggle_enable_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
|
|
@ -881,8 +882,8 @@ static int uniwill_nvidia_ctgp_init(struct uniwill_data *data)
|
|||
|
||||
static struct attribute *uniwill_attrs[] = {
|
||||
/* Keyboard-related */
|
||||
&dev_attr_fn_lock_toggle_enable.attr,
|
||||
&dev_attr_super_key_toggle_enable.attr,
|
||||
&dev_attr_fn_lock.attr,
|
||||
&dev_attr_super_key_enable.attr,
|
||||
&dev_attr_touchpad_toggle_enable.attr,
|
||||
/* Lightbar-related */
|
||||
&dev_attr_rainbow_animation.attr,
|
||||
|
|
@ -897,13 +898,13 @@ static umode_t uniwill_attr_is_visible(struct kobject *kobj, struct attribute *a
|
|||
struct device *dev = kobj_to_dev(kobj);
|
||||
struct uniwill_data *data = dev_get_drvdata(dev);
|
||||
|
||||
if (attr == &dev_attr_fn_lock_toggle_enable.attr) {
|
||||
if (uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK_TOGGLE))
|
||||
if (attr == &dev_attr_fn_lock.attr) {
|
||||
if (uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK))
|
||||
return attr->mode;
|
||||
}
|
||||
|
||||
if (attr == &dev_attr_super_key_toggle_enable.attr) {
|
||||
if (uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY_TOGGLE))
|
||||
if (attr == &dev_attr_super_key_enable.attr) {
|
||||
if (uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY))
|
||||
return attr->mode;
|
||||
}
|
||||
|
||||
|
|
@ -1357,6 +1358,9 @@ static int uniwill_notifier_call(struct notifier_block *nb, unsigned long action
|
|||
|
||||
switch (action) {
|
||||
case UNIWILL_OSD_BATTERY_ALERT:
|
||||
if (!uniwill_device_supports(data, UNIWILL_FEATURE_BATTERY))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
mutex_lock(&data->battery_lock);
|
||||
list_for_each_entry(entry, &data->batteries, head) {
|
||||
power_supply_changed(entry->battery);
|
||||
|
|
@ -1369,6 +1373,13 @@ static int uniwill_notifier_call(struct notifier_block *nb, unsigned long action
|
|||
* gets implemented.
|
||||
*/
|
||||
|
||||
return NOTIFY_OK;
|
||||
case UNIWILL_OSD_FN_LOCK:
|
||||
if (!uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
sysfs_notify(&data->dev->kobj, NULL, "fn_lock");
|
||||
|
||||
return NOTIFY_OK;
|
||||
default:
|
||||
mutex_lock(&data->input_lock);
|
||||
|
|
@ -1503,9 +1514,21 @@ static void uniwill_shutdown(struct platform_device *pdev)
|
|||
regmap_clear_bits(data->regmap, EC_ADDR_AP_OEM, ENABLE_MANUAL_CTRL);
|
||||
}
|
||||
|
||||
static int uniwill_suspend_keyboard(struct uniwill_data *data)
|
||||
static int uniwill_suspend_fn_lock(struct uniwill_data *data)
|
||||
{
|
||||
if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY_TOGGLE))
|
||||
if (!uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The EC_ADDR_BIOS_OEM is marked as volatile, so we have to restore it
|
||||
* ourselves.
|
||||
*/
|
||||
return regmap_read(data->regmap, EC_ADDR_BIOS_OEM, &data->last_status);
|
||||
}
|
||||
|
||||
static int uniwill_suspend_super_key(struct uniwill_data *data)
|
||||
{
|
||||
if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
|
|
@ -1542,7 +1565,11 @@ static int uniwill_suspend(struct device *dev)
|
|||
struct uniwill_data *data = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
ret = uniwill_suspend_keyboard(data);
|
||||
ret = uniwill_suspend_fn_lock(data);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = uniwill_suspend_super_key(data);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
@ -1560,12 +1587,21 @@ static int uniwill_suspend(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int uniwill_resume_keyboard(struct uniwill_data *data)
|
||||
static int uniwill_resume_fn_lock(struct uniwill_data *data)
|
||||
{
|
||||
if (!uniwill_device_supports(data, UNIWILL_FEATURE_FN_LOCK))
|
||||
return 0;
|
||||
|
||||
return regmap_update_bits(data->regmap, EC_ADDR_BIOS_OEM, FN_LOCK_STATUS,
|
||||
data->last_status);
|
||||
}
|
||||
|
||||
static int uniwill_resume_super_key(struct uniwill_data *data)
|
||||
{
|
||||
unsigned int value;
|
||||
int ret;
|
||||
|
||||
if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY_TOGGLE))
|
||||
if (!uniwill_device_supports(data, UNIWILL_FEATURE_SUPER_KEY))
|
||||
return 0;
|
||||
|
||||
ret = regmap_read(data->regmap, EC_ADDR_SWITCH_STATUS, &value);
|
||||
|
|
@ -1608,7 +1644,11 @@ static int uniwill_resume(struct device *dev)
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = uniwill_resume_keyboard(data);
|
||||
ret = uniwill_resume_fn_lock(data);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = uniwill_resume_super_key(data);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
@ -1643,16 +1683,16 @@ static struct platform_driver uniwill_driver = {
|
|||
};
|
||||
|
||||
static struct uniwill_device_descriptor lapac71h_descriptor __initdata = {
|
||||
.features = UNIWILL_FEATURE_FN_LOCK_TOGGLE |
|
||||
UNIWILL_FEATURE_SUPER_KEY_TOGGLE |
|
||||
.features = UNIWILL_FEATURE_FN_LOCK |
|
||||
UNIWILL_FEATURE_SUPER_KEY |
|
||||
UNIWILL_FEATURE_TOUCHPAD_TOGGLE |
|
||||
UNIWILL_FEATURE_BATTERY |
|
||||
UNIWILL_FEATURE_HWMON,
|
||||
};
|
||||
|
||||
static struct uniwill_device_descriptor lapkc71f_descriptor __initdata = {
|
||||
.features = UNIWILL_FEATURE_FN_LOCK_TOGGLE |
|
||||
UNIWILL_FEATURE_SUPER_KEY_TOGGLE |
|
||||
.features = UNIWILL_FEATURE_FN_LOCK |
|
||||
UNIWILL_FEATURE_SUPER_KEY |
|
||||
UNIWILL_FEATURE_TOUCHPAD_TOGGLE |
|
||||
UNIWILL_FEATURE_LIGHTBAR |
|
||||
UNIWILL_FEATURE_BATTERY |
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@
|
|||
#define UNIWILL_OSD_KB_LED_LEVEL3 0x3E
|
||||
#define UNIWILL_OSD_KB_LED_LEVEL4 0x3F
|
||||
|
||||
#define UNIWILL_OSD_SUPER_KEY_LOCK_ENABLE 0x40
|
||||
#define UNIWILL_OSD_SUPER_KEY_LOCK_DISABLE 0x41
|
||||
#define UNIWILL_OSD_SUPER_KEY_DISABLE 0x40
|
||||
#define UNIWILL_OSD_SUPER_KEY_ENABLE 0x41
|
||||
|
||||
#define UNIWILL_OSD_MENU_JP 0x42
|
||||
|
||||
|
|
@ -74,7 +74,7 @@
|
|||
|
||||
#define UNIWILL_OSD_RFKILL 0xA4
|
||||
|
||||
#define UNIWILL_OSD_SUPER_KEY_LOCK_CHANGED 0xA5
|
||||
#define UNIWILL_OSD_SUPER_KEY_STATE_CHANGED 0xA5
|
||||
|
||||
#define UNIWILL_OSD_LIGHTBAR_STATE_CHANGED 0xA6
|
||||
|
||||
|
|
|
|||
|
|
@ -13,10 +13,10 @@
|
|||
/**
|
||||
* enum mlxreg_wdt_type - type of HW watchdog
|
||||
*
|
||||
* TYPE1 HW watchdog implementation exist in old systems.
|
||||
* All new systems have TYPE2 HW watchdog.
|
||||
* TYPE3 HW watchdog can exist on all systems with new CPLD.
|
||||
* TYPE3 is selected by WD capability bit.
|
||||
* @MLX_WDT_TYPE1: HW watchdog implementation in old systems.
|
||||
* @MLX_WDT_TYPE2: All new systems have TYPE2 HW watchdog.
|
||||
* @MLX_WDT_TYPE3: HW watchdog that can exist on all systems with new CPLD.
|
||||
* TYPE3 is selected by WD capability bit.
|
||||
*/
|
||||
enum mlxreg_wdt_type {
|
||||
MLX_WDT_TYPE1,
|
||||
|
|
@ -35,7 +35,7 @@ enum mlxreg_wdt_type {
|
|||
* @MLXREG_HOTPLUG_LC_SYNCED: entry for line card synchronization events, coming
|
||||
* after hardware-firmware synchronization handshake;
|
||||
* @MLXREG_HOTPLUG_LC_READY: entry for line card ready events, indicating line card
|
||||
PHYs ready / unready state;
|
||||
* PHYs ready / unready state;
|
||||
* @MLXREG_HOTPLUG_LC_ACTIVE: entry for line card active events, indicating firmware
|
||||
* availability / unavailability for the ports on line card;
|
||||
* @MLXREG_HOTPLUG_LC_THERMAL: entry for line card thermal shutdown events, positive
|
||||
|
|
@ -123,8 +123,8 @@ struct mlxreg_hotplug_device {
|
|||
* @reg_pwr: attribute power register;
|
||||
* @reg_ena: attribute enable register;
|
||||
* @mode: access mode;
|
||||
* @np - pointer to node platform associated with attribute;
|
||||
* @hpdev - hotplug device data;
|
||||
* @np: pointer to node platform associated with attribute;
|
||||
* @hpdev: hotplug device data;
|
||||
* @notifier: pointer to event notifier block;
|
||||
* @health_cntr: dynamic device health indication counter;
|
||||
* @attached: true if device has been attached after good health indication;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#define INT3472_GPIO_TYPE_POWER_ENABLE 0x0b
|
||||
#define INT3472_GPIO_TYPE_CLK_ENABLE 0x0c
|
||||
#define INT3472_GPIO_TYPE_PRIVACY_LED 0x0d
|
||||
#define INT3472_GPIO_TYPE_DOVDD 0x10
|
||||
#define INT3472_GPIO_TYPE_HANDSHAKE 0x12
|
||||
#define INT3472_GPIO_TYPE_HOTPLUG_DETECT 0x13
|
||||
|
||||
|
|
@ -33,8 +34,8 @@
|
|||
#define INT3472_MAX_SENSOR_GPIOS 3
|
||||
#define INT3472_MAX_REGULATORS 3
|
||||
|
||||
/* E.g. "avdd\0" */
|
||||
#define GPIO_SUPPLY_NAME_LENGTH 5
|
||||
/* E.g. "dovdd\0" */
|
||||
#define GPIO_SUPPLY_NAME_LENGTH 6
|
||||
/* 12 chars for acpi_dev_name() + "-", e.g. "ABCD1234:00-" */
|
||||
#define GPIO_REGULATOR_NAME_LENGTH (12 + GPIO_SUPPLY_NAME_LENGTH)
|
||||
/* lower- and upper-case mapping */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue