[PATCH 4/4] arm64: dts: freescale: Add support for phyBOARD-Pollux-i.MX8MP

Teresa Remmet t.remmet at phytec.de
Tue Dec 8 06:53:22 EST 2020


Hello Krzysztof,

Am Montag, den 07.12.2020, 14:46 +0100 schrieb Krzysztof Kozlowski:
> On Mon, Dec 07, 2020 at 02:35:33PM +0100, Teresa Remmet wrote:
> > Hello Krzysztof,
> > 
> > Am Montag, den 07.12.2020, 13:09 +0100 schrieb Krzysztof Kozlowski:
> > > On Fri, Dec 04, 2020 at 09:33:02PM +0100, Teresa Remmet wrote:
> > > > Add initial support for phyBOARD-Pollux-i.MX8MP.
> > > > Supported basic features:
> > > > 	* eMMC
> > > > 	* i2c EEPROM
> > > > 	* i2c RTC
> > > > 	* i2c LED
> > > > 	* PMIC
> > > > 	* debug UART
> > > > 	* SD card
> > > > 	* 1Gbit Ethernet (fec)
> > > > 	* watchdog
> > > > 
> > > > Signed-off-by: Teresa Remmet <t.remmet at phytec.de>
> > > > ---
> > > >  arch/arm64/boot/dts/freescale/Makefile             |   1 +
> > > >  .../dts/freescale/imx8mp-phyboard-pollux-rdk.dts   |  16 ++
> > > >  .../boot/dts/freescale/imx8mp-phyboard-pollux.dtsi | 152
> > > > ++++++++++
> > > >  .../boot/dts/freescale/imx8mp-phycore-som.dtsi     | 319
> > > > +++++++++++++++++++++
> > > >  4 files changed, 488 insertions(+)
> > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-
> > > > phyboard-
> > > > pollux-rdk.dts
> > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-
> > > > phyboard-
> > > > pollux.dtsi
> > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-
> > > > phycore-
> > > > som.dtsi
> > > > 
> > > > diff --git a/arch/arm64/boot/dts/freescale/Makefile
> > > > b/arch/arm64/boot/dts/freescale/Makefile
> > > > index acfb8af45912..a43b496678be 100644
> > > > --- a/arch/arm64/boot/dts/freescale/Makefile
> > > > +++ b/arch/arm64/boot/dts/freescale/Makefile
> > > > @@ -37,6 +37,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mn-evk.dtb
> > > >  dtb-$(CONFIG_ARCH_MXC) += imx8mn-ddr4-evk.dtb
> > > >  dtb-$(CONFIG_ARCH_MXC) += imx8mn-var-som-symphony.dtb
> > > >  dtb-$(CONFIG_ARCH_MXC) += imx8mp-evk.dtb
> > > > +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk.dtb
> > > >  dtb-$(CONFIG_ARCH_MXC) += imx8mq-evk.dtb
> > > >  dtb-$(CONFIG_ARCH_MXC) += imx8mq-hummingboard-pulse.dtb
> > > >  dtb-$(CONFIG_ARCH_MXC) += imx8mq-librem5-devkit.dtb
> > > > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-
> > > > pollux-
> > > > rdk.dts b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-
> > > > rdk.dts
> > > > new file mode 100644
> > > > index 000000000000..dd64be32c99d
> > > > --- /dev/null
> > > > +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-
> > > > rdk.dts
> > > > @@ -0,0 +1,16 @@
> > > > +// SPDX-License-Identifier: GPL-2.0
> > > > +/*
> > > > + * Copyright (C) 2020 PHYTEC Messtechnik GmbH
> > > > + * Author: Teresa Remmet <t.remmet at phytec.de>
> > > > + */
> > > > +
> > > > +/dts-v1/;
> > > > +
> > > > +#include "imx8mp-phycore-som.dtsi"
> > > > +#include "imx8mp-phyboard-pollux.dtsi"
> > > > +
> > > > +/ {
> > > > +	model = "PHYTEC phyBOARD-Pollux i.MX8MP";
> > > > +	compatible = "phytec,imx8mp-phyboard-pollux-rdk",
> > > > +		     "phytec,imx8mp-phycore-som", "fsl,imx8mp";
> > > 
> > > This is the purpose of this file? Why having a DTS to include
> > > DTSI
> > > only?
> > > Usually there is just DTSI for SOM and DTS fot the board.
> > 
> > we have different options for the SoMs. Like SPI-NOR flash mounted
> > or
> > not. We usually add this to the SoM include, but disable it. We
> > enable
> > this in the dts if mounted. This makes it easy to generate
> > different
> > device trees for different SoM options. So far upstream is not
> > every
> > feature supported. So we don't do anything in the dts yet. But I
> > want
> > to setup the layout already.
> > 
> > I hope this makes it clear.
> 
> You make the upstream DTSes more complicated to make it easier for
> downstream. No, this does not work this way. You can either upstream
> other DTSes so such split will make sense, or this contribution
> should
> make sense in the upstreamed state.
> 
> In the second case, by "matching upstreamed state" I mean that you
> organize your DTSes in a way they make sense for upstream, for
> example
> one DTSI for the SOM and one DTS for the board using it.

Ok, then i will change it now like you suggested and rework it later
after more features are available.

> 
> > 
> > > 
> > > > +};
> > > > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-
> > > > pollux.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-
> > > > pollux.dtsi
> > > > new file mode 100644
> > > > index 000000000000..dbeaa27eb043
> > > > --- /dev/null
> > > > +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux.dtsi
> > > > @@ -0,0 +1,152 @@
> > > > +// SPDX-License-Identifier: GPL-2.0
> > > > +/*
> > > > + * Copyright (C) 2020 PHYTEC Messtechnik GmbH
> > > > + * Author: Teresa Remmet <t.remmet at phytec.de>
> > > > + */
> > > > +
> > > > +#include <dt-bindings/leds/leds-pca9532.h>
> > > > +#include <dt-bindings/pwm/pwm.h>
> > > > +
> > > > +/ {
> > > > +	chosen {
> > > > +		stdout-path = &uart2;
> > > > +	};
> > > > +
> > > > +	reg_usdhc2_vmmc: regulator-usdhc2 {
> > > > +		compatible = "regulator-fixed";
> > > > +		regulator-name = "VSD_3V3";
> > > > +		regulator-min-microvolt = <3300000>;
> > > > +		regulator-max-microvolt = <3300000>;
> > > > +		gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
> > > > +		enable-active-high;
> > > > +		startup-delay-us = <100>;
> > > > +		off-on-delay-us = <12000>;
> > > > +	};
> > > > +};
> > > > +
> > > > +&i2c2 {
> > > > +	clock-frequency = <400000>;
> > > > +	pinctrl-names = "default";
> > > > +	pinctrl-0 = <&pinctrl_i2c2>;
> > > > +	pinctrl-1 = <&pinctrl_i2c2_gpio>;
> > > > +	sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH |
> > > > GPIO_OPEN_DRAIN)>;
> > > > +	scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH |
> > > > GPIO_OPEN_DRAIN)>;
> > > > +	status = "okay";
> > > > +
> > > > +	eeprom at 51 {
> > > > +		compatible = "atmel,24c02";
> > > > +		reg = <0x51>;
> > > > +		pagesize = <16>;
> > > > +		status = "okay";
> > > > +	};
> > > > +
> > > > +	leddimmer at 62 {
> > > 
> > > I think name "leds" is more appropriate.
> > 
> > okay I will change it.
> > 
> > > 
> > > > +		compatible = "nxp,pca9533";
> > > > +		reg = <0x62>;
> > > > +		status = "okay";
> > > > +
> > > > +		led1 {
> > > > +			label = "red:user1";
> > > > +			type = <PCA9532_TYPE_LED>;
> > > > +		};
> > > > +
> > > > +		led2 {
> > > > +			label = "green:user2";
> > > > +			type = <PCA9532_TYPE_LED>;
> > > > +		};
> > > > +
> > > > +		led3 {
> > > > +			label = "blue:user3";
> > > > +			type = <PCA9532_TYPE_LED>;
> > > > +		};
> > > > +	};
> > > > +};
> > > > +
> > > > +&snvs_pwrkey {
> > > > +	status = "okay";
> > > > +};
> > > > +
> > > > +/* debug console */
> > > > +&uart2 {
> > > > +	pinctrl-names = "default";
> > > > +	pinctrl-0 = <&pinctrl_uart2>;
> > > > +	status = "okay";
> > > > +};
> > > > +
> > > > +/* SD-Card */
> > > > +&usdhc2 {
> > > > +	pinctrl-names = "default", "state_100mhz",
> > > > "state_200mhz";
> > > > +	pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_pins>;
> > > > +	pinctrl-1 = <&pinctrl_usdhc2_100mhz>,
> > > > <&pinctrl_usdhc2_pins>;
> > > > +	pinctrl-2 = <&pinctrl_usdhc2_200mhz>,
> > > > <&pinctrl_usdhc2_pins>;
> > > > +	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
> > > > +	vmmc-supply = <&reg_usdhc2_vmmc>;
> > > > +	bus-width = <4>;
> > > > +	status = "okay";
> > > > +};
> > > > +
> > > > +&iomuxc {
> > > > +	pinctrl_i2c2: i2c2grp {
> > > > +		fsl,pins = <
> > > > +			MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL		
> > > > 0x4
> > > > 00001c3
> > > > +			MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA		
> > > > 0x4
> > > > 00001c3
> > > > +		>;
> > > > +	};
> > > > +
> > > > +	pinctrl_i2c2_gpio: i2c2gpiogrp {
> > > > +		fsl,pins = <
> > > > +			MX8MP_IOMUXC_I2C2_SCL__GPIO5_IO16	
> > > > 0x1e3
> > > > +			MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17	
> > > > 0x1e3
> > > > +		>;
> > > > +	};
> > > > +
> > > > +	pinctrl_uart2: uart2grp {
> > > > +		fsl,pins = <
> > > > +			MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX	
> > > > 0x4
> > > > 9
> > > > +			MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX	
> > > > 0x4
> > > > 9
> > > > +		>;
> > > > +	};
> > > > +
> > > > +	pinctrl_usdhc2_pins: usdhc2-gpiogrp {
> > > > +		fsl,pins = <
> > > > +			MX8MP_IOMUXC_SD2_CD_B__GPIO2_IO12	
> > > > 0x1c4
> > > > +			MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19	
> > > > 0x4
> > > > 1
> > > > +		>;
> > > > +	};
> > > > +
> > > > +	pinctrl_usdhc2: usdhc2grp {
> > > > +		fsl,pins = <
> > > > +			MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK	
> > > > 0x190
> > > > +			MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD	
> > > > 0x1d0
> > > > +			MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0	
> > > > 0x1
> > > > d0
> > > > +			MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1	
> > > > 0x1
> > > > d0
> > > > +			MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2	
> > > > 0x1
> > > > d0
> > > > +			MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3	
> > > > 0x1
> > > > d0
> > > > +			MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT
> > > > 	0xc
> > > > 1
> > > > +		>;
> > > > +	};
> > > > +
> > > > +	pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
> > > > +		fsl,pins = <
> > > > +			MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK	
> > > > 0x194
> > > > +			MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD	
> > > > 0x1d4
> > > > +			MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0	
> > > > 0x1
> > > > d4
> > > > +			MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1	
> > > > 0x1
> > > > d4
> > > > +			MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2	
> > > > 0x1
> > > > d4
> > > > +			MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3	
> > > > 0x1
> > > > d4
> > > > +			MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT
> > > > 	0xc
> > > > 1
> > > > +		>;
> > > > +	};
> > > > +
> > > > +	pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
> > > > +		fsl,pins = <
> > > > +			MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK	
> > > > 0x196
> > > > +			MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD	
> > > > 0x1d6
> > > > +			MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0	
> > > > 0x1
> > > > d6
> > > > +			MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1	
> > > > 0x1
> > > > d6
> > > > +			MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2	
> > > > 0x1
> > > > d6
> > > > +			MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3	
> > > > 0x1
> > > > d6
> > > > +			MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT
> > > > 	0xc
> > > > 1
> > > > +		>;
> > > > +	};
> > > > +};
> > > > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phycore-
> > > > som.dtsi
> > > > b/arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi
> > > > new file mode 100644
> > > > index 000000000000..e1fdfebd8142
> > > > --- /dev/null
> > > > +++ b/arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi
> > > > @@ -0,0 +1,319 @@
> > > > +// SPDX-License-Identifier: GPL-2.0
> > > > +/*
> > > > + * Copyright (C) 2020 PHYTEC Messtechnik GmbH
> > > > + * Author: Teresa Remmet <t.remmet at phytec.de>
> > > > + */
> > > > +
> > > > +#include <dt-bindings/net/ti-dp83867.h>
> > > > +#include "imx8mp.dtsi"
> > > > +
> > > > +/ {
> > > > +	model = "PHYTEC phyCORE-i.MX8MP";
> > > > +	compatible = "phytec,imx8mp-phycore-som", "fsl,imx8mp";
> > > > +
> > > > +	aliases {
> > > > +		rtc0 = &rv3028;
> > > > +		rtc1 = &snvs_rtc;
> > > > +	};
> > > > +
> > > > +	memory at 40000000 {
> > > > +		device_type = "memory";
> > > > +		reg = <0x0 0x40000000 0 0x80000000>;
> > > > +	};
> > > > +
> > > > +	rtcclkout: rv3028-clkout {
> > > 
> > > Is it really a separate oscillator giving 32 kHz? Or maybe this
> > > is
> > > actually part of PMIC?
> > 
> > It is a clock out of the used i2c rtc. Which I actually trying to
> > disable. As it is not connected. But it is enabled as default.
> 
> This does not make sense at all:
> 1. This is a node without any reference to hardware,
> 2. It is being disabled in DTS so it will not have any effect in
> kernel
>    therefore will not have any impact on real hardware,

I measured it. I could see that the clock was being disabled. But yes
it does not feel like correct solution and needs more investigation.
I was not able to find the correct property modification.
Will remove this for now and find a proper solution afterwards. It does
not have impact on the functionality if it is enabled or not.
So I will remove the clock part in v2.

Regards,
Teresa

> 3. The RV3028 RTC takes it as phandle... but RV3028 RTC is a clock
>    provider, not a consumer.
> 
> If you want to disable RV3028 RTC clock, you need to modify it's
> properties, not add fake nodes.
> 
> Best regards,
> Krzysztof




More information about the linux-arm-kernel mailing list