diff mbox series

[1/3] dt-bindings: ARM: imx: add kamstrup flex concentrator to schema

Message ID 20200629114927.17379-1-bruno.thomsen@gmail.com
State Not Applicable, archived
Headers show
Series [1/3] dt-bindings: ARM: imx: add kamstrup flex concentrator to schema | expand

Checks

Context Check Description
robh/checkpatch success
robh/dt-meta-schema success

Commit Message

Bruno Thomsen June 29, 2020, 11:49 a.m. UTC
Add Kamstrup flex concentrator compatibles to the schema so we can
make use of them for the validation.

Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
---
 Documentation/devicetree/bindings/arm/fsl.yaml | 2 ++
 1 file changed, 2 insertions(+)


base-commit: 9ebcfadb0610322ac537dd7aa5d9cbc2b2894c68

Comments

Shawn Guo July 13, 2020, 2:32 a.m. UTC | #1
On Mon, Jun 29, 2020 at 01:49:25PM +0200, Bruno Thomsen wrote:
> Add Kamstrup flex concentrator compatibles to the schema so we can
> make use of them for the validation.
> 
> Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>

'dt-bindings: fsl: ...' should be just fine as subject prefix.

Shawn

> ---
>  Documentation/devicetree/bindings/arm/fsl.yaml | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml
> index 05906e291e38..66627b272e40 100644
> --- a/Documentation/devicetree/bindings/arm/fsl.yaml
> +++ b/Documentation/devicetree/bindings/arm/fsl.yaml
> @@ -299,6 +299,8 @@ properties:
>            - enum:
>                - fsl,imx7d-sdb             # i.MX7 SabreSD Board
>                - fsl,imx7d-sdb-reva        # i.MX7 SabreSD Rev-A Board
> +              - kam,imx7d-flex-concentrator       # Kamstrup OMNIA Flex Concentrator
> +              - kam,imx7d-flex-concentrator-mfg   # Kamstrup OMNIA Flex Concentrator in manufacturing mode
>                - novtech,imx7d-meerkat96   # i.MX7 Meerkat96 Board
>                - technexion,imx7d-pico-dwarf   # TechNexion i.MX7D Pico-Dwarf
>                - technexion,imx7d-pico-hobbit  # TechNexion i.MX7D Pico-Hobbit
> 
> base-commit: 9ebcfadb0610322ac537dd7aa5d9cbc2b2894c68
> -- 
> 2.26.2
>
Shawn Guo July 13, 2020, 2:52 a.m. UTC | #2
On Mon, Jun 29, 2020 at 01:49:26PM +0200, Bruno Thomsen wrote:
> This adds support for the OMNIA Flex Concentrator product
> from Kamstrup A/S. It's providing radio mesh communication
> infrastructure for smart electricity meters.
> 
> Kamstrup OMNIA is a modular and scalable smart grid platform.
> 
> Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
> ---
>  arch/arm/boot/dts/Makefile                    |   2 +
>  .../boot/dts/imx7d-flex-concentrator-mfg.dts  |  25 ++
>  arch/arm/boot/dts/imx7d-flex-concentrator.dts | 307 ++++++++++++++++++
>  3 files changed, 334 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx7d-flex-concentrator-mfg.dts
>  create mode 100644 arch/arm/boot/dts/imx7d-flex-concentrator.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index e6a1cac0bfc7..bf5c5d86a2e8 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -628,6 +628,8 @@ dtb-$(CONFIG_SOC_IMX7D) += \
>  	imx7d-colibri-emmc-aster.dtb \
>  	imx7d-colibri-emmc-eval-v3.dtb \
>  	imx7d-colibri-eval-v3.dtb \
> +	imx7d-flex-concentrator.dtb \
> +	imx7d-flex-concentrator-mfg.dtb \
>  	imx7d-mba7.dtb \
>  	imx7d-meerkat96.dtb \
>  	imx7d-nitrogen7.dtb \
> diff --git a/arch/arm/boot/dts/imx7d-flex-concentrator-mfg.dts b/arch/arm/boot/dts/imx7d-flex-concentrator-mfg.dts
> new file mode 100644
> index 000000000000..789f0837058f
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx7d-flex-concentrator-mfg.dts
> @@ -0,0 +1,25 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Device Tree Source for Kamstrup OMNIA Flex Concentrator in
> + * manufacturing/debugging mode.
> + *
> + * Copyright (C) 2020 Kamstrup A/S
> + * Author: Bruno Thomsen <bruno.thomsen@gmail.com>
> + */
> +
> +/dts-v1/;
> +
> +#include "imx7d-flex-concentrator.dts"
> +
> +/ {
> +	model = "Kamstrup OMNIA Flex Concentrator - Manufacturing";
> +	compatible = "kam,imx7d-flex-concentrator-mfg", "kam,imx7d-flex-concentrator", "fsl,imx7d";
> +
> +	chosen {
> +		stdout-path = &uart4;
> +	};
> +};
> +
> +&uart4 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/imx7d-flex-concentrator.dts b/arch/arm/boot/dts/imx7d-flex-concentrator.dts
> new file mode 100644
> index 000000000000..887135cca650
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx7d-flex-concentrator.dts
> @@ -0,0 +1,307 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Device Tree Source for Kamstrup OMNIA Flex Concentrator.
> + *
> + * Copyright (C) 2020 Kamstrup A/S
> + * Author: Bruno Thomsen <bruno.thomsen@gmail.com>
> + */
> +
> +/dts-v1/;
> +
> +#include "imx7d-tqma7.dtsi"
> +
> +/* Some I2C devices on TQMa7 SoM are not mounted */
> +/delete-node/ &m24c64;
> +/delete-node/ &ds1339;
> +
> +/ {
> +	model = "Kamstrup OMNIA Flex Concentrator";
> +	compatible = "kam,imx7d-flex-concentrator", "fsl,imx7d";
> +
> +	memory@80000000 {
> +		device_type = "memory";
> +		/* 1024 MB - TQMa7D board configuration */
> +		reg = <0x80000000 0x40000000>;
> +	};
> +
> +	reg_usb_otg2_vbus: regulator-usb-otg2-vbus {
> +		compatible = "regulator-fixed";
> +		regulator-name = "VBUS_USBOTG2";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +	};
> +
> +	reg_vref_1v8: regulator-vref-1v8 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "VCC1V8_REF";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +		regulator-always-on;
> +		vin-supply = <&sw2_reg>;
> +	};
> +
> +	/*
> +	 * Human Machine Interface consists of 4 dual red/green LEDs.
> +	 * hmi-a-green is controlled directly by the switch-mode power supply.
> +	 * hmi-a-red is not used.
> +	 */
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_leds>;
> +
> +		hmi-b-red {
> +			label = "hmi-b:red:provisioning";
> +			gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>;
> +			default-state = "off";
> +		};
> +
> +		hmi-b-green {
> +			label = "hmi-b:green:operation";
> +			gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
> +			default-state = "off";
> +		};
> +
> +		hmi-c-red {
> +			label = "hmi-c:red:mesh-error";
> +			gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
> +			default-state = "off";
> +		};
> +
> +		hmi-c-green {
> +			label = "hmi-c:green:mesh-activity";
> +			gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
> +			default-state = "off";
> +		};
> +
> +		hmi-d-red {
> +			label = "hmi-d:red:wan-down";
> +			gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;
> +			default-state = "off";
> +		};
> +
> +		hmi-d-green {
> +			label = "hmi-d:green:ipsec-up";
> +			gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>;
> +			default-state = "off";
> +		};
> +	};
> +
> +	/*
> +	 * Errata e10574 board restart workaround.
> +	 */
> +	gpio-restart {
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_restart>;
> +		compatible = "gpio-restart";
> +		gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
> +		priority = <200>;
> +	};
> +};
> +
> +/*
> + * External watchdog feature provided by pcf2127.
> + */
> +&wdog1 {

Please keep these labeling nodes sort alphabetically.

> +	status = "disabled";
> +};
> +
> +/*
> + * Detection signals for internal USB modules.
> + * Used for robust USB plug and play handling such as USB downstream port
> + * power-cycle and USB hub reset in case of misbehaving or crashed modules.
> + *
> + * SMPS - AC input monitor based on zero crossing.
> + * Used for last gasp notification.
> + */
> +&gpio3 {
> +	gpio-line-names = "", "", "", "", "", "", "", "",
> +	"", "", "", "", "smps-ac-monitor", "", "usb-hub-reset", "",
> +	"", "", "", "", "", "", "", "",
> +	"", "module-b-detection", "", "module-a-detection", "", "", "", "";
> +};
> +
> +/*
> + * Tamper IRQ trigger timestamp reading.
> + * Used for sealed cover opened notification.
> + */
> +&gpio5 {
> +	gpio-line-names = "", "", "", "", "", "", "", "",
> +	"", "", "", "", "rtc-tamper-irq", "", "", "",
> +	"", "", "", "", "", "", "", "",
> +	"", "", "", "", "", "", "", "";
> +};
> +
> +/*
> + * Analog signals
> + * ADC1_IN0: SMPS - 5V output monitor (voltage divider: 1/0.2806)
> + */
> +&adc1 {
> +	vref-supply = <&reg_vref_1v8>;
> +	status = "okay";
> +};
> +
> +&ecspi2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi2>;
> +	num-chipselects = <1>;
> +	cs-gpios = <&gpio4 23 GPIO_ACTIVE_LOW>;
> +	status = "okay";
> +
> +	pcf2127: rtc@0 {
> +		compatible = "nxp,pcf2127";
> +		reg = <0>;
> +		spi-max-frequency = <2000000>;
> +	};
> +};
> +
> +&ecspi4 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi4>;
> +	num-chipselects = <1>;
> +	cs-gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
> +	status = "okay";
> +
> +	/*
> +	 * ST chip maximum SPI clock frequency is 33 MHz.
> +	 *
> +	 * TCG specification - Section 6.4.1 Clocking:
> +	 * TPM shall support a SPI clock frequency range of 10-24 MHz.
> +	 */
> +	st33htph: tpm-tis@0 {
> +		compatible = "st,st33htpm-spi", "tcg,tpm_tis-spi";
> +		reg = <0>;
> +		spi-max-frequency = <24000000>;
> +	};
> +};
> +
> +&fec1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_enet1>;
> +	phy-mode = "rmii";
> +	phy-reset-gpios = <&gpio7 15 GPIO_ACTIVE_LOW>;
> +	phy-reset-duration = <100>;
> +	phy-reset-post-delay = <1000>;

These properties are deprecated.

> +	phy-handle = <&ethphy>;
> +	status = "okay";
> +
> +	mdio {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		ethphy: ethernet-phy@1 {
> +			/* Micrel KSZ8051RNLV */
> +			compatible = "ethernet-phy-ieee802.3-c22";
> +			reg = <1>;
> +		};
> +	};
> +};
> +
> +&iomuxc {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_misc>;
> +
> +	pinctrl_ecspi2: ecspi2grp {
> +		fsl,pins = <
> +			MX7D_PAD_ECSPI2_MISO__ECSPI2_MISO		0x7c /* X2-15 */
> +			MX7D_PAD_ECSPI2_MOSI__ECSPI2_MOSI		0x74 /* X2-18 */
> +			MX7D_PAD_ECSPI2_SCLK__ECSPI2_SCLK		0x74 /* X2-13 */
> +			MX7D_PAD_ECSPI2_SS0__GPIO4_IO23			0x74 /* X2-20 */
> +			/* RTC - Tamper IRQ */
> +			MX7D_PAD_SD2_CLK__GPIO5_IO12			0x3c /* X1-92 */
> +		>;
> +	};
> +
> +	pinctrl_ecspi4: ecspi4grp {
> +		fsl,pins = <
> +			MX7D_PAD_LCD_CLK__ECSPI4_MISO			0x7c /* X2-72 */
> +			MX7D_PAD_LCD_ENABLE__ECSPI4_MOSI		0x74 /* X2-68 */
> +			MX7D_PAD_LCD_HSYNC__ECSPI4_SCLK			0x74 /* X2-76 */
> +			MX7D_PAD_LCD_VSYNC__GPIO3_IO3			0x74 /* X2-78 */
> +		>;
> +	};
> +
> +	pinctrl_leds: ledsgrp {
> +		fsl,pins = <
> +			MX7D_PAD_LCD_DATA01__GPIO3_IO6			0x14 /* X2-82 */
> +			MX7D_PAD_EPDC_BDR0__GPIO2_IO28			0x14 /* X1-82 */
> +			MX7D_PAD_EPDC_BDR1__GPIO2_IO29			0x14 /* X1-84 */
> +			MX7D_PAD_EPDC_PWR_COM__GPIO2_IO30		0x14 /* X1-86 */
> +			MX7D_PAD_EPDC_PWR_STAT__GPIO2_IO31		0x14 /* X1-88 */
> +			MX7D_PAD_UART2_TX_DATA__GPIO4_IO3		0x14 /* X1-90 */
> +		>;
> +	};
> +
> +	pinctrl_enet1: enet1grp {

Please keep these pinctrl entries sort alphabetically.

Shawn

> +		fsl,pins = <
> +			MX7D_PAD_GPIO1_IO10__ENET1_MDIO			0x03 /* X2-48 */
> +			MX7D_PAD_GPIO1_IO11__ENET1_MDC			0x03 /* X2-46 */
> +			MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0	0x71 /* X2-53 */
> +			MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1	0x71 /* X2-55 */
> +			MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL	0x71 /* X2-61 */
> +			MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0	0x79 /* X2-56 */
> +			MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1	0x79 /* X2-58 */
> +			MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL	0x79 /* X2-64 */
> +			MX7D_PAD_ENET1_RGMII_RXC__ENET1_RX_ER		0x73 /* X2-52 */
> +			/* PHY reset: SION, 100kPU, SRE_FAST, DSE_X1 */
> +			MX7D_PAD_ENET1_COL__GPIO7_IO15		0x40000070 /* X1-96 */
> +			/* Clock from PHY to MAC */
> +			MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1	0x40000073 /* X3-4 */
> +		>;
> +	};
> +
> +	pinctrl_misc: miscgrp {
> +		fsl,pins = <
> +			/* Module A detection (low = present) */
> +			MX7D_PAD_LCD_DATA22__GPIO3_IO27			0x7c /* X2-105 */
> +			/* Module B detection (low = present) */
> +			MX7D_PAD_LCD_DATA20__GPIO3_IO25			0x7c /* X2-103 */
> +			/* SMPS - AC input monitor (high = failure) */
> +			MX7D_PAD_LCD_DATA07__GPIO3_IO12			0x7c /* X2-88 */
> +			/* USB - Hub reset */
> +			MX7D_PAD_LCD_DATA09__GPIO3_IO14			0x74 /* X2-92 */
> +		>;
> +	};
> +
> +	pinctrl_uart4: uart4grp {
> +		fsl,pins = <
> +			MX7D_PAD_SAI2_TX_SYNC__UART4_DCE_RX	0x7e /* X3-14 */
> +			MX7D_PAD_SAI2_TX_BCLK__UART4_DCE_TX	0x76 /* X3-16 */
> +		>;
> +	};
> +
> +	pinctrl_restart: restartgrp {
> +		fsl,pins = <
> +			MX7D_PAD_ENET1_TX_CLK__GPIO7_IO12	0x74 /* X1-94 */
> +		>;
> +	};
> +};
> +
> +&iomuxc_lpsr {
> +	pinctrl_usbotg2: usbotg2grp {
> +		fsl,pins = <
> +			MX7D_PAD_LPSR_GPIO1_IO06__USB_OTG2_OC	0x5c /* X3-11 */
> +			MX7D_PAD_LPSR_GPIO1_IO07__GPIO1_IO7	0x59 /* X3-9 */
> +		>;
> +	};
> +
> +};
> +
> +&usbotg2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usbotg2>;
> +	vbus-supply = <&reg_usb_otg2_vbus>;
> +	srp-disable;
> +	hnp-disable;
> +	adp-disable;
> +	dr_mode = "host";
> +	status = "okay";
> +};
> +
> +&uart4 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart4>;
> +	assigned-clocks = <&clks IMX7D_UART4_ROOT_SRC>;
> +	assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
> +};
> -- 
> 2.26.2
>
Shawn Guo July 13, 2020, 2:56 a.m. UTC | #3
On Mon, Jun 29, 2020 at 01:49:27PM +0200, Bruno Thomsen wrote:
> Add myself as reviewer of device trees for Kamstrup
> Concentrators.
> 
> Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
> ---
>  MAINTAINERS | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 496fd4eafb68..97fc112309af 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -9282,6 +9282,11 @@ S:	Maintained
>  F:	Documentation/hwmon/k8temp.rst
>  F:	drivers/hwmon/k8temp.c
>  
> +KAMSTRUP CONCENTRATORS
> +R:	Bruno Thomsen <bruno.thomsen@gmail.com>
> +S:	Maintained
> +F:	arch/arm/boot/dts/imx7d-flex-concentrator*.dts
> +

I guess get_maintainer.pl should list you for patches touching the
files, so it's not really required?  I'm worried about that MAINTAINERS
file will get bloated quickly if we patch it for every single DTS
file.

Shawn

>  KASAN
>  M:	Andrey Ryabinin <aryabinin@virtuozzo.com>
>  R:	Alexander Potapenko <glider@google.com>
> -- 
> 2.26.2
>
Shawn Guo July 13, 2020, 7:13 a.m. UTC | #4
On Sun, Jul 12, 2020 at 10:22:50PM -0700, Joe Perches wrote:
> Right now, a little less than half of the .dts* files
> have an author or other email address in them.
> 
> $ git ls-files arch/arm/boot/dts/*.dts* | wc -l
> 2105
> 
> $ git grep -P --name-only '<\S+@\S+>' arch/arm/boot/dts/*.dts* | wc -l
> 997
> 
> Some have multiple email addresses:
> 
> $ git grep -P '<\S+@\S+>' arch/arm/boot/dts/*.dts* | wc -l
> 1240
> 
> (and there are a few false positives in that regex)
> 
> I suppose that get_maintainer could handle .dts* files
> the same way .yaml files are handled so any email address
> in the file is added to patches that touch the file.
> 
> This is the commit that added the .yaml file handling:
> 
> commit 0c78c013762142bfe8fce34e7e968f83f0a4b891
> Author: Joe Perches <joe@perches.com>
> Date:   Thu Jun 4 16:50:01 2020 -0700
> 
>     get_maintainer: add email addresses from .yaml files
>     
>     .yaml files can contain maintainer/author addresses and it seems unlikely
>     or unnecessary that individual MAINTAINER file section entries for each
>     .yaml file will be created.
>     
>     So add the email addresses found in .yaml files to the default
>     get_maintainer output.
>     
>     The email addresses are marked with "(in file)" when using the "--roles"
>     or "--rolestats" options.
> 
> So something like:

Yeah, that's helpful.

> ---
>  scripts/get_maintainer.pl | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
> index 484d2fbf5921..4c3c69d7bed0 100755
> --- a/scripts/get_maintainer.pl
> +++ b/scripts/get_maintainer.pl
> @@ -436,7 +436,7 @@ sub maintainers_in_file {
>  
>      return if ($file =~ m@\bMAINTAINERS$@);
>  
> -    if (-f $file && ($email_file_emails || $file =~ /\.yaml$/)) {
> +    if (-f $file && ($email_file_emails || $file =~ /\.(?:yaml|dtsi?)$/)) {

It should cover .dts file too?

Shawn

>  	open(my $f, '<', $file)
>  	    or die "$P: Can't open $file: $!\n";
>  	my $text = do { local($/) ; <$f> };
> 
>
Joe Perches July 13, 2020, 7:26 a.m. UTC | #5
On Mon, 2020-07-13 at 15:13 +0800, Shawn Guo wrote:
> On Sun, Jul 12, 2020 at 10:22:50PM -0700, Joe Perches wrote:
[]
> > diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
[]
> > @@ -436,7 +436,7 @@ sub maintainers_in_file {
> >  
> >      return if ($file =~ m@\bMAINTAINERS$@);
> >  
> > -    if (-f $file && ($email_file_emails || $file =~ /\.yaml$/)) {
> > +    if (-f $file && ($email_file_emails || $file =~ /\.(?:yaml|dtsi?)$/)) {
> 
> It should cover .dts file too?

It does as dtsi? means the i is optional.
Bruno Thomsen July 13, 2020, 7:31 a.m. UTC | #6
Den man. 13. jul. 2020 kl. 09.26 skrev Joe Perches <joe@perches.com>:
>
> On Mon, 2020-07-13 at 15:13 +0800, Shawn Guo wrote:
> > On Sun, Jul 12, 2020 at 10:22:50PM -0700, Joe Perches wrote:
> []
> > > diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
> []
> > > @@ -436,7 +436,7 @@ sub maintainers_in_file {
> > >
> > >      return if ($file =~ m@\bMAINTAINERS$@);
> > >
> > > -    if (-f $file && ($email_file_emails || $file =~ /\.yaml$/)) {
> > > +    if (-f $file && ($email_file_emails || $file =~ /\.(?:yaml|dtsi?)$/)) {
> >
> > It should cover .dts file too?
>
> It does as dtsi? means the i is optional.

It sounds like a good idea for handling dts reviewers.

Maybe we could also update script/checkpatch.pl to ignore
new dts/dtsi files and not suggest updating MAINTAINERS
file.

/Bruno
Bruno Thomsen July 14, 2020, 10:03 a.m. UTC | #7
Den man. 13. jul. 2020 kl. 04.52 skrev Shawn Guo <shawnguo@kernel.org>:
>
> On Mon, Jun 29, 2020 at 01:49:26PM +0200, Bruno Thomsen wrote:
> > +&fec1 {
> > +     pinctrl-names = "default";
> > +     pinctrl-0 = <&pinctrl_enet1>;
> > +     phy-mode = "rmii";
> > +     phy-reset-gpios = <&gpio7 15 GPIO_ACTIVE_LOW>;
> > +     phy-reset-duration = <100>;
> > +     phy-reset-post-delay = <1000>;
>
> These properties are deprecated.

Thanks for review Shawn.

I have not yet been successful in converting the deprecated properties
to generic phy properties, so hoping I could get a hit.

Kernel error messages:
mdio_bus 30be0000.ethernet-1: MDIO device at address 1 is missing.
fec 30be0000.ethernet eth0: Unable to connect to phy

Updated device tree section:
&fec1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet1>;
        phy-mode = "rmii";
        phy-handle = <&ethphy>;
        status = "okay";

        mdio {
                #address-cells = <1>;
                #size-cells = <0>;

                ethphy: ethernet-phy@1 {
                        /* Micrel KSZ8051RNLV */
                        compatible = "ethernet-phy-ieee802.3-c22";
                        reg = <1>;
                        max-speed = <100>;

                        reset-assert-us = <100000>;
                        reset-deassert-us = <1000000>;
                        reset-gpios = <&gpio7 15 GPIO_ACTIVE_LOW>;
                };
        };
};

/Bruno

> > +     phy-handle = <&ethphy>;
> > +     status = "okay";
> > +
> > +     mdio {
> > +             #address-cells = <1>;
> > +             #size-cells = <0>;
> > +             ethphy: ethernet-phy@1 {
> > +                     /* Micrel KSZ8051RNLV */
> > +                     compatible = "ethernet-phy-ieee802.3-c22";
> > +                     reg = <1>;
> > +             };
> > +     };
> > +};
Fabio Estevam July 14, 2020, 11:54 a.m. UTC | #8
Hi Bruno,

On Tue, Jul 14, 2020 at 7:03 AM Bruno Thomsen <bruno.thomsen@gmail.com> wrote:

> I have not yet been successful in converting the deprecated properties
> to generic phy properties, so hoping I could get a hit.
>
> Kernel error messages:
> mdio_bus 30be0000.ethernet-1: MDIO device at address 1 is missing.

Please double-check whether 1 is the correct address for the KSZ8051
Ethernet PHY as per your schematics.

Are there external pull-up/pull-down resistors for strapping the
various configuration pins for the PHY? Or are the pull-up/pull-down
provided by the i.MX7D pins?

If there are no external pull-ups, please make sure to configure the
pinctrl_enet1 accordingly, so that the Ethernet PHY address can be
properly configured and then mdio_bus driver can find it at the
correct address.

Please check in arch/arm/boot/dts/imx6qdl-sr-som.dtsi for an example
on how to configure the Ethernet PHY pin strapping via iMX IOMUX.
Bruno Thomsen July 15, 2020, 2:21 p.m. UTC | #9
Den tir. 14. jul. 2020 kl. 13.54 skrev Fabio Estevam <festevam@gmail.com>:
>
> Hi Bruno,
>
> On Tue, Jul 14, 2020 at 7:03 AM Bruno Thomsen <bruno.thomsen@gmail.com> wrote:
>
> > I have not yet been successful in converting the deprecated properties
> > to generic phy properties, so hoping I could get a hit.
> >
> > Kernel error messages:
> > mdio_bus 30be0000.ethernet-1: MDIO device at address 1 is missing.
>
> Please double-check whether 1 is the correct address for the KSZ8051
> Ethernet PHY as per your schematics.

Hi Fabio,

Thanks for the hints.

Yes, the address is correct and configured with external resistors,
but just realised that I wrote the wrong device name in the comment,
it's actually KSZ8081RNB.

Ethernet has been working with multiple mainline kernel versions
(latest being 5.7.8)
for the last year or so when using the DTS in patch. So I am pretty sure
hardware and setup of mux is correct'ish.

Kernel trace from patch version:
kernel: Micrel KSZ8081 or KSZ8091 30be0000.ethernet-1:01: attached PHY driver
 [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=30be0000.ethernet-1:01, irq=POLL)

Error first occurs when switching from fec phy reset to mdio phy reset
code path,
I understand that the fec phy reset is obsolete as phy properties was wrongly
added to the mac and of course should be part of the phy (separate chip).

When debugging it I end up with the get_phy_device() call not working
inside of_mdiobus_register_phy().

Workaround at the moment seems to be extending compatible with
"ethernet-phy-id0022.1560" to disable auto detection of phy type,
and then Ethernet works again. At least the same PHY driver trace
can be found and full transmission speed can be used without packet
errors/loss.

> Are there external pull-up/pull-down resistors for strapping the
> various configuration pins for the PHY? Or are the pull-up/pull-down
> provided by the i.MX7D pins?

Config strapping is done with external resistors.

> If there are no external pull-ups, please make sure to configure the
> pinctrl_enet1 accordingly, so that the Ethernet PHY address can be
> properly configured and then mdio_bus driver can find it at the
> correct address.
>
> Please check in arch/arm/boot/dts/imx6qdl-sr-som.dtsi for an example
> on how to configure the Ethernet PHY pin strapping via iMX IOMUX.

Thanks, good examples can be hard to find.

/Bruno
Rob Herring July 15, 2020, 8:26 p.m. UTC | #10
On Mon, 29 Jun 2020 13:49:25 +0200, Bruno Thomsen wrote:
> Add Kamstrup flex concentrator compatibles to the schema so we can
> make use of them for the validation.
> 
> Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
> ---
>  Documentation/devicetree/bindings/arm/fsl.yaml | 2 ++
>  1 file changed, 2 insertions(+)
> 

Acked-by: Rob Herring <robh@kernel.org>
Fabio Estevam July 15, 2020, 8:28 p.m. UTC | #11
Hi Bruno,

On Wed, Jul 15, 2020 at 11:22 AM Bruno Thomsen <bruno.thomsen@gmail.com> wrote:

> Thanks for the hints.
>
> Yes, the address is correct and configured with external resistors,
> but just realised that I wrote the wrong device name in the comment,
> it's actually KSZ8081RNB.
>
> Ethernet has been working with multiple mainline kernel versions
> (latest being 5.7.8)
> for the last year or so when using the DTS in patch. So I am pretty sure
> hardware and setup of mux is correct'ish.
>
> Kernel trace from patch version:
> kernel: Micrel KSZ8081 or KSZ8091 30be0000.ethernet-1:01: attached PHY driver
>  [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=30be0000.ethernet-1:01, irq=POLL)
>
> Error first occurs when switching from fec phy reset to mdio phy reset
> code path,
> I understand that the fec phy reset is obsolete as phy properties was wrongly
> added to the mac and of course should be part of the phy (separate chip).
>
> When debugging it I end up with the get_phy_device() call not working
> inside of_mdiobus_register_phy().

It would be nice if you could report this to the Ethernet PHY folks at
netdev@vger.kernel.org
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml
index 05906e291e38..66627b272e40 100644
--- a/Documentation/devicetree/bindings/arm/fsl.yaml
+++ b/Documentation/devicetree/bindings/arm/fsl.yaml
@@ -299,6 +299,8 @@  properties:
           - enum:
               - fsl,imx7d-sdb             # i.MX7 SabreSD Board
               - fsl,imx7d-sdb-reva        # i.MX7 SabreSD Rev-A Board
+              - kam,imx7d-flex-concentrator       # Kamstrup OMNIA Flex Concentrator
+              - kam,imx7d-flex-concentrator-mfg   # Kamstrup OMNIA Flex Concentrator in manufacturing mode
               - novtech,imx7d-meerkat96   # i.MX7 Meerkat96 Board
               - technexion,imx7d-pico-dwarf   # TechNexion i.MX7D Pico-Dwarf
               - technexion,imx7d-pico-hobbit  # TechNexion i.MX7D Pico-Hobbit