diff mbox series

[U-Boot,v2,07/11] imx: tpc70: dts: Add TPC70 board (imx6q based) device tree description

Message ID 20190730071213.11238-8-lukma@denx.de
State Changes Requested
Delegated to: Stefano Babic
Headers show
Series dm: Convert TPC70 to use DM and DTS in SPL and u-boot proper | expand

Commit Message

Lukasz Majewski July 30, 2019, 7:12 a.m. UTC
This commit defines the TPC70 imx6q board with device tree description.

Signed-off-by: Lukasz Majewski <lukma@denx.de>
---

 arch/arm/dts/imx6q-kp.dts | 219 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 219 insertions(+)
 create mode 100644 arch/arm/dts/imx6q-kp.dts

Comments

Peng Fan Aug. 9, 2019, 7:10 a.m. UTC | #1
> Subject: [PATCH v2 07/11] imx: tpc70: dts: Add TPC70 board (imx6q based)
> device tree description
> 
> This commit defines the TPC70 imx6q board with device tree description.

Is the imx6q-kp.dtsi usable for this board from Linux kernel?

Regards,
Peng.

> 
> Signed-off-by: Lukasz Majewski <lukma@denx.de>
> ---
> 
>  arch/arm/dts/imx6q-kp.dts | 219
> ++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 219 insertions(+)
>  create mode 100644 arch/arm/dts/imx6q-kp.dts
> 
> diff --git a/arch/arm/dts/imx6q-kp.dts b/arch/arm/dts/imx6q-kp.dts new file
> mode 100644 index 0000000000..12d6db6f80
> --- /dev/null
> +++ b/arch/arm/dts/imx6q-kp.dts
> @@ -0,0 +1,219 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright 2018
> + * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
> + *
> + * SPDX-License-Identifier:     GPL-2.0+ or X11
> + */
> +
> +/dts-v1/;
> +#include <dt-bindings/gpio/gpio.h>
> +#include "imx6q.dtsi"
> +
> +/ {
> +	model = "K+P iMX6Q";
> +	compatible = "kp,imx6-kp", "fsl,imx6";
> +
> +	aliases {
> +		mmc0 = &usdhc2;
> +		mmc1 = &usdhc4;
> +		usb1 = &usbh1;
> +	};
> +
> +	chosen {
> +		stdout-path = &uart1;
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_leds>;
> +
> +		green {
> +			label = "green";
> +			gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "gpio";
> +			default-state = "off";
> +		};
> +
> +		red {
> +			label = "red";
> +			gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "gpio";
> +			default-state = "off";
> +		};
> +	};
> +
> +	memory@10000000 {
> +		reg = <0x10000000 0x40000000>;
> +	};
> +
> +	reg_usb_h1_vbus: regulator-usb_h1_vbus {
> +		compatible = "regulator-fixed";
> +		regulator-name = "usb_h1_vbus";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +	};
> +};
> +
> +&fec {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_enet>;
> +	phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
> +	phy-reset-duration = <10>;
> +	phy-mode = "rgmii";
> +	fsl,magic-packet;
> +	fsl,enet-loopback-clk; /* anatop reference clk via PAD loopback */
> +	fsl,enet-freq = <1>; /* ENET_25MHZ  = 0, ENET_50MHZ  = 1 */
> +			     /* ENET_100MHZ = 2, ENET_125MHZ = 3 */
> +	status = "okay";
> +};
> +
> +&i2c1 {
> +	clock-frequency = <400000>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c1>;
> +	status = "okay";
> +};
> +
> +&i2c2 {
> +	clock-frequency = <400000>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c2>;
> +	status = "okay";
> +};
> +
> +&iomuxc {
> +	pinctrl_enet: enetgrp {
> +		fsl,pins = <
> +			MX6QDL_PAD_ENET_MDIO__ENET_MDIO	0x1b0b0
> +			MX6QDL_PAD_ENET_MDC__ENET_MDC		0x1b0b0
> +			MX6QDL_PAD_RGMII_TXC__RGMII_TXC	0x1b0b0
> +			MX6QDL_PAD_RGMII_TD0__RGMII_TD0	0x1b0b0
> +			MX6QDL_PAD_RGMII_TD1__RGMII_TD1	0x1b0b0
> +			MX6QDL_PAD_RGMII_TD2__RGMII_TD2	0x1b0b0
> +			MX6QDL_PAD_RGMII_TD3__RGMII_TD3	0x1b0b0
> +			MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL	0x1b0b0
> +			MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK	0x1b0b0
> +			MX6QDL_PAD_RGMII_RXC__RGMII_RXC	0x1b0b0
> +			MX6QDL_PAD_RGMII_RD0__RGMII_RD0	0x1b0b0
> +			MX6QDL_PAD_RGMII_RD1__RGMII_RD1	0x1b0b0
> +			MX6QDL_PAD_RGMII_RD2__RGMII_RD2	0x1b0b0
> +			MX6QDL_PAD_RGMII_RD3__RGMII_RD3	0x1b0b0
> +			MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL	0x1b0b0
> +			MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
> +			MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25	0x1b0b0
> +		>;
> +	};
> +
> +	pinctrl_leds: gpioledsgrp {
> +		fsl,pins = <
> +			MX6QDL_PAD_EIM_D23__GPIO3_IO23
> 0x4001b0b0
> +			MX6QDL_PAD_EIM_D16__GPIO3_IO16
> 0x4001b0b0
> +		>;
> +	};
> +
> +	pinctrl_i2c1: i2c1grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_CSI0_DAT8__I2C1_SDA	0x4001b8b1
> +			MX6QDL_PAD_CSI0_DAT9__I2C1_SCL	0x4001b8b1
> +		>;
> +	};
> +
> +	pinctrl_i2c2: i2c2grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_KEY_COL3__I2C2_SCL	0x4001b8b1
> +			MX6QDL_PAD_KEY_ROW3__I2C2_SDA	0x4001b8b1
> +		 >;
> +	};
> +
> +	pinctrl_uart1: uart1grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA	0x1b0b1
> +			MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA	0x1b0b1
> +		>;
> +	};
> +
> +	pinctrl_uart2: uart2grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_EIM_D26__UART2_TX_DATA       0x1b0b1
> +			MX6QDL_PAD_EIM_D27__UART2_RX_DATA       0x1b0b1
> +			MX6QDL_PAD_EIM_D28__UART2_CTS_B         0x1b0b1
> +			MX6QDL_PAD_EIM_D29__UART2_RTS_B         0x1b0b1
> +		>;
> +	};
> +
> +	pinctrl_usbh1: usbh1grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x1b0b1
> +			MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID       0x17059
> +		>;
> +	};
> +
> +	pinctrl_usdhc2: usdhc2grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_SD2_CMD__SD2_CMD		0x17019
> +			MX6QDL_PAD_SD2_CLK__SD2_CLK		0x10019
> +			MX6QDL_PAD_SD2_DAT0__SD2_DATA0		0x17019
> +			MX6QDL_PAD_SD2_DAT1__SD2_DATA1		0x17019
> +			MX6QDL_PAD_SD2_DAT2__SD2_DATA2		0x17019
> +			MX6QDL_PAD_SD2_DAT3__SD2_DATA3		0x17019
> +			MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x20000
> +			MX6QDL_PAD_GPIO_4__GPIO1_IO04           0x20000
> +		>;
> +	};
> +
> +	pinctrl_usdhc4: usdhc4grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_SD4_CMD__SD4_CMD		0x17019
> +			MX6QDL_PAD_SD4_CLK__SD4_CLK		0x10019
> +			MX6QDL_PAD_SD4_DAT0__SD4_DATA0		0x17019
> +			MX6QDL_PAD_SD4_DAT1__SD4_DATA1		0x17019
> +			MX6QDL_PAD_SD4_DAT2__SD4_DATA2		0x17019
> +			MX6QDL_PAD_SD4_DAT3__SD4_DATA3		0x17019
> +			MX6QDL_PAD_SD4_DAT4__SD4_DATA4		0x17019
> +			MX6QDL_PAD_SD4_DAT5__SD4_DATA5		0x17019
> +			MX6QDL_PAD_SD4_DAT6__SD4_DATA6		0x17019
> +			MX6QDL_PAD_SD4_DAT7__SD4_DATA7		0x17019
> +		>;
> +	};
> +};
> +
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart2>;
> +	uart-has-rtscts;
> +};
> +
> +&usbh1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usbh1>;
> +	vbus-supply = <&reg_usb_h1_vbus>;
> +	status = "okay";
> +};
> +
> +&usdhc2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc2>;
> +	bus-width = <4>;
> +	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
> +	status = "okay";
> +};
> +
> +&usdhc4 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc4>;
> +	bus-width = <8>;
> +	non-removable;
> +	no-1-8-v;
> +	keep-power-in-suspend;
> +	status = "okay";
> +};
> --
> 2.11.0
Lukasz Majewski Aug. 11, 2019, 9:25 p.m. UTC | #2
Hi Peng,

> > Subject: [PATCH v2 07/11] imx: tpc70: dts: Add TPC70 board (imx6q
> > based) device tree description
> > 
> > This commit defines the TPC70 imx6q board with device tree
> > description.  
> 
> Is the imx6q-kp.dtsi usable for this board from Linux kernel?
> 

The imx6q-kp.dtsi is defined in the Linux kernel [1].

However, not all features - like backlight, CAN, etc. are needed in
U-Boot. To reduce SPL footprint, as the TPC70 is the first
board (from i.MX6Q family of SoCs) which uses only DM in SPL and U-Boot
proper, only the necessary subset of [1] was added to U-Boot.

Note:

[1] -
https://elixir.bootlin.com/linux/v5.2.8/source/arch/arm/boot/dts/imx6q-kp.dtsi

> Regards,
> Peng.
> 
> > 
> > Signed-off-by: Lukasz Majewski <lukma@denx.de>
> > ---
> > 
> >  arch/arm/dts/imx6q-kp.dts | 219
> > ++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 219 insertions(+)
> >  create mode 100644 arch/arm/dts/imx6q-kp.dts
> > 
> > diff --git a/arch/arm/dts/imx6q-kp.dts b/arch/arm/dts/imx6q-kp.dts
> > new file mode 100644 index 0000000000..12d6db6f80
> > --- /dev/null
> > +++ b/arch/arm/dts/imx6q-kp.dts
> > @@ -0,0 +1,219 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * Copyright 2018
> > + * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
> > + *
> > + * SPDX-License-Identifier:     GPL-2.0+ or X11
> > + */
> > +
> > +/dts-v1/;
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include "imx6q.dtsi"
> > +
> > +/ {
> > +	model = "K+P iMX6Q";
> > +	compatible = "kp,imx6-kp", "fsl,imx6";
> > +
> > +	aliases {
> > +		mmc0 = &usdhc2;
> > +		mmc1 = &usdhc4;
> > +		usb1 = &usbh1;
> > +	};
> > +
> > +	chosen {
> > +		stdout-path = &uart1;
> > +	};
> > +
> > +	leds {
> > +		compatible = "gpio-leds";
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_leds>;
> > +
> > +		green {
> > +			label = "green";
> > +			gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
> > +			linux,default-trigger = "gpio";
> > +			default-state = "off";
> > +		};
> > +
> > +		red {
> > +			label = "red";
> > +			gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
> > +			linux,default-trigger = "gpio";
> > +			default-state = "off";
> > +		};
> > +	};
> > +
> > +	memory@10000000 {
> > +		reg = <0x10000000 0x40000000>;
> > +	};
> > +
> > +	reg_usb_h1_vbus: regulator-usb_h1_vbus {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "usb_h1_vbus";
> > +		regulator-min-microvolt = <5000000>;
> > +		regulator-max-microvolt = <5000000>;
> > +		gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
> > +		enable-active-high;
> > +	};
> > +};
> > +
> > +&fec {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_enet>;
> > +	phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
> > +	phy-reset-duration = <10>;
> > +	phy-mode = "rgmii";
> > +	fsl,magic-packet;
> > +	fsl,enet-loopback-clk; /* anatop reference clk via PAD
> > loopback */
> > +	fsl,enet-freq = <1>; /* ENET_25MHZ  = 0, ENET_50MHZ  = 1 */
> > +			     /* ENET_100MHZ = 2, ENET_125MHZ = 3 */
> > +	status = "okay";
> > +};
> > +
> > +&i2c1 {
> > +	clock-frequency = <400000>;
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_i2c1>;
> > +	status = "okay";
> > +};
> > +
> > +&i2c2 {
> > +	clock-frequency = <400000>;
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_i2c2>;
> > +	status = "okay";
> > +};
> > +
> > +&iomuxc {
> > +	pinctrl_enet: enetgrp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_ENET_MDIO__ENET_MDIO
> > 0x1b0b0
> > +			MX6QDL_PAD_ENET_MDC__ENET_MDC
> > 	0x1b0b0
> > +			MX6QDL_PAD_RGMII_TXC__RGMII_TXC
> > 0x1b0b0
> > +			MX6QDL_PAD_RGMII_TD0__RGMII_TD0
> > 0x1b0b0
> > +			MX6QDL_PAD_RGMII_TD1__RGMII_TD1
> > 0x1b0b0
> > +			MX6QDL_PAD_RGMII_TD2__RGMII_TD2
> > 0x1b0b0
> > +			MX6QDL_PAD_RGMII_TD3__RGMII_TD3
> > 0x1b0b0
> > +
> > MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL	0x1b0b0
> > +
> > MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK	0x1b0b0
> > +			MX6QDL_PAD_RGMII_RXC__RGMII_RXC
> > 0x1b0b0
> > +			MX6QDL_PAD_RGMII_RD0__RGMII_RD0
> > 0x1b0b0
> > +			MX6QDL_PAD_RGMII_RD1__RGMII_RD1
> > 0x1b0b0
> > +			MX6QDL_PAD_RGMII_RD2__RGMII_RD2
> > 0x1b0b0
> > +			MX6QDL_PAD_RGMII_RD3__RGMII_RD3
> > 0x1b0b0
> > +
> > MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL	0x1b0b0
> > +			MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
> > +			MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25
> > 0x1b0b0
> > +		>;
> > +	};
> > +
> > +	pinctrl_leds: gpioledsgrp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_EIM_D23__GPIO3_IO23
> > 0x4001b0b0
> > +			MX6QDL_PAD_EIM_D16__GPIO3_IO16
> > 0x4001b0b0
> > +		>;
> > +	};
> > +
> > +	pinctrl_i2c1: i2c1grp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_CSI0_DAT8__I2C1_SDA
> > 0x4001b8b1
> > +			MX6QDL_PAD_CSI0_DAT9__I2C1_SCL
> > 0x4001b8b1
> > +		>;
> > +	};
> > +
> > +	pinctrl_i2c2: i2c2grp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_KEY_COL3__I2C2_SCL
> > 0x4001b8b1
> > +			MX6QDL_PAD_KEY_ROW3__I2C2_SDA
> > 0x4001b8b1
> > +		 >;
> > +	};
> > +
> > +	pinctrl_uart1: uart1grp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA
> > 0x1b0b1
> > +			MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA
> > 0x1b0b1
> > +		>;
> > +	};
> > +
> > +	pinctrl_uart2: uart2grp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_EIM_D26__UART2_TX_DATA
> > 0x1b0b1
> > +			MX6QDL_PAD_EIM_D27__UART2_RX_DATA
> > 0x1b0b1
> > +			MX6QDL_PAD_EIM_D28__UART2_CTS_B
> > 0x1b0b1
> > +			MX6QDL_PAD_EIM_D29__UART2_RTS_B
> > 0x1b0b1
> > +		>;
> > +	};
> > +
> > +	pinctrl_usbh1: usbh1grp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_EIM_D31__GPIO3_IO31
> > 0x1b0b1
> > +			MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID
> > 0x17059
> > +		>;
> > +	};
> > +
> > +	pinctrl_usdhc2: usdhc2grp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_SD2_CMD__SD2_CMD
> > 0x17019
> > +			MX6QDL_PAD_SD2_CLK__SD2_CLK
> > 0x10019
> > +			MX6QDL_PAD_SD2_DAT0__SD2_DATA0
> > 	0x17019
> > +			MX6QDL_PAD_SD2_DAT1__SD2_DATA1
> > 	0x17019
> > +			MX6QDL_PAD_SD2_DAT2__SD2_DATA2
> > 	0x17019
> > +			MX6QDL_PAD_SD2_DAT3__SD2_DATA3
> > 	0x17019
> > +			MX6QDL_PAD_NANDF_CS3__GPIO6_IO16
> > 0x20000
> > +			MX6QDL_PAD_GPIO_4__GPIO1_IO04
> > 0x20000
> > +		>;
> > +	};
> > +
> > +	pinctrl_usdhc4: usdhc4grp {
> > +		fsl,pins = <
> > +			MX6QDL_PAD_SD4_CMD__SD4_CMD
> > 0x17019
> > +			MX6QDL_PAD_SD4_CLK__SD4_CLK
> > 0x10019
> > +			MX6QDL_PAD_SD4_DAT0__SD4_DATA0
> > 	0x17019
> > +			MX6QDL_PAD_SD4_DAT1__SD4_DATA1
> > 	0x17019
> > +			MX6QDL_PAD_SD4_DAT2__SD4_DATA2
> > 	0x17019
> > +			MX6QDL_PAD_SD4_DAT3__SD4_DATA3
> > 	0x17019
> > +			MX6QDL_PAD_SD4_DAT4__SD4_DATA4
> > 	0x17019
> > +			MX6QDL_PAD_SD4_DAT5__SD4_DATA5
> > 	0x17019
> > +			MX6QDL_PAD_SD4_DAT6__SD4_DATA6
> > 	0x17019
> > +			MX6QDL_PAD_SD4_DAT7__SD4_DATA7
> > 	0x17019
> > +		>;
> > +	};
> > +};
> > +
> > +&uart1 {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_uart1>;
> > +	status = "okay";
> > +};
> > +
> > +&uart2 {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_uart2>;
> > +	uart-has-rtscts;
> > +};
> > +
> > +&usbh1 {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_usbh1>;
> > +	vbus-supply = <&reg_usb_h1_vbus>;
> > +	status = "okay";
> > +};
> > +
> > +&usdhc2 {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_usdhc2>;
> > +	bus-width = <4>;
> > +	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
> > +	status = "okay";
> > +};
> > +
> > +&usdhc4 {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_usdhc4>;
> > +	bus-width = <8>;
> > +	non-removable;
> > +	no-1-8-v;
> > +	keep-power-in-suspend;
> > +	status = "okay";
> > +};
> > --
> > 2.11.0  
> 



Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
Tom Rini Aug. 11, 2019, 11:55 p.m. UTC | #3
On Sun, Aug 11, 2019 at 11:25:37PM +0200, Lukasz Majewski wrote:
> Hi Peng,
> 
> > > Subject: [PATCH v2 07/11] imx: tpc70: dts: Add TPC70 board (imx6q
> > > based) device tree description
> > > 
> > > This commit defines the TPC70 imx6q board with device tree
> > > description.  
> > 
> > Is the imx6q-kp.dtsi usable for this board from Linux kernel?
> > 
> 
> The imx6q-kp.dtsi is defined in the Linux kernel [1].
> 
> However, not all features - like backlight, CAN, etc. are needed in
> U-Boot. To reduce SPL footprint, as the TPC70 is the first
> board (from i.MX6Q family of SoCs) which uses only DM in SPL and U-Boot
> proper, only the necessary subset of [1] was added to U-Boot.
> 
> Note:
> 
> [1] -
> https://elixir.bootlin.com/linux/v5.2.8/source/arch/arm/boot/dts/imx6q-kp.dtsi

Right, and that's what we have CONFIG_OF_SPL_REMOVE_PROPS for, yes?
Lukasz Majewski Aug. 12, 2019, 6:39 a.m. UTC | #4
Hi Tom,

> On Sun, Aug 11, 2019 at 11:25:37PM +0200, Lukasz Majewski wrote:
> > Hi Peng,
> >   
> > > > Subject: [PATCH v2 07/11] imx: tpc70: dts: Add TPC70 board
> > > > (imx6q based) device tree description
> > > > 
> > > > This commit defines the TPC70 imx6q board with device tree
> > > > description.    
> > > 
> > > Is the imx6q-kp.dtsi usable for this board from Linux kernel?
> > >   
> > 
> > The imx6q-kp.dtsi is defined in the Linux kernel [1].
> > 
> > However, not all features - like backlight, CAN, etc. are needed in
> > U-Boot. To reduce SPL footprint, as the TPC70 is the first
> > board (from i.MX6Q family of SoCs) which uses only DM in SPL and
> > U-Boot proper, only the necessary subset of [1] was added to U-Boot.
> > 
> > Note:
> > 
> > [1] -
> > https://elixir.bootlin.com/linux/v5.2.8/source/arch/arm/boot/dts/imx6q-kp.dtsi
> >  
> 
> Right, and that's what we have CONFIG_OF_SPL_REMOVE_PROPS for, yes?
> 

Not quite. For example I need "clocks" property, which is defined for
almost all nodes. This incurs some extra cost in terms of footprint.

To reduce the SPL size (to which dtb file size contributes), I had to
not include full DTS from Linux in U-Boot.

I only used a subset of it (only _really_ necessary description to run
U-Boot) to reduce size of SPL binary.

Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
Peng Fan Aug. 13, 2019, 8:41 a.m. UTC | #5
> Subject: [PATCH v2 07/11] imx: tpc70: dts: Add TPC70 board (imx6q based)
> device tree description
> 
> This commit defines the TPC70 imx6q board with device tree description.
> 
> Signed-off-by: Lukasz Majewski <lukma@denx.de>

Acked-by: Peng Fan <peng.fan@nxp.com>

> ---
> 
>  arch/arm/dts/imx6q-kp.dts | 219
> ++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 219 insertions(+)
>  create mode 100644 arch/arm/dts/imx6q-kp.dts
> 
> diff --git a/arch/arm/dts/imx6q-kp.dts b/arch/arm/dts/imx6q-kp.dts new file
> mode 100644 index 0000000000..12d6db6f80
> --- /dev/null
> +++ b/arch/arm/dts/imx6q-kp.dts
> @@ -0,0 +1,219 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright 2018
> + * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
> + *
> + * SPDX-License-Identifier:     GPL-2.0+ or X11
> + */
> +
> +/dts-v1/;
> +#include <dt-bindings/gpio/gpio.h>
> +#include "imx6q.dtsi"
> +
> +/ {
> +	model = "K+P iMX6Q";
> +	compatible = "kp,imx6-kp", "fsl,imx6";
> +
> +	aliases {
> +		mmc0 = &usdhc2;
> +		mmc1 = &usdhc4;
> +		usb1 = &usbh1;
> +	};
> +
> +	chosen {
> +		stdout-path = &uart1;
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_leds>;
> +
> +		green {
> +			label = "green";
> +			gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "gpio";
> +			default-state = "off";
> +		};
> +
> +		red {
> +			label = "red";
> +			gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "gpio";
> +			default-state = "off";
> +		};
> +	};
> +
> +	memory@10000000 {
> +		reg = <0x10000000 0x40000000>;
> +	};
> +
> +	reg_usb_h1_vbus: regulator-usb_h1_vbus {
> +		compatible = "regulator-fixed";
> +		regulator-name = "usb_h1_vbus";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +	};
> +};
> +
> +&fec {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_enet>;
> +	phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
> +	phy-reset-duration = <10>;
> +	phy-mode = "rgmii";
> +	fsl,magic-packet;
> +	fsl,enet-loopback-clk; /* anatop reference clk via PAD loopback */
> +	fsl,enet-freq = <1>; /* ENET_25MHZ  = 0, ENET_50MHZ  = 1 */
> +			     /* ENET_100MHZ = 2, ENET_125MHZ = 3 */
> +	status = "okay";
> +};
> +
> +&i2c1 {
> +	clock-frequency = <400000>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c1>;
> +	status = "okay";
> +};
> +
> +&i2c2 {
> +	clock-frequency = <400000>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c2>;
> +	status = "okay";
> +};
> +
> +&iomuxc {
> +	pinctrl_enet: enetgrp {
> +		fsl,pins = <
> +			MX6QDL_PAD_ENET_MDIO__ENET_MDIO	0x1b0b0
> +			MX6QDL_PAD_ENET_MDC__ENET_MDC		0x1b0b0
> +			MX6QDL_PAD_RGMII_TXC__RGMII_TXC	0x1b0b0
> +			MX6QDL_PAD_RGMII_TD0__RGMII_TD0	0x1b0b0
> +			MX6QDL_PAD_RGMII_TD1__RGMII_TD1	0x1b0b0
> +			MX6QDL_PAD_RGMII_TD2__RGMII_TD2	0x1b0b0
> +			MX6QDL_PAD_RGMII_TD3__RGMII_TD3	0x1b0b0
> +			MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL	0x1b0b0
> +			MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK	0x1b0b0
> +			MX6QDL_PAD_RGMII_RXC__RGMII_RXC	0x1b0b0
> +			MX6QDL_PAD_RGMII_RD0__RGMII_RD0	0x1b0b0
> +			MX6QDL_PAD_RGMII_RD1__RGMII_RD1	0x1b0b0
> +			MX6QDL_PAD_RGMII_RD2__RGMII_RD2	0x1b0b0
> +			MX6QDL_PAD_RGMII_RD3__RGMII_RD3	0x1b0b0
> +			MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL	0x1b0b0
> +			MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
> +			MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25	0x1b0b0
> +		>;
> +	};
> +
> +	pinctrl_leds: gpioledsgrp {
> +		fsl,pins = <
> +			MX6QDL_PAD_EIM_D23__GPIO3_IO23
> 0x4001b0b0
> +			MX6QDL_PAD_EIM_D16__GPIO3_IO16
> 0x4001b0b0
> +		>;
> +	};
> +
> +	pinctrl_i2c1: i2c1grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_CSI0_DAT8__I2C1_SDA	0x4001b8b1
> +			MX6QDL_PAD_CSI0_DAT9__I2C1_SCL	0x4001b8b1
> +		>;
> +	};
> +
> +	pinctrl_i2c2: i2c2grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_KEY_COL3__I2C2_SCL	0x4001b8b1
> +			MX6QDL_PAD_KEY_ROW3__I2C2_SDA	0x4001b8b1
> +		 >;
> +	};
> +
> +	pinctrl_uart1: uart1grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA	0x1b0b1
> +			MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA	0x1b0b1
> +		>;
> +	};
> +
> +	pinctrl_uart2: uart2grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_EIM_D26__UART2_TX_DATA       0x1b0b1
> +			MX6QDL_PAD_EIM_D27__UART2_RX_DATA       0x1b0b1
> +			MX6QDL_PAD_EIM_D28__UART2_CTS_B         0x1b0b1
> +			MX6QDL_PAD_EIM_D29__UART2_RTS_B         0x1b0b1
> +		>;
> +	};
> +
> +	pinctrl_usbh1: usbh1grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x1b0b1
> +			MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID       0x17059
> +		>;
> +	};
> +
> +	pinctrl_usdhc2: usdhc2grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_SD2_CMD__SD2_CMD		0x17019
> +			MX6QDL_PAD_SD2_CLK__SD2_CLK		0x10019
> +			MX6QDL_PAD_SD2_DAT0__SD2_DATA0		0x17019
> +			MX6QDL_PAD_SD2_DAT1__SD2_DATA1		0x17019
> +			MX6QDL_PAD_SD2_DAT2__SD2_DATA2		0x17019
> +			MX6QDL_PAD_SD2_DAT3__SD2_DATA3		0x17019
> +			MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x20000
> +			MX6QDL_PAD_GPIO_4__GPIO1_IO04           0x20000
> +		>;
> +	};
> +
> +	pinctrl_usdhc4: usdhc4grp {
> +		fsl,pins = <
> +			MX6QDL_PAD_SD4_CMD__SD4_CMD		0x17019
> +			MX6QDL_PAD_SD4_CLK__SD4_CLK		0x10019
> +			MX6QDL_PAD_SD4_DAT0__SD4_DATA0		0x17019
> +			MX6QDL_PAD_SD4_DAT1__SD4_DATA1		0x17019
> +			MX6QDL_PAD_SD4_DAT2__SD4_DATA2		0x17019
> +			MX6QDL_PAD_SD4_DAT3__SD4_DATA3		0x17019
> +			MX6QDL_PAD_SD4_DAT4__SD4_DATA4		0x17019
> +			MX6QDL_PAD_SD4_DAT5__SD4_DATA5		0x17019
> +			MX6QDL_PAD_SD4_DAT6__SD4_DATA6		0x17019
> +			MX6QDL_PAD_SD4_DAT7__SD4_DATA7		0x17019
> +		>;
> +	};
> +};
> +
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart2>;
> +	uart-has-rtscts;
> +};
> +
> +&usbh1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usbh1>;
> +	vbus-supply = <&reg_usb_h1_vbus>;
> +	status = "okay";
> +};
> +
> +&usdhc2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc2>;
> +	bus-width = <4>;
> +	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
> +	status = "okay";
> +};
> +
> +&usdhc4 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc4>;
> +	bus-width = <8>;
> +	non-removable;
> +	no-1-8-v;
> +	keep-power-in-suspend;
> +	status = "okay";
> +};
> --
> 2.11.0
diff mbox series

Patch

diff --git a/arch/arm/dts/imx6q-kp.dts b/arch/arm/dts/imx6q-kp.dts
new file mode 100644
index 0000000000..12d6db6f80
--- /dev/null
+++ b/arch/arm/dts/imx6q-kp.dts
@@ -0,0 +1,219 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ *
+ * SPDX-License-Identifier:     GPL-2.0+ or X11
+ */
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include "imx6q.dtsi"
+
+/ {
+	model = "K+P iMX6Q";
+	compatible = "kp,imx6-kp", "fsl,imx6";
+
+	aliases {
+		mmc0 = &usdhc2;
+		mmc1 = &usdhc4;
+		usb1 = &usbh1;
+	};
+
+	chosen {
+		stdout-path = &uart1;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_leds>;
+
+		green {
+			label = "green";
+			gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "gpio";
+			default-state = "off";
+		};
+
+		red {
+			label = "red";
+			gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "gpio";
+			default-state = "off";
+		};
+	};
+
+	memory@10000000 {
+		reg = <0x10000000 0x40000000>;
+	};
+
+	reg_usb_h1_vbus: regulator-usb_h1_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_h1_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+};
+
+&fec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_enet>;
+	phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
+	phy-reset-duration = <10>;
+	phy-mode = "rgmii";
+	fsl,magic-packet;
+	fsl,enet-loopback-clk; /* anatop reference clk via PAD loopback */
+	fsl,enet-freq = <1>; /* ENET_25MHZ  = 0, ENET_50MHZ  = 1 */
+			     /* ENET_100MHZ = 2, ENET_125MHZ = 3 */
+	status = "okay";
+};
+
+&i2c1 {
+	clock-frequency = <400000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1>;
+	status = "okay";
+};
+
+&i2c2 {
+	clock-frequency = <400000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2>;
+	status = "okay";
+};
+
+&iomuxc {
+	pinctrl_enet: enetgrp {
+		fsl,pins = <
+			MX6QDL_PAD_ENET_MDIO__ENET_MDIO	0x1b0b0
+			MX6QDL_PAD_ENET_MDC__ENET_MDC		0x1b0b0
+			MX6QDL_PAD_RGMII_TXC__RGMII_TXC	0x1b0b0
+			MX6QDL_PAD_RGMII_TD0__RGMII_TD0	0x1b0b0
+			MX6QDL_PAD_RGMII_TD1__RGMII_TD1	0x1b0b0
+			MX6QDL_PAD_RGMII_TD2__RGMII_TD2	0x1b0b0
+			MX6QDL_PAD_RGMII_TD3__RGMII_TD3	0x1b0b0
+			MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL	0x1b0b0
+			MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK	0x1b0b0
+			MX6QDL_PAD_RGMII_RXC__RGMII_RXC	0x1b0b0
+			MX6QDL_PAD_RGMII_RD0__RGMII_RD0	0x1b0b0
+			MX6QDL_PAD_RGMII_RD1__RGMII_RD1	0x1b0b0
+			MX6QDL_PAD_RGMII_RD2__RGMII_RD2	0x1b0b0
+			MX6QDL_PAD_RGMII_RD3__RGMII_RD3	0x1b0b0
+			MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL	0x1b0b0
+			MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
+			MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25	0x1b0b0
+		>;
+	};
+
+	pinctrl_leds: gpioledsgrp {
+		fsl,pins = <
+			MX6QDL_PAD_EIM_D23__GPIO3_IO23          0x4001b0b0
+			MX6QDL_PAD_EIM_D16__GPIO3_IO16          0x4001b0b0
+		>;
+	};
+
+	pinctrl_i2c1: i2c1grp {
+		fsl,pins = <
+			MX6QDL_PAD_CSI0_DAT8__I2C1_SDA	0x4001b8b1
+			MX6QDL_PAD_CSI0_DAT9__I2C1_SCL	0x4001b8b1
+		>;
+	};
+
+	pinctrl_i2c2: i2c2grp {
+		fsl,pins = <
+			MX6QDL_PAD_KEY_COL3__I2C2_SCL	0x4001b8b1
+			MX6QDL_PAD_KEY_ROW3__I2C2_SDA	0x4001b8b1
+		 >;
+	};
+
+	pinctrl_uart1: uart1grp {
+		fsl,pins = <
+			MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA	0x1b0b1
+			MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA	0x1b0b1
+		>;
+	};
+
+	pinctrl_uart2: uart2grp {
+		fsl,pins = <
+			MX6QDL_PAD_EIM_D26__UART2_TX_DATA       0x1b0b1
+			MX6QDL_PAD_EIM_D27__UART2_RX_DATA       0x1b0b1
+			MX6QDL_PAD_EIM_D28__UART2_CTS_B         0x1b0b1
+			MX6QDL_PAD_EIM_D29__UART2_RTS_B         0x1b0b1
+		>;
+	};
+
+	pinctrl_usbh1: usbh1grp {
+		fsl,pins = <
+			MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x1b0b1
+			MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID       0x17059
+		>;
+	};
+
+	pinctrl_usdhc2: usdhc2grp {
+		fsl,pins = <
+			MX6QDL_PAD_SD2_CMD__SD2_CMD		0x17019
+			MX6QDL_PAD_SD2_CLK__SD2_CLK		0x10019
+			MX6QDL_PAD_SD2_DAT0__SD2_DATA0		0x17019
+			MX6QDL_PAD_SD2_DAT1__SD2_DATA1		0x17019
+			MX6QDL_PAD_SD2_DAT2__SD2_DATA2		0x17019
+			MX6QDL_PAD_SD2_DAT3__SD2_DATA3		0x17019
+			MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x20000
+			MX6QDL_PAD_GPIO_4__GPIO1_IO04           0x20000
+		>;
+	};
+
+	pinctrl_usdhc4: usdhc4grp {
+		fsl,pins = <
+			MX6QDL_PAD_SD4_CMD__SD4_CMD		0x17019
+			MX6QDL_PAD_SD4_CLK__SD4_CLK		0x10019
+			MX6QDL_PAD_SD4_DAT0__SD4_DATA0		0x17019
+			MX6QDL_PAD_SD4_DAT1__SD4_DATA1		0x17019
+			MX6QDL_PAD_SD4_DAT2__SD4_DATA2		0x17019
+			MX6QDL_PAD_SD4_DAT3__SD4_DATA3		0x17019
+			MX6QDL_PAD_SD4_DAT4__SD4_DATA4		0x17019
+			MX6QDL_PAD_SD4_DAT5__SD4_DATA5		0x17019
+			MX6QDL_PAD_SD4_DAT6__SD4_DATA6		0x17019
+			MX6QDL_PAD_SD4_DAT7__SD4_DATA7		0x17019
+		>;
+	};
+};
+
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart1>;
+	status = "okay";
+};
+
+&uart2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart2>;
+	uart-has-rtscts;
+};
+
+&usbh1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbh1>;
+	vbus-supply = <&reg_usb_h1_vbus>;
+	status = "okay";
+};
+
+&usdhc2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc2>;
+	bus-width = <4>;
+	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc4>;
+	bus-width = <8>;
+	non-removable;
+	no-1-8-v;
+	keep-power-in-suspend;
+	status = "okay";
+};