All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] platform/x86: oxpec: add support for OneXPlayer Super X
@ 2026-03-29 21:53 Alexander Egorov
  2026-03-29 22:33 ` Derek J. Clark
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Alexander Egorov @ 2026-03-29 21:53 UTC (permalink / raw)
  To: Antheas Kapenekakis, Derek John Clark,
	Joaquín Ignacio Aramendía
  Cc: platform-driver-x86, ps1x

From: ps1x <ps1x@users.noreply.github.com>

OneXPlayer Super X identifies itself via DMI as:

  board vendor: ONE-NETBOOK
  board name:   ONEXPLAYER SUPER X
  product name: ONEXPLAYER SUPER X

Current mainline oxpec does not contain a matching DMI entry for this
system, so the in-tree driver is not auto-loaded.

On the tested Super X device, the working EC layout matches the
following handling:

- fan RPM is read from OXP_SENSOR_FAN_REG (0x76)
- pwm1_enable uses OXP_SENSOR_PWM_ENABLE_REG (0x4A)
- pwm1 uses OXP_SENSOR_PWM_REG (0x4B) with direct 0-255 writes
- turbo toggle uses OXP_TURBO_SWITCH_REG (0xF1)
- charge-limit / charge-behaviour uses the same battery extension path
  as the X1 family

Add a dedicated oxp_superx board id, a DMI match for OneXPlayer Super X,
and route the fan, PWM, turbo-toggle, and battery-extension paths
through the validated Super X handling.

Tested-on: OneXPlayer Super X
Signed-off-by: ps1x <ps1x@users.noreply.github.com>
---
 drivers/platform/x86/oxpec.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/platform/x86/oxpec.c b/drivers/platform/x86/oxpec.c
index 6d4a53a2e..d366c398d 100644
--- a/drivers/platform/x86/oxpec.c
+++ b/drivers/platform/x86/oxpec.c
@@ -48,6 +48,7 @@ enum oxp_board {
 	oxp_mini_amd_a07,
 	oxp_mini_amd_pro,
 	oxp_x1,
+	oxp_superx,
 	oxp_g1_i,
 	oxp_g1_a,
 };
@@ -282,6 +283,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 SUPER X"),
+		},
+		.driver_data = (void *)oxp_superx,
+	},
 	{},
 };
 
@@ -336,6 +344,7 @@ static umode_t tt_toggle_is_visible(struct kobject *kobj,
 	case oxp_mini_amd_a07:
 	case oxp_mini_amd_pro:
 	case oxp_x1:
+	case oxp_superx:
 	case oxp_g1_i:
 	case oxp_g1_a:
 		return attr->mode;
@@ -366,6 +375,7 @@ static ssize_t tt_toggle_store(struct device *dev,
 	case aok_zoe_a1:
 	case oxp_fly:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 		reg = OXP_TURBO_SWITCH_REG;
 		mask = OXP_TURBO_TAKE_VAL;
@@ -412,6 +422,7 @@ static ssize_t tt_toggle_show(struct device *dev,
 	case aok_zoe_a1:
 	case oxp_fly:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 		reg = OXP_TURBO_SWITCH_REG;
 		mask = OXP_TURBO_TAKE_VAL;
@@ -507,6 +518,7 @@ static bool oxp_psy_ext_supported(void)
 {
 	switch (board) {
 	case oxp_x1:
+	case oxp_superx:
 	case oxp_g1_i:
 	case oxp_g1_a:
 	case oxp_fly:
@@ -640,6 +652,7 @@ static int oxp_pwm_enable(void)
 	case oxp_mini_amd_a07:
 	case oxp_mini_amd_pro:
 	case oxp_x1:
+	case oxp_superx:
 	case oxp_g1_i:
 	case oxp_g1_a:
 		return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
@@ -660,6 +673,7 @@ static int oxp_pwm_disable(void)
 	case oxp_mini_amd_a07:
 	case oxp_mini_amd_pro:
 	case oxp_x1:
+	case oxp_superx:
 	case oxp_g1_i:
 	case oxp_g1_a:
 		return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
@@ -717,6 +731,7 @@ static int oxp_pwm_fan_speed(long *val)
 	case oxp_mini_amd:
 	case oxp_mini_amd_a07:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 		return read_from_ec(OXP_SENSOR_FAN_REG, 2, val);
 	default:
@@ -749,6 +764,7 @@ static int oxp_pwm_input_write(long val)
 	case aok_zoe_a1:
 	case oxp_fly:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 		return write_to_ec(OXP_SENSOR_PWM_REG, val);
 	default:
@@ -788,6 +804,7 @@ static int oxp_pwm_input_read(long *val)
 	case aok_zoe_a1:
 	case oxp_fly:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 	default:
 		ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] platform/x86: oxpec: add support for OneXPlayer Super X
  2026-03-29 21:53 [PATCH] platform/x86: oxpec: add support for OneXPlayer Super X Alexander Egorov
@ 2026-03-29 22:33 ` Derek J. Clark
  2026-03-30  7:04 ` Antheas Kapenekakis
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Derek J. Clark @ 2026-03-29 22:33 UTC (permalink / raw)
  To: Alexander Egorov, Antheas Kapenekakis,
	Joaquín Ignacio Aramendía
  Cc: platform-driver-x86, ps1x

On March 29, 2026 2:53:48 PM PDT, Alexander Egorov <begeebe@gmail.com> wrote:
>From: ps1x <ps1x@users.noreply.github.com>
>
>OneXPlayer Super X identifies itself via DMI as:
>
>  board vendor: ONE-NETBOOK
>  board name:   ONEXPLAYER SUPER X
>  product name: ONEXPLAYER SUPER X
>
>Current mainline oxpec does not contain a matching DMI entry for this
>system, so the in-tree driver is not auto-loaded.
>
>On the tested Super X device, the working EC layout matches the
>following handling:
>
>- fan RPM is read from OXP_SENSOR_FAN_REG (0x76)
>- pwm1_enable uses OXP_SENSOR_PWM_ENABLE_REG (0x4A)
>- pwm1 uses OXP_SENSOR_PWM_REG (0x4B) with direct 0-255 writes
>- turbo toggle uses OXP_TURBO_SWITCH_REG (0xF1)
>- charge-limit / charge-behaviour uses the same battery extension path
>  as the X1 family
>
>Add a dedicated oxp_superx board id, a DMI match for OneXPlayer Super X,
>and route the fan, PWM, turbo-toggle, and battery-extension paths
>through the validated Super X handling.
>
>Tested-on: OneXPlayer Super X
>Signed-off-by: ps1x <ps1x@users.noreply.github.com>

Looks good. Thanks for adding this.

Reviewed-by: Derek J Clark <derekjohn.clark@gmail.com>

>---
> drivers/platform/x86/oxpec.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
>diff --git a/drivers/platform/x86/oxpec.c b/drivers/platform/x86/oxpec.c
>index 6d4a53a2e..d366c398d 100644
>--- a/drivers/platform/x86/oxpec.c
>+++ b/drivers/platform/x86/oxpec.c
>@@ -48,6 +48,7 @@ enum oxp_board {
> 	oxp_mini_amd_a07,
> 	oxp_mini_amd_pro,
> 	oxp_x1,
>+	oxp_superx,

As an aside, I'm not sure how the order on all these tables got so messed up. Don't worry about it for your patch, this is just a note for myself to go back and sort everything better later.

Thanks, 
Derek

> 	oxp_g1_i,
> 	oxp_g1_a,
> };
>@@ -282,6 +283,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 SUPER X"),
>+		},
>+		.driver_data = (void *)oxp_superx,
>+	},
> 	{},
> };
> 
>@@ -336,6 +344,7 @@ static umode_t tt_toggle_is_visible(struct kobject *kobj,
> 	case oxp_mini_amd_a07:
> 	case oxp_mini_amd_pro:
> 	case oxp_x1:
>+	case oxp_superx:
> 	case oxp_g1_i:
> 	case oxp_g1_a:
> 		return attr->mode;
>@@ -366,6 +375,7 @@ static ssize_t tt_toggle_store(struct device *dev,
> 	case aok_zoe_a1:
> 	case oxp_fly:
> 	case oxp_mini_amd_pro:
>+	case oxp_superx:
> 	case oxp_g1_a:
> 		reg = OXP_TURBO_SWITCH_REG;
> 		mask = OXP_TURBO_TAKE_VAL;
>@@ -412,6 +422,7 @@ static ssize_t tt_toggle_show(struct device *dev,
> 	case aok_zoe_a1:
> 	case oxp_fly:
> 	case oxp_mini_amd_pro:
>+	case oxp_superx:
> 	case oxp_g1_a:
> 		reg = OXP_TURBO_SWITCH_REG;
> 		mask = OXP_TURBO_TAKE_VAL;
>@@ -507,6 +518,7 @@ static bool oxp_psy_ext_supported(void)
> {
> 	switch (board) {
> 	case oxp_x1:
>+	case oxp_superx:
> 	case oxp_g1_i:
> 	case oxp_g1_a:
> 	case oxp_fly:
>@@ -640,6 +652,7 @@ static int oxp_pwm_enable(void)
> 	case oxp_mini_amd_a07:
> 	case oxp_mini_amd_pro:
> 	case oxp_x1:
>+	case oxp_superx:
> 	case oxp_g1_i:
> 	case oxp_g1_a:
> 		return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
>@@ -660,6 +673,7 @@ static int oxp_pwm_disable(void)
> 	case oxp_mini_amd_a07:
> 	case oxp_mini_amd_pro:
> 	case oxp_x1:
>+	case oxp_superx:
> 	case oxp_g1_i:
> 	case oxp_g1_a:
> 		return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
>@@ -717,6 +731,7 @@ static int oxp_pwm_fan_speed(long *val)
> 	case oxp_mini_amd:
> 	case oxp_mini_amd_a07:
> 	case oxp_mini_amd_pro:
>+	case oxp_superx:
> 	case oxp_g1_a:
> 		return read_from_ec(OXP_SENSOR_FAN_REG, 2, val);
> 	default:
>@@ -749,6 +764,7 @@ static int oxp_pwm_input_write(long val)
> 	case aok_zoe_a1:
> 	case oxp_fly:
> 	case oxp_mini_amd_pro:
>+	case oxp_superx:
> 	case oxp_g1_a:
> 		return write_to_ec(OXP_SENSOR_PWM_REG, val);
> 	default:
>@@ -788,6 +804,7 @@ static int oxp_pwm_input_read(long *val)
> 	case aok_zoe_a1:
> 	case oxp_fly:
> 	case oxp_mini_amd_pro:
>+	case oxp_superx:
> 	case oxp_g1_a:
> 	default:
> 		ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] platform/x86: oxpec: add support for OneXPlayer Super X
  2026-03-29 21:53 [PATCH] platform/x86: oxpec: add support for OneXPlayer Super X Alexander Egorov
  2026-03-29 22:33 ` Derek J. Clark
@ 2026-03-30  7:04 ` Antheas Kapenekakis
  2026-03-30 10:10 ` [PATCH v2] " Alexander Egorov
  2026-04-06 10:25 ` [PATCH v3] Remove outdated upstream contact note Alexander Egorov
  3 siblings, 0 replies; 9+ messages in thread
From: Antheas Kapenekakis @ 2026-03-30  7:04 UTC (permalink / raw)
  To: Alexander Egorov
  Cc: Derek John Clark, Joaquín Ignacio Aramendía,
	platform-driver-x86, ps1x

On Sun, 29 Mar 2026 at 23:54, Alexander Egorov <begeebe@gmail.com> wrote:
>
> From: ps1x <ps1x@users.noreply.github.com>
>
> OneXPlayer Super X identifies itself via DMI as:
>
>   board vendor: ONE-NETBOOK
>   board name:   ONEXPLAYER SUPER X
>   product name: ONEXPLAYER SUPER X
>
> Current mainline oxpec does not contain a matching DMI entry for this
> system, so the in-tree driver is not auto-loaded.
>
> On the tested Super X device, the working EC layout matches the
> following handling:

Hi,
thanks. Some minor issues with your patch we need to go through first

> - fan RPM is read from OXP_SENSOR_FAN_REG (0x76)
> - pwm1_enable uses OXP_SENSOR_PWM_ENABLE_REG (0x4A)
> - pwm1 uses OXP_SENSOR_PWM_REG (0x4B) with direct 0-255 writes
> - turbo toggle uses OXP_TURBO_SWITCH_REG (0xF1)
> - charge-limit / charge-behaviour uses the same battery extension path
>   as the X1 family
>
> Add a dedicated oxp_superx board id, a DMI match for OneXPlayer Super X,
> and route the fan, PWM, turbo-toggle, and battery-extension paths
> through the validated Super X handling.
>
> Tested-on: OneXPlayer Super X

Drop this tag

> Signed-off-by: ps1x <ps1x@users.noreply.github.com>

AFAIK kernel requires real names and emails although in the past there
have been some pseudonyms.

Using Alexander Egorov <begeebe@gmail.com> would be better since you
used this for the submission anyway.

> ---
>  drivers/platform/x86/oxpec.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>
> diff --git a/drivers/platform/x86/oxpec.c b/drivers/platform/x86/oxpec.c
> index 6d4a53a2e..d366c398d 100644
> --- a/drivers/platform/x86/oxpec.c
> +++ b/drivers/platform/x86/oxpec.c
> @@ -48,6 +48,7 @@ enum oxp_board {
>         oxp_mini_amd_a07,
>         oxp_mini_amd_pro,
>         oxp_x1,
> +       oxp_superx,
>         oxp_g1_i,
>         oxp_g1_a,
>  };
> @@ -282,6 +283,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 SUPER X"),
> +               },
> +               .driver_data = (void *)oxp_superx,
> +       },
>         {},
>  };
>
> @@ -336,6 +344,7 @@ static umode_t tt_toggle_is_visible(struct kobject *kobj,
>         case oxp_mini_amd_a07:
>         case oxp_mini_amd_pro:
>         case oxp_x1:
> +       case oxp_superx:
>         case oxp_g1_i:
>         case oxp_g1_a:
>                 return attr->mode;
> @@ -366,6 +375,7 @@ static ssize_t tt_toggle_store(struct device *dev,
>         case aok_zoe_a1:
>         case oxp_fly:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>                 reg = OXP_TURBO_SWITCH_REG;
>                 mask = OXP_TURBO_TAKE_VAL;
> @@ -412,6 +422,7 @@ static ssize_t tt_toggle_show(struct device *dev,
>         case aok_zoe_a1:
>         case oxp_fly:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>                 reg = OXP_TURBO_SWITCH_REG;
>                 mask = OXP_TURBO_TAKE_VAL;
> @@ -507,6 +518,7 @@ static bool oxp_psy_ext_supported(void)
>  {
>         switch (board) {
>         case oxp_x1:
> +       case oxp_superx:
>         case oxp_g1_i:
>         case oxp_g1_a:
>         case oxp_fly:
> @@ -640,6 +652,7 @@ static int oxp_pwm_enable(void)
>         case oxp_mini_amd_a07:
>         case oxp_mini_amd_pro:
>         case oxp_x1:
> +       case oxp_superx:
>         case oxp_g1_i:
>         case oxp_g1_a:
>                 return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
> @@ -660,6 +673,7 @@ static int oxp_pwm_disable(void)
>         case oxp_mini_amd_a07:
>         case oxp_mini_amd_pro:
>         case oxp_x1:
> +       case oxp_superx:
>         case oxp_g1_i:
>         case oxp_g1_a:
>                 return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
> @@ -717,6 +731,7 @@ static int oxp_pwm_fan_speed(long *val)
>         case oxp_mini_amd:
>         case oxp_mini_amd_a07:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>                 return read_from_ec(OXP_SENSOR_FAN_REG, 2, val);
>         default:
> @@ -749,6 +764,7 @@ static int oxp_pwm_input_write(long val)
>         case aok_zoe_a1:
>         case oxp_fly:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>                 return write_to_ec(OXP_SENSOR_PWM_REG, val);
>         default:
> @@ -788,6 +804,7 @@ static int oxp_pwm_input_read(long *val)
>         case aok_zoe_a1:
>         case oxp_fly:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:

All these matches are above g1_a, do you need to add another enum? If
not, re-use the g1_a to compact the patch.

Thanks,
Antheas

>         case oxp_g1_a:
>         default:
>                 ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
> --
> 2.53.0
>
>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2] platform/x86: oxpec: add support for OneXPlayer Super X
  2026-03-29 21:53 [PATCH] platform/x86: oxpec: add support for OneXPlayer Super X Alexander Egorov
  2026-03-29 22:33 ` Derek J. Clark
  2026-03-30  7:04 ` Antheas Kapenekakis
@ 2026-03-30 10:10 ` Alexander Egorov
  2026-04-01  8:13   ` Antheas Kapenekakis
  2026-05-19 15:51   ` [PATCH v3] " Alexander Egorov
  2026-04-06 10:25 ` [PATCH v3] Remove outdated upstream contact note Alexander Egorov
  3 siblings, 2 replies; 9+ messages in thread
From: Alexander Egorov @ 2026-03-30 10:10 UTC (permalink / raw)
  To: Antheas Kapenekakis, Derek John Clark,
	Joaquín Ignacio Aramendía
  Cc: platform-driver-x86

OneXPlayer Super X identifies itself via DMI as:

  board vendor: ONE-NETBOOK
  board name:   ONEXPLAYER SUPER X
  product name: ONEXPLAYER SUPER X

Current mainline oxpec does not contain a matching DMI entry for this
system, so the in-tree driver is not auto-loaded.

On the tested Super X device, the working EC layout matches the
following handling:

- fan RPM is read from OXP_SENSOR_FAN_REG (0x76)
- pwm1_enable uses OXP_SENSOR_PWM_ENABLE_REG (0x4A)
- pwm1 uses OXP_SENSOR_PWM_REG (0x4B) with direct 0-255 writes
- turbo toggle uses OXP_TURBO_SWITCH_REG (0xF1)
- charge-limit / charge-behaviour uses the same battery extension path
  as the X1 family

Add a dedicated oxp_superx board id, a DMI match for OneXPlayer Super X,
and route the fan, PWM, turbo-toggle, and battery-extension paths
through the validated Super X handling.

Signed-off-by: Alexander Egorov <begeebe@gmail.com>
---
 drivers/platform/x86/oxpec.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/platform/x86/oxpec.c b/drivers/platform/x86/oxpec.c
index 6d4a53a2e..d366c398d 100644
--- a/drivers/platform/x86/oxpec.c
+++ b/drivers/platform/x86/oxpec.c
@@ -48,6 +48,7 @@ enum oxp_board {
 	oxp_mini_amd_a07,
 	oxp_mini_amd_pro,
 	oxp_x1,
+	oxp_superx,
 	oxp_g1_i,
 	oxp_g1_a,
 };
@@ -282,6 +283,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 SUPER X"),
+		},
+		.driver_data = (void *)oxp_superx,
+	},
 	{},
 };
 
@@ -336,6 +344,7 @@ static umode_t tt_toggle_is_visible(struct kobject *kobj,
 	case oxp_mini_amd_a07:
 	case oxp_mini_amd_pro:
 	case oxp_x1:
+	case oxp_superx:
 	case oxp_g1_i:
 	case oxp_g1_a:
 		return attr->mode;
@@ -366,6 +375,7 @@ static ssize_t tt_toggle_store(struct device *dev,
 	case aok_zoe_a1:
 	case oxp_fly:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 		reg = OXP_TURBO_SWITCH_REG;
 		mask = OXP_TURBO_TAKE_VAL;
@@ -412,6 +422,7 @@ static ssize_t tt_toggle_show(struct device *dev,
 	case aok_zoe_a1:
 	case oxp_fly:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 		reg = OXP_TURBO_SWITCH_REG;
 		mask = OXP_TURBO_TAKE_VAL;
@@ -507,6 +518,7 @@ static bool oxp_psy_ext_supported(void)
 {
 	switch (board) {
 	case oxp_x1:
+	case oxp_superx:
 	case oxp_g1_i:
 	case oxp_g1_a:
 	case oxp_fly:
@@ -640,6 +652,7 @@ static int oxp_pwm_enable(void)
 	case oxp_mini_amd_a07:
 	case oxp_mini_amd_pro:
 	case oxp_x1:
+	case oxp_superx:
 	case oxp_g1_i:
 	case oxp_g1_a:
 		return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
@@ -660,6 +673,7 @@ static int oxp_pwm_disable(void)
 	case oxp_mini_amd_a07:
 	case oxp_mini_amd_pro:
 	case oxp_x1:
+	case oxp_superx:
 	case oxp_g1_i:
 	case oxp_g1_a:
 		return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
@@ -717,6 +731,7 @@ static int oxp_pwm_fan_speed(long *val)
 	case oxp_mini_amd:
 	case oxp_mini_amd_a07:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 		return read_from_ec(OXP_SENSOR_FAN_REG, 2, val);
 	default:
@@ -749,6 +764,7 @@ static int oxp_pwm_input_write(long val)
 	case aok_zoe_a1:
 	case oxp_fly:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 		return write_to_ec(OXP_SENSOR_PWM_REG, val);
 	default:
@@ -788,6 +804,7 @@ static int oxp_pwm_input_read(long *val)
 	case aok_zoe_a1:
 	case oxp_fly:
 	case oxp_mini_amd_pro:
+	case oxp_superx:
 	case oxp_g1_a:
 	default:
 		ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] platform/x86: oxpec: add support for OneXPlayer Super X
  2026-03-30 10:10 ` [PATCH v2] " Alexander Egorov
@ 2026-04-01  8:13   ` Antheas Kapenekakis
  2026-05-19 15:51   ` [PATCH v3] " Alexander Egorov
  1 sibling, 0 replies; 9+ messages in thread
From: Antheas Kapenekakis @ 2026-04-01  8:13 UTC (permalink / raw)
  To: Alexander Egorov
  Cc: Derek John Clark, Joaquín Ignacio Aramendía,
	platform-driver-x86

On Mon, 30 Mar 2026 at 12:11, Alexander Egorov <begeebe@gmail.com> wrote:
>
> OneXPlayer Super X identifies itself via DMI as:
>
>   board vendor: ONE-NETBOOK
>   board name:   ONEXPLAYER SUPER X
>   product name: ONEXPLAYER SUPER X
>
> Current mainline oxpec does not contain a matching DMI entry for this
> system, so the in-tree driver is not auto-loaded.
>
> On the tested Super X device, the working EC layout matches the
> following handling:
>
> - fan RPM is read from OXP_SENSOR_FAN_REG (0x76)
> - pwm1_enable uses OXP_SENSOR_PWM_ENABLE_REG (0x4A)
> - pwm1 uses OXP_SENSOR_PWM_REG (0x4B) with direct 0-255 writes
> - turbo toggle uses OXP_TURBO_SWITCH_REG (0xF1)
> - charge-limit / charge-behaviour uses the same battery extension path
>   as the X1 family
>
> Add a dedicated oxp_superx board id, a DMI match for OneXPlayer Super X,
> and route the fan, PWM, turbo-toggle, and battery-extension paths
> through the validated Super X handling.

Hi,
did you check if the superx board id is needed or if you can piggyback on g1_a?

If you can, I'd rather you do that. In either case:

Reviewed-by: Antheas Kapenekakis <lkml@antheas.dev>

Also, for this V2, you missed Derek's Reviewed-by. Resend the patch
with both my and Derek's reviewed tags, use -v3 in the makepatch
generation to include V3 in the header, and cc Ilpo who is the x86
subsystem maintainer so they can merge this patch. Before you do that,
check if you can use g1_a though.

Best,
Antheas

> Signed-off-by: Alexander Egorov <begeebe@gmail.com>
> ---
>  drivers/platform/x86/oxpec.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>
> diff --git a/drivers/platform/x86/oxpec.c b/drivers/platform/x86/oxpec.c
> index 6d4a53a2e..d366c398d 100644
> --- a/drivers/platform/x86/oxpec.c
> +++ b/drivers/platform/x86/oxpec.c
> @@ -48,6 +48,7 @@ enum oxp_board {
>         oxp_mini_amd_a07,
>         oxp_mini_amd_pro,
>         oxp_x1,
> +       oxp_superx,
>         oxp_g1_i,
>         oxp_g1_a,
>  };
> @@ -282,6 +283,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 SUPER X"),
> +               },
> +               .driver_data = (void *)oxp_superx,
> +       },
>         {},
>  };
>
> @@ -336,6 +344,7 @@ static umode_t tt_toggle_is_visible(struct kobject *kobj,
>         case oxp_mini_amd_a07:
>         case oxp_mini_amd_pro:
>         case oxp_x1:
> +       case oxp_superx:
>         case oxp_g1_i:
>         case oxp_g1_a:
>                 return attr->mode;
> @@ -366,6 +375,7 @@ static ssize_t tt_toggle_store(struct device *dev,
>         case aok_zoe_a1:
>         case oxp_fly:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>                 reg = OXP_TURBO_SWITCH_REG;
>                 mask = OXP_TURBO_TAKE_VAL;
> @@ -412,6 +422,7 @@ static ssize_t tt_toggle_show(struct device *dev,
>         case aok_zoe_a1:
>         case oxp_fly:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>                 reg = OXP_TURBO_SWITCH_REG;
>                 mask = OXP_TURBO_TAKE_VAL;
> @@ -507,6 +518,7 @@ static bool oxp_psy_ext_supported(void)
>  {
>         switch (board) {
>         case oxp_x1:
> +       case oxp_superx:
>         case oxp_g1_i:
>         case oxp_g1_a:
>         case oxp_fly:
> @@ -640,6 +652,7 @@ static int oxp_pwm_enable(void)
>         case oxp_mini_amd_a07:
>         case oxp_mini_amd_pro:
>         case oxp_x1:
> +       case oxp_superx:
>         case oxp_g1_i:
>         case oxp_g1_a:
>                 return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
> @@ -660,6 +673,7 @@ static int oxp_pwm_disable(void)
>         case oxp_mini_amd_a07:
>         case oxp_mini_amd_pro:
>         case oxp_x1:
> +       case oxp_superx:
>         case oxp_g1_i:
>         case oxp_g1_a:
>                 return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
> @@ -717,6 +731,7 @@ static int oxp_pwm_fan_speed(long *val)
>         case oxp_mini_amd:
>         case oxp_mini_amd_a07:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>                 return read_from_ec(OXP_SENSOR_FAN_REG, 2, val);
>         default:
> @@ -749,6 +764,7 @@ static int oxp_pwm_input_write(long val)
>         case aok_zoe_a1:
>         case oxp_fly:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>                 return write_to_ec(OXP_SENSOR_PWM_REG, val);
>         default:
> @@ -788,6 +804,7 @@ static int oxp_pwm_input_read(long *val)
>         case aok_zoe_a1:
>         case oxp_fly:
>         case oxp_mini_amd_pro:
> +       case oxp_superx:
>         case oxp_g1_a:
>         default:
>                 ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
> --
> 2.53.0
>
>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3] Remove outdated upstream contact note
  2026-03-29 21:53 [PATCH] platform/x86: oxpec: add support for OneXPlayer Super X Alexander Egorov
                   ` (2 preceding siblings ...)
  2026-03-30 10:10 ` [PATCH v2] " Alexander Egorov
@ 2026-04-06 10:25 ` Alexander Egorov
  2026-05-26 17:32   ` Ilpo Järvinen
  3 siblings, 1 reply; 9+ messages in thread
From: Alexander Egorov @ 2026-04-06 10:25 UTC (permalink / raw)
  To: Antheas Kapenekakis, Derek John Clark,
	Joaquín Ignacio Aramendía
  Cc: Ilpo Järvinen, platform-driver-x86, ps1x

From: ps1x <ps1x@users.noreply.github.com>

---
 README.md | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/README.md b/README.md
index acc4503..67c2915 100644
--- a/README.md
+++ b/README.md
@@ -58,11 +58,6 @@ This project is based on the original `oxp-sensors` work:
 
 - <https://gitlab.com/Samsagax/oxp-sensors>
 
-I could not find a working way to contact Joaquín Ignacio Aramendía
-(`@Samsagax`) directly. If the upstream author wants this repository or any
-part of it to be removed from public distribution, they are welcome to open an
-issue in this repository.
-
 ## Included Components
 
 - `oxp-sensors.c`: kernel driver
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3] platform/x86: oxpec: add support for OneXPlayer Super X
  2026-03-30 10:10 ` [PATCH v2] " Alexander Egorov
  2026-04-01  8:13   ` Antheas Kapenekakis
@ 2026-05-19 15:51   ` Alexander Egorov
  2026-05-19 15:56     ` Antheas Kapenekakis
  1 sibling, 1 reply; 9+ messages in thread
From: Alexander Egorov @ 2026-05-19 15:51 UTC (permalink / raw)
  To: platform-driver-x86; +Cc: ilpo.jarvinen, lkml, derekjohn.clark, samsagax

OneXPlayer Super X identifies itself via DMI as:

  board vendor: ONE-NETBOOK
  board name:   ONEXPLAYER SUPER X
  product name: ONEXPLAYER SUPER X

Current mainline oxpec does not contain a matching DMI entry for this
system, so the in-tree driver is not auto-loaded.

The tested Super X fan, PWM, turbo-toggle, and battery charge-control EC
layout matches the existing ONEXPLAYER G1 A handling.

Add a DMI match for OneXPlayer Super X and reuse the oxp_g1_a board data.

Reviewed-by: Derek J Clark <derekjohn.clark@gmail.com>
Reviewed-by: Antheas Kapenekakis <lkml@antheas.dev>
Signed-off-by: Alexander Egorov <begeebe@gmail.com>
---
Changes in v3:
- Reuse oxp_g1_a instead of adding a dedicated oxp_superx board id.
- Add Derek's Reviewed-by tag.
- Add Antheas' Reviewed-by tag.
- Use consistent submitter identity.

 drivers/platform/x86/oxpec.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/platform/x86/oxpec.c b/drivers/platform/x86/oxpec.c
index 6d4a53a..99c0dfc 100644
--- a/drivers/platform/x86/oxpec.c
+++ b/drivers/platform/x86/oxpec.c
@@ -205,6 +205,13 @@ static const struct dmi_system_id dmi_table[] = {
 		},
 		.driver_data = (void *)oxp_g1_a,
 	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
+			DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER SUPER X"),
+		},
+		.driver_data = (void *)oxp_g1_a,
+	},
 	{
 		.matches = {
 			DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
-- 
2.54.0

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] platform/x86: oxpec: add support for OneXPlayer Super X
  2026-05-19 15:51   ` [PATCH v3] " Alexander Egorov
@ 2026-05-19 15:56     ` Antheas Kapenekakis
  0 siblings, 0 replies; 9+ messages in thread
From: Antheas Kapenekakis @ 2026-05-19 15:56 UTC (permalink / raw)
  To: Alexander Egorov
  Cc: platform-driver-x86, ilpo.jarvinen, derekjohn.clark, samsagax

lgtm

Antheas

On Tue, 19 May 2026 at 17:55, Alexander Egorov <begeebe@gmail.com> wrote:
>
> OneXPlayer Super X identifies itself via DMI as:
>
>   board vendor: ONE-NETBOOK
>   board name:   ONEXPLAYER SUPER X
>   product name: ONEXPLAYER SUPER X
>
> Current mainline oxpec does not contain a matching DMI entry for this
> system, so the in-tree driver is not auto-loaded.
>
> The tested Super X fan, PWM, turbo-toggle, and battery charge-control EC
> layout matches the existing ONEXPLAYER G1 A handling.
>
> Add a DMI match for OneXPlayer Super X and reuse the oxp_g1_a board data.
>
> Reviewed-by: Derek J Clark <derekjohn.clark@gmail.com>
> Reviewed-by: Antheas Kapenekakis <lkml@antheas.dev>
> Signed-off-by: Alexander Egorov <begeebe@gmail.com>
> ---
> Changes in v3:
> - Reuse oxp_g1_a instead of adding a dedicated oxp_superx board id.
> - Add Derek's Reviewed-by tag.
> - Add Antheas' Reviewed-by tag.
> - Use consistent submitter identity.
>
>  drivers/platform/x86/oxpec.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/platform/x86/oxpec.c b/drivers/platform/x86/oxpec.c
> index 6d4a53a..99c0dfc 100644
> --- a/drivers/platform/x86/oxpec.c
> +++ b/drivers/platform/x86/oxpec.c
> @@ -205,6 +205,13 @@ static const struct dmi_system_id dmi_table[] = {
>                 },
>                 .driver_data = (void *)oxp_g1_a,
>         },
> +       {
> +               .matches = {
> +                       DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
> +                       DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER SUPER X"),
> +               },
> +               .driver_data = (void *)oxp_g1_a,
> +       },
>         {
>                 .matches = {
>                         DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
> --
> 2.54.0
>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] Remove outdated upstream contact note
  2026-04-06 10:25 ` [PATCH v3] Remove outdated upstream contact note Alexander Egorov
@ 2026-05-26 17:32   ` Ilpo Järvinen
  0 siblings, 0 replies; 9+ messages in thread
From: Ilpo Järvinen @ 2026-05-26 17:32 UTC (permalink / raw)
  To: Antheas Kapenekakis, Derek John Clark,
	Joaquín Ignacio Aramendía, Alexander Egorov
  Cc: platform-driver-x86, ps1x

On Mon, 06 Apr 2026 13:25:21 +0300, Alexander Egorov wrote:

> 



Thank you for your contribution, it has been applied to my local
review-ilpo-fixes branch. Note it will show up in the public
platform-drivers-x86/review-ilpo-fixes branch only once I've pushed my
local branch there, which might take a while.

The list of commits applied:
[1/1] Remove outdated upstream contact note
      (no commit info)
[1/1] platform/x86: oxpec: add support for OneXPlayer Super X
      commit: 51be655c307a3e6c8bce16f01c51393eea2d23c2

--
 i.


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-05-26 17:32 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-29 21:53 [PATCH] platform/x86: oxpec: add support for OneXPlayer Super X Alexander Egorov
2026-03-29 22:33 ` Derek J. Clark
2026-03-30  7:04 ` Antheas Kapenekakis
2026-03-30 10:10 ` [PATCH v2] " Alexander Egorov
2026-04-01  8:13   ` Antheas Kapenekakis
2026-05-19 15:51   ` [PATCH v3] " Alexander Egorov
2026-05-19 15:56     ` Antheas Kapenekakis
2026-04-06 10:25 ` [PATCH v3] Remove outdated upstream contact note Alexander Egorov
2026-05-26 17:32   ` Ilpo Järvinen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.