* [PATCH 0/2] ARM: dts: samsung: Add support for Hardkernel ODROID-U2
@ 2026-10-18 12:44 Josef Schlehofer
2026-10-18 12:44 ` [PATCH 1/2] dt-bindings: arm: samsung: Add " Josef Schlehofer
2026-10-18 12:44 ` [PATCH 2/2] ARM: dts: " Josef Schlehofer
0 siblings, 2 replies; 3+ messages in thread
From: Josef Schlehofer @ 2026-10-18 12:44 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Peter Griffin, Rob Herring,
Conor Dooley
Cc: linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel
This series introduces device tree support for Hardkernel's ODROID-U2
single board computer, based on the Samsung Exynos4412 Prime SoC.
ODROID-U2 is the predecessor of ODROID-U3 and shares most of its hardware
design (2 GB LPDDR2 RAM, LAN9730 10/100 Ethernet on HSIC0, USB3503A hub
on HSIC1, MAX98090 audio codec with headphone jack and on-board MEMS DMIC,
MAX77686 PMIC, PWM-controlled cooling fan header, blue heartbeat LED).
Key differences from ODROID-U3:
- The micro-USB (DWC2 / hsotg) port does not have a VBUS supply switch,
so it operates only in peripheral mode (dr_mode = "peripheral").
- The 3.5 mm jack is headphone only, and the board features an on-board
MEMS digital microphone (DMIC) rather than an analog mic input.
- There is no expansion header with SPI.
Hardware verification was performed on a physical ODROID-U2 board running
Linux 6.12:
- DWC2 USB: verified in peripheral mode via /sys/class/udc and dmesg.
- Ethernet: SMSC LAN9730 detected on HSIC0, link up at 100 Mbps Full-Duplex.
- Storage: microSD (mmcblk2) detected and functional. eMMC was not tested,
as no eMMC module was available.
- Thermal: /sys/class/thermal/cooling_device0/type shows pwm-fan (no fan
was attached).
- Audio:
* Stereo headphone playback verified with speaker-test and aplay.
* On-board digital MEMS microphone (DMIC) recording verified with:
amixer -c OdroidU2 cset name='DMIC Mux' DMIC
arecord -D hw:OdroidU2,0 -f S16_LE -r 48000 -c 2 -d 5 /tmp/dmic.wav
aplay -D hw:OdroidU2,0 /tmp/dmic.wav
Audio routing includes "Mixer DAI RX", "HiFi Capture" connecting the
MAX98090 codec capture to the Exynos I2S controller.
- LED: blue:heartbeat blinking with heartbeat trigger.
Josef Schlehofer (2):
dt-bindings: arm: samsung: Add Hardkernel ODROID-U2
ARM: dts: samsung: Add Hardkernel ODROID-U2
.../bindings/arm/samsung/samsung-boards.yaml | 1 +
arch/arm/boot/dts/samsung/Makefile | 1 +
.../dts/samsung/exynos4412-odroid-common.dtsi | 6 +-
.../boot/dts/samsung/exynos4412-odroidu2.dts | 139 ++++++++++++++++++
4 files changed, 144 insertions(+), 3 deletions(-)
create mode 100644 arch/arm/boot/dts/samsung/exynos4412-odroidu2.dts
base-commit: 58161ead29e50d70a317ea26b472e0c7508e69da
--
2.54.0 (Apple Git-157)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] dt-bindings: arm: samsung: Add Hardkernel ODROID-U2
2026-10-18 12:44 [PATCH 0/2] ARM: dts: samsung: Add support for Hardkernel ODROID-U2 Josef Schlehofer
@ 2026-10-18 12:44 ` Josef Schlehofer
2026-10-18 12:44 ` [PATCH 2/2] ARM: dts: " Josef Schlehofer
1 sibling, 0 replies; 3+ messages in thread
From: Josef Schlehofer @ 2026-10-18 12:44 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Peter Griffin, Rob Herring,
Conor Dooley
Cc: linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel
Add Hardkernel ODROID-U2 board compatible string.
The ODROID-U2 is an Exynos 4412 Prime (Cortex-A9) based single board
computer featuring 2 GB LPDDR2 RAM, SMSC LAN9730 HSIC Ethernet, and
MAX98090 audio codec.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
---
.../devicetree/bindings/arm/samsung/samsung-boards.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
index 273464400477..f863803c84f8 100644
--- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
+++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
@@ -86,6 +86,7 @@ properties:
items:
- enum:
- friendlyarm,tiny4412 # FriendlyARM TINY4412
+ - hardkernel,odroid-u2 # Hardkernel Odroid U2
- hardkernel,odroid-u3 # Hardkernel Odroid U3
- hardkernel,odroid-x # Hardkernel Odroid X
- hardkernel,odroid-x2 # Hardkernel Odroid X2
--
2.54.0 (Apple Git-157)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 2/2] ARM: dts: samsung: Add Hardkernel ODROID-U2
2026-10-18 12:44 [PATCH 0/2] ARM: dts: samsung: Add support for Hardkernel ODROID-U2 Josef Schlehofer
2026-10-18 12:44 ` [PATCH 1/2] dt-bindings: arm: samsung: Add " Josef Schlehofer
@ 2026-10-18 12:44 ` Josef Schlehofer
1 sibling, 0 replies; 3+ messages in thread
From: Josef Schlehofer @ 2026-10-18 12:44 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Peter Griffin, Rob Herring,
Conor Dooley
Cc: linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel
ODROID-U2 is a single board computer from Hardkernel based on the
Samsung Exynos4412 Prime SoC with 2 GB of LPDDR2 RAM. It is the
predecessor of the ODROID-U3 and shares most of its design:
- microSD card slot and eMMC module socket
- SMSC LAN9730 10/100 Ethernet on HSIC0
- SMSC USB3503A hub on HSIC1 with two USB 2.0 host ports
- micro-HDMI port with CEC
- MAX98090 audio codec with a 3.5 mm headphone jack and an on-board
digital microphone
- MAX77686 PMIC
- 2-pin header for an optional PWM controlled cooling fan
- blue heartbeat LED
Unlike the ODROID-U3, the micro-USB port has no VBUS supply switch, so
it can only work in peripheral mode, and there is no expansion header
with SPI. The 3.5 mm jack is headphone only and the speaker outputs of
the codec are not connected.
Add an initial device tree for the board, based on the ODROID-U3 one,
and update the comments in the common dtsi, as the LDO22 and BUCK8
constraints are now also set by the ODROID-U2.
Also route "HiFi Capture" to "Mixer DAI RX", as on the ODROID-XU3. The
odroid sound card driver adds only the playback routes for boards with
a single CPU DAI, so without it the DPCM capture path to the I2S
back-end is incomplete and recording from the digital microphone fails
with "no backend DAIs enabled for Primary".
Link: https://www.hardkernel.com/shop/odroid-u2/
Link: https://www.hardkernel.com/blog-2/odroid-u2-u-schematics/
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
---
arch/arm/boot/dts/samsung/Makefile | 1 +
.../dts/samsung/exynos4412-odroid-common.dtsi | 6 +-
.../boot/dts/samsung/exynos4412-odroidu2.dts | 139 ++++++++++++++++++
3 files changed, 143 insertions(+), 3 deletions(-)
create mode 100644 arch/arm/boot/dts/samsung/exynos4412-odroidu2.dts
diff --git a/arch/arm/boot/dts/samsung/Makefile b/arch/arm/boot/dts/samsung/Makefile
index e0143ee8c82d..2a173e4b3e1a 100644
--- a/arch/arm/boot/dts/samsung/Makefile
+++ b/arch/arm/boot/dts/samsung/Makefile
@@ -16,6 +16,7 @@ dtb-$(CONFIG_ARCH_EXYNOS4) += \
exynos4412-i9305.dtb \
exynos4412-itop-elite.dtb \
exynos4412-n710x.dtb \
+ exynos4412-odroidu2.dtb \
exynos4412-odroidu3.dtb \
exynos4412-odroidx.dtb \
exynos4412-odroidx2.dtb \
diff --git a/arch/arm/boot/dts/samsung/exynos4412-odroid-common.dtsi b/arch/arm/boot/dts/samsung/exynos4412-odroid-common.dtsi
index 93ddbd4b0a18..b56b92c78c1d 100644
--- a/arch/arm/boot/dts/samsung/exynos4412-odroid-common.dtsi
+++ b/arch/arm/boot/dts/samsung/exynos4412-odroid-common.dtsi
@@ -414,8 +414,8 @@ ldo21_reg: LDO21 {
ldo22_reg: LDO22 {
/*
- * Only U3 uses it, so let it define the
- * constraints
+ * Only U2 and U3 use it, so let them define
+ * the constraints
*/
regulator-name = "LDO22";
regulator-boot-on;
@@ -486,7 +486,7 @@ buck7_reg: BUCK7 {
buck8_reg: BUCK8 {
/*
* Constraints set by specific board: X,
- * X2 and U3.
+ * X2, U2 and U3.
*/
regulator-name = "BUCK8_2.8V";
};
diff --git a/arch/arm/boot/dts/samsung/exynos4412-odroidu2.dts b/arch/arm/boot/dts/samsung/exynos4412-odroidu2.dts
new file mode 100644
index 000000000000..5cb5f874b562
--- /dev/null
+++ b/arch/arm/boot/dts/samsung/exynos4412-odroidu2.dts
@@ -0,0 +1,139 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Hardkernel's Exynos4412 based ODROID-U2 board device tree source
+ *
+ * Copyright (c) 2014 Marek Szyprowski <m.szyprowski@samsung.com>
+ * Copyright (c) 2026 Josef Schlehofer <pepe.schlehofer@gmail.com>
+ *
+ * Device tree source file for Hardkernel's ODROID-U2 board which is based
+ * on Samsung's Exynos4412 SoC.
+ */
+
+/dts-v1/;
+#include <dt-bindings/leds/common.h>
+#include "exynos4412-odroid-common.dtsi"
+#include "exynos4412-prime.dtsi"
+
+/ {
+ model = "Hardkernel ODROID-U2 board based on Exynos4412";
+ compatible = "hardkernel,odroid-u2", "samsung,exynos4412", "samsung,exynos4";
+
+ aliases {
+ ethernet = ðernet;
+ };
+
+ memory@40000000 {
+ device_type = "memory";
+ reg = <0x40000000 0x7ff00000>;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led1 {
+ function = LED_FUNCTION_HEARTBEAT;
+ color = <LED_COLOR_ID_BLUE>;
+ gpios = <&gpc1 0 GPIO_ACTIVE_LOW>;
+ default-state = "on";
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ fan0: pwm-fan {
+ compatible = "pwm-fan";
+ pwms = <&pwm 0 10000 0>;
+ #cooling-cells = <2>;
+ cooling-levels = <0 102 170 230>;
+ };
+};
+
+&adc {
+ vdd-supply = <&ldo10_reg>;
+ /* Nothing connected to ADC inputs, keep it disabled */
+};
+
+/* Supply for LAN9730/SMSC95xx */
+&buck8_reg {
+ regulator-name = "BUCK8_P3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+};
+
+&cpu_thermal {
+ cooling-maps {
+ map0 {
+ trip = <&cpu_alert1>;
+ cooling-device = <&cpu0 9 9>, <&cpu1 9 9>,
+ <&cpu2 9 9>, <&cpu3 9 9>,
+ <&fan0 1 2>;
+ };
+ map1 {
+ trip = <&cpu_alert2>;
+ cooling-device = <&cpu0 15 15>, <&cpu1 15 15>,
+ <&cpu2 15 15>, <&cpu3 15 15>,
+ <&fan0 2 3>;
+ };
+ map2 {
+ trip = <&cpu_alert0>;
+ cooling-device = <&fan0 0 1>;
+ };
+ };
+};
+
+&ehci {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ phys = <&exynos_usbphy 2>, <&exynos_usbphy 3>;
+ phy-names = "hsic0", "hsic1";
+
+ ethernet: ethernet@2 {
+ compatible = "usb424,9730";
+ reg = <2>;
+ local-mac-address = [00 00 00 00 00 00]; /* Filled in by a bootloader */
+ };
+};
+
+&hdmicec {
+ needs-hpd;
+};
+
+/* No VBUS supply switch on the micro-USB port */
+&hsotg {
+ dr_mode = "peripheral";
+};
+
+/* VDDQ for MSHC (eMMC card) */
+&ldo22_reg {
+ regulator-name = "LDO22_VDDQ_MMC4_2.8V";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+};
+
+&mshc_0 {
+ vqmmc-supply = <&ldo22_reg>;
+};
+
+&pwm {
+ pinctrl-0 = <&pwm0_out>;
+ pinctrl-names = "default";
+ samsung,pwm-outputs = <0>;
+ status = "okay";
+};
+
+&sound {
+ model = "Odroid-U2";
+ samsung,audio-widgets =
+ "Headphone", "Headphone Jack",
+ "Microphone", "DMIC";
+ audio-routing = "Headphone Jack", "HPL",
+ "Headphone Jack", "HPR",
+ "DMICL", "DMIC",
+ "DMICR", "DMIC",
+ "Mixer DAI RX", "HiFi Capture";
+};
+
+&usb3503 {
+ clock-names = "refclk";
+ clocks = <&pmu_system_controller 0>;
+ refclk-frequency = <24000000>;
+};
--
2.54.0 (Apple Git-157)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-18 12:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-18 12:44 [PATCH 0/2] ARM: dts: samsung: Add support for Hardkernel ODROID-U2 Josef Schlehofer
2026-10-18 12:44 ` [PATCH 1/2] dt-bindings: arm: samsung: Add " Josef Schlehofer
2026-10-18 12:44 ` [PATCH 2/2] ARM: dts: " Josef Schlehofer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®