On Mon, Oct 21, 2024 at 12:02:24PM +0200, Lukasz Majewski wrote: > The btt3 device' HW revisions from 0 to 2 use imx287 SoC and are to > some extend similar to already upstreamed XEA devices, hence are > using common imx28-lwe.dtsi file. > > New, imx28-btt3.dtsi has been added to embrace common DTS > properties for different HW revisions for this device. > > As a result - changes introduced in imx28-btt3-[012].dts are > minimal. > > Signed-off-by: Lukasz Majewski <lukma@xxxxxxx> > > --- > Changes for v2: > - Rename dts file from btt3-[012] to imx28-btt3-[012] to match current > linux kernel naming convention > - Remove 'wlf,wm8974' from compatible for codec@1a > > Changes for v3: > - Keep alphabethical order for Makefile entries > > Changes for v4: > - Change compatible for btt3 board (to 'lwn,imx28-btt3') > > Changes for v5: > - Combine patch, which adds btt3-[012] with one adding board entry to > fsl.yaml > > Changes for v6: > - Make the patch series for adding entry in fsl.yaml and btt3 > > Changes for v7: > - Use "panel" property as suggested by the community > - Use panel-timing to specify the display parameters > - Update subject line with correct tags > > Changes for v8: > - Use GPIO_ACTIVE_HIGH instead of '0' > - Add the comment regarding mac address specification > - Remove superfluous comment > - Change wifi-en-pin node name > > Changes for v9: > - Remove not used 'pm-ignore-notify' > - Add display names for 'panel-dpi' compatible to avoid Schema warnings > --- > arch/arm/boot/dts/nxp/mxs/Makefile | 3 + > arch/arm/boot/dts/nxp/mxs/imx28-btt3-0.dts | 12 + > arch/arm/boot/dts/nxp/mxs/imx28-btt3-1.dts | 8 + > arch/arm/boot/dts/nxp/mxs/imx28-btt3-2.dts | 40 +++ > arch/arm/boot/dts/nxp/mxs/imx28-btt3.dtsi | 312 +++++++++++++++++++++ > 5 files changed, 375 insertions(+) > create mode 100644 arch/arm/boot/dts/nxp/mxs/imx28-btt3-0.dts > create mode 100644 arch/arm/boot/dts/nxp/mxs/imx28-btt3-1.dts > create mode 100644 arch/arm/boot/dts/nxp/mxs/imx28-btt3-2.dts > create mode 100644 arch/arm/boot/dts/nxp/mxs/imx28-btt3.dtsi > > diff --git a/arch/arm/boot/dts/nxp/mxs/Makefile b/arch/arm/boot/dts/nxp/mxs/Makefile > index a430d04f9c69..96dd31ea19ba 100644 > --- a/arch/arm/boot/dts/nxp/mxs/Makefile > +++ b/arch/arm/boot/dts/nxp/mxs/Makefile > @@ -8,6 +8,9 @@ dtb-$(CONFIG_ARCH_MXS) += \ > imx28-apf28.dtb \ > imx28-apf28dev.dtb \ > imx28-apx4devkit.dtb \ > + imx28-btt3-0.dtb \ > + imx28-btt3-1.dtb \ > + imx28-btt3-2.dtb \ > imx28-cfa10036.dtb \ > imx28-cfa10037.dtb \ > imx28-cfa10049.dtb \ > diff --git a/arch/arm/boot/dts/nxp/mxs/imx28-btt3-0.dts b/arch/arm/boot/dts/nxp/mxs/imx28-btt3-0.dts > new file mode 100644 > index 000000000000..6ac46e4b21bb > --- /dev/null > +++ b/arch/arm/boot/dts/nxp/mxs/imx28-btt3-0.dts > @@ -0,0 +1,12 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/* > + * Copyright 2024 > + * Lukasz Majewski, DENX Software Engineering, lukma@xxxxxxx > + */ > + > +/dts-v1/; > +#include "imx28-btt3.dtsi" > + > +&hog_pins_rev { > + fsl,pull-up = <MXS_PULL_ENABLE>; > +}; > diff --git a/arch/arm/boot/dts/nxp/mxs/imx28-btt3-1.dts b/arch/arm/boot/dts/nxp/mxs/imx28-btt3-1.dts > new file mode 100644 > index 000000000000..213fe931c58b > --- /dev/null > +++ b/arch/arm/boot/dts/nxp/mxs/imx28-btt3-1.dts > @@ -0,0 +1,8 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/* > + * Copyright 2024 > + * Lukasz Majewski, DENX Software Engineering, lukma@xxxxxxx > + */ > + > +/dts-v1/; > +#include "imx28-btt3.dtsi" > diff --git a/arch/arm/boot/dts/nxp/mxs/imx28-btt3-2.dts b/arch/arm/boot/dts/nxp/mxs/imx28-btt3-2.dts > new file mode 100644 > index 000000000000..314a22cb736f > --- /dev/null > +++ b/arch/arm/boot/dts/nxp/mxs/imx28-btt3-2.dts > @@ -0,0 +1,40 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/* > + * Copyright 2024 > + * Lukasz Majewski, DENX Software Engineering, lukma@xxxxxxx > + */ > + > +/dts-v1/; > +#include "imx28-btt3.dtsi" > + > +/ { > + panel { > + compatible = "powertip,st7272", "panel-dpi"; > + power-supply = <®_3v3>; > + width-mm = <70>; > + height-mm = <52>; > + > + panel-timing { > + clock-frequency = <6500000>; > + hactive = <320>; > + vactive = <240>; > + hfront-porch = <20>; > + hback-porch = <68>; > + hsync-len = <30>; > + vfront-porch = <4>; > + vback-porch = <14>; > + vsync-len = <4>; > + Nit: can we drop this newline? > + hsync-active = <0>; > + vsync-active = <0>; > + de-active = <1>; > + pixelclk-active = <1>; > + }; > + > + port { > + panel_in: endpoint { > + remote-endpoint = <&display_out>; > + }; > + }; > + }; > +}; > diff --git a/arch/arm/boot/dts/nxp/mxs/imx28-btt3.dtsi b/arch/arm/boot/dts/nxp/mxs/imx28-btt3.dtsi > new file mode 100644 > index 000000000000..cb999082f0f4 > --- /dev/null > +++ b/arch/arm/boot/dts/nxp/mxs/imx28-btt3.dtsi > @@ -0,0 +1,312 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/* > + * Copyright 2024 > + * Lukasz Majewski, DENX Software Engineering, lukma@xxxxxxx > + */ > +/dts-v1/; > +#include "imx28-lwe.dtsi" > + > +/ { > + model = "BTT3"; > + > + compatible = "lwn,imx28-btt3", "fsl,imx28"; > + > + chosen { > + bootargs = "root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait console=ttyAMA0,115200 panic=1 quiet"; > + }; > + > + memory@40000000 { > + reg = <0x40000000 0x10000000>; > + device_type = "memory"; > + }; > + > + panel { > + compatible = "powertip,hx8238a", "panel-dpi"; > + power-supply = <®_3v3>; > + width-mm = <70>; > + height-mm = <52>; > + > + panel-timing { > + clock-frequency = <6500000>; > + hactive = <320>; > + vactive = <240>; > + hfront-porch = <20>; > + hback-porch = <38>; > + hsync-len = <30>; > + vfront-porch = <4>; > + vback-porch = <14>; > + vsync-len = <4>; > + Ditto > + hsync-active = <0>; > + vsync-active = <0>; > + de-active = <0>; > + pixelclk-active = <1>; > + }; > + > + port { > + panel_in: endpoint { > + remote-endpoint = <&display_out>; > + }; > + }; > + }; > + > + poweroff { > + compatible = "gpio-poweroff"; > + gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>; > + }; > + > + sound { > + compatible = "simple-audio-card"; > + simple-audio-card,name = "BTTC Audio"; > + simple-audio-card,widgets = "Speaker", "BTTC Speaker"; > + simple-audio-card,routing = "BTTC Speaker", "SPKOUTN", "BTTC Speaker", "SPKOUTP"; Have a newline between property list and child node. > + simple-audio-card,dai-link@0 { > + format = "left_j"; > + bitclock-master = <&dai0_master>; > + frame-master = <&dai0_master>; > + mclk-fs = <256>; Ditto > + dai0_master: cpu { > + sound-dai = <&saif0>; > + }; Have a newline between nodes. > + codec { > + sound-dai = <&wm89xx>; > + clocks = <&saif0>; > + }; > + }; > + }; > + > + wifi_pwrseq: sdio-pwrseq { > + compatible = "mmc-pwrseq-simple"; > + pinctrl-names = "default"; > + pinctrl-0 = <&wifi_en_pin_bttc>; > + reset-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>; > + /* W1-163 needs 60us for WL_EN to be low and */ > + /* 150ms after high before downloading FW is possible */ > + post-power-on-delay-ms = <200>; > + power-off-delay-us = <100>; > + }; > +}; > + > +&auart0 { > + pinctrl-names = "default"; > + pinctrl-0 = <&auart0_2pins_a>; > + status = "okay"; > +}; > + > +&auart3 { > + pinctrl-names = "default"; > + pinctrl-0 = <&auart3_pins_a>; > + uart-has-rtscts; > + status = "okay"; > +}; > + > +&i2c0 { > + wm89xx: codec@1a { audio-codec for node name. > + compatible = "wlf,wm8940"; > + reg = <0x1a>; > + #sound-dai-cells = <0>; > + }; > +}; > + > +&lcdif { > + pinctrl-names = "default"; > + pinctrl-0 = <&lcdif_24bit_pins_a>, <&lcdif_sync_pins_bttc>, > + <&lcdif_reset_pins_bttc>; > + status = "okay"; > + > + port { > + display_out: endpoint { > + remote-endpoint = <&panel_in>; > + }; > + }; > +}; > + > +&mac0 { > + clocks = <&clks 57>, <&clks 57>, <&clks 64>; > + clock-names = "ipg", "ahb", "enet_out"; > + phy-handle = <&mac0_phy>; > + phy-mode = "rmii"; > + phy-supply = <®_3v3>; > + /* > + * This MAC address is adjusted during production. > + * Value specified below is used as a fallback during recovery. > + */ > + local-mac-address = [ 00 11 B8 00 BF 8A ]; > + status = "okay"; > + > + mdio { > + #address-cells = <1>; > + #size-cells = <0>; > + > + mac0_phy: ethernet-phy@0 { > + /* LAN8720Ai - PHY ID */ > + compatible = "ethernet-phy-id0007.c0f0","ethernet-phy-ieee802.3-c22"; > + reg = <0>; > + smsc,disable-energy-detect; > + max-speed = <100>; > + Nit: unneeded newline. > + reset-gpios = <&gpio4 12 GPIO_ACTIVE_LOW>; > + reset-assert-us = <1000>; > + reset-deassert-us = <1000>; > + }; > + }; > +}; > + > +&pinctrl { > + pinctrl-names = "default"; > + pinctrl-0 = <&hog_pins_a>, <&hog_pins_rev>; > + > + hog_pins_a: hog@0 { > + reg = <0>; > + fsl,pinmux-ids = < > + MX28_PAD_GPMI_RDY2__GPIO_0_22 > + MX28_PAD_GPMI_RDY3__GPIO_0_23 > + MX28_PAD_GPMI_RDN__GPIO_0_24 > + MX28_PAD_LCD_VSYNC__GPIO_1_28 > + MX28_PAD_SSP2_SS1__GPIO_2_20 > + MX28_PAD_SSP2_SS2__GPIO_2_21 > + MX28_PAD_AUART2_CTS__GPIO_3_10 > + MX28_PAD_AUART2_RTS__GPIO_3_11 > + MX28_PAD_GPMI_WRN__GPIO_0_25 > + MX28_PAD_ENET0_RXD2__GPIO_4_9 > + MX28_PAD_ENET0_TXD2__GPIO_4_11 > + >; > + fsl,drive-strength = <MXS_DRIVE_4mA>; > + fsl,voltage = <MXS_VOLTAGE_HIGH>; > + fsl,pull-up = <MXS_PULL_DISABLE>; > + }; > + > + hog_pins_rev: hog@1 { > + reg = <1>; > + fsl,pinmux-ids = < > + MX28_PAD_ENET0_RXD3__GPIO_4_10 > + MX28_PAD_ENET0_TX_CLK__GPIO_4_5 > + MX28_PAD_ENET0_COL__GPIO_4_14 > + MX28_PAD_ENET0_CRS__GPIO_4_15 > + >; > + fsl,drive-strength = <MXS_DRIVE_4mA>; > + fsl,voltage = <MXS_VOLTAGE_HIGH>; > + fsl,pull-up = <MXS_PULL_DISABLE>; > + }; > + > + keypad_pins_bttc: keypad-bttc@0 { > + reg = <0>; > + fsl,pinmux-ids = < > + MX28_PAD_GPMI_D00__GPIO_0_0 > + MX28_PAD_AUART0_CTS__GPIO_3_2 > + MX28_PAD_AUART0_RTS__GPIO_3_3 > + MX28_PAD_GPMI_D03__GPIO_0_3 > + MX28_PAD_GPMI_D04__GPIO_0_4 > + MX28_PAD_GPMI_D05__GPIO_0_5 > + MX28_PAD_GPMI_D06__GPIO_0_6 > + MX28_PAD_GPMI_D07__GPIO_0_7 > + MX28_PAD_GPMI_CE1N__GPIO_0_17 > + MX28_PAD_GPMI_CE2N__GPIO_0_18 > + MX28_PAD_GPMI_CE3N__GPIO_0_19 > + MX28_PAD_GPMI_RDY0__GPIO_0_20 > + >; > + fsl,drive-strength = <MXS_DRIVE_4mA>; > + fsl,voltage = <MXS_VOLTAGE_HIGH>; > + fsl,pull-up = <MXS_PULL_DISABLE>; > + }; > + > + lcdif_sync_pins_bttc: lcdif-bttc@0 { > + reg = <0>; > + fsl,pinmux-ids = < > + MX28_PAD_LCD_DOTCLK__LCD_DOTCLK > + MX28_PAD_LCD_ENABLE__LCD_ENABLE > + MX28_PAD_LCD_HSYNC__LCD_HSYNC > + MX28_PAD_LCD_RD_E__LCD_VSYNC > + >; > + fsl,drive-strength = <MXS_DRIVE_4mA>; > + fsl,voltage = <MXS_VOLTAGE_HIGH>; > + fsl,pull-up = <MXS_PULL_DISABLE>; > + }; > + > + lcdif_reset_pins_bttc: lcdif-bttc@1 { > + reg = <1>; > + fsl,pinmux-ids = < > + MX28_PAD_LCD_RESET__GPIO_3_30 > + >; > + fsl,drive-strength = <MXS_DRIVE_4mA>; > + fsl,voltage = <MXS_VOLTAGE_HIGH>; > + fsl,pull-up = <MXS_PULL_ENABLE>; > + }; > + > + ssp1_sdio_pins_a: ssp1-sdio@0 { > + reg = <0>; > + fsl,pinmux-ids = < > + MX28_PAD_SSP1_DATA0__SSP1_D0 > + MX28_PAD_GPMI_D01__SSP1_D1 > + MX28_PAD_GPMI_D02__SSP1_D2 > + MX28_PAD_SSP1_DATA3__SSP1_D3 > + MX28_PAD_SSP1_CMD__SSP1_CMD > + MX28_PAD_SSP1_SCK__SSP1_SCK > + >; > + fsl,drive-strength = <MXS_DRIVE_8mA>; > + fsl,voltage = <MXS_VOLTAGE_HIGH>; > + fsl,pull-up = <MXS_PULL_ENABLE>; > + }; > + > + wifi_en_pin_bttc: wifi-en-pin@0 { > + reg = <0>; > + fsl,pinmux-ids = < > + MX28_PAD_GPMI_CLE__GPIO_0_27 > + >; > + fsl,drive-strength = <MXS_DRIVE_8mA>; > + fsl,voltage = <MXS_VOLTAGE_HIGH>; > + fsl,pull-up = <MXS_PULL_ENABLE>; > + }; > +}; > + > +&pwm { > + pinctrl-names = "default"; > + pinctrl-0 = <&pwm3_pins_a>; > + status = "okay"; > +}; > + > +®_usb_5v { > + gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>; > +}; > + > +&saif0 { > + pinctrl-names = "default"; > + pinctrl-0 = <&saif0_pins_a>; > + #sound-dai-cells = <0>; > + assigned-clocks = <&clks 53>; > + assigned-clock-rates = <12000000>; > + status = "okay"; > +}; > + > +&saif1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&saif1_pins_a>; > + fsl,saif-master = <&saif0>; > + #sound-dai-cells = <0>; Can we flip these two properties, so that we have vendor specific property after generic one? Shawn > + status = "okay"; > +}; > + > +&ssp1 { > + compatible = "fsl,imx28-mmc"; > + pinctrl-names = "default"; > + pinctrl-0 = <&ssp1_sdio_pins_a>; > + bus-width = <4>; > + no-1-8-v; /* force 3.3V VIO */ > + non-removable; > + vmmc-supply = <®_3v3>; > + mmc-pwrseq = <&wifi_pwrseq>; > + keep-power-in-suspend; > + status = "okay"; > + > + wlan@1 { > + reg = <1>; > + compatible = "brcm,bcm4329-fmac"; > + }; > +}; > + > +&ssp2 { > + compatible = "fsl,imx28-spi"; > + pinctrl-names = "default"; > + pinctrl-0 = <&spi2_pins_a>; > + status = "okay"; > +}; > -- > 2.39.5 >