* [PATCH v2 0/3] board: rockchip: add OneThing Edge Cube series
@ 2026-01-31 15:31 Jun Yan
2026-01-31 15:31 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Jun Yan @ 2026-01-31 15:31 UTC (permalink / raw)
To: devicetree, linux-arm-kernel, linux-rockchip
Cc: robh, krzk+dt, conor+dt, heiko, alchark, dsimic, Jun Yan
This series adds support for the OneThing Edge Cube series, which were
initially marketed by OneThing Tech as PCDN (P2P Content Delivery Network)
devices. The Edge Cube series is based on Rockchip RK3566 SoC and is designed
for PCDN applications.
The V2 patches adds a new device, the OneThing OEC. Together with the V1 patch
OneThing OEC-turbo, these two devices share identical hardware specifications
except for the RAM capacity, enabling convenient support implementation.
The V1 patch was submitted quite some time ago and is now in an archived state[1].
it has not been processed due to scheduling conflicts – apologies for this.
Changes in v2:
- Fix typo in vendor-prefixes.
- Simplify company and device names.
- Add the new device OEC as part of the OneThing Edge Cube series for support.
- Set display-subsystem node to "disabled" instead of using "delete-node".
- Using generic node names for leds.
- Follow DTS codeing style in vcc5v0_usb_host_en pinctrl node.
- Modify the phy_mode of GMAC from rgmii to rgmii-id.
- Adjust device tree node ordering to follow code style.
Link to v1: https://lore.kernel.org/all/20250713163255.163669-1-jerrysteve1101@gmail.com/
[1] https://patchwork.kernel.org/project/linux-rockchip/cover/20250713163255.163669-1-jerrysteve1101@gmail.com/
Jun Yan (3):
dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co.,
Ltd.
dt-bindings: arm: rockchip: Add OneThing Edge Cube series
arm64: dts: rockchip: Add OneThing Edge Cube series
.../devicetree/bindings/arm/rockchip.yaml | 6 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm64/boot/dts/rockchip/Makefile | 2 +
.../rockchip/rk3566-onething-oec-turbo.dts | 10 +
.../boot/dts/rockchip/rk3566-onething-oec.dts | 10 +
.../dts/rockchip/rk3566-onething-oec.dtsi | 313 ++++++++++++++++++
6 files changed, 343 insertions(+)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dtsi
--
2.52.0
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd.
2026-01-31 15:31 [PATCH v2 0/3] board: rockchip: add OneThing Edge Cube series Jun Yan
@ 2026-01-31 15:31 ` Jun Yan
2026-01-31 20:29 ` Conor Dooley
2026-01-31 15:31 ` [PATCH 2/3] dt-bindings: arm: rockchip: Add OneThing Edge Cube series Jun Yan
2026-01-31 15:31 ` [PATCH 3/3] arm64: dts: " Jun Yan
2 siblings, 1 reply; 12+ messages in thread
From: Jun Yan @ 2026-01-31 15:31 UTC (permalink / raw)
To: devicetree, linux-arm-kernel, linux-rockchip
Cc: robh, krzk+dt, conor+dt, heiko, alchark, dsimic, Jun Yan
OneThing is a company engaged in edge computing.
Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index ee7fd3cfe203..49607cf2941e 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -1199,6 +1199,8 @@ patternProperties:
description: One Laptop Per Child
"^oneplus,.*":
description: OnePlus Technology (Shenzhen) Co., Ltd.
+ "^onething,.*":
+ description: Shenzhen OneThing Technologies Co., Ltd.
"^onie,.*":
description: Open Network Install Environment group
"^onion,.*":
--
2.52.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd.
2026-01-31 15:31 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
@ 2026-01-31 20:29 ` Conor Dooley
0 siblings, 0 replies; 12+ messages in thread
From: Conor Dooley @ 2026-01-31 20:29 UTC (permalink / raw)
To: Jun Yan
Cc: devicetree, linux-arm-kernel, linux-rockchip, robh, krzk+dt,
conor+dt, heiko, alchark, dsimic
[-- Attachment #1: Type: text/plain, Size: 75 bytes --]
Acked-by: Conor Dooley <conor.dooley@microchip.com>
pw-bot: not-applicable
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/3] dt-bindings: arm: rockchip: Add OneThing Edge Cube series
2026-01-31 15:31 [PATCH v2 0/3] board: rockchip: add OneThing Edge Cube series Jun Yan
2026-01-31 15:31 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
@ 2026-01-31 15:31 ` Jun Yan
2026-01-31 20:29 ` Conor Dooley
2026-01-31 15:31 ` [PATCH 3/3] arm64: dts: " Jun Yan
2 siblings, 1 reply; 12+ messages in thread
From: Jun Yan @ 2026-01-31 15:31 UTC (permalink / raw)
To: devicetree, linux-arm-kernel, linux-rockchip
Cc: robh, krzk+dt, conor+dt, heiko, alchark, dsimic, Jun Yan
Add devicetree binding for the OneThing OEC and OEC-turbo
The OneThing Edge Cube (OEC) series features the RK3566 SoC, 8GB
eMMC storage, and supports one SATA interface, one Gigabit Ethernet
port, and one USB 3.0 port.
Among the lineup, the standard OEC model comes with 2GB of RAM, while
the OEC-turbo features 4GB of RAM; The rest of the specifications are
identical.
The OneThing Edge Cube series (shipping with the vendor firmware) is
originally designed as a PCDN (P2P Content Delivery Network) device.
Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
---
Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml
index ae77ded9fe47..eeafe40e0f23 100644
--- a/Documentation/devicetree/bindings/arm/rockchip.yaml
+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml
@@ -813,6 +813,12 @@ properties:
- const: openailab,eaidk-610
- const: rockchip,rk3399
+ - description: OneThing Edge Cube series
+ items:
+ - const: onething,oec
+ - const: onething,oec-turbo
+ - const: rockchip,rk3566
+
- description: Xunlong Orange Pi RK3399 board
items:
- const: xunlong,rk3399-orangepi
--
2.52.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 2/3] dt-bindings: arm: rockchip: Add OneThing Edge Cube series
2026-01-31 15:31 ` [PATCH 2/3] dt-bindings: arm: rockchip: Add OneThing Edge Cube series Jun Yan
@ 2026-01-31 20:29 ` Conor Dooley
2026-02-01 13:25 ` Jun Yan
0 siblings, 1 reply; 12+ messages in thread
From: Conor Dooley @ 2026-01-31 20:29 UTC (permalink / raw)
To: Jun Yan
Cc: devicetree, linux-arm-kernel, linux-rockchip, robh, krzk+dt,
conor+dt, heiko, alchark, dsimic
[-- Attachment #1: Type: text/plain, Size: 1669 bytes --]
On Sat, Jan 31, 2026 at 11:31:02PM +0800, Jun Yan wrote:
> Add devicetree binding for the OneThing OEC and OEC-turbo
>
> The OneThing Edge Cube (OEC) series features the RK3566 SoC, 8GB
> eMMC storage, and supports one SATA interface, one Gigabit Ethernet
> port, and one USB 3.0 port.
> Among the lineup, the standard OEC model comes with 2GB of RAM, while
> the OEC-turbo features 4GB of RAM; The rest of the specifications are
> identical.
>
> The OneThing Edge Cube series (shipping with the vendor firmware) is
> originally designed as a PCDN (P2P Content Delivery Network) device.
>
> Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> ---
> Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml
> index ae77ded9fe47..eeafe40e0f23 100644
> --- a/Documentation/devicetree/bindings/arm/rockchip.yaml
> +++ b/Documentation/devicetree/bindings/arm/rockchip.yaml
> @@ -813,6 +813,12 @@ properties:
> - const: openailab,eaidk-610
> - const: rockchip,rk3399
>
> + - description: OneThing Edge Cube series
> + items:
> + - const: onething,oec
> + - const: onething,oec-turbo
This doesn't match your dts, so clearly you have not tested this
sufficiently. oec and oec-turbo should be in an enum.
pw-bot: changes-requested
> + - const: rockchip,rk3566
> +
> - description: Xunlong Orange Pi RK3399 board
> items:
> - const: xunlong,rk3399-orangepi
> --
> 2.52.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] dt-bindings: arm: rockchip: Add OneThing Edge Cube series
2026-01-31 20:29 ` Conor Dooley
@ 2026-02-01 13:25 ` Jun Yan
0 siblings, 0 replies; 12+ messages in thread
From: Jun Yan @ 2026-02-01 13:25 UTC (permalink / raw)
To: conor
Cc: alchark, conor+dt, devicetree, dsimic, heiko, jerrysteve1101,
krzk+dt, linux-arm-kernel, linux-rockchip, robh
> > Add devicetree binding for the OneThing OEC and OEC-turbo
> >=20
> > The OneThing Edge Cube (OEC) series features the RK3566 SoC, 8GB
> > eMMC storage, and supports one SATA interface, one Gigabit Ethernet
> > port, and one USB 3.0 port.
> > Among the lineup, the standard OEC model comes with 2GB of RAM, while
> > the OEC-turbo features 4GB of RAM; The rest of the specifications are
> > identical.
> >=20
> > The OneThing Edge Cube series (shipping with the vendor firmware) is
> > originally designed as a PCDN (P2P Content Delivery Network) device.
> >=20
> > Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> > ---
> > Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >=20
> > diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Docume=
> ntation/devicetree/bindings/arm/rockchip.yaml
> > index ae77ded9fe47..eeafe40e0f23 100644
> > --- a/Documentation/devicetree/bindings/arm/rockchip.yaml
> > +++ b/Documentation/devicetree/bindings/arm/rockchip.yaml
> > @@ -813,6 +813,12 @@ properties:
> > - const: openailab,eaidk-610
> > - const: rockchip,rk3399
> > =20
> > + - description: OneThing Edge Cube series
> > + items:
> > + - const: onething,oec
> > + - const: onething,oec-turbo
>
> This doesn't match your dts, so clearly you have not tested this
> sufficiently. oec and oec-turbo should be in an enum.
> pw-bot: changes-requested
Sorry for that. Following Dragan Simic's suggestion, I will merge
these two board items into one in the V3 patch set.
>
> > + - const: rockchip,rk3566
> > +
> > - description: Xunlong Orange Pi RK3399 board
> > items:
> > - const: xunlong,rk3399-orangepi
> > --=20
> > 2.52.0
> >=20
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/3] arm64: dts: rockchip: Add OneThing Edge Cube series
2026-01-31 15:31 [PATCH v2 0/3] board: rockchip: add OneThing Edge Cube series Jun Yan
2026-01-31 15:31 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
2026-01-31 15:31 ` [PATCH 2/3] dt-bindings: arm: rockchip: Add OneThing Edge Cube series Jun Yan
@ 2026-01-31 15:31 ` Jun Yan
2026-01-31 20:27 ` Dragan Simic
2 siblings, 1 reply; 12+ messages in thread
From: Jun Yan @ 2026-01-31 15:31 UTC (permalink / raw)
To: devicetree, linux-arm-kernel, linux-rockchip
Cc: robh, krzk+dt, conor+dt, heiko, alchark, dsimic, Jun Yan
The OneThing Edge Cube (OEC) series features the RK3566 SoC, 8GB
eMMC storage, and supports one SATA interface, one Gigabit Ethernet
port, and one USB 3.0 port.
Other than the difference in RAM capacity, the OEC and OEC-turbo are
identical in all other specifications.
Specification:
- Rockchip RK3566
- LPDDR4X 2GB (OEC) / 4GB (OEC-turbo)
- eMMC 8GB
- Gigabit Ethernet port x 1
- USB 3.0 port x 1
- USB-C 2.0 port x 1
- 12V DC Power supply
- SATA 3.0 connector x 1
Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
---
arch/arm64/boot/dts/rockchip/Makefile | 2 +
.../rockchip/rk3566-onething-oec-turbo.dts | 10 +
.../boot/dts/rockchip/rk3566-onething-oec.dts | 10 +
.../dts/rockchip/rk3566-onething-oec.dtsi | 309 ++++++++++++++++++
4 files changed, 331 insertions(+)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dtsi
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index 4d384f153c13..ec57719e4573 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -104,6 +104,8 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353v.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353vs.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-odroid-m1s.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-onething-oec.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-onething-oec-turbo.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-orangepi-3b-v1.1.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-orangepi-3b-v2.1.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
new file mode 100644
index 000000000000..16d0cd0cf577
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include "rk3566-onething-oec.dtsi"
+
+/ {
+ model = "OneThing OEC-turbo";
+ compatible = "onething,oec-turbo", "rockchip,rk3566";
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
new file mode 100644
index 000000000000..81da771ad63d
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include "rk3566-onething-oec.dtsi"
+
+/ {
+ model = "OneThing OEC";
+ compatible = "onething,oec", "rockchip,rk3566";
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dtsi
new file mode 100644
index 000000000000..df458a881d0e
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dtsi
@@ -0,0 +1,309 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include "rk3566.dtsi"
+
+/ {
+ aliases {
+ ethernet0 = &gmac1;
+ mmc0 = &sdhci;
+ };
+
+ chosen: chosen {
+ stdout-path = "serial2:1500000n8";
+ };
+
+ gmac1_clkin: external-gmac1-clock {
+ compatible = "fixed-clock";
+ clock-frequency = <125000000>;
+ clock-output-names = "gmac1_clkin";
+ #clock-cells = <0>;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ rgb_led_b: led-0 {
+ color = <LED_COLOR_ID_BLUE>;
+ default-state = "off";
+ function = LED_FUNCTION_STATUS;
+ gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>;
+ };
+
+ rgb_led_g: led-1 {
+ color = <LED_COLOR_ID_GREEN>;
+ default-state = "on";
+ function = LED_FUNCTION_STATUS;
+ gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>;
+ };
+
+ rgb_led_r: led-2 {
+ color = <LED_COLOR_ID_RED>;
+ default-state = "off";
+ function = LED_FUNCTION_STATUS;
+ gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ vcc_1v8: regulator-vcc-1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_1v8";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+ vcc_3v3: regulator-vcc-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_3v3";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+ vcc12v0_dcin: regulator-vcc12v0-dcin {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc12v0_dcin";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ };
+
+ vcc3v3_sys: regulator-vcc3v3-sys {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc3v3_sys";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&vcc12v0_dcin>;
+ };
+
+ vcc5v0_sys: regulator-vcc5v0-sys {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_sys";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vcc12v0_dcin>;
+ };
+
+ vcc5v0_usb_host: regulator-vcc5v0-usb-host {
+ compatible = "regulator-fixed";
+ enable-active-high;
+ gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc5v0_usb_host_en>;
+ regulator-name = "vcc5v0_usb_host";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+ vdd_cpu: regulator-vdd-cpu {
+ compatible = "pwm-regulator";
+ pwms = <&pwm0 0 5000 1>;
+ regulator-name = "vdd_cpu";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-settling-time-up-us = <250>;
+ pwm-supply = <&vcc5v0_sys>;
+ };
+
+ vdd_fixed: regulator-vdd-fixed {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd_fixed";
+ regulator-min-microvolt = <950000>;
+ regulator-max-microvolt = <950000>;
+ regulator-always-on;
+ regulator-boot-on;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+ vdd_logic: regulator-vdd-logic {
+ compatible = "pwm-regulator";
+ pwms = <&pwm1 0 5000 1>;
+ regulator-name = "vdd_logic";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-settling-time-up-us = <250>;
+ pwm-supply = <&vcc5v0_sys>;
+ };
+};
+
+
+/* No hardware video output port */
+&display_subsystem {
+ status = "disabled";
+};
+
+&combphy1 {
+ status = "okay";
+};
+
+&combphy2 {
+ status = "okay";
+};
+
+&cpu0 {
+ cpu-supply = <&vdd_cpu>;
+};
+
+&cpu1 {
+ cpu-supply = <&vdd_cpu>;
+};
+
+&cpu2 {
+ cpu-supply = <&vdd_cpu>;
+};
+
+&cpu3 {
+ cpu-supply = <&vdd_cpu>;
+};
+
+&gmac1 {
+ assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
+ assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
+ clock_in_out = "input";
+ phy-handle = <&rgmii_phy1>;
+ phy-mode = "rgmii-id";
+ pinctrl-names = "default";
+ pinctrl-0 = <&gmac1m1_miim
+ &gmac1m1_tx_bus2
+ &gmac1m1_rx_bus2
+ &gmac1m1_rgmii_clk
+ &gmac1m1_rgmii_bus
+ &gmac1m1_clkinout>;
+ rx_delay = <0x0>;
+ tx_delay = <0x0>;
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&mdio1 {
+ rgmii_phy1: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <0x1>;
+ reset-assert-us = <20000>;
+ reset-deassert-us = <100000>;
+ reset-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
+ };
+};
+
+&pinctrl {
+ usb {
+ vcc5v0_usb_host_en: vcc5v0-usb-host-en {
+ rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+};
+
+&pmu_io_domains {
+ pmuio1-supply = <&vcc_3v3>;
+ pmuio2-supply = <&vcc_3v3>;
+ vccio1-supply = <&vcc_1v8>;
+ vccio3-supply = <&vcc_3v3>;
+ vccio4-supply = <&vcc_1v8>;
+ vccio5-supply = <&vcc_3v3>;
+ vccio6-supply = <&vcc_1v8>;
+ vccio7-supply = <&vcc_3v3>;
+ status = "okay";
+};
+
+&pwm0 {
+ status = "okay";
+};
+
+&pwm1 {
+ status = "okay";
+};
+
+&saradc {
+ vref-supply = <&vcc_1v8>;
+ status = "okay";
+};
+
+&sata2 {
+ status = "okay";
+};
+
+&sdhci {
+ bus-width = <8>;
+ mmc-hs200-1_8v;
+ non-removable;
+ status = "okay";
+};
+
+&tsadc {
+ rockchip,hw-tshut-mode = <1>;
+ rockchip,hw-tshut-polarity = <0>;
+ status = "okay";
+};
+
+&uart2 {
+ status = "okay";
+};
+
+&usb_host0_ehci {
+ status = "okay";
+};
+
+&usb_host0_ohci {
+ status = "okay";
+};
+
+&usb_host1_ehci {
+ status = "okay";
+};
+
+&usb_host1_ohci {
+ status = "okay";
+};
+
+&usb_host1_xhci {
+ status = "okay";
+};
+
+&usb2phy0 {
+ status = "okay";
+};
+
+&usb2phy0_host {
+ phy-supply = <&vcc5v0_usb_host>;
+ status = "okay";
+};
+
+&usb2phy0_otg {
+ status = "okay";
+};
+
+&usb2phy1 {
+ status = "okay";
+};
+
+&usb2phy1_host {
+ phy-supply = <&vcc5v0_usb_host>;
+ status = "okay";
+};
+
+&usb2phy1_otg {
+ phy-supply = <&vcc5v0_usb_host>;
+ status = "okay";
+};
--
2.52.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 3/3] arm64: dts: rockchip: Add OneThing Edge Cube series
2026-01-31 15:31 ` [PATCH 3/3] arm64: dts: " Jun Yan
@ 2026-01-31 20:27 ` Dragan Simic
2026-02-01 13:14 ` Jun Yan
0 siblings, 1 reply; 12+ messages in thread
From: Dragan Simic @ 2026-01-31 20:27 UTC (permalink / raw)
To: Jun Yan
Cc: devicetree, linux-arm-kernel, linux-rockchip, robh, krzk+dt,
conor+dt, heiko, alchark
Hello Jun,
Please, see a quick remark below, for now.
On Saturday, January 31, 2026 16:31 CET, Jun Yan <jerrysteve1101@gmail.com> wrote:
> The OneThing Edge Cube (OEC) series features the RK3566 SoC, 8GB
> eMMC storage, and supports one SATA interface, one Gigabit Ethernet
> port, and one USB 3.0 port.
>
> Other than the difference in RAM capacity, the OEC and OEC-turbo are
> identical in all other specifications.
>
> Specification:
> - Rockchip RK3566
> - LPDDR4X 2GB (OEC) / 4GB (OEC-turbo)
> - eMMC 8GB
> - Gigabit Ethernet port x 1
> - USB 3.0 port x 1
> - USB-C 2.0 port x 1
> - 12V DC Power supply
> - SATA 3.0 connector x 1
>
> Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> ---
> arch/arm64/boot/dts/rockchip/Makefile | 2 +
> .../rockchip/rk3566-onething-oec-turbo.dts | 10 +
> .../boot/dts/rockchip/rk3566-onething-oec.dts | 10 +
> .../dts/rockchip/rk3566-onething-oec.dtsi | 309 ++++++++++++++++++
> 4 files changed, 331 insertions(+)
> create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
> create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
> create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dtsi
>
> diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
> index 4d384f153c13..ec57719e4573 100644
> --- a/arch/arm64/boot/dts/rockchip/Makefile
> +++ b/arch/arm64/boot/dts/rockchip/Makefile
> @@ -104,6 +104,8 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353v.dtb
> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353vs.dtb
> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb
> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-odroid-m1s.dtb
> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-onething-oec.dtb
> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-onething-oec-turbo.dtb
> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-orangepi-3b-v1.1.dtb
> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-orangepi-3b-v2.1.dtb
> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb
> diff --git a/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
> new file mode 100644
> index 000000000000..16d0cd0cf577
> --- /dev/null
> +++ b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
> @@ -0,0 +1,10 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +/dts-v1/;
> +
> +#include "rk3566-onething-oec.dtsi"
> +
> +/ {
> + model = "OneThing OEC-turbo";
> + compatible = "onething,oec-turbo", "rockchip,rk3566";
> +};
> diff --git a/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
> new file mode 100644
> index 000000000000..81da771ad63d
> --- /dev/null
> +++ b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
> @@ -0,0 +1,10 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +/dts-v1/;
> +
> +#include "rk3566-onething-oec.dtsi"
> +
> +/ {
> + model = "OneThing OEC";
> + compatible = "onething,oec", "rockchip,rk3566";
> +};
The only difference between the two OneThing OEC board variants is, as
far as I can tell, the amount of LPDDR4X DRAM they have, so I don't think
it's justified to have two separate board dts files that descend from the
common dtsi ancestor.
Having different amounts of DRAM on the same board design is present on
virtually all boards from other manufacturers, and some kind of special
DT treatment is needed only in some special cases, such as when different
types of DRAM are used for different capacities.
The different naming of the two board variants could be solved by having
something like this is the single board dts file:
model = "OneThing OEC/OEC-turbo";
Having two separate board dts files only makes it harder down the road,
such as having to build and provide two separate U-Boot builds, with no
real benefits. Every user can run free(1) to check the amount of available
DRAM on their board, which also tells them the board variant.
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH 3/3] arm64: dts: rockchip: Add OneThing Edge Cube series
2026-01-31 20:27 ` Dragan Simic
@ 2026-02-01 13:14 ` Jun Yan
0 siblings, 0 replies; 12+ messages in thread
From: Jun Yan @ 2026-02-01 13:14 UTC (permalink / raw)
To: dsimic
Cc: alchark, conor+dt, devicetree, heiko, jerrysteve1101, krzk+dt,
linux-arm-kernel, linux-rockchip, robh
> Hello Jun,
>
> Please, see a quick remark below, for now.
>
> On Saturday, January 31, 2026 16:31 CET, Jun Yan <jerrysteve1101@gmail.com> wrote:
> > The OneThing Edge Cube (OEC) series features the RK3566 SoC, 8GB
> > eMMC storage, and supports one SATA interface, one Gigabit Ethernet
> > port, and one USB 3.0 port.
> >
> > Other than the difference in RAM capacity, the OEC and OEC-turbo are
> > identical in all other specifications.
> >
> > Specification:
> > - Rockchip RK3566
> > - LPDDR4X 2GB (OEC) / 4GB (OEC-turbo)
> > - eMMC 8GB
> > - Gigabit Ethernet port x 1
> > - USB 3.0 port x 1
> > - USB-C 2.0 port x 1
> > - 12V DC Power supply
> > - SATA 3.0 connector x 1
> >
> > Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> > ---
> > arch/arm64/boot/dts/rockchip/Makefile | 2 +
> > .../rockchip/rk3566-onething-oec-turbo.dts | 10 +
> > .../boot/dts/rockchip/rk3566-onething-oec.dts | 10 +
> > .../dts/rockchip/rk3566-onething-oec.dtsi | 309 ++++++++++++++++++
> > 4 files changed, 331 insertions(+)
> > create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
> > create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
> > create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dtsi
> >
> > diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
> > index 4d384f153c13..ec57719e4573 100644
> > --- a/arch/arm64/boot/dts/rockchip/Makefile
> > +++ b/arch/arm64/boot/dts/rockchip/Makefile
> > @@ -104,6 +104,8 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353v.dtb
> > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353vs.dtb
> > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb
> > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-odroid-m1s.dtb
> > +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-onething-oec.dtb
> > +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-onething-oec-turbo.dtb
> > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-orangepi-3b-v1.1.dtb
> > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-orangepi-3b-v2.1.dtb
> > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
> > new file mode 100644
> > index 000000000000..16d0cd0cf577
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec-turbo.dts
> > @@ -0,0 +1,10 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +
> > +/dts-v1/;
> > +
> > +#include "rk3566-onething-oec.dtsi"
> > +
> > +/ {
> > + model = "OneThing OEC-turbo";
> > + compatible = "onething,oec-turbo", "rockchip,rk3566";
> > +};
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
> > new file mode 100644
> > index 000000000000..81da771ad63d
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/rockchip/rk3566-onething-oec.dts
> > @@ -0,0 +1,10 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +
> > +/dts-v1/;
> > +
> > +#include "rk3566-onething-oec.dtsi"
> > +
> > +/ {
> > + model = "OneThing OEC";
> > + compatible = "onething,oec", "rockchip,rk3566";
> > +};
>
> The only difference between the two OneThing OEC board variants is, as
> far as I can tell, the amount of LPDDR4X DRAM they have, so I don't think
> it's justified to have two separate board dts files that descend from the
> common dtsi ancestor.
>
> Having different amounts of DRAM on the same board design is present on
> virtually all boards from other manufacturers, and some kind of special
> DT treatment is needed only in some special cases, such as when different
> types of DRAM are used for different capacities.
>
> The different naming of the two board variants could be solved by having
> something like this is the single board dts file:
>
> model = "OneThing OEC/OEC-turbo";
I agree with your suggestion and will implement it in the V3 patch set.
Thanks for your valuable feedback!
> Having two separate board dts files only makes it harder down the road,
> such as having to build and provide two separate U-Boot builds, with no
> real benefits. Every user can run free(1) to check the amount of available
> DRAM on their board, which also tells them the board variant.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/3] board: rockchip: add OneThing Cloud OEC turbo
@ 2025-07-13 16:32 Jun Yan
2025-07-13 16:32 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
0 siblings, 1 reply; 12+ messages in thread
From: Jun Yan @ 2025-07-13 16:32 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, heiko, quentin.schulz, dsimic, naoki
Cc: devicetree, linux-arm-kernel, linux-rockchip, Jun Yan
This series adds support for the OneThing Cloud OEC Turbo, which was
initially marketed by OneThing Tech as a PCDN (P2P Content Delivery
Network) device.
Jun Yan (3):
dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co.,
Ltd.
dt-bindings: arm: rockchip: Add OneThing Cloud OEC turbo
arm64: dts: rockchip: Add OneThing Cloud OEC turbo
.../devicetree/bindings/arm/rockchip.yaml | 5 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm64/boot/dts/rockchip/Makefile | 1 +
.../rk3566-onething-cloud-oec-turbo.dts | 313 ++++++++++++++++++
4 files changed, 321 insertions(+)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-onething-cloud-oec-turbo.dts
--
2.50.1
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd.
2025-07-13 16:32 [PATCH 0/3] board: rockchip: add OneThing Cloud OEC turbo Jun Yan
@ 2025-07-13 16:32 ` Jun Yan
2025-07-13 17:28 ` Rob Herring (Arm)
2025-07-13 18:57 ` Heiko Stübner
0 siblings, 2 replies; 12+ messages in thread
From: Jun Yan @ 2025-07-13 16:32 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, heiko, quentin.schulz, dsimic, naoki
Cc: devicetree, linux-arm-kernel, linux-rockchip, Jun Yan
OneThing is a company engaged in edge computing.
Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 5d2a7a8d3ac6..77fbbe040706 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -1108,6 +1108,8 @@ patternProperties:
description: OLIMEX Ltd.
"^olpc,.*":
description: One Laptop Per Child
+ "^onething,.*":
+ descriotion: Shenzhen OneThing Technologies Co., Ltd.
"^oneplus,.*":
description: OnePlus Technology (Shenzhen) Co., Ltd.
"^onie,.*":
--
2.50.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd.
2025-07-13 16:32 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
@ 2025-07-13 17:28 ` Rob Herring (Arm)
2025-07-13 18:57 ` Heiko Stübner
1 sibling, 0 replies; 12+ messages in thread
From: Rob Herring (Arm) @ 2025-07-13 17:28 UTC (permalink / raw)
To: Jun Yan
Cc: conor+dt, krzk+dt, linux-rockchip, linux-arm-kernel, devicetree,
heiko, naoki, quentin.schulz, dsimic
On Mon, 14 Jul 2025 00:32:53 +0800, Jun Yan wrote:
> OneThing is a company engaged in edge computing.
>
> Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> ---
> Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/vendor-prefixes.yaml: patternProperties:^onething,.*: 'anyOf' conditional failed, one must be fixed:
'descriotion' is not one of ['$ref', 'additionalItems', 'additionalProperties', 'allOf', 'anyOf', 'const', 'contains', 'default', 'dependencies', 'dependentRequired', 'dependentSchemas', 'deprecated', 'description', 'else', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'items', 'if', 'minItems', 'minimum', 'maxItems', 'maximum', 'multipleOf', 'not', 'oneOf', 'pattern', 'patternProperties', 'properties', 'required', 'then', 'typeSize', 'unevaluatedProperties', 'uniqueItems']
'type' was expected
from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250713163255.163669-2-jerrysteve1101@gmail.com
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd.
2025-07-13 16:32 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
2025-07-13 17:28 ` Rob Herring (Arm)
@ 2025-07-13 18:57 ` Heiko Stübner
1 sibling, 0 replies; 12+ messages in thread
From: Heiko Stübner @ 2025-07-13 18:57 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, quentin.schulz, dsimic, naoki, Jun Yan
Cc: devicetree, linux-arm-kernel, linux-rockchip, Jun Yan
Am Sonntag, 13. Juli 2025, 18:32:53 Mitteleuropäische Sommerzeit schrieb Jun Yan:
> OneThing is a company engaged in edge computing.
>
> Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> ---
> Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> index 5d2a7a8d3ac6..77fbbe040706 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> @@ -1108,6 +1108,8 @@ patternProperties:
> description: OLIMEX Ltd.
> "^olpc,.*":
> description: One Laptop Per Child
> + "^onething,.*":
> + descriotion: Shenzhen OneThing Technologies Co., Ltd.
as Rob's bot pointed out, there is a typo in "description".
Also please make sure to sort entries alphabetically, "T" comes after "P"
(= onething after oneplus)
> "^oneplus,.*":
> description: OnePlus Technology (Shenzhen) Co., Ltd.
> "^onie,.*":
>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-02-01 13:36 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-31 15:31 [PATCH v2 0/3] board: rockchip: add OneThing Edge Cube series Jun Yan
2026-01-31 15:31 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
2026-01-31 20:29 ` Conor Dooley
2026-01-31 15:31 ` [PATCH 2/3] dt-bindings: arm: rockchip: Add OneThing Edge Cube series Jun Yan
2026-01-31 20:29 ` Conor Dooley
2026-02-01 13:25 ` Jun Yan
2026-01-31 15:31 ` [PATCH 3/3] arm64: dts: " Jun Yan
2026-01-31 20:27 ` Dragan Simic
2026-02-01 13:14 ` Jun Yan
-- strict thread matches above, loose matches on Subject: below --
2025-07-13 16:32 [PATCH 0/3] board: rockchip: add OneThing Cloud OEC turbo Jun Yan
2025-07-13 16:32 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Shenzhen OneThing Technologies Co., Ltd Jun Yan
2025-07-13 17:28 ` Rob Herring (Arm)
2025-07-13 18:57 ` Heiko Stübner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox