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 |
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
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"; > +};
> > # 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!
> > + > > +&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!
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.
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
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!
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
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
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,
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"
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 --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"; +};
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