All of lore.kernel.org
 help / color / mirror / Atom feed
From: Henrik Grimler <henrik@grimler.se>
To: Josef Schlehofer <pepe.schlehofer@gmail.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Peter Griffin <peter.griffin@linaro.org>,
	Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
	linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] ARM: dts: samsung: Add Hardkernel ODROID-U2
Date: Mon, 19 Oct 2026 16:01:46 +0200	[thread overview]
Message-ID: <20261019140146.GA26863@localhost> (raw)
In-Reply-To: <20261018124459.3026-3-pepe.schlehofer@gmail.com>

Hi Josef,

Running dt-check-style --mode strict exynos4412-odroidu2.dts with
dt-check-style from
https://github.com/krzk/linux/blob/b4/dts-style-checker-blank-lines/scripts/dtc/dt-check-style
shows a few things that can be improved, commented inline.

On Sun, Oct 18, 2026 at 02:44:59PM +0200, Josef Schlehofer wrote:
> 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.

I compared your linked schematics with the ones for odroid-u3 and
agree that this seems to be all the differences.

> 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 = &ethernet;
> +	};
> +
> +	memory@40000000 {
> +		device_type = "memory";
> +		reg = <0x40000000 0x7ff00000>;
> +	};

Please move below leds {} so that the nodes are sorted alphabetically.

> +
> +	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>;
> +		};

Newline here between child nodes please.

> +		map1 {
> +			trip = <&cpu_alert2>;
> +			cooling-device = <&cpu0 15 15>, <&cpu1 15 15>,
> +					 <&cpu2 15 15>, <&cpu3 15 15>,
> +					 <&fan0 2 3>;
> +		};

Newline here between child nodes please.

> +		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";

Empty line before status please.

> +};
> +
> +&sound {
> +	model = "Odroid-U2";
> +	samsung,audio-widgets =
> +		"Headphone", "Headphone Jack",
> +		"Microphone", "DMIC";

Please sort samsung,audio-widgets after audio-routing (vendor prefixed
properties last).

> +	audio-routing = "Headphone Jack", "HPL",
> +			"Headphone Jack", "HPR",
> +			"DMICL", "DMIC",
> +			"DMICR", "DMIC",
> +			"Mixer DAI RX", "HiFi Capture";
> +};
> +
> +&usb3503 {
> +	clock-names = "refclk";

Please sort clock-names after clocks.

> +	clocks = <&pmu_system_controller 0>;
> +	refclk-frequency = <24000000>;
> +};
> -- 
> 2.54.0 (Apple Git-157)
> 
> 

Best regards
Henrik Grimler

      reply	other threads:[~2026-10-19 14:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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-19 14:05   ` Henrik Grimler
2026-10-18 12:44 ` [PATCH 2/2] ARM: dts: " Josef Schlehofer
2026-10-19 14:01   ` Henrik Grimler [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261019140146.GA26863@localhost \
    --to=henrik@grimler.se \
    --cc=alim.akhtar@samsung.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=pepe.schlehofer@gmail.com \
    --cc=peter.griffin@linaro.org \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.