On Sun, Mar 9, 2025 at 4:21 AM Antheas Kapenekakis <lkml@xxxxxxxxxxx> wrote: > > Currently, this driver breaks ABI by using auto as 0 and manual as 1. > However, for pwm_enable, 0 is full speed, 1 is manual, and 2 is auto. > For the correction to be possible, this means that the pwm_enable > endpoint will need access to both pwm enable and value (as for > the 0th value, the fan needs to be set to full power). > > Therefore, begin by moving the current pwm_enable read to its own > function, oxp_pwm_enable. > > Signed-off-by: Antheas Kapenekakis <lkml@xxxxxxxxxxx> > --- > drivers/platform/x86/oxpec.c | 50 +++++++++++++++++++----------------- > 1 file changed, 27 insertions(+), 23 deletions(-) > > diff --git a/drivers/platform/x86/oxpec.c b/drivers/platform/x86/oxpec.c > index eb7eafebbd37..471444fbd786 100644 > --- a/drivers/platform/x86/oxpec.c > +++ b/drivers/platform/x86/oxpec.c > @@ -766,6 +766,32 @@ static int oxp_pwm_disable(void) > } > } > > +static int oxp_pwm_read(long *val) > +{ > + switch (board) { > + 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: > + case oxp_mini_amd_a07: > + case oxp_mini_amd_pro: > + case oxp_x1: > + return read_from_ec(OXP_SENSOR_PWM_ENABLE_REG, 1, val); > + default: > + return -EOPNOTSUPP; > + } > +} > + > /* Callbacks for hwmon interface */ > static umode_t oxp_ec_hwmon_is_visible(const void *drvdata, > enum hwmon_sensor_types type, u32 attr, int channel) > @@ -863,29 +889,7 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type, > } > return 0; > case hwmon_pwm_enable: > - switch (board) { > - 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: > - case oxp_mini_amd_a07: > - case oxp_mini_amd_pro: > - case oxp_x1: > - return read_from_ec(OXP_SENSOR_PWM_ENABLE_REG, 1, val); > - default: > - break; > - } > - break; > + return oxp_pwm_read(val); > default: > break; > } > -- > 2.48.1 > Reviewed-by: Derek J. Clark <derekjohn.clark@xxxxxxxxx>