mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 12:21:22 -05:00
platform/x86: ayaneo-ec: Move Ayaneo devices from oxpec to ayaneo-ec
Currently, the oxpec driver contains Ayaneo devices. Move them to the new ayaneo-ec driver, which is dedicated to them. As this driver supports charge inhibition for Ayaneo, add support for it for the AIR, AIR 1S, AB05-Medoncino, AIR Pro, and Kun, referenced from the out-of-tree ayaneo-platform driver. In addition, update the readmes of oxpec to reflect this change. Link: https://github.com/ShadowBlip/ayaneo-platform Tested-by: Derek J. Clark <derekjohn.clark@gmail.com> Reviewed-by: Armin Wolf <W_Armin@gmx.de> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev> Link: https://patch.msgid.link/20251119174505.597218-6-lkml@antheas.dev Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
committed by
Ilpo Järvinen
parent
e921a8b4de
commit
02c15e3ddc
@@ -1038,9 +1038,7 @@ config OXP_EC
|
||||
help
|
||||
Enables support for the platform EC of OneXPlayer and AOKZOE
|
||||
handheld devices. This includes fan speed, fan controls, and
|
||||
disabling the default TDP behavior of the device. Due to legacy
|
||||
reasons, this driver also provides hwmon functionality to Ayaneo
|
||||
devices and the OrangePi Neo.
|
||||
disabling the default TDP behavior of the device.
|
||||
|
||||
source "drivers/platform/x86/tuxedo/Kconfig"
|
||||
|
||||
|
||||
@@ -54,6 +54,15 @@ struct ayaneo_ec_platform_data {
|
||||
struct acpi_battery_hook battery_hook;
|
||||
};
|
||||
|
||||
static const struct ayaneo_ec_quirk quirk_fan = {
|
||||
.has_fan_control = true,
|
||||
};
|
||||
|
||||
static const struct ayaneo_ec_quirk quirk_charge_limit = {
|
||||
.has_fan_control = true,
|
||||
.has_charge_control = true,
|
||||
};
|
||||
|
||||
static const struct ayaneo_ec_quirk quirk_ayaneo3 = {
|
||||
.has_fan_control = true,
|
||||
.has_charge_control = true,
|
||||
@@ -61,6 +70,62 @@ static const struct ayaneo_ec_quirk quirk_ayaneo3 = {
|
||||
};
|
||||
|
||||
static const struct dmi_system_id dmi_table[] = {
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "AYANEO 2"),
|
||||
},
|
||||
.driver_data = (void *)&quirk_fan,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "FLIP"),
|
||||
},
|
||||
.driver_data = (void *)&quirk_fan,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "GEEK"),
|
||||
},
|
||||
.driver_data = (void *)&quirk_fan,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR"),
|
||||
},
|
||||
.driver_data = (void *)&quirk_charge_limit,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR 1S"),
|
||||
},
|
||||
.driver_data = (void *)&quirk_charge_limit,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AB05-Mendocino"),
|
||||
},
|
||||
.driver_data = (void *)&quirk_charge_limit,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR Pro"),
|
||||
},
|
||||
.driver_data = (void *)&quirk_charge_limit,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "KUN"),
|
||||
},
|
||||
.driver_data = (void *)&quirk_charge_limit,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Platform driver for OneXPlayer and AOKZOE devices. For the time being,
|
||||
* it also exposes fan controls for AYANEO, and OrangePi Handhelds via
|
||||
* hwmon sysfs.
|
||||
* Platform driver for OneXPlayer and AOKZOE devices.
|
||||
*
|
||||
* Fan control is provided via pwm interface in the range [0-255].
|
||||
* Old AMD boards use [0-100] as range in the EC, the written value is
|
||||
@@ -43,14 +41,6 @@ static bool unlock_global_acpi_lock(void)
|
||||
|
||||
enum oxp_board {
|
||||
aok_zoe_a1 = 1,
|
||||
aya_neo_2,
|
||||
aya_neo_air,
|
||||
aya_neo_air_1s,
|
||||
aya_neo_air_plus_mendo,
|
||||
aya_neo_air_pro,
|
||||
aya_neo_flip,
|
||||
aya_neo_geek,
|
||||
aya_neo_kun,
|
||||
orange_pi_neo,
|
||||
oxp_2,
|
||||
oxp_fly,
|
||||
@@ -131,62 +121,6 @@ static const struct dmi_system_id dmi_table[] = {
|
||||
},
|
||||
.driver_data = (void *)oxp_fly,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "AYANEO 2"),
|
||||
},
|
||||
.driver_data = (void *)aya_neo_2,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR"),
|
||||
},
|
||||
.driver_data = (void *)aya_neo_air,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR 1S"),
|
||||
},
|
||||
.driver_data = (void *)aya_neo_air_1s,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AB05-Mendocino"),
|
||||
},
|
||||
.driver_data = (void *)aya_neo_air_plus_mendo,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR Pro"),
|
||||
},
|
||||
.driver_data = (void *)aya_neo_air_pro,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "FLIP"),
|
||||
},
|
||||
.driver_data = (void *)aya_neo_flip,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "GEEK"),
|
||||
},
|
||||
.driver_data = (void *)aya_neo_geek,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_BOARD_NAME, "KUN"),
|
||||
},
|
||||
.driver_data = (void *)aya_neo_kun,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "OrangePi"),
|
||||
@@ -672,13 +606,6 @@ static int oxp_pwm_enable(void)
|
||||
case orange_pi_neo:
|
||||
return write_to_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
|
||||
case aok_zoe_a1:
|
||||
case aya_neo_2:
|
||||
case aya_neo_air:
|
||||
case aya_neo_air_plus_mendo:
|
||||
case aya_neo_air_pro:
|
||||
case aya_neo_flip:
|
||||
case aya_neo_geek:
|
||||
case aya_neo_kun:
|
||||
case oxp_2:
|
||||
case oxp_fly:
|
||||
case oxp_mini_amd:
|
||||
@@ -699,14 +626,6 @@ static int oxp_pwm_disable(void)
|
||||
case orange_pi_neo:
|
||||
return write_to_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
|
||||
case aok_zoe_a1:
|
||||
case aya_neo_2:
|
||||
case aya_neo_air:
|
||||
case aya_neo_air_1s:
|
||||
case aya_neo_air_plus_mendo:
|
||||
case aya_neo_air_pro:
|
||||
case aya_neo_flip:
|
||||
case aya_neo_geek:
|
||||
case aya_neo_kun:
|
||||
case oxp_2:
|
||||
case oxp_fly:
|
||||
case oxp_mini_amd:
|
||||
@@ -727,14 +646,6 @@ static int oxp_pwm_read(long *val)
|
||||
case orange_pi_neo:
|
||||
return read_from_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, 1, val);
|
||||
case aok_zoe_a1:
|
||||
case aya_neo_2:
|
||||
case aya_neo_air:
|
||||
case aya_neo_air_1s:
|
||||
case aya_neo_air_plus_mendo:
|
||||
case aya_neo_air_pro:
|
||||
case aya_neo_flip:
|
||||
case aya_neo_geek:
|
||||
case aya_neo_kun:
|
||||
case oxp_2:
|
||||
case oxp_fly:
|
||||
case oxp_mini_amd:
|
||||
@@ -774,14 +685,6 @@ static int oxp_pwm_fan_speed(long *val)
|
||||
case oxp_g1_i:
|
||||
return read_from_ec(OXP_2_SENSOR_FAN_REG, 2, val);
|
||||
case aok_zoe_a1:
|
||||
case aya_neo_2:
|
||||
case aya_neo_air:
|
||||
case aya_neo_air_1s:
|
||||
case aya_neo_air_plus_mendo:
|
||||
case aya_neo_air_pro:
|
||||
case aya_neo_flip:
|
||||
case aya_neo_geek:
|
||||
case aya_neo_kun:
|
||||
case oxp_fly:
|
||||
case oxp_mini_amd:
|
||||
case oxp_mini_amd_a07:
|
||||
@@ -810,14 +713,6 @@ static int oxp_pwm_input_write(long val)
|
||||
/* scale to range [0-184] */
|
||||
val = (val * 184) / 255;
|
||||
return write_to_ec(OXP_SENSOR_PWM_REG, val);
|
||||
case aya_neo_2:
|
||||
case aya_neo_air:
|
||||
case aya_neo_air_1s:
|
||||
case aya_neo_air_plus_mendo:
|
||||
case aya_neo_air_pro:
|
||||
case aya_neo_flip:
|
||||
case aya_neo_geek:
|
||||
case aya_neo_kun:
|
||||
case oxp_mini_amd:
|
||||
case oxp_mini_amd_a07:
|
||||
/* scale to range [0-100] */
|
||||
@@ -854,14 +749,6 @@ static int oxp_pwm_input_read(long *val)
|
||||
/* scale from range [0-184] */
|
||||
*val = (*val * 255) / 184;
|
||||
break;
|
||||
case aya_neo_2:
|
||||
case aya_neo_air:
|
||||
case aya_neo_air_1s:
|
||||
case aya_neo_air_plus_mendo:
|
||||
case aya_neo_air_pro:
|
||||
case aya_neo_flip:
|
||||
case aya_neo_geek:
|
||||
case aya_neo_kun:
|
||||
case oxp_mini_amd:
|
||||
case oxp_mini_amd_a07:
|
||||
ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
|
||||
|
||||
Reference in New Issue
Block a user