diff mbox series

[v3,2/2] arm64: dts: ti: Add k3-am67a-beagley-ai

Message ID 20240822170440.265055-2-robertcnelson@gmail.com (mailing list archive)
State New, archived
Headers show
Series [v3,1/2] dt-bindings: arm: ti: Add BeagleY-AI | expand

Commit Message

Robert Nelson Aug. 22, 2024, 5:04 p.m. UTC
BeagleBoard.org BeagleY-AI is an easy to use, affordable open source
hardware single board computer based on the Texas Instruments AM67A,
which features a quad-core 64-bit Arm CPU subsystem, 2 general-purpose
digital-signal-processors (DSP) and matrix-multiply-accelerators (MMA),
GPU, vision and deep learning accelerators, and multiple Arm Cortex-R5
cores for low-power, low-latency GPIO control.

https://beagley-ai.org/
https://openbeagle.org/beagley-ai/beagley-ai

Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
CC: Rob Herring <robh@kernel.org>
CC: Krzysztof Kozlowski <krzk+dt@kernel.org>
CC: Conor Dooley <conor+dt@kernel.org>
CC: Vignesh Raghavendra <vigneshr@ti.com>
CC: Nishanth Menon <nm@ti.com>
CC: Andrew Davis <afd@ti.com>
CC: Jai Luthra <j-luthra@ti.com>
CC: Roger Quadros <rogerq@kernel.org>
CC: Siddharth Vadapalli <s-vadapalli@ti.com>
CC: Jared McArthur <j-mcarthur@ti.com>
CC: Jason Kridner <jkridner@beagleboard.org>
CC: Deepak Khatri <lorforlinux@beagleboard.org>
CC: Drew Fustini <drew@beagleboard.org>
CC: linux-arm-kernel@lists.infradead.org
CC: devicetree@vger.kernel.org
CC: linux-kernel@vger.kernel.org
---
Changes since v2:
 - added led indictors
 - sdhci1 use MMC1_SDCD.GPIO1_48 for card detect
 - cleaned up order of status = "okay"
 - wkup_i2c0 moved to 100000
 - eeprom added atmel,24c32
 - rtc added dallas,ds1340
 - sdhci1 use ti,fails-without-test-cd
Changes since v1:
 - fixed incorrect vdd-3v3-sd-pins-default name
 - updated hdmi VDD_1V2 regulator for production pcb
 - switched device tree name from k3-j722s-beagley-ai to k3-am67a-beagley-ai
 - removed cpsw_port2 node
 - enable UHS support for MMCSD
---
 arch/arm64/boot/dts/ti/Makefile               |   1 +
 .../arm64/boot/dts/ti/k3-am67a-beagley-ai.dts | 406 ++++++++++++++++++
 2 files changed, 407 insertions(+)
 create mode 100644 arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts

Comments

Krzysztof Kozlowski Aug. 23, 2024, 7:46 a.m. UTC | #1
On Thu, Aug 22, 2024 at 12:04:40PM -0500, Robert Nelson wrote:
> BeagleBoard.org BeagleY-AI is an easy to use, affordable open source
> hardware single board computer based on the Texas Instruments AM67A,
> which features a quad-core 64-bit Arm CPU subsystem, 2 general-purpose
> digital-signal-processors (DSP) and matrix-multiply-accelerators (MMA),
> GPU, vision and deep learning accelerators, and multiple Arm Cortex-R5
> cores for low-power, low-latency GPIO control.
> 
> https://beagley-ai.org/
> https://openbeagle.org/beagley-ai/beagley-ai
> 
> Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
> CC: Rob Herring <robh@kernel.org>
> CC: Krzysztof Kozlowski <krzk+dt@kernel.org>
> CC: Conor Dooley <conor+dt@kernel.org>
> CC: Vignesh Raghavendra <vigneshr@ti.com>
> CC: Nishanth Menon <nm@ti.com>
> CC: Andrew Davis <afd@ti.com>
> CC: Jai Luthra <j-luthra@ti.com>
> CC: Roger Quadros <rogerq@kernel.org>
> CC: Siddharth Vadapalli <s-vadapalli@ti.com>
> CC: Jared McArthur <j-mcarthur@ti.com>
> CC: Jason Kridner <jkridner@beagleboard.org>
> CC: Deepak Khatri <lorforlinux@beagleboard.org>
> CC: Drew Fustini <drew@beagleboard.org>
> CC: linux-arm-kernel@lists.infradead.org
> CC: devicetree@vger.kernel.org
> CC: linux-kernel@vger.kernel.org

Please drop the autogenerated scripts/get_maintainer.pl CC-entries from
commit msg. There is no single need to store automated output of
get_maintainers.pl in the git log. It can be easily re-created at any
given time, thus its presence in the git history is redundant and
obfuscates the log.

If you need it for your own patch management purposes, keep it under the
--- separator.

> ---
> Changes since v2:
>  - added led indictors
>  - sdhci1 use MMC1_SDCD.GPIO1_48 for card detect
>  - cleaned up order of status = "okay"
>  - wkup_i2c0 moved to 100000
>  - eeprom added atmel,24c32
>  - rtc added dallas,ds1340
>  - sdhci1 use ti,fails-without-test-cd
> Changes since v1:
>  - fixed incorrect vdd-3v3-sd-pins-default name
>  - updated hdmi VDD_1V2 regulator for production pcb
>  - switched device tree name from k3-j722s-beagley-ai to k3-am67a-beagley-ai
>  - removed cpsw_port2 node
>  - enable UHS support for MMCSD
> ---
>  arch/arm64/boot/dts/ti/Makefile               |   1 +
>  .../arm64/boot/dts/ti/k3-am67a-beagley-ai.dts | 406 ++++++++++++++++++
>  2 files changed, 407 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
> 
> diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
> index e20b27ddf901..c89c9b8bab38 100644
> --- a/arch/arm64/boot/dts/ti/Makefile
> +++ b/arch/arm64/boot/dts/ti/Makefile
> @@ -110,6 +110,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm.dtb
>  dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
>  
>  # Boards with J722s SoC
> +dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb

So am67 is J772s? Then why calling it am67a?

>  dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
>  
>  # Boards with J784s4 SoC
> diff --git a/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts b/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
> new file mode 100644
> index 000000000000..c8cbb875d4c7
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
> @@ -0,0 +1,406 @@
> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> +/*
> + * https://beagley-ai.org/
> + *
> + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
> + * Copyright (C) 2024 Robert Nelson, BeagleBoard.org Foundation
> + */

...

> +	vsys_5v0: regulator-1 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vsys_5v0";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +		bootph-all;
> +	};
> +
> +	vdd_3v3: regulator-2 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vdd_3v3";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vsys_5v0>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +	};
> +
> +	vdd_mmc1: regulator-mmc1 {

Keep consistent naming of the nodes. Why this is sometimes "1" sometimes
"mmc"?

Please use name for all fixed regulators which matches current format
recommendation: 'regulator-[0-9]v[0-9]'
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml?h=v6.11-rc1#n46

> +		compatible = "regulator-fixed";
> +		regulator-name = "vdd_mmc1";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&vdd_3v3_sd_pins_default>;
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		regulator-boot-on;
> +		enable-active-high;
> +		gpio = <&main_gpio1 50 GPIO_ACTIVE_HIGH>;
> +		bootph-all;
> +	};
> +
> +	vdd_sd_dv: regulator-TLV71033 {

No upper-case characters.

See DTS coding style.

> +		compatible = "regulator-gpio";
> +		regulator-name = "tlv71033";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&vdd_sd_dv_pins_default>;
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <3300000>;
> +		regulator-boot-on;
> +		vin-supply = <&vsys_5v0>;
> +		gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
> +		states = <1800000 0x0>,
> +			 <3300000 0x1>;
> +		bootph-all;
> +	};
> +
> +	vsys_io_1v8: regulator-vsys-io-1v8 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vsys_io_1v8";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +	};
> +
> +	vsys_io_1v2: regulator-vsys-io-1v2 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vsys_io_1v2";
> +		regulator-min-microvolt = <1200000>;
> +		regulator-max-microvolt = <1200000>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&led_pins_default>;
> +
> +		led-0 {
> +			gpios = <&main_gpio0 11 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "default-off";
> +			default-state = "off";
> +		};
> +
> +		led-1 {
> +			gpios = <&main_gpio0 12 GPIO_ACTIVE_HIGH>;
> +			function = LED_FUNCTION_HEARTBEAT;
> +			linux,default-trigger = "heartbeat";
> +			default-state = "on";
> +		};
> +	};
> +};
> +
> +&main_pmx0 {
> +

Drop blank line.

> +	main_i2c0_pins_default: main-i2c0-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (D23) I2C0_SCL */
> +			J722S_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (B22) I2C0_SDA */
> +		>;
> +		bootph-all;
> +	};
> +
> +	main_uart0_pins_default: main-uart0-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x01c8, PIN_INPUT, 0)	/* (A22) UART0_RXD */
> +			J722S_IOPAD(0x01cc, PIN_OUTPUT, 0)	/* (B22) UART0_TXD */
> +		>;
> +		bootph-all;
> +	};
> +
> +	vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x0244, PIN_OUTPUT, 7) /* (A24) MMC1_SDWP.GPIO1_49 */
> +		>;
> +		bootph-all;
> +	};
> +
> +	main_mmc1_pins_default: main-mmc1-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x023c, PIN_INPUT, 0) /* (H22) MMC1_CMD */
> +			J722S_IOPAD(0x0234, PIN_OUTPUT, 0) /* (H24) MMC1_CLK */
> +			J722S_IOPAD(0x0230, PIN_INPUT, 0) /* (H23) MMC1_DAT0 */
> +			J722S_IOPAD(0x022c, PIN_INPUT_PULLUP, 0) /* (H20) MMC1_DAT1 */
> +			J722S_IOPAD(0x0228, PIN_INPUT_PULLUP, 0) /* (J23) MMC1_DAT2 */
> +			J722S_IOPAD(0x0224, PIN_INPUT_PULLUP, 0) /* (H25) MMC1_DAT3 */
> +			J722S_IOPAD(0x0240, PIN_INPUT, 7) /* (B24) MMC1_SDCD.GPIO1_48 */
> +		>;
> +		bootph-all;
> +	};
> +
> +	mdio_pins_default: mdio-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x0160, PIN_OUTPUT, 0) /* (AC24) MDIO0_MDC */
> +			J722S_IOPAD(0x015c, PIN_INPUT, 0) /* (AD25) MDIO0_MDIO */
> +		>;
> +	};
> +
> +	rgmii1_pins_default: rgmii1-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x014c, PIN_INPUT, 0) /* (AC25) RGMII1_RD0 */
> +			J722S_IOPAD(0x0150, PIN_INPUT, 0) /* (AD27) RGMII1_RD1 */
> +			J722S_IOPAD(0x0154, PIN_INPUT, 0) /* (AE24) RGMII1_RD2 */
> +			J722S_IOPAD(0x0158, PIN_INPUT, 0) /* (AE26) RGMII1_RD3 */
> +			J722S_IOPAD(0x0148, PIN_INPUT, 0) /* (AE27) RGMII1_RXC */
> +			J722S_IOPAD(0x0144, PIN_INPUT, 0) /* (AD23) RGMII1_RX_CTL */
> +			J722S_IOPAD(0x0134, PIN_OUTPUT, 0) /* (AF27) RGMII1_TD0 */
> +			J722S_IOPAD(0x0138, PIN_OUTPUT, 0) /* (AE23) RGMII1_TD1 */
> +			J722S_IOPAD(0x013c, PIN_OUTPUT, 0) /* (AG25) RGMII1_TD2 */
> +			J722S_IOPAD(0x0140, PIN_OUTPUT, 0) /* (AF24) RGMII1_TD3 */
> +			J722S_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AG26) RGMII1_TXC */
> +			J722S_IOPAD(0x012c, PIN_OUTPUT, 0) /* (AF25) RGMII1_TX_CTL */
> +		>;
> +	};
> +
> +	led_pins_default: led-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x002c, PIN_OUTPUT, 7) /* (K26) OSPI0_CSn0.GPIO0_11 */
> +			J722S_IOPAD(0x0030, PIN_OUTPUT, 7) /* (K23) OSPI0_CSn1.GPIO0_12 */
> +		>;
> +	};
> +
> +	pmic_irq_pins_default: pmic-irq-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (B23) EXTINTn */
> +		>;
> +	};
> +
> +	vdd_3v3_sd_pins_default: vdd-3v3-sd-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x0254, PIN_OUTPUT, 7) /* (E25) USB0_DRVVBUS.GPIO1_50 */
> +		>;
> +	};
> +};
> +
> +&cpsw3g {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&rgmii1_pins_default>, <&gbe_pmx_obsclk>;
> +
> +	assigned-clocks = <&k3_clks 227 0>;
> +	assigned-clock-parents = <&k3_clks 227 6>;
> +	status = "okay";
> +};
> +
> +&cpsw3g_mdio {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&mdio_pins_default>;
> +	status = "okay";
> +
> +	cpsw3g_phy0: ethernet-phy@0 {
> +		reg = <0>;
> +		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
> +		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
> +		ti,min-output-impedance;
> +	};
> +};
> +
> +&cpsw_port1 {
> +	phy-mode = "rgmii-rxid";
> +	phy-handle = <&cpsw3g_phy0>;
> +	status = "okay";
> +};
> +
> +&main_gpio1 {
> +	status = "okay";
> +};
> +
> +&main_uart0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&main_uart0_pins_default>;
> +	bootph-all;
> +	status = "okay";
> +};
> +
> +&mcu_pmx0 {
> +

Drop blank line

> +	wkup_uart0_pins_default: wkup-uart0-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_MCU_IOPAD(0x02c, PIN_INPUT, 0)	/* (C7) WKUP_UART0_CTSn */
> +			J722S_MCU_IOPAD(0x030, PIN_OUTPUT, 0)	/* (C6) WKUP_UART0_RTSn */
> +			J722S_MCU_IOPAD(0x024, PIN_INPUT, 0)	/* (D8) WKUP_UART0_RXD */
> +			J722S_MCU_IOPAD(0x028, PIN_OUTPUT, 0)	/* (D7) WKUP_UART0_TXD */
> +		>;
> +		bootph-all;
> +	};

Best regards,
Krzysztof
Roger Quadros Aug. 23, 2024, 11:23 a.m. UTC | #2
Hi,

On 22/08/2024 20:04, Robert Nelson wrote:
> BeagleBoard.org BeagleY-AI is an easy to use, affordable open source
> hardware single board computer based on the Texas Instruments AM67A,
> which features a quad-core 64-bit Arm CPU subsystem, 2 general-purpose
> digital-signal-processors (DSP) and matrix-multiply-accelerators (MMA),
> GPU, vision and deep learning accelerators, and multiple Arm Cortex-R5
> cores for low-power, low-latency GPIO control.
> 
> https://beagley-ai.org/
> https://openbeagle.org/beagley-ai/beagley-ai
> 
> Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
> CC: Rob Herring <robh@kernel.org>
> CC: Krzysztof Kozlowski <krzk+dt@kernel.org>
> CC: Conor Dooley <conor+dt@kernel.org>
> CC: Vignesh Raghavendra <vigneshr@ti.com>
> CC: Nishanth Menon <nm@ti.com>
> CC: Andrew Davis <afd@ti.com>
> CC: Jai Luthra <j-luthra@ti.com>
> CC: Roger Quadros <rogerq@kernel.org>
> CC: Siddharth Vadapalli <s-vadapalli@ti.com>
> CC: Jared McArthur <j-mcarthur@ti.com>
> CC: Jason Kridner <jkridner@beagleboard.org>
> CC: Deepak Khatri <lorforlinux@beagleboard.org>
> CC: Drew Fustini <drew@beagleboard.org>
> CC: linux-arm-kernel@lists.infradead.org
> CC: devicetree@vger.kernel.org
> CC: linux-kernel@vger.kernel.org
> ---
> Changes since v2:
>  - added led indictors
>  - sdhci1 use MMC1_SDCD.GPIO1_48 for card detect
>  - cleaned up order of status = "okay"
>  - wkup_i2c0 moved to 100000
>  - eeprom added atmel,24c32
>  - rtc added dallas,ds1340
>  - sdhci1 use ti,fails-without-test-cd
> Changes since v1:
>  - fixed incorrect vdd-3v3-sd-pins-default name
>  - updated hdmi VDD_1V2 regulator for production pcb
>  - switched device tree name from k3-j722s-beagley-ai to k3-am67a-beagley-ai
>  - removed cpsw_port2 node
>  - enable UHS support for MMCSD
> ---
>  arch/arm64/boot/dts/ti/Makefile               |   1 +
>  .../arm64/boot/dts/ti/k3-am67a-beagley-ai.dts | 406 ++++++++++++++++++
>  2 files changed, 407 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
> 
> diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
> index e20b27ddf901..c89c9b8bab38 100644
> --- a/arch/arm64/boot/dts/ti/Makefile
> +++ b/arch/arm64/boot/dts/ti/Makefile
> @@ -110,6 +110,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm.dtb
>  dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
>  
>  # Boards with J722s SoC
> +dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
>  dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
>  
>  # Boards with J784s4 SoC
> diff --git a/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts b/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
> new file mode 100644
> index 000000000000..c8cbb875d4c7
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
> @@ -0,0 +1,406 @@
> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> +/*

<snip>

> +
> +&cpsw3g {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&rgmii1_pins_default>, <&gbe_pmx_obsclk>;

Why do you need OBSCLK for Ethernet MAC?
The OBSCLK is connected to the Ethernet PHY via C406 which is not even populated.
It seems that the PHY is clocked by a crystal oscillator X5 so doesn't really
need OBSCLK in the stock configuration?

> +
> +	assigned-clocks = <&k3_clks 227 0>;
> +	assigned-clock-parents = <&k3_clks 227 6>;
> +	status = "okay";
> +};
> +
> +&cpsw3g_mdio {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&mdio_pins_default>;
> +	status = "okay";
> +
> +	cpsw3g_phy0: ethernet-phy@0 {
> +		reg = <0>;
> +		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
> +		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
> +		ti,min-output-impedance;
> +	};
> +};
> +
> +&cpsw_port1 {
> +	phy-mode = "rgmii-rxid";
> +	phy-handle = <&cpsw3g_phy0>;
> +	status = "okay";
> +};
> +
> +&main_gpio1 {
> +	status = "okay";
> +};
> +
> +&main_uart0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&main_uart0_pins_default>;
> +	bootph-all;
> +	status = "okay";
> +};
> +
> +&mcu_pmx0 {
> +
> +	wkup_uart0_pins_default: wkup-uart0-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_MCU_IOPAD(0x02c, PIN_INPUT, 0)	/* (C7) WKUP_UART0_CTSn */
> +			J722S_MCU_IOPAD(0x030, PIN_OUTPUT, 0)	/* (C6) WKUP_UART0_RTSn */
> +			J722S_MCU_IOPAD(0x024, PIN_INPUT, 0)	/* (D8) WKUP_UART0_RXD */
> +			J722S_MCU_IOPAD(0x028, PIN_OUTPUT, 0)	/* (D7) WKUP_UART0_TXD */
> +		>;
> +		bootph-all;
> +	};
> +
> +	wkup_i2c0_pins_default: wkup-i2c0-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_MCU_IOPAD(0x04c, PIN_INPUT_PULLUP, 0)	/* (C7) WKUP_I2C0_SCL */
> +			J722S_MCU_IOPAD(0x050, PIN_INPUT_PULLUP, 0)	/* (C6) WKUP_I2C1_SDA */
> +		>;
> +		bootph-all;
> +	};
> +
> +	gbe_pmx_obsclk: gbe-pmx-obsclk-default-pins {
> +		pinctrl-single,pins = <
> +			J722S_MCU_IOPAD(0x0004, PIN_OUTPUT, 1) /* (A10) MCU_SPI0_CS1.MCU_OBSCLK0 */
> +		>;
> +	};
> +};
> +
> +&wkup_uart0 {
> +	/* WKUP UART0 is used by Device Manager firmware */
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&wkup_uart0_pins_default>;
> +	bootph-all;
> +	status = "reserved";
> +};
> +
> +&wkup_i2c0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&wkup_i2c0_pins_default>;
> +	clock-frequency = <100000>;
> +	bootph-all;
> +	status = "okay";
> +
> +	tps65219: pmic@30 {
> +		compatible = "ti,tps65219";
> +		reg = <0x30>;
> +		buck1-supply = <&vsys_5v0>;
> +		buck2-supply = <&vsys_5v0>;
> +		buck3-supply = <&vsys_5v0>;
> +		ldo1-supply = <&vdd_3v3>;
> +		ldo3-supply = <&vdd_3v3>;
> +		ldo4-supply = <&vdd_3v3>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pmic_irq_pins_default>;
> +		interrupt-parent = <&gic500>;
> +		interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
> +		interrupt-controller;
> +		#interrupt-cells = <1>;
> +
> +		system-power-controller;
> +		ti,power-button;
> +		bootph-all;
> +
> +		regulators {
> +			buck1_reg: buck1 {
> +				regulator-name = "VDD_3V3";
> +				regulator-min-microvolt = <3300000>;
> +				regulator-max-microvolt = <3300000>;
> +				regulator-boot-on;
> +				regulator-always-on;
> +			};
> +
> +			buck2_reg: buck2 {
> +				regulator-name = "VDD_1V8";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-boot-on;
> +				regulator-always-on;
> +			};
> +
> +			ldo1_reg: ldo1 {
> +				regulator-name = "VDDSHV5_SDIO";
> +				regulator-min-microvolt = <3300000>;
> +				regulator-max-microvolt = <3300000>;
> +				regulator-allow-bypass;
> +				regulator-boot-on;
> +				regulator-always-on;
> +			};
> +
> +			ldo2_reg: ldo2 {
> +				regulator-name = "VDD_1V2";
> +				regulator-min-microvolt = <1200000>;
> +				regulator-max-microvolt = <1200000>;
> +				regulator-boot-on;
> +				regulator-always-on;
> +			};
> +
> +			ldo3_reg: ldo3 {
> +				regulator-name = "VDDA_PHY_1V8";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-boot-on;
> +				regulator-always-on;
> +			};
> +
> +			ldo4_reg: ldo4 {
> +				regulator-name = "VDDA_PLL_1V8";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-boot-on;
> +				regulator-always-on;
> +			};
> +		};
> +	};
> +
> +	eeprom@50 {
> +		compatible = "atmel,24c32";
> +		reg = <0x50>;
> +	};
> +
> +	rtc: rtc@68 {
> +		compatible = "dallas,ds1340";
> +		reg = <0x68>;
> +	};
> +};
> +
> +&sdhci1 {
> +	/* SD/MMC */
> +	vmmc-supply = <&vdd_mmc1>;
> +	vqmmc-supply = <&vdd_sd_dv>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&main_mmc1_pins_default>;
> +	disable-wp;
> +	cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>;
> +	cd-debounce-delay-ms = <100>;
> +	ti,fails-without-test-cd;
> +	bootph-all;
> +	status = "okay";
> +};
Robert Nelson Aug. 23, 2024, 3:31 p.m. UTC | #3
> >  # Boards with J722s SoC
> > +dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
>
> So am67 is J772s? Then why calling it am67a?

I agree, it's stupid..  Back in April with v1, i called this J772s,
then TI and TI marketing got involved.. J772s is a family, am67 and
am67a are parts in that family... From the current docs, am67a is a
fully efused J772s..

Anywho that was TI's decision back in April, thousands of boards have
now shipped, so for user's sake, it's now locked in at beagleboard.org
forever as k3-am67a-beagley-ai.dtb

>
> >  dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
> >
> >  # Boards with J784s4 SoC
> > diff --git a/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts b/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
> > new file mode 100644
> > index 000000000000..c8cbb875d4c7
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
> > @@ -0,0 +1,406 @@
> > +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> > +/*
> > + * https://beagley-ai.org/
> > + *
> > + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
> > + * Copyright (C) 2024 Robert Nelson, BeagleBoard.org Foundation
> > + */
>
> ...
>
> > +     vsys_5v0: regulator-1 {
> > +             compatible = "regulator-fixed";
> > +             regulator-name = "vsys_5v0";
> > +             regulator-min-microvolt = <5000000>;
> > +             regulator-max-microvolt = <5000000>;
> > +             regulator-always-on;
> > +             regulator-boot-on;
> > +             bootph-all;
> > +     };
> > +
> > +     vdd_3v3: regulator-2 {
> > +             compatible = "regulator-fixed";
> > +             regulator-name = "vdd_3v3";
> > +             regulator-min-microvolt = <3300000>;
> > +             regulator-max-microvolt = <3300000>;
> > +             vin-supply = <&vsys_5v0>;
> > +             regulator-always-on;
> > +             regulator-boot-on;
> > +     };
> > +
> > +     vdd_mmc1: regulator-mmc1 {
>
> Keep consistent naming of the nodes. Why this is sometimes "1" sometimes
> "mmc"?
>
> Please use name for all fixed regulators which matches current format
> recommendation: 'regulator-[0-9]v[0-9]'
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml?h=v6.11-rc1#n46

Okay, i'll change these... I already see a problem, as I've got two
3v3... can we use 'regulator-[0-9]v[0-9]-X' ?

>
> > +             compatible = "regulator-fixed";
> > +             regulator-name = "vdd_mmc1";
> > +             pinctrl-names = "default";
> > +             pinctrl-0 = <&vdd_3v3_sd_pins_default>;
> > +             regulator-min-microvolt = <3300000>;
> > +             regulator-max-microvolt = <3300000>;
> > +             regulator-boot-on;
> > +             enable-active-high;
> > +             gpio = <&main_gpio1 50 GPIO_ACTIVE_HIGH>;
> > +             bootph-all;
> > +     };
> > +
> > +     vdd_sd_dv: regulator-TLV71033 {
>
> No upper-case characters.
>
> See DTS coding style.

I'll fix it..

>
> > +             compatible = "regulator-gpio";
> > +             regulator-name = "tlv71033";
> > +             pinctrl-names = "default";
> > +             pinctrl-0 = <&vdd_sd_dv_pins_default>;
> > +             regulator-min-microvolt = <1800000>;
> > +             regulator-max-microvolt = <3300000>;
> > +             regulator-boot-on;
> > +             vin-supply = <&vsys_5v0>;
> > +             gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
> > +             states = <1800000 0x0>,
> > +                      <3300000 0x1>;
> > +             bootph-all;
> > +     };
> > +
> > +     vsys_io_1v8: regulator-vsys-io-1v8 {
> > +             compatible = "regulator-fixed";
> > +             regulator-name = "vsys_io_1v8";
> > +             regulator-min-microvolt = <1800000>;
> > +             regulator-max-microvolt = <1800000>;
> > +             regulator-always-on;
> > +             regulator-boot-on;
> > +     };
> > +
> > +     vsys_io_1v2: regulator-vsys-io-1v2 {
> > +             compatible = "regulator-fixed";
> > +             regulator-name = "vsys_io_1v2";
> > +             regulator-min-microvolt = <1200000>;
> > +             regulator-max-microvolt = <1200000>;
> > +             regulator-always-on;
> > +             regulator-boot-on;
> > +     };
> > +
> > +     leds {
> > +             compatible = "gpio-leds";
> > +             pinctrl-names = "default";
> > +             pinctrl-0 = <&led_pins_default>;
> > +
> > +             led-0 {
> > +                     gpios = <&main_gpio0 11 GPIO_ACTIVE_LOW>;
> > +                     linux,default-trigger = "default-off";
> > +                     default-state = "off";
> > +             };
> > +
> > +             led-1 {
> > +                     gpios = <&main_gpio0 12 GPIO_ACTIVE_HIGH>;
> > +                     function = LED_FUNCTION_HEARTBEAT;
> > +                     linux,default-trigger = "heartbeat";
> > +                     default-state = "on";
> > +             };
> > +     };
> > +};
> > +
> > +&main_pmx0 {
> > +
>
> Drop blank line.

I'll fix it..

>
> > +     main_i2c0_pins_default: main-i2c0-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (D23) I2C0_SCL */
> > +                     J722S_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (B22) I2C0_SDA */
> > +             >;
> > +             bootph-all;
> > +     };
> > +
> > +     main_uart0_pins_default: main-uart0-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x01c8, PIN_INPUT, 0)       /* (A22) UART0_RXD */
> > +                     J722S_IOPAD(0x01cc, PIN_OUTPUT, 0)      /* (B22) UART0_TXD */
> > +             >;
> > +             bootph-all;
> > +     };
> > +
> > +     vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x0244, PIN_OUTPUT, 7) /* (A24) MMC1_SDWP.GPIO1_49 */
> > +             >;
> > +             bootph-all;
> > +     };
> > +
> > +     main_mmc1_pins_default: main-mmc1-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x023c, PIN_INPUT, 0) /* (H22) MMC1_CMD */
> > +                     J722S_IOPAD(0x0234, PIN_OUTPUT, 0) /* (H24) MMC1_CLK */
> > +                     J722S_IOPAD(0x0230, PIN_INPUT, 0) /* (H23) MMC1_DAT0 */
> > +                     J722S_IOPAD(0x022c, PIN_INPUT_PULLUP, 0) /* (H20) MMC1_DAT1 */
> > +                     J722S_IOPAD(0x0228, PIN_INPUT_PULLUP, 0) /* (J23) MMC1_DAT2 */
> > +                     J722S_IOPAD(0x0224, PIN_INPUT_PULLUP, 0) /* (H25) MMC1_DAT3 */
> > +                     J722S_IOPAD(0x0240, PIN_INPUT, 7) /* (B24) MMC1_SDCD.GPIO1_48 */
> > +             >;
> > +             bootph-all;
> > +     };
> > +
> > +     mdio_pins_default: mdio-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x0160, PIN_OUTPUT, 0) /* (AC24) MDIO0_MDC */
> > +                     J722S_IOPAD(0x015c, PIN_INPUT, 0) /* (AD25) MDIO0_MDIO */
> > +             >;
> > +     };
> > +
> > +     rgmii1_pins_default: rgmii1-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x014c, PIN_INPUT, 0) /* (AC25) RGMII1_RD0 */
> > +                     J722S_IOPAD(0x0150, PIN_INPUT, 0) /* (AD27) RGMII1_RD1 */
> > +                     J722S_IOPAD(0x0154, PIN_INPUT, 0) /* (AE24) RGMII1_RD2 */
> > +                     J722S_IOPAD(0x0158, PIN_INPUT, 0) /* (AE26) RGMII1_RD3 */
> > +                     J722S_IOPAD(0x0148, PIN_INPUT, 0) /* (AE27) RGMII1_RXC */
> > +                     J722S_IOPAD(0x0144, PIN_INPUT, 0) /* (AD23) RGMII1_RX_CTL */
> > +                     J722S_IOPAD(0x0134, PIN_OUTPUT, 0) /* (AF27) RGMII1_TD0 */
> > +                     J722S_IOPAD(0x0138, PIN_OUTPUT, 0) /* (AE23) RGMII1_TD1 */
> > +                     J722S_IOPAD(0x013c, PIN_OUTPUT, 0) /* (AG25) RGMII1_TD2 */
> > +                     J722S_IOPAD(0x0140, PIN_OUTPUT, 0) /* (AF24) RGMII1_TD3 */
> > +                     J722S_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AG26) RGMII1_TXC */
> > +                     J722S_IOPAD(0x012c, PIN_OUTPUT, 0) /* (AF25) RGMII1_TX_CTL */
> > +             >;
> > +     };
> > +
> > +     led_pins_default: led-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x002c, PIN_OUTPUT, 7) /* (K26) OSPI0_CSn0.GPIO0_11 */
> > +                     J722S_IOPAD(0x0030, PIN_OUTPUT, 7) /* (K23) OSPI0_CSn1.GPIO0_12 */
> > +             >;
> > +     };
> > +
> > +     pmic_irq_pins_default: pmic-irq-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (B23) EXTINTn */
> > +             >;
> > +     };
> > +
> > +     vdd_3v3_sd_pins_default: vdd-3v3-sd-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_IOPAD(0x0254, PIN_OUTPUT, 7) /* (E25) USB0_DRVVBUS.GPIO1_50 */
> > +             >;
> > +     };
> > +};
> > +
> > +&cpsw3g {
> > +     pinctrl-names = "default";
> > +     pinctrl-0 = <&rgmii1_pins_default>, <&gbe_pmx_obsclk>;
> > +
> > +     assigned-clocks = <&k3_clks 227 0>;
> > +     assigned-clock-parents = <&k3_clks 227 6>;
> > +     status = "okay";
> > +};
> > +
> > +&cpsw3g_mdio {
> > +     pinctrl-names = "default";
> > +     pinctrl-0 = <&mdio_pins_default>;
> > +     status = "okay";
> > +
> > +     cpsw3g_phy0: ethernet-phy@0 {
> > +             reg = <0>;
> > +             ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
> > +             ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
> > +             ti,min-output-impedance;
> > +     };
> > +};
> > +
> > +&cpsw_port1 {
> > +     phy-mode = "rgmii-rxid";
> > +     phy-handle = <&cpsw3g_phy0>;
> > +     status = "okay";
> > +};
> > +
> > +&main_gpio1 {
> > +     status = "okay";
> > +};
> > +
> > +&main_uart0 {
> > +     pinctrl-names = "default";
> > +     pinctrl-0 = <&main_uart0_pins_default>;
> > +     bootph-all;
> > +     status = "okay";
> > +};
> > +
> > +&mcu_pmx0 {
> > +
>
> Drop blank line

I'll fix it..

>
> > +     wkup_uart0_pins_default: wkup-uart0-default-pins {
> > +             pinctrl-single,pins = <
> > +                     J722S_MCU_IOPAD(0x02c, PIN_INPUT, 0)    /* (C7) WKUP_UART0_CTSn */
> > +                     J722S_MCU_IOPAD(0x030, PIN_OUTPUT, 0)   /* (C6) WKUP_UART0_RTSn */
> > +                     J722S_MCU_IOPAD(0x024, PIN_INPUT, 0)    /* (D8) WKUP_UART0_RXD */
> > +                     J722S_MCU_IOPAD(0x028, PIN_OUTPUT, 0)   /* (D7) WKUP_UART0_TXD */
> > +             >;
> > +             bootph-all;
> > +     };

Thanks!
Robert Nelson Aug. 23, 2024, 3:33 p.m. UTC | #4
> > +
> > +&cpsw3g {
> > +     pinctrl-names = "default";
> > +     pinctrl-0 = <&rgmii1_pins_default>, <&gbe_pmx_obsclk>;
>
> Why do you need OBSCLK for Ethernet MAC?
> The OBSCLK is connected to the Ethernet PHY via C406 which is not even populated.
> It seems that the PHY is clocked by a crystal oscillator X5 so doesn't really
> need OBSCLK in the stock configuration?

Ah crap, I'll take a look at this... I bet it's left over from the
first pcb, (all my first rev pcb's are now locked up so i don't use
them anymore)..  Seeed/BeagleBoard was playing it safe and designing
in both options.. Once the internal clocks were verified newer
revisions removed the external clock.

Yeah, I'm pretty sure final production boards removed every external
clock option.

Thanks!
Nishanth Menon Aug. 24, 2024, 6:44 p.m. UTC | #5
On 12:04-20240822, Robert Nelson wrote:
Minor nmits below:

> BeagleBoard.org BeagleY-AI is an easy to use, affordable open source
> hardware single board computer based on the Texas Instruments AM67A,
> which features a quad-core 64-bit Arm CPU subsystem, 2 general-purpose
> digital-signal-processors (DSP) and matrix-multiply-accelerators (MMA),
> GPU, vision and deep learning accelerators, and multiple Arm Cortex-R5
> cores for low-power, low-latency GPIO control.
> 
[...]
> +
> +	vdd_3v3: regulator-2 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vdd_3v3";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vsys_5v0>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +	};
> +
> +	vdd_mmc1: regulator-mmc1 {

	Also responding:

> Okay, i'll change these... I already see a problem, as I've got two
> 3v3... can we use 'regulator-[0-9]v[0-9]-X' ?


let us just call them regulator-3 and so on incrementally. You can
already name with regulator-name property. We really don't need the "v'
specification here.

[...]
> +&wkup_i2c0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&wkup_i2c0_pins_default>;
> +	clock-frequency = <100000>;
> +	bootph-all;
> +	status = "okay";
> +
> +	tps65219: pmic@30 {
> +		compatible = "ti,tps65219";
> +		reg = <0x30>;
> +		buck1-supply = <&vsys_5v0>;
> +		buck2-supply = <&vsys_5v0>;
> +		buck3-supply = <&vsys_5v0>;
> +		ldo1-supply = <&vdd_3v3>;
> +		ldo3-supply = <&vdd_3v3>;
> +		ldo4-supply = <&vdd_3v3>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pmic_irq_pins_default>;
> +		interrupt-parent = <&gic500>;
> +		interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
> +		interrupt-controller;
> +		#interrupt-cells = <1>;
> +
> +		system-power-controller;
> +		ti,power-button;
> +		bootph-all;

Flip the bootph-all above the system-power-controller to stay within the
coding style boundaries?

> +
> +		regulators {
	[...]
> +};
> +
> +&sdhci1 {
> +	/* SD/MMC */
> +	vmmc-supply = <&vdd_mmc1>;
> +	vqmmc-supply = <&vdd_sd_dv>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&main_mmc1_pins_default>;
> +	disable-wp;
> +	cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>;
> +	cd-debounce-delay-ms = <100>;
> +	ti,fails-without-test-cd;
> +	bootph-all;

Nit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/dts-coding-style.rst#n117
keep the  bootph property above the vendor prefixed ones..

> +	status = "okay";
> +};
> -- 
> 2.39.2
> 


Additionally, with dtbs_check on next-20240823, I get:

/workdir/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb: leds: led-0: Unevaluated properties are not allowed ('linux,default-trigger' was unexpected)
/workdir/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb: leds: led-0:linux,default-trigger: 'oneOf' conditional failed, one must be fixed:

Please fix appropriately.
Robert Nelson Aug. 28, 2024, 2:33 p.m. UTC | #6
On Fri, Aug 23, 2024 at 10:33 AM Robert Nelson <robertcnelson@gmail.com> wrote:
>
> > > +
> > > +&cpsw3g {
> > > +     pinctrl-names = "default";
> > > +     pinctrl-0 = <&rgmii1_pins_default>, <&gbe_pmx_obsclk>;
> >
> > Why do you need OBSCLK for Ethernet MAC?
> > The OBSCLK is connected to the Ethernet PHY via C406 which is not even populated.
> > It seems that the PHY is clocked by a crystal oscillator X5 so doesn't really
> > need OBSCLK in the stock configuration?
>
> Ah crap, I'll take a look at this... I bet it's left over from the
> first pcb, (all my first rev pcb's are now locked up so i don't use
> them anymore)..  Seeed/BeagleBoard was playing it safe and designing
> in both options.. Once the internal clocks were verified newer
> revisions removed the external clock.
>
> Yeah, I'm pretty sure final production boards removed every external
> clock option.

Yeap, external clock is the default for all production boards, i
removed this internal clock configuration.

Thanks
Robert Nelson Aug. 28, 2024, 2:38 p.m. UTC | #7
On Sat, Aug 24, 2024 at 1:44 PM Nishanth Menon <nm@ti.com> wrote:
>
> On 12:04-20240822, Robert Nelson wrote:
> Minor nmits below:
>
> > BeagleBoard.org BeagleY-AI is an easy to use, affordable open source
> > hardware single board computer based on the Texas Instruments AM67A,
> > which features a quad-core 64-bit Arm CPU subsystem, 2 general-purpose
> > digital-signal-processors (DSP) and matrix-multiply-accelerators (MMA),
> > GPU, vision and deep learning accelerators, and multiple Arm Cortex-R5
> > cores for low-power, low-latency GPIO control.
> >
> [...]
> > +
> > +     vdd_3v3: regulator-2 {
> > +             compatible = "regulator-fixed";
> > +             regulator-name = "vdd_3v3";
> > +             regulator-min-microvolt = <3300000>;
> > +             regulator-max-microvolt = <3300000>;
> > +             vin-supply = <&vsys_5v0>;
> > +             regulator-always-on;
> > +             regulator-boot-on;
> > +     };
> > +
> > +     vdd_mmc1: regulator-mmc1 {
>
>         Also responding:
>
> > Okay, i'll change these... I already see a problem, as I've got two
> > 3v3... can we use 'regulator-[0-9]v[0-9]-X' ?
>
>
> let us just call them regulator-3 and so on incrementally. You can
> already name with regulator-name property. We really don't need the "v'
> specification here.

Okay, renamed all as `regulator-X`


>
> [...]
> > +&wkup_i2c0 {
> > +     pinctrl-names = "default";
> > +     pinctrl-0 = <&wkup_i2c0_pins_default>;
> > +     clock-frequency = <100000>;
> > +     bootph-all;
> > +     status = "okay";
> > +
> > +     tps65219: pmic@30 {
> > +             compatible = "ti,tps65219";
> > +             reg = <0x30>;
> > +             buck1-supply = <&vsys_5v0>;
> > +             buck2-supply = <&vsys_5v0>;
> > +             buck3-supply = <&vsys_5v0>;
> > +             ldo1-supply = <&vdd_3v3>;
> > +             ldo3-supply = <&vdd_3v3>;
> > +             ldo4-supply = <&vdd_3v3>;
> > +
> > +             pinctrl-names = "default";
> > +             pinctrl-0 = <&pmic_irq_pins_default>;
> > +             interrupt-parent = <&gic500>;
> > +             interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
> > +             interrupt-controller;
> > +             #interrupt-cells = <1>;
> > +
> > +             system-power-controller;
> > +             ti,power-button;
> > +             bootph-all;
>
> Flip the bootph-all above the system-power-controller to stay within the
> coding style boundaries?

Fixed!

>
> > +
> > +             regulators {
>         [...]
> > +};
> > +
> > +&sdhci1 {
> > +     /* SD/MMC */
> > +     vmmc-supply = <&vdd_mmc1>;
> > +     vqmmc-supply = <&vdd_sd_dv>;
> > +     pinctrl-names = "default";
> > +     pinctrl-0 = <&main_mmc1_pins_default>;
> > +     disable-wp;
> > +     cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>;
> > +     cd-debounce-delay-ms = <100>;
> > +     ti,fails-without-test-cd;
> > +     bootph-all;
>
> Nit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/dts-coding-style.rst#n117
> keep the  bootph property above the vendor prefixed ones..

Fixed!

>
> > +     status = "okay";
> > +};
> > --
> > 2.39.2
> >
>
>
> Additionally, with dtbs_check on next-20240823, I get:
>
> /workdir/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb: leds: led-0: Unevaluated properties are not allowed ('linux,default-trigger' was unexpected)
> /workdir/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb: leds: led-0:linux,default-trigger: 'oneOf' conditional failed, one must be fixed:
>
> Please fix appropriately.

fixed with: linux,default-trigger = "off";

Thanks!
Robert Nelson Aug. 28, 2024, 4:34 p.m. UTC | #8
On Wed, Aug 28, 2024 at 9:38 AM Robert Nelson <robertcnelson@gmail.com> wrote:
>
> On Sat, Aug 24, 2024 at 1:44 PM Nishanth Menon <nm@ti.com> wrote:
> >
> > On 12:04-20240822, Robert Nelson wrote:
> > Minor nmits below:
> >
> > > BeagleBoard.org BeagleY-AI is an easy to use, affordable open source
> > > hardware single board computer based on the Texas Instruments AM67A,
> > > which features a quad-core 64-bit Arm CPU subsystem, 2 general-purpose
> > > digital-signal-processors (DSP) and matrix-multiply-accelerators (MMA),
> > > GPU, vision and deep learning accelerators, and multiple Arm Cortex-R5
> > > cores for low-power, low-latency GPIO control.
> > >
> > [...]
> > > +
> > > +     vdd_3v3: regulator-2 {
> > > +             compatible = "regulator-fixed";
> > > +             regulator-name = "vdd_3v3";
> > > +             regulator-min-microvolt = <3300000>;
> > > +             regulator-max-microvolt = <3300000>;
> > > +             vin-supply = <&vsys_5v0>;
> > > +             regulator-always-on;
> > > +             regulator-boot-on;
> > > +     };
> > > +
> > > +     vdd_mmc1: regulator-mmc1 {
> >
> >         Also responding:
> >
> > > Okay, i'll change these... I already see a problem, as I've got two
> > > 3v3... can we use 'regulator-[0-9]v[0-9]-X' ?
> >
> >
> > let us just call them regulator-3 and so on incrementally. You can
> > already name with regulator-name property. We really don't need the "v'
> > specification here.
>
> Okay, renamed all as `regulator-X`
>
>
> >
> > [...]
> > > +&wkup_i2c0 {
> > > +     pinctrl-names = "default";
> > > +     pinctrl-0 = <&wkup_i2c0_pins_default>;
> > > +     clock-frequency = <100000>;
> > > +     bootph-all;
> > > +     status = "okay";
> > > +
> > > +     tps65219: pmic@30 {
> > > +             compatible = "ti,tps65219";
> > > +             reg = <0x30>;
> > > +             buck1-supply = <&vsys_5v0>;
> > > +             buck2-supply = <&vsys_5v0>;
> > > +             buck3-supply = <&vsys_5v0>;
> > > +             ldo1-supply = <&vdd_3v3>;
> > > +             ldo3-supply = <&vdd_3v3>;
> > > +             ldo4-supply = <&vdd_3v3>;
> > > +
> > > +             pinctrl-names = "default";
> > > +             pinctrl-0 = <&pmic_irq_pins_default>;
> > > +             interrupt-parent = <&gic500>;
> > > +             interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
> > > +             interrupt-controller;
> > > +             #interrupt-cells = <1>;
> > > +
> > > +             system-power-controller;
> > > +             ti,power-button;
> > > +             bootph-all;
> >
> > Flip the bootph-all above the system-power-controller to stay within the
> > coding style boundaries?
>
> Fixed!
>
> >
> > > +
> > > +             regulators {
> >         [...]
> > > +};
> > > +
> > > +&sdhci1 {
> > > +     /* SD/MMC */
> > > +     vmmc-supply = <&vdd_mmc1>;
> > > +     vqmmc-supply = <&vdd_sd_dv>;
> > > +     pinctrl-names = "default";
> > > +     pinctrl-0 = <&main_mmc1_pins_default>;
> > > +     disable-wp;
> > > +     cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>;
> > > +     cd-debounce-delay-ms = <100>;
> > > +     ti,fails-without-test-cd;
> > > +     bootph-all;
> >
> > Nit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/dts-coding-style.rst#n117
> > keep the  bootph property above the vendor prefixed ones..
>
> Fixed!
>
> >
> > > +     status = "okay";
> > > +};
> > > --
> > > 2.39.2
> > >
> >
> >
> > Additionally, with dtbs_check on next-20240823, I get:
> >
> > /workdir/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb: leds: led-0: Unevaluated properties are not allowed ('linux,default-trigger' was unexpected)
> > /workdir/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb: leds: led-0:linux,default-trigger: 'oneOf' conditional failed, one must be fixed:
> >
> > Please fix appropriately.
>
> fixed with: linux,default-trigger = "off";

Nope, also not allowed..

/builds/RobertCNelson/arm64-multiplatform/KERNEL/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb:
leds: led-0:linux,default-trigger: 'oneOf' conditional failed, one
must be fixed:
'off' is not one of ['backlight', 'default-on', 'heartbeat',
'disk-activity', 'disk-read', 'disk-write', 'timer', 'pattern',
'audio-micmute', 'audio-mute', 'bluetooth-power', 'flash',
'kbd-capslock', 'mtd', 'nand-disk', 'none', 'torch', 'usb-gadget',
'usb-host', 'usbport']

I guess, 'none' is close... off/etc..

Thanks
Nishanth Menon Aug. 28, 2024, 4:59 p.m. UTC | #9
On 11:34-20240828, Robert Nelson wrote:
[...]
> 
> /builds/RobertCNelson/arm64-multiplatform/KERNEL/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb:
> leds: led-0:linux,default-trigger: 'oneOf' conditional failed, one
> must be fixed:
> 'off' is not one of ['backlight', 'default-on', 'heartbeat',
> 'disk-activity', 'disk-read', 'disk-write', 'timer', 'pattern',
> 'audio-micmute', 'audio-mute', 'bluetooth-power', 'flash',
> 'kbd-capslock', 'mtd', 'nand-disk', 'none', 'torch', 'usb-gadget',
> 'usb-host', 'usbport']
> 
> I guess, 'none' is close... off/etc..
> 

I'd just suggest to drop the property since you already use heartbeat.

Also function = is alternate option, if you choose to go down the road
of enabling a function

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/dt-bindings/leds/common.h#n77

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/leds/common.yaml#n83
Robert Nelson Aug. 28, 2024, 7:43 p.m. UTC | #10
On Wed, Aug 28, 2024 at 11:59 AM Nishanth Menon <nm@ti.com> wrote:
>
> On 11:34-20240828, Robert Nelson wrote:
> [...]
> >
> > /builds/RobertCNelson/arm64-multiplatform/KERNEL/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dtb:
> > leds: led-0:linux,default-trigger: 'oneOf' conditional failed, one
> > must be fixed:
> > 'off' is not one of ['backlight', 'default-on', 'heartbeat',
> > 'disk-activity', 'disk-read', 'disk-write', 'timer', 'pattern',
> > 'audio-micmute', 'audio-mute', 'bluetooth-power', 'flash',
> > 'kbd-capslock', 'mtd', 'nand-disk', 'none', 'torch', 'usb-gadget',
> > 'usb-host', 'usbport']
> >
> > I guess, 'none' is close... off/etc..
> >
>
> I'd just suggest to drop the property since you already use heartbeat.
>
> Also function = is alternate option, if you choose to go down the road
> of enabling a function
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/dt-bindings/leds/common.h#n77
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/leds/common.yaml#n83

I can drop it, we basically have two leds on the board... Red and
Green.. Jason didn't like the Red being activity as it looks like
something is wrong, we just turn it off once into Linux..  Thus Green
became heartbeat..

From a user perspective (when they don't have a serial cable),
Blinking red = in u-boot board starting up... Blinking Green = in
Linux finishing bootup..

Regards,
Roger Quadros Aug. 28, 2024, 7:44 p.m. UTC | #11
On 28/08/2024 17:33, Robert Nelson wrote:
> On Fri, Aug 23, 2024 at 10:33 AM Robert Nelson <robertcnelson@gmail.com> wrote:
>>
>>>> +
>>>> +&cpsw3g {
>>>> +     pinctrl-names = "default";
>>>> +     pinctrl-0 = <&rgmii1_pins_default>, <&gbe_pmx_obsclk>;
>>>
>>> Why do you need OBSCLK for Ethernet MAC?
>>> The OBSCLK is connected to the Ethernet PHY via C406 which is not even populated.
>>> It seems that the PHY is clocked by a crystal oscillator X5 so doesn't really
>>> need OBSCLK in the stock configuration?
>>
>> Ah crap, I'll take a look at this... I bet it's left over from the
>> first pcb, (all my first rev pcb's are now locked up so i don't use
>> them anymore)..  Seeed/BeagleBoard was playing it safe and designing
>> in both options.. Once the internal clocks were verified newer
>> revisions removed the external clock.
>>
>> Yeah, I'm pretty sure final production boards removed every external
>> clock option.
> 
> Yeap, external clock is the default for all production boards, i
> removed this internal clock configuration.

Did you mean internal clock is the default?
Earlier you mentioned
"after verification newer versions removed the external clock"
Robert Nelson Aug. 28, 2024, 7:48 p.m. UTC | #12
On Wed, Aug 28, 2024 at 2:44 PM Roger Quadros <rogerq@kernel.org> wrote:
>
>
>
> On 28/08/2024 17:33, Robert Nelson wrote:
> > On Fri, Aug 23, 2024 at 10:33 AM Robert Nelson <robertcnelson@gmail.com> wrote:
> >>
> >>>> +
> >>>> +&cpsw3g {
> >>>> +     pinctrl-names = "default";
> >>>> +     pinctrl-0 = <&rgmii1_pins_default>, <&gbe_pmx_obsclk>;
> >>>
> >>> Why do you need OBSCLK for Ethernet MAC?
> >>> The OBSCLK is connected to the Ethernet PHY via C406 which is not even populated.
> >>> It seems that the PHY is clocked by a crystal oscillator X5 so doesn't really
> >>> need OBSCLK in the stock configuration?
> >>
> >> Ah crap, I'll take a look at this... I bet it's left over from the
> >> first pcb, (all my first rev pcb's are now locked up so i don't use
> >> them anymore)..  Seeed/BeagleBoard was playing it safe and designing
> >> in both options.. Once the internal clocks were verified newer
> >> revisions removed the external clock.
> >>
> >> Yeah, I'm pretty sure final production boards removed every external
> >> clock option.
> >
> > Yeap, external clock is the default for all production boards, i
> > removed this internal clock configuration.
>
> Did you mean internal clock is the default?
> Earlier you mentioned
> "after verification newer versions removed the external clock"

Yeah sorry Roger, screwed up on my previous message... I thought one
of our goals was to have an internal clock for everything. But @Aldea,
Andrei reminded me Monday night, that Ethernet was external..

Regards,
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index e20b27ddf901..c89c9b8bab38 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -110,6 +110,7 @@  dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
 
 # Boards with J722s SoC
+dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
 
 # Boards with J784s4 SoC
diff --git a/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts b/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
new file mode 100644
index 000000000000..c8cbb875d4c7
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts
@@ -0,0 +1,406 @@ 
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * https://beagley-ai.org/
+ *
+ * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (C) 2024 Robert Nelson, BeagleBoard.org Foundation
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include "k3-j722s.dtsi"
+
+/ {
+	compatible = "beagle,am67a-beagley-ai", "ti,j722s";
+	model = "BeagleBoard.org BeagleY-AI";
+
+	aliases {
+		serial0 = &wkup_uart0;
+		serial2 = &main_uart0;
+		mmc1 = &sdhci1;
+		rtc0 = &rtc;
+	};
+
+	chosen {
+		stdout-path = &main_uart0;
+	};
+
+	memory@80000000 {
+		/* 4G RAM */
+		reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
+		      <0x00000008 0x80000000 0x00000000 0x80000000>;
+		device_type = "memory";
+		bootph-pre-ram;
+	};
+
+	reserved_memory: reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		secure_tfa_ddr: tfa@9e780000 {
+			reg = <0x00 0x9e780000 0x00 0x80000>;
+			no-map;
+		};
+
+		secure_ddr: optee@9e800000 {
+			reg = <0x00 0x9e800000 0x00 0x01800000>;
+			no-map;
+		};
+
+		wkup_r5fss0_core0_memory_region: r5f-memory@a0100000 {
+			compatible = "shared-dma-pool";
+			reg = <0x00 0xa0100000 0x00 0xf00000>;
+			no-map;
+		};
+
+	};
+
+	vsys_5v0: regulator-1 {
+		compatible = "regulator-fixed";
+		regulator-name = "vsys_5v0";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-always-on;
+		regulator-boot-on;
+		bootph-all;
+	};
+
+	vdd_3v3: regulator-2 {
+		compatible = "regulator-fixed";
+		regulator-name = "vdd_3v3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vsys_5v0>;
+		regulator-always-on;
+		regulator-boot-on;
+	};
+
+	vdd_mmc1: regulator-mmc1 {
+		compatible = "regulator-fixed";
+		regulator-name = "vdd_mmc1";
+		pinctrl-names = "default";
+		pinctrl-0 = <&vdd_3v3_sd_pins_default>;
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		enable-active-high;
+		gpio = <&main_gpio1 50 GPIO_ACTIVE_HIGH>;
+		bootph-all;
+	};
+
+	vdd_sd_dv: regulator-TLV71033 {
+		compatible = "regulator-gpio";
+		regulator-name = "tlv71033";
+		pinctrl-names = "default";
+		pinctrl-0 = <&vdd_sd_dv_pins_default>;
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		vin-supply = <&vsys_5v0>;
+		gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
+		states = <1800000 0x0>,
+			 <3300000 0x1>;
+		bootph-all;
+	};
+
+	vsys_io_1v8: regulator-vsys-io-1v8 {
+		compatible = "regulator-fixed";
+		regulator-name = "vsys_io_1v8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-always-on;
+		regulator-boot-on;
+	};
+
+	vsys_io_1v2: regulator-vsys-io-1v2 {
+		compatible = "regulator-fixed";
+		regulator-name = "vsys_io_1v2";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <1200000>;
+		regulator-always-on;
+		regulator-boot-on;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&led_pins_default>;
+
+		led-0 {
+			gpios = <&main_gpio0 11 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "default-off";
+			default-state = "off";
+		};
+
+		led-1 {
+			gpios = <&main_gpio0 12 GPIO_ACTIVE_HIGH>;
+			function = LED_FUNCTION_HEARTBEAT;
+			linux,default-trigger = "heartbeat";
+			default-state = "on";
+		};
+	};
+};
+
+&main_pmx0 {
+
+	main_i2c0_pins_default: main-i2c0-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (D23) I2C0_SCL */
+			J722S_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (B22) I2C0_SDA */
+		>;
+		bootph-all;
+	};
+
+	main_uart0_pins_default: main-uart0-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x01c8, PIN_INPUT, 0)	/* (A22) UART0_RXD */
+			J722S_IOPAD(0x01cc, PIN_OUTPUT, 0)	/* (B22) UART0_TXD */
+		>;
+		bootph-all;
+	};
+
+	vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x0244, PIN_OUTPUT, 7) /* (A24) MMC1_SDWP.GPIO1_49 */
+		>;
+		bootph-all;
+	};
+
+	main_mmc1_pins_default: main-mmc1-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x023c, PIN_INPUT, 0) /* (H22) MMC1_CMD */
+			J722S_IOPAD(0x0234, PIN_OUTPUT, 0) /* (H24) MMC1_CLK */
+			J722S_IOPAD(0x0230, PIN_INPUT, 0) /* (H23) MMC1_DAT0 */
+			J722S_IOPAD(0x022c, PIN_INPUT_PULLUP, 0) /* (H20) MMC1_DAT1 */
+			J722S_IOPAD(0x0228, PIN_INPUT_PULLUP, 0) /* (J23) MMC1_DAT2 */
+			J722S_IOPAD(0x0224, PIN_INPUT_PULLUP, 0) /* (H25) MMC1_DAT3 */
+			J722S_IOPAD(0x0240, PIN_INPUT, 7) /* (B24) MMC1_SDCD.GPIO1_48 */
+		>;
+		bootph-all;
+	};
+
+	mdio_pins_default: mdio-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x0160, PIN_OUTPUT, 0) /* (AC24) MDIO0_MDC */
+			J722S_IOPAD(0x015c, PIN_INPUT, 0) /* (AD25) MDIO0_MDIO */
+		>;
+	};
+
+	rgmii1_pins_default: rgmii1-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x014c, PIN_INPUT, 0) /* (AC25) RGMII1_RD0 */
+			J722S_IOPAD(0x0150, PIN_INPUT, 0) /* (AD27) RGMII1_RD1 */
+			J722S_IOPAD(0x0154, PIN_INPUT, 0) /* (AE24) RGMII1_RD2 */
+			J722S_IOPAD(0x0158, PIN_INPUT, 0) /* (AE26) RGMII1_RD3 */
+			J722S_IOPAD(0x0148, PIN_INPUT, 0) /* (AE27) RGMII1_RXC */
+			J722S_IOPAD(0x0144, PIN_INPUT, 0) /* (AD23) RGMII1_RX_CTL */
+			J722S_IOPAD(0x0134, PIN_OUTPUT, 0) /* (AF27) RGMII1_TD0 */
+			J722S_IOPAD(0x0138, PIN_OUTPUT, 0) /* (AE23) RGMII1_TD1 */
+			J722S_IOPAD(0x013c, PIN_OUTPUT, 0) /* (AG25) RGMII1_TD2 */
+			J722S_IOPAD(0x0140, PIN_OUTPUT, 0) /* (AF24) RGMII1_TD3 */
+			J722S_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AG26) RGMII1_TXC */
+			J722S_IOPAD(0x012c, PIN_OUTPUT, 0) /* (AF25) RGMII1_TX_CTL */
+		>;
+	};
+
+	led_pins_default: led-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x002c, PIN_OUTPUT, 7) /* (K26) OSPI0_CSn0.GPIO0_11 */
+			J722S_IOPAD(0x0030, PIN_OUTPUT, 7) /* (K23) OSPI0_CSn1.GPIO0_12 */
+		>;
+	};
+
+	pmic_irq_pins_default: pmic-irq-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (B23) EXTINTn */
+		>;
+	};
+
+	vdd_3v3_sd_pins_default: vdd-3v3-sd-default-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x0254, PIN_OUTPUT, 7) /* (E25) USB0_DRVVBUS.GPIO1_50 */
+		>;
+	};
+};
+
+&cpsw3g {
+	pinctrl-names = "default";
+	pinctrl-0 = <&rgmii1_pins_default>, <&gbe_pmx_obsclk>;
+
+	assigned-clocks = <&k3_clks 227 0>;
+	assigned-clock-parents = <&k3_clks 227 6>;
+	status = "okay";
+};
+
+&cpsw3g_mdio {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio_pins_default>;
+	status = "okay";
+
+	cpsw3g_phy0: ethernet-phy@0 {
+		reg = <0>;
+		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+		ti,min-output-impedance;
+	};
+};
+
+&cpsw_port1 {
+	phy-mode = "rgmii-rxid";
+	phy-handle = <&cpsw3g_phy0>;
+	status = "okay";
+};
+
+&main_gpio1 {
+	status = "okay";
+};
+
+&main_uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_uart0_pins_default>;
+	bootph-all;
+	status = "okay";
+};
+
+&mcu_pmx0 {
+
+	wkup_uart0_pins_default: wkup-uart0-default-pins {
+		pinctrl-single,pins = <
+			J722S_MCU_IOPAD(0x02c, PIN_INPUT, 0)	/* (C7) WKUP_UART0_CTSn */
+			J722S_MCU_IOPAD(0x030, PIN_OUTPUT, 0)	/* (C6) WKUP_UART0_RTSn */
+			J722S_MCU_IOPAD(0x024, PIN_INPUT, 0)	/* (D8) WKUP_UART0_RXD */
+			J722S_MCU_IOPAD(0x028, PIN_OUTPUT, 0)	/* (D7) WKUP_UART0_TXD */
+		>;
+		bootph-all;
+	};
+
+	wkup_i2c0_pins_default: wkup-i2c0-default-pins {
+		pinctrl-single,pins = <
+			J722S_MCU_IOPAD(0x04c, PIN_INPUT_PULLUP, 0)	/* (C7) WKUP_I2C0_SCL */
+			J722S_MCU_IOPAD(0x050, PIN_INPUT_PULLUP, 0)	/* (C6) WKUP_I2C1_SDA */
+		>;
+		bootph-all;
+	};
+
+	gbe_pmx_obsclk: gbe-pmx-obsclk-default-pins {
+		pinctrl-single,pins = <
+			J722S_MCU_IOPAD(0x0004, PIN_OUTPUT, 1) /* (A10) MCU_SPI0_CS1.MCU_OBSCLK0 */
+		>;
+	};
+};
+
+&wkup_uart0 {
+	/* WKUP UART0 is used by Device Manager firmware */
+	pinctrl-names = "default";
+	pinctrl-0 = <&wkup_uart0_pins_default>;
+	bootph-all;
+	status = "reserved";
+};
+
+&wkup_i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&wkup_i2c0_pins_default>;
+	clock-frequency = <100000>;
+	bootph-all;
+	status = "okay";
+
+	tps65219: pmic@30 {
+		compatible = "ti,tps65219";
+		reg = <0x30>;
+		buck1-supply = <&vsys_5v0>;
+		buck2-supply = <&vsys_5v0>;
+		buck3-supply = <&vsys_5v0>;
+		ldo1-supply = <&vdd_3v3>;
+		ldo3-supply = <&vdd_3v3>;
+		ldo4-supply = <&vdd_3v3>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&pmic_irq_pins_default>;
+		interrupt-parent = <&gic500>;
+		interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-controller;
+		#interrupt-cells = <1>;
+
+		system-power-controller;
+		ti,power-button;
+		bootph-all;
+
+		regulators {
+			buck1_reg: buck1 {
+				regulator-name = "VDD_3V3";
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+
+			buck2_reg: buck2 {
+				regulator-name = "VDD_1V8";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+
+			ldo1_reg: ldo1 {
+				regulator-name = "VDDSHV5_SDIO";
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-allow-bypass;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+
+			ldo2_reg: ldo2 {
+				regulator-name = "VDD_1V2";
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+
+			ldo3_reg: ldo3 {
+				regulator-name = "VDDA_PHY_1V8";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+
+			ldo4_reg: ldo4 {
+				regulator-name = "VDDA_PLL_1V8";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+		};
+	};
+
+	eeprom@50 {
+		compatible = "atmel,24c32";
+		reg = <0x50>;
+	};
+
+	rtc: rtc@68 {
+		compatible = "dallas,ds1340";
+		reg = <0x68>;
+	};
+};
+
+&sdhci1 {
+	/* SD/MMC */
+	vmmc-supply = <&vdd_mmc1>;
+	vqmmc-supply = <&vdd_sd_dv>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_mmc1_pins_default>;
+	disable-wp;
+	cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>;
+	cd-debounce-delay-ms = <100>;
+	ti,fails-without-test-cd;
+	bootph-all;
+	status = "okay";
+};