Skip to contentSkip to conversation

ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

PATCH New Michael Trimarchi 3 participants 30 messages Nov 15, 2015 – Feb 1, 2016

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  36 +++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 372 +++++++++++++++++++++++++++++++
 3 files changed, 409 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7c4706d 100644
@@ -284,6 +284,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6dl-gw551x.dtb \
 	imx6dl-gw552x.dtb \
 	imx6dl-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6dl-nitrogen6x.dtb \
 	imx6dl-phytec-pbab01.dtb \
 	imx6dl-rex-basic.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +36 -0
new file mode 100644
index 0000000..cded07d
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+	cpus {
+		cpu at 0 {
+			operating-points = <
+				/* kHz    uV */
+				792000  1150000
+				396000  1150000
+			>;
+
+			fsl,soc-operating-points = <
+				/* ARM kHz  SOC-PU uV */
+				792000        1175000
+				396000        1175000
+			>;
+		};
+	};
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +372 -0

372 lines not on this page · raw message

Signature · 1 line
2.6.3
#1 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Am Sonntag, den 15.11.2015, 11:54 +0100 schrieb Michael Trimarchi:

Quoted 16 lines

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  36 +++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 372 +++++++++++++++++++++++++++++++
 3 files changed, 409 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +0 -0
index bb8fa02..7c4706d 100644

arch/arm/boot/dts/Makefile dtb-$(CONFIG_SOC_IMX6Q) += \ · line 287

Quoted 4 lines
arch/arm/boot/dts/Makefile +1 -0
@@ -284,6 +284,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6dl-gw551x.dtb \
 	imx6dl-gw552x.dtb \
 	imx6dl-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \

Alphabetical ordering, please. Quad boards must not be added in between DL boards.

Quoted 29 lines
arch/arm/boot/dts/Makefile +0 -0
 	imx6dl-nitrogen6x.dtb \
 	imx6dl-phytec-pbab01.dtb \
 	imx6dl-rex-basic.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +20 -0
new file mode 100644
index 0000000..cded07d
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+	cpus {
+		cpu at 0 {
+			operating-points = <
+				/* kHz    uV */

arch/arm/boot/dts/imx6q-icore-rqs.dts line 30

Quoted 10 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +10 -0
+				792000  1150000
+				396000  1150000
+			>;
+
+			fsl,soc-operating-points = <
+				/* ARM kHz  SOC-PU uV */
+				792000        1175000
+				396000        1175000
+			>;
+		};

Why do you need to edit the OPPS here? Just to fix them on a specific voltage? Why?

Quoted 82 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+	};
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +70 -0
new file mode 100644
index 0000000..59c416e
@@ -0,0 +1,372 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	regulators {
+		compatible = "simple-bus";
+
+		reg_usb_h1_vbus: usb_h1_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_h1_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+		};
+
+		reg_usb_otg_vbus: usb_otg_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_otg_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-always-on;
+		};
+
+		reg_3p3v: 3p3v {
+			compatible = "regulator-fixed";
+			regulator-name = "3P3V";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+		};
+
+		reg_2p5v: 2p5v {
+			compatible = "regulator-fixed";
+			regulator-name = "2P5V";
+			regulator-min-microvolt = <2500000>;
+			regulator-max-microvolt = <2500000>;
+			regulator-always-on;
+		};
+
+		reg_1p8v: 1p8v {
+			compatible = "regulator-fixed";
+			regulator-name = "1P8V";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-always-on;
+		};
+
+		reg_sd4_vmmc: sd4_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD4_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 80

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+
+		reg_sd3_vmmc: sd3_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD3_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

A lot of those regulators look like they don't need to be always-on.

Also the use of a simple-bus, while giving some structure to the DT is considered bad style as it doesn't reflect any real hardware.

Quoted 7 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +7 -0
+	};
+
+	usb_hub: usb-hub {
+		compatible = "smsc,usb3503a";
+		clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+		clock-names = "refclk";
+	};

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 97

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+};
+
+&iomuxc {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_hog>;
+
+	imx6qdl-icore-rqs {
+		pinctrl_hog: hoggrp {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059		/* PCIe Reset */

Add a pcie pincontrol for this.

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 99

Quoted 2 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +2 -0
+				MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059		/* SD3_CD */
+				MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059		/* SD3_PWR */

Add to USDHC3 pincontrol.

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 100

Quoted 1 line
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +1 -0
+				MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059		/* HUB USB Reset */

Add to USB pincontrol where the hub is conntected.

Quoted 178 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +178 -0
+			>;
+		};
+
+		pinctrl_audmux_4: audmux-4 {
+			fsl,pins = <
+				MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD 0x110b0
+				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS  0x130b0
+				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+			>;
+		};
+
+		pinctrl_usdhc1_1: usdhc1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+			>;
+		};
+
+		pinctrl_usdhc3_2: usdhc3grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+			>;
+		};
+
+		pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+			>;
+		};
+
+		pinctrl_usdhc4_1: usdhc4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+			>;
+		};
+
+		pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+			>;
+		};
+
+		pinctrl_enet_3: enetgrp-3 {
+			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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+			>;
+		};
+
+		pinctrl_i2c1_1: i2c1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c2_2: i2c2grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c3_4: i2c3grp-4 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+				MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+				MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+			>;
+		};
+
+		pinctrl_uart4_1: uart4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+			>;
+		};
+
+		pinctrl_usbotg_1: usbotggrp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
+			>;
+		};
+
+		pinctrl_usbotg_2: usbotggrp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+			>;
+		};
+	};
+};
+
+&clks {
+	assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_audmux_4>;
+	status = "okay";
+};
+
+&fec {
+	pinctrl-names = "default";

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 288

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+	pinctrl-0 = <&pinctrl_enet_3>;
+	phy-mode = "rgmii";
+	status = "okay";
+};
+
+&gpc {
+	fsl,cpu_pupscr_sw2iso = <0xf>;
+	fsl,cpu_pupscr_sw = <0xf>;
+	fsl,cpu_pdnscr_iso2sw = <0x1>;
+	fsl,cpu_pdnscr_iso = <0x1>;

Those properties are not present in the mainline binding. Remove.

Quoted 84 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +84 -0
+};
+
+&i2c1 {
+	status = "okay";
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1_1>;
+
+};
+
+&i2c2 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2_2>;
+	status = "okay";
+
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3_4>;
+	status = "okay";
+};
+
+&pcie {
+	status = "okay";
+};
+
+&ssi1 {
+	fsl,mode = "i2s-slave";
+	status = "okay";
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4_1>;
+	status = "okay";
+};
+
+&usbh1 {
+	vbus-supply = <&reg_usb_h1_vbus>;
+	disable-over-current;
+	clocks = <&clks IMX6QDL_CLK_USBOH3>;
+	status = "okay";
+};
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_2>;
+	disable-over-current;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1_1>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc3_2>;
+	pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+	vmcc-supply = <&reg_sd3_vmmc>;
+	bus-witdh=<4>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc4_1>;
+	pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+	vmcc-supply = <&reg_sd4_vmmc>;
+	bus-witdh=<8>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |
#2 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

Quoted 12 lines · Lucas Stach

Am Sonntag, den 15.11.2015, 11:54 +0100 schrieb Michael Trimarchi:

Quoted 11 lines

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  36 +++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 372 +++++++++++++++++++++++++++++++
 3 files changed, 409 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
Quoted 13 lines

arch/arm/boot/dts/Makefile dtb-$(CONFIG_SOC_IMX6Q) += \ · line 287

Quoted 9 lines
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7c4706d 100644
@@ -284,6 +284,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6dl-gw551x.dtb \
 	imx6dl-gw552x.dtb \
 	imx6dl-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \

Alphabetical ordering, please. Quad boards must not be added in between DL boards.

ok

Quoted 33 lines
Quoted 33 lines
arch/arm/boot/dts/Makefile +0 -0
 	imx6dl-nitrogen6x.dtb \
 	imx6dl-phytec-pbab01.dtb \
 	imx6dl-rex-basic.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +24 -0
new file mode 100644
index 0000000..cded07d
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+	cpus {
+		cpu at 0 {
+			operating-points = <
+				/* kHz    uV */
+				792000  1150000
+				396000  1150000
+			>;
+
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 30

Quoted 6 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+			fsl,soc-operating-points = <
+				/* ARM kHz  SOC-PU uV */
+				792000        1175000
+				396000        1175000
+			>;
+		};

Why do you need to edit the OPPS here? Just to fix them on a specific voltage? Why?

Board has no pmu regulator

Quoted 95 lines
Quoted 82 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+	};
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +70 -0
new file mode 100644
index 0000000..59c416e
@@ -0,0 +1,372 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	regulators {
+		compatible = "simple-bus";
+
+		reg_usb_h1_vbus: usb_h1_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_h1_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+		};
+
+		reg_usb_otg_vbus: usb_otg_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_otg_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-always-on;
+		};
+
+		reg_3p3v: 3p3v {
+			compatible = "regulator-fixed";
+			regulator-name = "3P3V";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+		};
+
+		reg_2p5v: 2p5v {
+			compatible = "regulator-fixed";
+			regulator-name = "2P5V";
+			regulator-min-microvolt = <2500000>;
+			regulator-max-microvolt = <2500000>;
+			regulator-always-on;
+		};
+
+		reg_1p8v: 1p8v {
+			compatible = "regulator-fixed";
+			regulator-name = "1P8V";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-always-on;
+		};
+
+		reg_sd4_vmmc: sd4_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD4_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 80

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+
+		reg_sd3_vmmc: sd3_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD3_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

A lot of those regulators look like they don't need to be always-on.

Quoted 3 lines

Also the use of a simple-bus, while giving some structure to the DT is considered bad style as it doesn't reflect any real hardware.

I will check how other boards do it

Quoted 11 lines
Quoted 11 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +11 -0
+	};
+
+	usb_hub: usb-hub {
+		compatible = "smsc,usb3503a";
+		clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+		clock-names = "refclk";
+	};
+};
+
+&iomuxc {
+	pinctrl-names = "default";
Quoted 8 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 97

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+	pinctrl-0 = <&pinctrl_hog>;
+
+	imx6qdl-icore-rqs {
+		pinctrl_hog: hoggrp {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059		/* PCIe Reset */

Add a pcie pincontrol for this.

ok

Quoted 4 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 99

Quoted 2 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +2 -0
+				MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059		/* SD3_CD */
+				MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059		/* SD3_PWR */

Add to USDHC3 pincontrol.

ok

Quoted 3 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 100

Quoted 1 line
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +1 -0
+				MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059		/* HUB USB Reset */

Add to USB pincontrol where the hub is conntected.

I can put this pin in the hub definition

Quoted 182 lines
Quoted 182 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +182 -0
+			>;
+		};
+
+		pinctrl_audmux_4: audmux-4 {
+			fsl,pins = <
+				MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD 0x110b0
+				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS  0x130b0
+				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+			>;
+		};
+
+		pinctrl_usdhc1_1: usdhc1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+			>;
+		};
+
+		pinctrl_usdhc3_2: usdhc3grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+			>;
+		};
+
+		pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+			>;
+		};
+
+		pinctrl_usdhc4_1: usdhc4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+			>;
+		};
+
+		pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+			>;
+		};
+
+		pinctrl_enet_3: enetgrp-3 {
+			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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+			>;
+		};
+
+		pinctrl_i2c1_1: i2c1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c2_2: i2c2grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c3_4: i2c3grp-4 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+				MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+				MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+			>;
+		};
+
+		pinctrl_uart4_1: uart4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+			>;
+		};
+
+		pinctrl_usbotg_1: usbotggrp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
+			>;
+		};
+
+		pinctrl_usbotg_2: usbotggrp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+			>;
+		};
+	};
+};
+
+&clks {
+	assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_audmux_4>;
+	status = "okay";
+};
+
+&fec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_enet_3>;
+	phy-mode = "rgmii";
+	status = "okay";
+};
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 288

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+
+&gpc {
+	fsl,cpu_pupscr_sw2iso = <0xf>;
+	fsl,cpu_pupscr_sw = <0xf>;
+	fsl,cpu_pdnscr_iso2sw = <0x1>;
+	fsl,cpu_pdnscr_iso = <0x1>;

Those properties are not present in the mainline binding. Remove.

Let me remove them

Quoted 89 lines
Quoted 84 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +84 -0
+};
+
+&i2c1 {
+	status = "okay";
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1_1>;
+
+};
+
+&i2c2 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2_2>;
+	status = "okay";
+
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3_4>;
+	status = "okay";
+};
+
+&pcie {
+	status = "okay";
+};
+
+&ssi1 {
+	fsl,mode = "i2s-slave";
+	status = "okay";
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4_1>;
+	status = "okay";
+};
+
+&usbh1 {
+	vbus-supply = <&reg_usb_h1_vbus>;
+	disable-over-current;
+	clocks = <&clks IMX6QDL_CLK_USBOH3>;
+	status = "okay";
+};
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_2>;
+	disable-over-current;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1_1>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc3_2>;
+	pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+	vmcc-supply = <&reg_sd3_vmmc>;
+	bus-witdh=<4>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc4_1>;
+	pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+	vmcc-supply = <&reg_sd4_vmmc>;
+	bus-witdh=<8>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#3 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Am Montag, den 16.11.2015, 12:29 +0100 schrieb Michael Trimarchi:

Quoted 15 lines

Hi

Quoted 12 lines · Lucas Stach

Am Sonntag, den 15.11.2015, 11:54 +0100 schrieb Michael Trimarchi:

Quoted 11 lines

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  36 +++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 372 +++++++++++++++++++++++++++++++
 3 files changed, 409 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi

[...]

Quoted 40 lines
Quoted 30 lines
Quoted 30 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +24 -0
new file mode 100644
index 0000000..cded07d
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+	cpus {
+		cpu at 0 {
+			operating-points = <
+				/* kHz    uV */
+				792000  1150000
+				396000  1150000
+			>;
+
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 30

Quoted 6 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+			fsl,soc-operating-points = <
+				/* ARM kHz  SOC-PU uV */
+				792000        1175000
+				396000        1175000
+			>;
+		};

Why do you need to edit the OPPS here? Just to fix them on a specific voltage? Why?

Quoted 2 lines

Board has no pmu regulator

The default i.MX6 configuration (see imx6q.dtsi) is to connect the ARM and SOC domain to the internal LDOs, so voltage scaling is not dependent on an external PMIC being present.

Quoted 95 lines
Quoted 95 lines
Quoted 82 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+	};
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +70 -0
new file mode 100644
index 0000000..59c416e
@@ -0,0 +1,372 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	regulators {
+		compatible = "simple-bus";
+
+		reg_usb_h1_vbus: usb_h1_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_h1_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+		};
+
+		reg_usb_otg_vbus: usb_otg_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_otg_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-always-on;
+		};
+
+		reg_3p3v: 3p3v {
+			compatible = "regulator-fixed";
+			regulator-name = "3P3V";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+		};
+
+		reg_2p5v: 2p5v {
+			compatible = "regulator-fixed";
+			regulator-name = "2P5V";
+			regulator-min-microvolt = <2500000>;
+			regulator-max-microvolt = <2500000>;
+			regulator-always-on;
+		};
+
+		reg_1p8v: 1p8v {
+			compatible = "regulator-fixed";
+			regulator-name = "1P8V";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-always-on;
+		};
+
+		reg_sd4_vmmc: sd4_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD4_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 80

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+
+		reg_sd3_vmmc: sd3_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD3_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

A lot of those regulators look like they don't need to be always-on.

Quoted 6 lines
Quoted 3 lines

Also the use of a simple-bus, while giving some structure to the DT is considered bad style as it doesn't reflect any real hardware.

I will check how other boards do it

Note that there are a lot of bad examples still around. What you need to do is essentially just remove the additional DT level of the regulator bus. The regulators are board components that belong to the same level as the usb hub below, or the memory node above.

Regards,
Lucas

Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |
#4 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

Quoted 57 lines · Lucas Stach

Am Montag, den 16.11.2015, 12:29 +0100 schrieb Michael Trimarchi:

Quoted 15 lines

Hi

Quoted 12 lines · Lucas Stach

Am Sonntag, den 15.11.2015, 11:54 +0100 schrieb Michael Trimarchi:

Quoted 11 lines

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  36 +++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 372 +++++++++++++++++++++++++++++++
 3 files changed, 409 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi

[...]

Quoted 40 lines
Quoted 39 lines
Quoted 26 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +20 -0
new file mode 100644
index 0000000..cded07d
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+	cpus {
+		cpu at 0 {
+			operating-points = <
+				/* kHz    uV */

arch/arm/boot/dts/imx6q-icore-rqs.dts line 30

Quoted 10 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +10 -0
+				792000  1150000
+				396000  1150000
+			>;
+
+			fsl,soc-operating-points = <
+				/* ARM kHz  SOC-PU uV */
+				792000        1175000
+				396000        1175000
+			>;
+		};

Why do you need to edit the OPPS here? Just to fix them on a specific voltage? Why?

Quoted 6 lines
Quoted 2 lines

Board has no pmu regulator

The default i.MX6 configuration (see imx6q.dtsi) is to connect the ARM and SOC domain to the internal LDOs, so voltage scaling is not dependent on an external PMIC being present.

Sorry, It was a mistake based on original patch. So I need to limit the max allowed frequency suggested by the vendor. So including the operating points that I support. Is this fine?

Quoted 99 lines
Quoted 99 lines
Quoted 98 lines
Quoted 82 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+	};
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +70 -0
new file mode 100644
index 0000000..59c416e
@@ -0,0 +1,372 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	regulators {
+		compatible = "simple-bus";
+
+		reg_usb_h1_vbus: usb_h1_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_h1_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+		};
+
+		reg_usb_otg_vbus: usb_otg_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_otg_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-always-on;
+		};
+
+		reg_3p3v: 3p3v {
+			compatible = "regulator-fixed";
+			regulator-name = "3P3V";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+		};
+
+		reg_2p5v: 2p5v {
+			compatible = "regulator-fixed";
+			regulator-name = "2P5V";
+			regulator-min-microvolt = <2500000>;
+			regulator-max-microvolt = <2500000>;
+			regulator-always-on;
+		};
+
+		reg_1p8v: 1p8v {
+			compatible = "regulator-fixed";
+			regulator-name = "1P8V";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-always-on;
+		};
+
+		reg_sd4_vmmc: sd4_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD4_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 80

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+
+		reg_sd3_vmmc: sd3_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD3_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

A lot of those regulators look like they don't need to be always-on.

Also the use of a simple-bus, while giving some structure to the DT is considered bad style as it doesn't reflect any real hardware.

Quoted 6 lines
Quoted 2 lines

I will check how other boards do it

Note that there are a lot of bad examples still around. What you need to do is essentially just remove the additional DT level of the regulator bus. The regulators are board components that belong to the same level as the usb hub below, or the memory node above.

Understand. I will do

Quoted 8 lines

Regards,
Lucas

Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#5 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Am Montag, den 16.11.2015, 12:41 +0100 schrieb Michael Trimarchi:

Quoted 62 lines

Hi

Quoted 59 lines · Lucas Stach

Am Montag, den 16.11.2015, 12:29 +0100 schrieb Michael Trimarchi:

Quoted 15 lines

Hi

Quoted 12 lines · Lucas Stach

Am Sonntag, den 15.11.2015, 11:54 +0100 schrieb Michael Trimarchi:

Quoted 11 lines

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  36 +++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 372 +++++++++++++++++++++++++++++++
 3 files changed, 409 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi

[...]

Quoted 42 lines
Quoted 30 lines
Quoted 30 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +24 -0
new file mode 100644
index 0000000..cded07d
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+	cpus {
+		cpu at 0 {
+			operating-points = <
+				/* kHz    uV */
+				792000  1150000
+				396000  1150000
+			>;
+
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 30

Quoted 6 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+			fsl,soc-operating-points = <
+				/* ARM kHz  SOC-PU uV */
+				792000        1175000
+				396000        1175000
+			>;
+		};

Why do you need to edit the OPPS here? Just to fix them on a specific voltage? Why?

Board has no pmu regulator

Quoted 9 lines
Quoted 4 lines

The default i.MX6 configuration (see imx6q.dtsi) is to connect the ARM and SOC domain to the internal LDOs, so voltage scaling is not dependent on an external PMIC being present.

Sorry, It was a mistake based on original patch. So I need to limit the max allowed frequency suggested by the vendor. So including the operating points that I support. Is this fine?

Do you really want to remove the ability to lower voltage for the slower OPPs? Also you only need this if the module includes a higher rated SKU, that needs to be throttled below its rated max frequency.

If the module includes a SKU that is rated for 792MHz by Freescale (like the industrial ones) the kernel will read the SoC fuses and disable any OPPs that are unsupported by the SKU on its own.

Regards,
Lucas

Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |
#6 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

Quoted 72 lines · Lucas Stach

Am Montag, den 16.11.2015, 12:41 +0100 schrieb Michael Trimarchi:

Quoted 62 lines

Hi

Quoted 59 lines · Lucas Stach

Am Montag, den 16.11.2015, 12:29 +0100 schrieb Michael Trimarchi:

Quoted 15 lines

Hi

Quoted 12 lines · Lucas Stach

Am Sonntag, den 15.11.2015, 11:54 +0100 schrieb Michael Trimarchi:

Quoted 11 lines

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  36 +++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 372 +++++++++++++++++++++++++++++++
 3 files changed, 409 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi

[...]

Quoted 42 lines
Quoted 30 lines
Quoted 30 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +24 -0
new file mode 100644
index 0000000..cded07d
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+	cpus {
+		cpu at 0 {
+			operating-points = <
+				/* kHz    uV */
+				792000  1150000
+				396000  1150000
+			>;
+
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 30

Quoted 6 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+			fsl,soc-operating-points = <
+				/* ARM kHz  SOC-PU uV */
+				792000        1175000
+				396000        1175000
+			>;
+		};

Why do you need to edit the OPPS here? Just to fix them on a specific voltage? Why?

Board has no pmu regulator

Quoted 9 lines
Quoted 4 lines

The default i.MX6 configuration (see imx6q.dtsi) is to connect the ARM and SOC domain to the internal LDOs, so voltage scaling is not dependent on an external PMIC being present.

Sorry, It was a mistake based on original patch. So I need to limit the max allowed frequency suggested by the vendor. So including the operating points that I support. Is this fine?

Quoted 8 lines

Do you really want to remove the ability to lower voltage for the slower OPPs? Also you only need this if the module includes a higher rated SKU, that needs to be throttled below its rated max frequency.

If the module includes a SKU that is rated for 792MHz by Freescale (like the industrial ones) the kernel will read the SoC fuses and disable any OPPs that are unsupported by the SKU on its own.

Yes I will drop. It's totally wrong, thank you for the lesson on fuses

Michael

Quoted 7 lines

Regards,
Lucas

Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#7 lore raw

PATCH v2 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  21 ++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 365 +++++++++++++++++++++++++++++++
 3 files changed, 387 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +21 -0
new file mode 100644
index 0000000..96f167f
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +365 -0

365 lines not on this page · raw message

Signature · 7 lines
2.6.3

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#8 lore raw

PATCH v2 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi Lucas

Quoted 11 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

Here you have the boot of the board

http://pastebin.com/DBi9kJfZ

I need this patch too

http://lkml.iu.edu/hypermail/linux/kernel/1511.1/04843.html

Regards
Michael

Quoted 425 lines
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  21 ++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 365 +++++++++++++++++++++++++++++++
 3 files changed, 387 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +21 -0
new file mode 100644
index 0000000..96f167f
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +365 -0
new file mode 100644
index 0000000..678ff0a
@@ -0,0 +1,365 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	reg_1p8v: 1p8v {
+		compatible = "regulator-fixed";
+		regulator-name = "1P8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_2p5v: 2p5v {
+		compatible = "regulator-fixed";
+		regulator-name = "2P5V";
+		regulator-min-microvolt = <2500000>;
+		regulator-max-microvolt = <2500000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_3p3v: 3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "3P3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_sd3_vmmc: sd3_vmmc {
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD3_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		enable-active-high;
+	};
+
+	reg_sd4_vmmc: sd4_vmmc {
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD4_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_h1_vbus: usb_h1_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_h1_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
+	reg_usb_otg_vbus: usb_otg_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_otg_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	usb_hub: usb-hub {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbhub>;
+		compatible = "smsc,usb3503a";
+		reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+		clock-names = "refclk";
+	};
+};
+
+&iomuxc {
+	imx6qdl-icore-rqs {
+
+		pinctrl_audmux_4: audmux-4 {
+			fsl,pins = <
+				MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+			>;
+		};
+
+		pinctrl_enet_3: enetgrp-3 {
+			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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+			>;
+		};
+
+		pinctrl_i2c1_1: i2c1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c2_2: i2c2grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c3_4: i2c3grp-4 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+				MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+				MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+			>;
+		};
+
+		pinctrl_pcie: pciegrp {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059	/* PCIe Reset */
+			>;
+		};
+
+		pinctrl_uart4_1: uart4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+			>;
+		};
+
+		pinctrl_usbhub: usbhubgrp {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059	/* HUB USB Reset */
+			>;
+		};
+
+		pinctrl_usbotg_2: usbotggrp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+			>;
+		};
+
+		pinctrl_usdhc1_1: usdhc1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+			>;
+		};
+
+		pinctrl_usdhc3_2: usdhc3grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+				MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059	/* CD */
+				MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059	/* PWR */
+			>;
+		};
+
+		pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+			>;
+		};
+
+		pinctrl_usdhc4_1: usdhc4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+			>;
+		};
+
+		pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+			>;
+		};
+	};
+};
+
+&clks {
+	assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_audmux_4>;
+	status = "okay";
+};
+
+&fec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_enet_3>;
+	phy-mode = "rgmii";
+	status = "okay";
+};
+
+&i2c1 {
+	status = "okay";
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1_1>;
+};
+
+&i2c2 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2_2>;
+	status = "okay";
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3_4>;
+	status = "okay";
+};
+
+&pcie {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pcie>;
+	reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
+
+&ssi1 {
+	fsl,mode = "i2s-slave";
+	status = "okay";
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4_1>;
+	status = "okay";
+};
+
+&usbh1 {
+	vbus-supply = <&reg_usb_h1_vbus>;
+	disable-over-current;
+	clocks = <&clks IMX6QDL_CLK_USBOH3>;
+	status = "okay";
+};
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_2>;
+	disable-over-current;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1_1>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc3_2>;
+	pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+	vmcc-supply = <&reg_sd3_vmmc>;
+	cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+	bus-witdh=<4>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc4_1>;
+	pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+	vmcc-supply = <&reg_sd4_vmmc>;
+	bus-witdh=<8>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
Signature · 7 lines
2.6.3

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#9 lore raw

PATCH v2 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

In reply to Michael Trimarchi

Am Montag, den 16.11.2015, 18:23 +0100 schrieb Michael Trimarchi:

Quoted 3 lines

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

Looks good to me now,

Quoted 428 lines

---
Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  21 ++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 365 +++++++++++++++++++++++++++++++
 3 files changed, 387 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +21 -0
new file mode 100644
index 0000000..96f167f
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +365 -0
new file mode 100644
index 0000000..678ff0a
@@ -0,0 +1,365 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	reg_1p8v: 1p8v {
+		compatible = "regulator-fixed";
+		regulator-name = "1P8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_2p5v: 2p5v {
+		compatible = "regulator-fixed";
+		regulator-name = "2P5V";
+		regulator-min-microvolt = <2500000>;
+		regulator-max-microvolt = <2500000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_3p3v: 3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "3P3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_sd3_vmmc: sd3_vmmc {
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD3_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		enable-active-high;
+	};
+
+	reg_sd4_vmmc: sd4_vmmc {
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD4_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_h1_vbus: usb_h1_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_h1_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
+	reg_usb_otg_vbus: usb_otg_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_otg_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	usb_hub: usb-hub {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbhub>;
+		compatible = "smsc,usb3503a";
+		reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+		clock-names = "refclk";
+	};
+};
+
+&iomuxc {
+	imx6qdl-icore-rqs {
+
+		pinctrl_audmux_4: audmux-4 {
+			fsl,pins = <
+				MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+			>;
+		};
+
+		pinctrl_enet_3: enetgrp-3 {
+			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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+			>;
+		};
+
+		pinctrl_i2c1_1: i2c1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c2_2: i2c2grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c3_4: i2c3grp-4 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+				MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+				MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+			>;
+		};
+
+		pinctrl_pcie: pciegrp {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059	/* PCIe Reset */
+			>;
+		};
+
+		pinctrl_uart4_1: uart4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+			>;
+		};
+
+		pinctrl_usbhub: usbhubgrp {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059	/* HUB USB Reset */
+			>;
+		};
+
+		pinctrl_usbotg_2: usbotggrp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+			>;
+		};
+
+		pinctrl_usdhc1_1: usdhc1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+			>;
+		};
+
+		pinctrl_usdhc3_2: usdhc3grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+				MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059	/* CD */
+				MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059	/* PWR */
+			>;
+		};
+
+		pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+			>;
+		};
+
+		pinctrl_usdhc4_1: usdhc4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+			>;
+		};
+
+		pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+			>;
+		};
+	};
+};
+
+&clks {
+	assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_audmux_4>;
+	status = "okay";
+};
+
+&fec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_enet_3>;
+	phy-mode = "rgmii";
+	status = "okay";
+};
+
+&i2c1 {
+	status = "okay";
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1_1>;
+};
+
+&i2c2 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2_2>;
+	status = "okay";
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3_4>;
+	status = "okay";
+};
+
+&pcie {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pcie>;
+	reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
+
+&ssi1 {
+	fsl,mode = "i2s-slave";
+	status = "okay";
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4_1>;
+	status = "okay";
+};
+
+&usbh1 {
+	vbus-supply = <&reg_usb_h1_vbus>;
+	disable-over-current;
+	clocks = <&clks IMX6QDL_CLK_USBOH3>;
+	status = "okay";
+};
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_2>;
+	disable-over-current;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1_1>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc3_2>;
+	pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+	vmcc-supply = <&reg_sd3_vmmc>;
+	cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+	bus-witdh=<4>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc4_1>;
+	pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+	vmcc-supply = <&reg_sd4_vmmc>;
+	bus-witdh=<8>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
Signature · 1 line
2.6.3
Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |
#10 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
I'm not quite sure how ethernet tuning parameter
are working in other setup and this seems the
correct way to use it

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  45 ++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 382 +++++++++++++++++++++++++++++++
 3 files changed, 428 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +45 -0

45 lines not on this page · raw message

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +382 -0

382 lines not on this page · raw message

Signature · 7 lines
2.6.3

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#11 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi Shawn

Quoted 8 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
I'm not quite sure how ethernet tuning parameter
are working in other setup and this seems the
correct way to use it

As you can see my way to connect the ethernet phy is different. I have seen that most of the boards put all the tuning under fec but unfortunately this does not work. I don't know if people check if their value are correctly written to the phy.

Quoted 15 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +15 -0
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet_3>;
+       phy-handle = <&eth_phy>;
+       phy-mode = "rgmii";
+       status = "okay";
+       mdio {
+               eth_phy: ethernet-phy {
+                       rxc-skew-ps = <1140>;
+                       txc-skew-ps = <1140>;
+                       txen-skew-ps = <600>;
+                       rxdv-skew-ps = <240>;
+                       rxd0-skew-ps = <420>;
+                       rxd1-skew-ps = <600>;

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 299

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+                       rxd2-skew-ps = <420>;
+                       rxd3-skew-ps = <240>;
+                       txd0-skew-ps = <60>;
+                       txd1-skew-ps = <60>;
+                       txd2-skew-ps = <60>;
+                       txd3-skew-ps = <240>;
+               };
+       };
+};
+

Michael

Quoted 91 lines

+&i2c1 {

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +82 -1
+       status = "okay";
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1_1>;
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2_2>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3_4>;
+       status = "okay";
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie>;
+       reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&ssi1 {
+       fsl,mode = "i2s-slave";
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4_1>;
+       status = "okay";
+};
+
+&usbh1 {
+       vbus-supply = <&reg_usb_h1_vbus>;
+       disable-over-current;
+       clocks = <&clks IMX6QDL_CLK_USBOH3>;
+       status = "okay";
+};
+
+&usbotg {
+       vbus-supply = <&reg_usb_otg_vbus>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg_2>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1_1>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3_2>;
+       pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+       vmcc-supply = <&reg_sd3_vmmc>;
+       cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+       bus-witdh=<4>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc4 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc4_1>;
+       pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+       vmcc-supply = <&reg_sd4_vmmc>;
+       bus-witdh=<8>;
+       no-1-8-v;
+       non-removable;
+       status = "okay";
+};
--

2.6.3

--

| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#12 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Quoted 13 lines · Michael Trimarchi

Hi Shawn

Quoted 8 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
I'm not quite sure how ethernet tuning parameter
are working in other setup and this seems the
correct way to use it

Quoted 4 lines

As you can see my way to connect the ethernet phy is different. I have seen that most of the boards put all the tuning under fec but unfortunately this does not work. I don't know if people check if their value are correctly written to the phy.

Hmm, I'm not sure what example you are looking at. But here is what I see from arch/arm/boot/dts/imx6qdl-sabrelite.dtsi

&fec {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet>;
        phy-mode = "rgmii";
        phy-reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
        txen-skew-ps = <0>;
        txc-skew-ps = <3000>;
        rxdv-skew-ps = <0>;
        rxc-skew-ps = <3000>;
        rxd0-skew-ps = <0>;
        rxd1-skew-ps = <0>;
        rxd2-skew-ps = <0>;
        rxd3-skew-ps = <0>;
        txd0-skew-ps = <0>;
        txd1-skew-ps = <0>;
        txd2-skew-ps = <0>;
        txd3-skew-ps = <0>;
        interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_HIGH>,
                              <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>;
        status = "okay";
};

Shawn

Quoted 26 lines
Quoted 26 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +25 -0
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet_3>;
+       phy-handle = <&eth_phy>;
+       phy-mode = "rgmii";
+       status = "okay";
+       mdio {
+               eth_phy: ethernet-phy {
+                       rxc-skew-ps = <1140>;
+                       txc-skew-ps = <1140>;
+                       txen-skew-ps = <600>;
+                       rxdv-skew-ps = <240>;
+                       rxd0-skew-ps = <420>;
+                       rxd1-skew-ps = <600>;
+                       rxd2-skew-ps = <420>;
+                       rxd3-skew-ps = <240>;
+                       txd0-skew-ps = <60>;
+                       txd1-skew-ps = <60>;
+                       txd2-skew-ps = <60>;
+                       txd3-skew-ps = <240>;
+               };
+       };
+};
+
#13 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

Quoted 35 lines · Shawn Guo
Quoted 13 lines · Michael Trimarchi

Hi Shawn

Quoted 8 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
I'm not quite sure how ethernet tuning parameter
are working in other setup and this seems the
correct way to use it

Quoted 4 lines

As you can see my way to connect the ethernet phy is different. I have seen that most of the boards put all the tuning under fec but unfortunately this does not work. I don't know if people check if their value are correctly written to the phy.

Hmm, I'm not sure what example you are looking at. But here is what I see from arch/arm/boot/dts/imx6qdl-sabrelite.dtsi

&fec {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet>;
        phy-mode = "rgmii";
        phy-reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
        txen-skew-ps = <0>;
        txc-skew-ps = <3000>;
        rxdv-skew-ps = <0>;
        rxc-skew-ps = <3000>;
        rxd0-skew-ps = <0>;
        rxd1-skew-ps = <0>;
        rxd2-skew-ps = <0>;
        rxd3-skew-ps = <0>;
Quoted 9 lines
        txd0-skew-ps = <0>;
        txd1-skew-ps = <0>;
        txd2-skew-ps = <0>;
        txd3-skew-ps = <0>;
        interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_HIGH>,
                              <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>;
        status = "okay";
};

Yes sorry, could be only one. According in what I have seen this can not work and the information stored in the
fec parameters are not written in the registers. Other small thing is the IMX6/7 default config does not include
this phy at all, but that is a minor issue. Can you please do the final review of my board so I can take care on this
too for Sabrelite?

Michael

Quoted 28 lines

Shawn

Quoted 26 lines
Quoted 26 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +25 -0
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet_3>;
+       phy-handle = <&eth_phy>;
+       phy-mode = "rgmii";
+       status = "okay";
+       mdio {
+               eth_phy: ethernet-phy {
+                       rxc-skew-ps = <1140>;
+                       txc-skew-ps = <1140>;
+                       txen-skew-ps = <600>;
+                       rxdv-skew-ps = <240>;
+                       rxd0-skew-ps = <420>;
+                       rxd1-skew-ps = <600>;
+                       rxd2-skew-ps = <420>;
+                       rxd3-skew-ps = <240>;
+                       txd0-skew-ps = <60>;
+                       txd1-skew-ps = <60>;
+                       txd2-skew-ps = <60>;
+                       txd3-skew-ps = <240>;
+               };
+       };
+};
+
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#14 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

In reply to Michael Trimarchi
Quoted 46 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
I'm not quite sure how ethernet tuning parameter
are working in other setup and this seems the
correct way to use it

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  45 ++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 382 +++++++++++++++++++++++++++++++
 3 files changed, 428 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +0 -0
new file mode 100644
index 0000000..8f14edf

arch/arm/boot/dts/imx6q-icore-rqs.dts line 7

Quoted 7 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +7 -0
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */

Suggest to use GPL/X11 dual licences, so that non-Linux can use it too. You can find a lot of examples in arch/arm/boot/dts.

arch/arm/boot/dts/imx6q-icore-rqs.dts line 16

Quoted 9 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +9 -0
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";

This is not a board from Freescale, so 'fsl,' is not a appropriate for the board compatible imx6q-icore-rqs.

Quoted 8 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +8 -0
+
+	sound {
+		compatible = "fsl,imx-audio-sgtl5000";
+		model = "imx-audio-sgtl5000";
+		ssi-controller = <&ssi1>;
+		audio-codec = <&codec>;
+		audio-routing =
+			"MIC_IN", "Mic Jack",

arch/arm/boot/dts/imx6q-icore-rqs.dts line 34

Quoted 10 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +10 -0
+			"Mic Jack", "Mic Bias",
+			"Headphone Jack", "HP_OUT";
+		mux-int-port = <1>;
+		mux-ext-port = <4>;
+	};
+};
+
+&sata {
+	status = "okay";
+};

Please sort them labelled nodes alphabetically.

Quoted 26 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +11 -0
+
+&i2c3 {
+	codec: sgtl5000 at 0a {
+		compatible = "fsl,sgtl5000";
+		reg = <0x0a>;
+		clocks = <&clks IMX6QDL_CLK_CKO>;
+		VDDA-supply = <&reg_2p5v>;
+		VDDIO-supply = <&reg_3p3v>;
+		VDDD-supply = <&reg_1p8v>;
+	};
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +9 -0
new file mode 100644
index 0000000..c57a830
@@ -0,0 +1,382 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 19

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	reg_1p8v: 1p8v {

Can we name these regulator nodes a bit better, something like 'regulator-1pv8'?

Quoted 17 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +17 -0
+		compatible = "regulator-fixed";
+		regulator-name = "1P8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_2p5v: 2p5v {
+		compatible = "regulator-fixed";
+		regulator-name = "2P5V";
+		regulator-min-microvolt = <2500000>;
+		regulator-max-microvolt = <2500000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 46

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+	reg_3p3v: 3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "3P3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_sd3_vmmc: sd3_vmmc {

It's more idiomatic to use minus than underscore in node name.

Quoted 29 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +29 -0
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD3_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		enable-active-high;
+	};
+
+	reg_sd4_vmmc: sd4_vmmc {
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD4_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_h1_vbus: usb_h1_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_h1_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_otg_vbus: usb_otg_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_otg_vbus";

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 85

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	usb_hub: usb-hub {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbhub>;
+		compatible = "smsc,usb3503a";

Let 'compatible' be the top of the property list.

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 89

Quoted 4 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +4 -0
+		reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+		clock-names = "refclk";
+	};

How is this device get connected? The most common case is via I2C bus. In that case, the node shouldn't be here but under I2C node.

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 92

Quoted 3 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +3 -0
+};
+
+&iomuxc {

Suggest move iomuxc node to the bottom to make the file a bit easier to read.

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 94

Quoted 2 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +2 -0
+	imx6qdl-icore-rqs {
+

With commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without function nodes) in place, we can now save this container.

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 95

Quoted 1 line
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +1 -0
+		pinctrl_audmux_4: audmux-4 {

The suffix numbering makes no sense in this case. The following example should be good enough.

		pinctrl_audmux: audmux {
Quoted 196 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +196 -0
+			fsl,pins = <
+				MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+			>;
+		};
+
+		pinctrl_enet_3: enetgrp-3 {
+			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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+			>;
+		};
+
+		pinctrl_i2c1_1: i2c1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c2_2: i2c2grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c3_4: i2c3grp-4 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+				MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+				MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+			>;
+		};
+
+		pinctrl_pcie: pciegrp {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059	/* PCIe Reset */
+			>;
+		};
+
+		pinctrl_uart4_1: uart4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+			>;
+		};
+
+		pinctrl_usbhub: usbhubgrp {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059	/* HUB USB Reset */
+			>;
+		};
+
+		pinctrl_usbotg_2: usbotggrp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+			>;
+		};
+
+		pinctrl_usdhc1_1: usdhc1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+			>;
+		};
+
+		pinctrl_usdhc3_2: usdhc3grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+				MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059	/* CD */
+				MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059	/* PWR */
+			>;
+		};
+
+		pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+			>;
+		};
+
+		pinctrl_usdhc4_1: usdhc4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+			>;
+		};
+
+		pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+			>;
+		};
+	};
+};
+
+&clks {
+	assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_audmux_4>;
+	status = "okay";
+};
+
+&fec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_enet_3>;
+	phy-handle = <&eth_phy>;
+	phy-mode = "rgmii";
+	status = "okay";
+	mdio {
+		eth_phy: ethernet-phy {
+			rxc-skew-ps = <1140>;
+			txc-skew-ps = <1140>;
+			txen-skew-ps = <600>;
+			rxdv-skew-ps = <240>;
+			rxd0-skew-ps = <420>;
+			rxd1-skew-ps = <600>;
+			rxd2-skew-ps = <420>;
+			rxd3-skew-ps = <240>;

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 301

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+			txd0-skew-ps = <60>;
+			txd1-skew-ps = <60>;
+			txd2-skew-ps = <60>;
+			txd3-skew-ps = <240>;
+		};
+	};
+};
+
+&i2c1 {
+	status = "okay";

Let 'status' be the last property.

Shawn

Quoted 90 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +81 -0
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1_1>;
+};
+
+&i2c2 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2_2>;
+	status = "okay";
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3_4>;
+	status = "okay";
+};
+
+&pcie {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pcie>;
+	reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
+
+&ssi1 {
+	fsl,mode = "i2s-slave";
+	status = "okay";
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4_1>;
+	status = "okay";
+};
+
+&usbh1 {
+	vbus-supply = <&reg_usb_h1_vbus>;
+	disable-over-current;
+	clocks = <&clks IMX6QDL_CLK_USBOH3>;
+	status = "okay";
+};
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_2>;
+	disable-over-current;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1_1>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc3_2>;
+	pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+	vmcc-supply = <&reg_sd3_vmmc>;
+	cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+	bus-witdh=<4>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc4_1>;
+	pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+	vmcc-supply = <&reg_sd4_vmmc>;
+	bus-witdh=<8>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
Signature · 7 lines
2.6.3

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#15 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

Quoted 49 lines · Shawn Guo
Quoted 48 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
I'm not quite sure how ethernet tuning parameter
are working in other setup and this seems the
correct way to use it

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  45 ++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 382 +++++++++++++++++++++++++++++++
 3 files changed, 428 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +2 -0
new file mode 100644
index 0000000..8f14edf
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 7

Quoted 5 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +5 -0
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */

Suggest to use GPL/X11 dual licences, so that non-Linux can use it too. You can find a lot of examples in arch/arm/boot/dts.

Ok

Quoted 4 lines
Quoted 4 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +4 -0
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 16

Quoted 5 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +5 -0
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";

This is not a board from Freescale, so 'fsl,' is not a appropriate for the board compatible imx6q-icore-rqs.

let use eng,imx6-icore-rqs

Quoted 12 lines
Quoted 12 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +12 -0
+
+	sound {
+		compatible = "fsl,imx-audio-sgtl5000";
+		model = "imx-audio-sgtl5000";
+		ssi-controller = <&ssi1>;
+		audio-codec = <&codec>;
+		audio-routing =
+			"MIC_IN", "Mic Jack",
+			"Mic Jack", "Mic Bias",
+			"Headphone Jack", "HP_OUT";
+		mux-int-port = <1>;
+		mux-ext-port = <4>;
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 34

Quoted 6 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+	};
+};
+
+&sata {
+	status = "okay";
+};

Please sort them labelled nodes alphabetically.

ok

Quoted 31 lines
Quoted 31 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +11 -0
+
+&i2c3 {
+	codec: sgtl5000 at 0a {
+		compatible = "fsl,sgtl5000";
+		reg = <0x0a>;
+		clocks = <&clks IMX6QDL_CLK_CKO>;
+		VDDA-supply = <&reg_2p5v>;
+		VDDIO-supply = <&reg_3p3v>;
+		VDDD-supply = <&reg_1p8v>;
+	};
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +14 -0
new file mode 100644
index 0000000..c57a830
@@ -0,0 +1,382 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 19

Quoted 5 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +5 -0
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	reg_1p8v: 1p8v {

Can we name these regulator nodes a bit better, something like 'regulator-1pv8'?

ok

Quoted 21 lines
Quoted 21 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +21 -0
+		compatible = "regulator-fixed";
+		regulator-name = "1P8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_2p5v: 2p5v {
+		compatible = "regulator-fixed";
+		regulator-name = "2P5V";
+		regulator-min-microvolt = <2500000>;
+		regulator-max-microvolt = <2500000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_3p3v: 3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "3P3V";
+		regulator-min-microvolt = <3300000>;
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 46

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_sd3_vmmc: sd3_vmmc {

It's more idiomatic to use minus than underscore in node name.

ok

Quoted 33 lines
Quoted 33 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +33 -0
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD3_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		enable-active-high;
+	};
+
+	reg_sd4_vmmc: sd4_vmmc {
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD4_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_h1_vbus: usb_h1_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_h1_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_otg_vbus: usb_otg_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_otg_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 85

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+	};
+
+	usb_hub: usb-hub {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbhub>;
+		compatible = "smsc,usb3503a";

Let 'compatible' be the top of the property list.

ok

Quoted 8 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 89

Quoted 4 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +4 -0
+		reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+		clock-names = "refclk";
+	};

How is this device get connected? The most common case is via I2C bus. In that case, the node shouldn't be here but under I2C node.

It's correct, the connection is completly defined and it's not connected to i2c according from what I know. I will double check

Quoted 7 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 92

Quoted 3 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +3 -0
+};
+
+&iomuxc {

Suggest move iomuxc node to the bottom to make the file a bit easier to read.

Ok

Quoted 8 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 94

Quoted 2 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +2 -0
+	imx6qdl-icore-rqs {
+

With commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without function nodes) in place, we can now save this container.

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 95

Quoted 1 line
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +1 -0
+		pinctrl_audmux_4: audmux-4 {

I will take a look of that commit

Quoted 205 lines

The suffix numbering makes no sense in this case. The following example should be good enough.

		pinctrl_audmux: audmux {
Quoted 200 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +200 -0
+			fsl,pins = <
+				MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+			>;
+		};
+
+		pinctrl_enet_3: enetgrp-3 {
+			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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+			>;
+		};
+
+		pinctrl_i2c1_1: i2c1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c2_2: i2c2grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c3_4: i2c3grp-4 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+				MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+				MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+			>;
+		};
+
+		pinctrl_pcie: pciegrp {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059	/* PCIe Reset */
+			>;
+		};
+
+		pinctrl_uart4_1: uart4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+			>;
+		};
+
+		pinctrl_usbhub: usbhubgrp {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059	/* HUB USB Reset */
+			>;
+		};
+
+		pinctrl_usbotg_2: usbotggrp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+			>;
+		};
+
+		pinctrl_usdhc1_1: usdhc1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+			>;
+		};
+
+		pinctrl_usdhc3_2: usdhc3grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+				MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059	/* CD */
+				MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059	/* PWR */
+			>;
+		};
+
+		pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+			>;
+		};
+
+		pinctrl_usdhc4_1: usdhc4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+			>;
+		};
+
+		pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+			>;
+		};
+	};
+};
+
+&clks {
+	assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_audmux_4>;
+	status = "okay";
+};
+
+&fec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_enet_3>;
+	phy-handle = <&eth_phy>;
+	phy-mode = "rgmii";
+	status = "okay";
+	mdio {
+		eth_phy: ethernet-phy {
+			rxc-skew-ps = <1140>;
+			txc-skew-ps = <1140>;
+			txen-skew-ps = <600>;
+			rxdv-skew-ps = <240>;
+			rxd0-skew-ps = <420>;
+			rxd1-skew-ps = <600>;
+			rxd2-skew-ps = <420>;
+			rxd3-skew-ps = <240>;
+			txd0-skew-ps = <60>;
+			txd1-skew-ps = <60>;
+			txd2-skew-ps = <60>;
+			txd3-skew-ps = <240>;
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 301

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+		};
+	};
+};
+
+&i2c1 {
+	status = "okay";

Let 'status' be the last property.

Ok

I will repost again

Michael

Quoted 92 lines

Shawn

Quoted 90 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +81 -0
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1_1>;
+};
+
+&i2c2 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2_2>;
+	status = "okay";
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3_4>;
+	status = "okay";
+};
+
+&pcie {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pcie>;
+	reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
+
+&ssi1 {
+	fsl,mode = "i2s-slave";
+	status = "okay";
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4_1>;
+	status = "okay";
+};
+
+&usbh1 {
+	vbus-supply = <&reg_usb_h1_vbus>;
+	disable-over-current;
+	clocks = <&clks IMX6QDL_CLK_USBOH3>;
+	status = "okay";
+};
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_2>;
+	disable-over-current;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1_1>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc3_2>;
+	pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+	vmcc-supply = <&reg_sd3_vmmc>;
+	cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+	bus-witdh=<4>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc4_1>;
+	pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+	vmcc-supply = <&reg_sd4_vmmc>;
+	bus-witdh=<8>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
Signature · 7 lines
2.6.3

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#16 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

I have address most of the changes but I have problem when I remove the group of pinctrl as you suggest

Quoted 78 lines · Michael Trimarchi

Hi

Quoted 49 lines · Shawn Guo
Quoted 48 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
I'm not quite sure how ethernet tuning parameter
are working in other setup and this seems the
correct way to use it

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  45 ++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 382 +++++++++++++++++++++++++++++++
 3 files changed, 428 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +2 -0
new file mode 100644
index 0000000..8f14edf
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 7

Quoted 5 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +5 -0
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */

Suggest to use GPL/X11 dual licences, so that non-Linux can use it too. You can find a lot of examples in arch/arm/boot/dts.

Ok

Quoted 4 lines
Quoted 4 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +4 -0
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 16

Quoted 5 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +5 -0
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "fsl,imx6-icore-rqs", "fsl,imx6q";

This is not a board from Freescale, so 'fsl,' is not a appropriate for the board compatible imx6q-icore-rqs.

Quoted 2 lines

let use eng,imx6-icore-rqs

That I have fixed

Quoted 22 lines
Quoted 12 lines
Quoted 12 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +12 -0
+
+	sound {
+		compatible = "fsl,imx-audio-sgtl5000";
+		model = "imx-audio-sgtl5000";
+		ssi-controller = <&ssi1>;
+		audio-codec = <&codec>;
+		audio-routing =
+			"MIC_IN", "Mic Jack",
+			"Mic Jack", "Mic Bias",
+			"Headphone Jack", "HP_OUT";
+		mux-int-port = <1>;
+		mux-ext-port = <4>;
Quoted 9 lines

arch/arm/boot/dts/imx6q-icore-rqs.dts line 34

Quoted 6 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +6 -0
+	};
+};
+
+&sata {
+	status = "okay";
+};

Please sort them labelled nodes alphabetically.

Quoted 2 lines

ok

You mean sata and i2c?

Quoted 130 lines
Quoted 31 lines
Quoted 31 lines
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +11 -0
+
+&i2c3 {
+	codec: sgtl5000 at 0a {
+		compatible = "fsl,sgtl5000";
+		reg = <0x0a>;
+		clocks = <&clks IMX6QDL_CLK_CKO>;
+		VDDA-supply = <&reg_2p5v>;
+		VDDIO-supply = <&reg_3p3v>;
+		VDDD-supply = <&reg_1p8v>;
+	};
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +14 -0
new file mode 100644
index 0000000..c57a830
@@ -0,0 +1,382 @@
+/*
+ * Copyright 2015 Amarula Solutions B.V.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 19

Quoted 5 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +5 -0
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	reg_1p8v: 1p8v {

Can we name these regulator nodes a bit better, something like 'regulator-1pv8'?

ok

Quoted 21 lines
Quoted 21 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +21 -0
+		compatible = "regulator-fixed";
+		regulator-name = "1P8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_2p5v: 2p5v {
+		compatible = "regulator-fixed";
+		regulator-name = "2P5V";
+		regulator-min-microvolt = <2500000>;
+		regulator-max-microvolt = <2500000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_3p3v: 3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "3P3V";
+		regulator-min-microvolt = <3300000>;
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 46

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_sd3_vmmc: sd3_vmmc {

It's more idiomatic to use minus than underscore in node name.

ok

Quoted 33 lines
Quoted 33 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +33 -0
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD3_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		enable-active-high;
+	};
+
+	reg_sd4_vmmc: sd4_vmmc {
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD4_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_h1_vbus: usb_h1_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_h1_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_otg_vbus: usb_otg_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_otg_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 85

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+	};
+
+	usb_hub: usb-hub {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbhub>;
+		compatible = "smsc,usb3503a";

Let 'compatible' be the top of the property list.

ok

Quoted 8 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 89

Quoted 4 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +4 -0
+		reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+		clock-names = "refclk";
+	};

How is this device get connected? The most common case is via I2C bus. In that case, the node shouldn't be here but under I2C node.

Quoted 3 lines

It's correct, the connection is completly defined and it's not connected to i2c according from what I know. I will double check

It's fine as it is

Quoted 8 lines
Quoted 7 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 92

Quoted 3 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +3 -0
+};
+
+&iomuxc {

Suggest move iomuxc node to the bottom to make the file a bit easier to read.

Quoted 9 lines

Ok

Quoted 6 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 94

Quoted 2 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +2 -0
+	imx6qdl-icore-rqs {
+

With commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without function nodes) in place, we can now save this container.

If I save this I can not register usb. Group is not found

[    2.768476] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc1grp-1
[    2.768844] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc1grp-1
[    2.768932] sdhci-esdhc-imx: probe of 2190000.usdhc failed with error -22
[    2.768994] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc3grp-2
[    2.769240] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc3grp-2
[    2.769322] sdhci-esdhc-imx: probe of 2198000.usdhc failed with error -22
[    2.769381] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc4grp-1
[    2.769621] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc4grp-1
[    2.769701] sdhci-esdhc-imx: probe of 219c000.usdhc failed with error -22

Michael

Quoted 324 lines
Quoted 2 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 95

Quoted 1 line
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +1 -0
+		pinctrl_audmux_4: audmux-4 {

I will take a look of that commit

Quoted 205 lines

The suffix numbering makes no sense in this case. The following example should be good enough.

		pinctrl_audmux: audmux {
Quoted 200 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +200 -0
+			fsl,pins = <
+				MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+			>;
+		};
+
+		pinctrl_enet_3: enetgrp-3 {
+			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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+			>;
+		};
+
+		pinctrl_i2c1_1: i2c1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c2_2: i2c2grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+			>;
+		};
+
+		pinctrl_i2c3_4: i2c3grp-4 {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+				MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+				MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+			>;
+		};
+
+		pinctrl_pcie: pciegrp {
+			fsl,pins = <
+				MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059	/* PCIe Reset */
+			>;
+		};
+
+		pinctrl_uart4_1: uart4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+			>;
+		};
+
+		pinctrl_usbhub: usbhubgrp {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059	/* HUB USB Reset */
+			>;
+		};
+
+		pinctrl_usbotg_2: usbotggrp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+			>;
+		};
+
+		pinctrl_usdhc1_1: usdhc1grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+			>;
+		};
+
+		pinctrl_usdhc3_2: usdhc3grp-2 {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+				MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059	/* CD */
+				MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059	/* PWR */
+			>;
+		};
+
+		pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+				MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+			>;
+		};
+
+		pinctrl_usdhc4_1: usdhc4grp-1 {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+			>;
+		};
+
+		pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+			>;
+		};
+
+		pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+			fsl,pins = <
+				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+			>;
+		};
+	};
+};
+
+&clks {
+	assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_audmux_4>;
+	status = "okay";
+};
+
+&fec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_enet_3>;
+	phy-handle = <&eth_phy>;
+	phy-mode = "rgmii";
+	status = "okay";
+	mdio {
+		eth_phy: ethernet-phy {
+			rxc-skew-ps = <1140>;
+			txc-skew-ps = <1140>;
+			txen-skew-ps = <600>;
+			rxdv-skew-ps = <240>;
+			rxd0-skew-ps = <420>;
+			rxd1-skew-ps = <600>;
+			rxd2-skew-ps = <420>;
+			rxd3-skew-ps = <240>;
+			txd0-skew-ps = <60>;
+			txd1-skew-ps = <60>;
+			txd2-skew-ps = <60>;
+			txd3-skew-ps = <240>;
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 301

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+		};
+	};
+};
+
+&i2c1 {
+	status = "okay";

Let 'status' be the last property.

Ok

I will repost again

Michael

Quoted 92 lines

Shawn

Quoted 90 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +81 -0
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1_1>;
+};
+
+&i2c2 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2_2>;
+	status = "okay";
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3_4>;
+	status = "okay";
+};
+
+&pcie {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pcie>;
+	reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
+
+&ssi1 {
+	fsl,mode = "i2s-slave";
+	status = "okay";
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4_1>;
+	status = "okay";
+};
+
+&usbh1 {
+	vbus-supply = <&reg_usb_h1_vbus>;
+	disable-over-current;
+	clocks = <&clks IMX6QDL_CLK_USBOH3>;
+	status = "okay";
+};
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_2>;
+	disable-over-current;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1_1>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc3_2>;
+	pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+	vmcc-supply = <&reg_sd3_vmmc>;
+	cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+	bus-witdh=<4>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc4_1>;
+	pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+	vmcc-supply = <&reg_sd4_vmmc>;
+	bus-witdh=<8>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
Signature · 7 lines
2.6.3

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#17 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Quoted 4 lines · Michael Trimarchi

Hi

I have address most of the changes but I have problem when I remove the group of pinctrl as you suggest

...

Quoted 18 lines
Quoted 15 lines
Quoted 5 lines
Quoted 1 line

+&iomuxc {

Suggest move iomuxc node to the bottom to make the file a bit easier to read.

Ok

Quoted 6 lines

Review

Quoted 2 lines
(quoted diff) +2 -0
+	imx6qdl-icore-rqs {
+

With commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without function nodes) in place, we can now save this container.

If I save this I can not register usb. Group is not found

Quoted 9 lines
[    2.768476] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc1grp-1
[    2.768844] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc1grp-1
[    2.768932] sdhci-esdhc-imx: probe of 2190000.usdhc failed with error -22
[    2.768994] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc3grp-2
[    2.769240] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc3grp-2
[    2.769322] sdhci-esdhc-imx: probe of 2198000.usdhc failed with error -22
[    2.769381] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc4grp-1
[    2.769621] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc4grp-1
[    2.769701] sdhci-esdhc-imx: probe of 219c000.usdhc failed with error -22

I'm not sure if you got my comment correct, but what I meant is something like below.

&iomuxc {
       pinctrl_audmux_4: audmux-4 {
	       fsl,pins = <
		       MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
		       MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
		       MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
		       MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
	       >;
       };

       pinctrl_enet_3: enetgrp-3 {
	       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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
	       >;
       };

       ......
};

Is this what you did?

Shawn

#18 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

In reply to Michael Trimarchi
Quoted 9 lines · Michael Trimarchi
Quoted 6 lines
Quoted 6 lines

Review

Quoted 2 lines
(quoted diff) +2 -0
+	imx6qdl-icore-rqs {
+

With commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without function nodes) in place, we can now save this container.

If I save this I can not register usb. Group is not found

Quoted 9 lines
[    2.768476] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc1grp-1
[    2.768844] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc1grp-1
[    2.768932] sdhci-esdhc-imx: probe of 2190000.usdhc failed with error -22
[    2.768994] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc3grp-2
[    2.769240] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc3grp-2
[    2.769322] sdhci-esdhc-imx: probe of 2198000.usdhc failed with error -22
[    2.769381] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc4grp-1
[    2.769621] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc4grp-1
[    2.769701] sdhci-esdhc-imx: probe of 219c000.usdhc failed with error -22

Sorry. I just found that to get this work on imx6q board we need to clean up the ipu2/ipu2grp-1 group. I just send a patch doing that with you on copy. Let me know if it works for you.

Shawn

#19 lore raw

PATCH v3 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

Quoted 20 lines · Shawn Guo
Quoted 9 lines · Michael Trimarchi
Quoted 6 lines
Quoted 6 lines

Review

Quoted 2 lines
(quoted diff) +2 -0
+       imx6qdl-icore-rqs {
+

With commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without function nodes) in place, we can now save this container.

If I save this I can not register usb. Group is not found

Quoted 9 lines
[    2.768476] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc1grp-1
[    2.768844] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc1grp-1
[    2.768932] sdhci-esdhc-imx: probe of 2190000.usdhc failed with error -22
[    2.768994] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc3grp-2
[    2.769240] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc3grp-2
[    2.769322] sdhci-esdhc-imx: probe of 2198000.usdhc failed with error -22
[    2.769381] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc4grp-1
[    2.769621] imx6q-pinctrl 20e0000.iomuxc: unable to find group for node usdhc4grp-1
[    2.769701] sdhci-esdhc-imx: probe of 219c000.usdhc failed with error -22
Quoted 4 lines

Sorry. I just found that to get this work on imx6q board we need to clean up the ipu2/ipu2grp-1 group. I just send a patch doing that with you on copy. Let me know if it works for you.

Make sense. Sorry not to fix before by myself. I will take the board this afternoon and check it again

Michael

Quoted 1 line

Shawn

Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#20 lore raw

PATCH v4 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

In reply to Shawn Guo

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
Test on top of ARM: dts: imx6q: clean up unused ipu2grp

Changes in v4:
- update regulator name
- using flat pins,fsl
- move iomuxc
- add X11 license
- better alphabetic order

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 410 +++++++++++++++++++++++++++++++
 3 files changed, 489 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0

78 lines not on this page · raw message

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +410 -0

410 lines not on this page · raw message

Signature · 8 lines
2.6.4

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 410 +++++++++++++++++++++++++++++++
 3 files changed, 489 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
  imx6q-gw551x.dtb \
  imx6q-gw552x.dtb \
  imx6q-hummingboard.dtb \
+ imx6q-icore-rqs.dtb \
  imx6q-nitrogen6x.dtb \
  imx6q-phytec-pbab01.dtb \
  imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0

78 lines not on this page · raw message

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +410 -0

410 lines not on this page · raw message

Signature · 7 lines
2.6.4

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#21 lore raw

PATCH v4 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

Sorry I mess up the email ;). Need to resend. Drop this one

Quoted 1,075 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
Test on top of ARM: dts: imx6q: clean up unused ipu2grp

Changes in v4:
- update regulator name
- using flat pins,fsl
- move iomuxc
- add X11 license
- better alphabetic order

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 410 +++++++++++++++++++++++++++++++
 3 files changed, 489 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6q-gw551x.dtb \
        imx6q-gw552x.dtb \
        imx6q-hummingboard.dtb \
+       imx6q-icore-rqs.dtb \
        imx6q-nitrogen6x.dtb \
        imx6q-phytec-pbab01.dtb \
        imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0
new file mode 100644
index 0000000..0053188
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+       model = "Engicam i.CoreM6 Quad SOM";
+       compatible = "engicam,imx6-icore-rqs", "fsl,imx6q";
+
+       sound {
+               compatible = "fsl,imx-audio-sgtl5000";
+               model = "imx-audio-sgtl5000";
+               ssi-controller = <&ssi1>;
+               audio-codec = <&codec>;
+               audio-routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+               mux-int-port = <1>;
+               mux-ext-port = <4>;
+       };
+};
+
+&i2c3 {
+       codec: sgtl5000 at 0a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               clocks = <&clks IMX6QDL_CLK_CKO>;
+               VDDA-supply = <&reg_2p5v>;
+               VDDIO-supply = <&reg_3p3v>;
+               VDDD-supply = <&reg_1p8v>;
+       };
+};
+
+&sata {
+       status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +410 -1
new file mode 100644
index 0000000..b984128
@@ -0,0 +1,410 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+       memory {
+               reg = <0x10000000 0x80000000>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_2p5v: regulator-2p5v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P5V";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_sd3_vmmc: sd3-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "P3V3_SD3_SWITCHED";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+               enable-active-high;
+       };
+
+       reg_sd4_vmmc: sd4-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "P3V3_SD4_SWITCHED";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_usb_h1_vbus: usb-h1-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_h1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_usb_otg_vbus: usb-otg-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       usb_hub: usb-hub {
+               compatible = "smsc,usb3503a";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbhub>;
+               reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+               clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+               clock-names = "refclk";
+       };
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_audmux>;
+       status = "okay";
+};
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet_3>;
+       phy-handle = <&eth_phy>;
+       phy-mode = "rgmii";
+       status = "okay";
+       mdio {
+               eth_phy: ethernet-phy {
+                       rxc-skew-ps = <1140>;
+                       txc-skew-ps = <1140>;
+                       txen-skew-ps = <600>;
+                       rxdv-skew-ps = <240>;
+                       rxd0-skew-ps = <420>;
+                       rxd1-skew-ps = <600>;
+                       rxd2-skew-ps = <420>;
+                       rxd3-skew-ps = <240>;
+                       txd0-skew-ps = <60>;
+                       txd1-skew-ps = <60>;
+                       txd2-skew-ps = <60>;
+                       txd3-skew-ps = <240>;
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1_1>;
+       status = "okay";
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2_2>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3_4>;
+       status = "okay";
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie>;
+       reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&ssi1 {
+       fsl,mode = "i2s-slave";
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4_1>;
+       status = "okay";
+};
+
+&usbh1 {
+       vbus-supply = <&reg_usb_h1_vbus>;
+       disable-over-current;
+       clocks = <&clks IMX6QDL_CLK_USBOH3>;
+       status = "okay";
+};
+
+&usbotg {
+       vbus-supply = <&reg_usb_otg_vbus>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg_2>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1_1>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3_2>;
+       pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+       vmcc-supply = <&reg_sd3_vmmc>;
+       cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+       bus-witdh=<4>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc4 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc4_1>;
+       pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+       vmcc-supply = <&reg_sd4_vmmc>;
+       bus-witdh=<8>;
+       no-1-8-v;
+       non-removable;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_audmux: audmux {
+               fsl,pins = <
+                       MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+                       MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+                       MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+                       MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+               >;
+       };
+
+       pinctrl_enet_3: enetgrp-3 {
+               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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+               >;
+       };
+
+       pinctrl_i2c1_1: i2c1grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+                       MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c2_2: i2c2grp-2 {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c3_4: i2c3grp-4 {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+                       MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+                       MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+               >;
+       };
+
+       pinctrl_pcie: pciegrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059  /* PCIe Reset */
+               >;
+       };
+
+       pinctrl_uart4_1: uart4grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+                       MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+               >;
+       };
+
+       pinctrl_usbhub: usbhubgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059  /* HUB USB Reset */
+               >;
+       };
+
+       pinctrl_usbotg_2: usbotggrp-2 {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+               >;
+       };
+
+       pinctrl_usdhc1_1: usdhc1grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+               >;
+       };
+
+       pinctrl_usdhc3_2: usdhc3grp-2 {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+                       MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059  /* CD */
+                       MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059  /* PWR */
+               >;
+       };
+
+       pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+               >;
+       };
+
+       pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+               >;
+       };
+
+       pinctrl_usdhc4_1: usdhc4grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+               >;
+       };
+
+       pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+               >;
+       };
+
+       pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+               >;
+       };
+};
--

2.6.4

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 410 +++++++++++++++++++++++++++++++
 3 files changed, 489 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
  imx6q-gw551x.dtb \
  imx6q-gw552x.dtb \
  imx6q-hummingboard.dtb \
+ imx6q-icore-rqs.dtb \
  imx6q-nitrogen6x.dtb \
  imx6q-phytec-pbab01.dtb \
  imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0
new file mode 100644
index 0000000..0053188
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+ model = "Engicam i.CoreM6 Quad SOM";
+ compatible = "engicam,imx6-icore-rqs", "fsl,imx6q";
+
+ sound {
+ compatible = "fsl,imx-audio-sgtl5000";
+ model = "imx-audio-sgtl5000";
+ ssi-controller = <&ssi1>;
+ audio-codec = <&codec>;
+ audio-routing =
+ "MIC_IN", "Mic Jack",
+ "Mic Jack", "Mic Bias",
+ "Headphone Jack", "HP_OUT";
+ mux-int-port = <1>;
+ mux-ext-port = <4>;
+ };
+};
+
+&i2c3 {
+ codec: sgtl5000 at 0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ clocks = <&clks IMX6QDL_CLK_CKO>;
+ VDDA-supply = <&reg_2p5v>;
+ VDDIO-supply = <&reg_3p3v>;
+ VDDD-supply = <&reg_1p8v>;
+ };
+};
+
+&sata {
+ status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +410 -1
new file mode 100644
index 0000000..b984128
@@ -0,0 +1,410 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+ memory {
+ reg = <0x10000000 0x80000000>;
+ };
+
+ reg_1p8v: regulator-1p8v {
+ compatible = "regulator-fixed";
+ regulator-name = "1P8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_2p5v: regulator-2p5v {
+ compatible = "regulator-fixed";
+ regulator-name = "2P5V";
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <2500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_3p3v: regulator-3p3v {
+ compatible = "regulator-fixed";
+ regulator-name = "3P3V";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_sd3_vmmc: sd3-vmmc {
+ compatible = "regulator-fixed";
+ regulator-name = "P3V3_SD3_SWITCHED";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+ enable-active-high;
+ };
+
+ reg_sd4_vmmc: sd4-vmmc {
+ compatible = "regulator-fixed";
+ regulator-name = "P3V3_SD4_SWITCHED";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_usb_h1_vbus: usb-h1-vbus {
+ compatible = "regulator-fixed";
+ regulator-name = "usb_h1_vbus";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ reg_usb_otg_vbus: usb-otg-vbus {
+ compatible = "regulator-fixed";
+ regulator-name = "usb_otg_vbus";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ usb_hub: usb-hub {
+ compatible = "smsc,usb3503a";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usbhub>;
+ reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+ clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+ clock-names = "refclk";
+ };
+};
+
+&clks {
+ assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+ assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_audmux>;
+ status = "okay";
+};
+
+&fec {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_enet_3>;
+ phy-handle = <&eth_phy>;
+ phy-mode = "rgmii";
+ status = "okay";
+ mdio {
+ eth_phy: ethernet-phy {
+ rxc-skew-ps = <1140>;
+ txc-skew-ps = <1140>;
+ txen-skew-ps = <600>;
+ rxdv-skew-ps = <240>;
+ rxd0-skew-ps = <420>;
+ rxd1-skew-ps = <600>;
+ rxd2-skew-ps = <420>;
+ rxd3-skew-ps = <240>;
+ txd0-skew-ps = <60>;
+ txd1-skew-ps = <60>;
+ txd2-skew-ps = <60>;
+ txd3-skew-ps = <240>;
+ };
+ };
+};
+
+&i2c1 {
+ clock-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c1_1>;
+ status = "okay";
+};
+
+&i2c2 {
+ clock-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c2_2>;
+ status = "okay";
+};
+
+&i2c3 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c3_4>;
+ status = "okay";
+};
+
+&pcie {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pcie>;
+ reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+ status = "okay";
+};
+
+&ssi1 {
+ fsl,mode = "i2s-slave";
+ status = "okay";
+};
+
+&uart4 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart4_1>;
+ status = "okay";
+};
+
+&usbh1 {
+ vbus-supply = <&reg_usb_h1_vbus>;
+ disable-over-current;
+ clocks = <&clks IMX6QDL_CLK_USBOH3>;
+ status = "okay";
+};
+
+&usbotg {
+ vbus-supply = <&reg_usb_otg_vbus>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usbotg_2>;
+ disable-over-current;
+ status = "okay";
+};
+
+&usdhc1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usdhc1_1>;
+ no-1-8-v;
+ status = "okay";
+};
+
+&usdhc3 {
+ pinctrl-names = "default", "state_100mhz", "state_200mhz";
+ pinctrl-0 = <&pinctrl_usdhc3_2>;
+ pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+ pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+ vmcc-supply = <&reg_sd3_vmmc>;
+ cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+ bus-witdh=<4>;
+ no-1-8-v;
+ status = "okay";
+};
+
+&usdhc4 {
+ pinctrl-names = "default", "state_100mhz", "state_200mhz";
+ pinctrl-0 = <&pinctrl_usdhc4_1>;
+ pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+ pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+ vmcc-supply = <&reg_sd4_vmmc>;
+ bus-witdh=<8>;
+ no-1-8-v;
+ non-removable;
+ status = "okay";
+};
+
+&iomuxc {
+ pinctrl_audmux: audmux {
+ fsl,pins = <
+ MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+ MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+ MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+ MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+ >;
+ };
+
+ pinctrl_enet_3: enetgrp-3 {
+ 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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+ >;
+ };
+
+ pinctrl_i2c1_1: i2c1grp-1 {
+ fsl,pins = <
+ MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+ MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+ >;
+ };
+
+ pinctrl_i2c2_2: i2c2grp-2 {
+ fsl,pins = <
+ MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+ MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+ >;
+ };
+
+ pinctrl_i2c3_4: i2c3grp-4 {
+ fsl,pins = <
+ MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+ MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+ MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+ >;
+ };
+
+ pinctrl_pcie: pciegrp {
+ fsl,pins = <
+ MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059 /* PCIe Reset */
+ >;
+ };
+
+ pinctrl_uart4_1: uart4grp-1 {
+ fsl,pins = <
+ MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+ MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+ >;
+ };
+
+ pinctrl_usbhub: usbhubgrp {
+ fsl,pins = <
+ MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059 /* HUB USB Reset */
+ >;
+ };
+
+ pinctrl_usbotg_2: usbotggrp-2 {
+ fsl,pins = <
+ MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+ >;
+ };
+
+ pinctrl_usdhc1_1: usdhc1grp-1 {
+ fsl,pins = <
+ MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+ MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+ MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+ MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+ MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+ MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+ >;
+ };
+
+ pinctrl_usdhc3_2: usdhc3grp-2 {
+ fsl,pins = <
+ MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+ MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+ MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059 /* CD */
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059 /* PWR */
+ >;
+ };
+
+ pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+ fsl,pins = <
+ MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+ MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+ >;
+ };
+
+ pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+ fsl,pins = <
+ MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+ MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+ >;
+ };
+
+ pinctrl_usdhc4_1: usdhc4grp-1 {
+ fsl,pins = <
+ MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+ MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+ MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+ MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+ MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+ MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+ MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+ MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+ MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+ MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+ >;
+ };
+
+ pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+ fsl,pins = <
+ MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+ MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+ MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+ MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+ MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+ MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+ MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+ MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+ MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+ MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+ >;
+ };
+
+ pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+ fsl,pins = <
+ MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+ MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+ MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+ MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+ MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+ MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+ MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+ MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+ MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+ MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+ >;
+ };
+};
--

2.6.4

--

| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#22 lore raw

PATCH v5 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

In reply to Shawn Guo

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
Test on top of ARM: dts: imx6q: clean up unused ipu2grp

Changes in v5:
- None

Changes in v4:
- update regulator name
- using flat pins,fsl
- move iomuxc
- add X11 license
- better alphabetic order

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 410 +++++++++++++++++++++++++++++++
 3 files changed, 489 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0

78 lines not on this page · raw message

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +410 -0

410 lines not on this page · raw message

Signature · 1 line
2.6.4
#23 lore raw

PATCH v5 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi Shawn

Quoted 9 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
Test on top of ARM: dts: imx6q: clean up unused ipu2grp

Changes in v5:
- None

Quoted 7 lines

Changes in v4:
- update regulator name
- using flat pins,fsl
- move iomuxc
- add X11 license
- better alphabetic order

Do you have any other comments?

Michael

Quoted 535 lines

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 410 +++++++++++++++++++++++++++++++
 3 files changed, 489 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6q-gw551x.dtb \
        imx6q-gw552x.dtb \
        imx6q-hummingboard.dtb \
+       imx6q-icore-rqs.dtb \
        imx6q-nitrogen6x.dtb \
        imx6q-phytec-pbab01.dtb \
        imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0
new file mode 100644
index 0000000..0053188
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+       model = "Engicam i.CoreM6 Quad SOM";
+       compatible = "engicam,imx6-icore-rqs", "fsl,imx6q";
+
+       sound {
+               compatible = "fsl,imx-audio-sgtl5000";
+               model = "imx-audio-sgtl5000";
+               ssi-controller = <&ssi1>;
+               audio-codec = <&codec>;
+               audio-routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+               mux-int-port = <1>;
+               mux-ext-port = <4>;
+       };
+};
+
+&i2c3 {
+       codec: sgtl5000 at 0a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               clocks = <&clks IMX6QDL_CLK_CKO>;
+               VDDA-supply = <&reg_2p5v>;
+               VDDIO-supply = <&reg_3p3v>;
+               VDDD-supply = <&reg_1p8v>;
+       };
+};
+
+&sata {
+       status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +410 -1
new file mode 100644
index 0000000..b984128
@@ -0,0 +1,410 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+       memory {
+               reg = <0x10000000 0x80000000>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_2p5v: regulator-2p5v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P5V";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_sd3_vmmc: sd3-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "P3V3_SD3_SWITCHED";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+               enable-active-high;
+       };
+
+       reg_sd4_vmmc: sd4-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "P3V3_SD4_SWITCHED";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_usb_h1_vbus: usb-h1-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_h1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_usb_otg_vbus: usb-otg-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       usb_hub: usb-hub {
+               compatible = "smsc,usb3503a";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbhub>;
+               reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+               clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+               clock-names = "refclk";
+       };
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_audmux>;
+       status = "okay";
+};
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet_3>;
+       phy-handle = <&eth_phy>;
+       phy-mode = "rgmii";
+       status = "okay";
+       mdio {
+               eth_phy: ethernet-phy {
+                       rxc-skew-ps = <1140>;
+                       txc-skew-ps = <1140>;
+                       txen-skew-ps = <600>;
+                       rxdv-skew-ps = <240>;
+                       rxd0-skew-ps = <420>;
+                       rxd1-skew-ps = <600>;
+                       rxd2-skew-ps = <420>;
+                       rxd3-skew-ps = <240>;
+                       txd0-skew-ps = <60>;
+                       txd1-skew-ps = <60>;
+                       txd2-skew-ps = <60>;
+                       txd3-skew-ps = <240>;
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1_1>;
+       status = "okay";
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2_2>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3_4>;
+       status = "okay";
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie>;
+       reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&ssi1 {
+       fsl,mode = "i2s-slave";
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4_1>;
+       status = "okay";
+};
+
+&usbh1 {
+       vbus-supply = <&reg_usb_h1_vbus>;
+       disable-over-current;
+       clocks = <&clks IMX6QDL_CLK_USBOH3>;
+       status = "okay";
+};
+
+&usbotg {
+       vbus-supply = <&reg_usb_otg_vbus>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg_2>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1_1>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3_2>;
+       pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+       vmcc-supply = <&reg_sd3_vmmc>;
+       cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+       bus-witdh=<4>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc4 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc4_1>;
+       pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+       vmcc-supply = <&reg_sd4_vmmc>;
+       bus-witdh=<8>;
+       no-1-8-v;
+       non-removable;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_audmux: audmux {
+               fsl,pins = <
+                       MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+                       MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+                       MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+                       MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+               >;
+       };
+
+       pinctrl_enet_3: enetgrp-3 {
+               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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+               >;
+       };
+
+       pinctrl_i2c1_1: i2c1grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+                       MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c2_2: i2c2grp-2 {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c3_4: i2c3grp-4 {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+                       MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+                       MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+               >;
+       };
+
+       pinctrl_pcie: pciegrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059  /* PCIe Reset */
+               >;
+       };
+
+       pinctrl_uart4_1: uart4grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+                       MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+               >;
+       };
+
+       pinctrl_usbhub: usbhubgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059  /* HUB USB Reset */
+               >;
+       };
+
+       pinctrl_usbotg_2: usbotggrp-2 {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+               >;
+       };
+
+       pinctrl_usdhc1_1: usdhc1grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+               >;
+       };
+
+       pinctrl_usdhc3_2: usdhc3grp-2 {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+                       MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059  /* CD */
+                       MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059  /* PWR */
+               >;
+       };
+
+       pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+               >;
+       };
+
+       pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+               >;
+       };
+
+       pinctrl_usdhc4_1: usdhc4grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+               >;
+       };
+
+       pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+               >;
+       };
+
+       pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+               >;
+       };
+};
--

2.6.4

Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#24 lore raw

PATCH v5 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

In reply to Michael Trimarchi
Quoted 205 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
Test on top of ARM: dts: imx6q: clean up unused ipu2grp

Changes in v5:
- None

Changes in v4:
- update regulator name
- using flat pins,fsl
- move iomuxc
- add X11 license
- better alphabetic order

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 410 +++++++++++++++++++++++++++++++
 3 files changed, 489 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0
new file mode 100644
index 0000000..0053188
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+	model = "Engicam i.CoreM6 Quad SOM";
+	compatible = "engicam,imx6-icore-rqs", "fsl,imx6q";
+
+	sound {
+		compatible = "fsl,imx-audio-sgtl5000";
+		model = "imx-audio-sgtl5000";
+		ssi-controller = <&ssi1>;
+		audio-codec = <&codec>;
+		audio-routing =
+			"MIC_IN", "Mic Jack",
+			"Mic Jack", "Mic Bias",
+			"Headphone Jack", "HP_OUT";
+		mux-int-port = <1>;
+		mux-ext-port = <4>;
+	};
+};
+
+&i2c3 {
+	codec: sgtl5000 at 0a {
+		compatible = "fsl,sgtl5000";
+		reg = <0x0a>;
+		clocks = <&clks IMX6QDL_CLK_CKO>;
+		VDDA-supply = <&reg_2p5v>;
+		VDDIO-supply = <&reg_3p3v>;
+		VDDD-supply = <&reg_1p8v>;
+	};
+};
+
+&sata {
+	status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +67 -0
new file mode 100644
index 0000000..b984128
@@ -0,0 +1,410 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+	memory {
+		reg = <0x10000000 0x80000000>;
+	};
+
+	reg_1p8v: regulator-1p8v {
+		compatible = "regulator-fixed";
+		regulator-name = "1P8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_2p5v: regulator-2p5v {
+		compatible = "regulator-fixed";
+		regulator-name = "2P5V";
+		regulator-min-microvolt = <2500000>;
+		regulator-max-microvolt = <2500000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 77

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+	reg_3p3v: regulator-3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "3P3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_sd3_vmmc: sd3-vmmc {

Why are the regulator nodes starting from this one not following the naming schema regulator-xxx any more?

Quoted 52 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +52 -0
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD3_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		enable-active-high;
+	};
+
+	reg_sd4_vmmc: sd4-vmmc {
+		compatible = "regulator-fixed";
+		regulator-name = "P3V3_SD4_SWITCHED";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_h1_vbus: usb-h1-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_h1_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_usb_otg_vbus: usb-otg-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb_otg_vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	usb_hub: usb-hub {
+		compatible = "smsc,usb3503a";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_usbhub>;
+		reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+		clock-names = "refclk";
+	};
+};
+
+&clks {
+	assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+	pinctrl-names = "default";

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 139

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+	pinctrl-0 = <&pinctrl_audmux>;
+	status = "okay";
+};
+
+&fec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_enet_3>;
+	phy-handle = <&eth_phy>;
+	phy-mode = "rgmii";
+	status = "okay";

Have a new line between properties and sub-node.

Quoted 103 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +103 -0
+	mdio {
+		eth_phy: ethernet-phy {
+			rxc-skew-ps = <1140>;
+			txc-skew-ps = <1140>;
+			txen-skew-ps = <600>;
+			rxdv-skew-ps = <240>;
+			rxd0-skew-ps = <420>;
+			rxd1-skew-ps = <600>;
+			rxd2-skew-ps = <420>;
+			rxd3-skew-ps = <240>;
+			txd0-skew-ps = <60>;
+			txd1-skew-ps = <60>;
+			txd2-skew-ps = <60>;
+			txd3-skew-ps = <240>;
+		};
+	};
+};
+
+&i2c1 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1_1>;
+	status = "okay";
+};
+
+&i2c2 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c2_2>;
+	status = "okay";
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3_4>;
+	status = "okay";
+};
+
+&pcie {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pcie>;
+	reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
+
+&ssi1 {
+	fsl,mode = "i2s-slave";
+	status = "okay";
+};
+
+&uart4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart4_1>;
+	status = "okay";
+};
+
+&usbh1 {
+	vbus-supply = <&reg_usb_h1_vbus>;
+	disable-over-current;
+	clocks = <&clks IMX6QDL_CLK_USBOH3>;
+	status = "okay";
+};
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_2>;
+	disable-over-current;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1_1>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc3 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc3_2>;
+	pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+	vmcc-supply = <&reg_sd3_vmmc>;
+	cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+	bus-witdh=<4>;
+	no-1-8-v;
+	status = "okay";
+};
+
+&usdhc4 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc4_1>;
+	pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+	vmcc-supply = <&reg_sd4_vmmc>;
+	bus-witdh=<8>;
+	no-1-8-v;
+	non-removable;
+	status = "okay";
+};
+
+&iomuxc {

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 252

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+	pinctrl_audmux: audmux {
+		fsl,pins = <
+			MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+			MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+			MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+			MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+		>;
+	};
+
+	pinctrl_enet_3: enetgrp-3 {

The suffix number means nothing here. Please drop them.

pinctrl_enet: enetgrp

Quoted 11 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +11 -0
+		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

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 273

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+			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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+		>;
+	};
+
+	pinctrl_i2c1_1: i2c1grp-1 {
	pinctrl_i2c1: i2c1grp

Please check all the pinctrl nodes below.

Shawn

Quoted 141 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +137 -0
+		fsl,pins = <
+			MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+			MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+		>;
+	};
+
+	pinctrl_i2c2_2: i2c2grp-2 {
+		fsl,pins = <
+			MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+			MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+		>;
+	};
+
+	pinctrl_i2c3_4: i2c3grp-4 {
+		fsl,pins = <
+			MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+			MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+			MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+		>;
+	};
+
+	pinctrl_pcie: pciegrp {
+		fsl,pins = <
+			MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059	/* PCIe Reset */
+		>;
+	};
+
+	pinctrl_uart4_1: uart4grp-1 {
+		fsl,pins = <
+			MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+			MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+		>;
+	};
+
+	pinctrl_usbhub: usbhubgrp {
+		fsl,pins = <
+			MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059	/* HUB USB Reset */
+		>;
+	};
+
+	pinctrl_usbotg_2: usbotggrp-2 {
+		fsl,pins = <
+			MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+		>;
+	};
+
+	pinctrl_usdhc1_1: usdhc1grp-1 {
+		fsl,pins = <
+			MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+			MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+			MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+			MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+			MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+			MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+		>;
+	};
+
+	pinctrl_usdhc3_2: usdhc3grp-2 {
+		fsl,pins = <
+			MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+			MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+			MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+			MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+			MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+			MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+			MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059	/* CD */
+			MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059	/* PWR */
+		>;
+	};
+
+	pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+		fsl,pins = <
+			MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+			MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+			MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+			MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+			MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+			MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+		>;
+	};
+
+	pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+		fsl,pins = <
+			MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+			MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+			MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+			MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+			MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+			MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+		>;
+	};
+
+	pinctrl_usdhc4_1: usdhc4grp-1 {
+		fsl,pins = <
+			MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+			MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+			MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+			MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+			MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+			MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+			MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+			MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+			MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+			MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+		>;
+	};
+
+	pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+		fsl,pins = <
+			MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+			MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+			MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+			MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+			MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+			MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+			MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+			MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+			MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+			MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+		>;
+	};
+
+	pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+		fsl,pins = <
+			MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+			MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+			MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+			MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+			MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+			MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+			MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+			MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+			MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+			MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+		>;
+	};
+};
Signature · 1 line
2.6.4
#25 lore raw

PATCH v5 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Hi

Quoted 211 lines · Shawn Guo
Quoted 210 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---
Test on top of ARM: dts: imx6q: clean up unused ipu2grp

Changes in v5:
- None

Changes in v4:
- update regulator name
- using flat pins,fsl
- move iomuxc
- add X11 license
- better alphabetic order

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 410 +++++++++++++++++++++++++++++++
 3 files changed, 489 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index bb8fa02..7e8f29c 100644
@@ -312,6 +312,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
      imx6q-gw551x.dtb \
      imx6q-gw552x.dtb \
      imx6q-hummingboard.dtb \
+     imx6q-icore-rqs.dtb \
      imx6q-nitrogen6x.dtb \
      imx6q-phytec-pbab01.dtb \
      imx6q-rex-pro.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0
new file mode 100644
index 0000000..0053188
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore-rqs.dtsi"
+
+/ {
+     model = "Engicam i.CoreM6 Quad SOM";
+     compatible = "engicam,imx6-icore-rqs", "fsl,imx6q";
+
+     sound {
+             compatible = "fsl,imx-audio-sgtl5000";
+             model = "imx-audio-sgtl5000";
+             ssi-controller = <&ssi1>;
+             audio-codec = <&codec>;
+             audio-routing =
+                     "MIC_IN", "Mic Jack",
+                     "Mic Jack", "Mic Bias",
+                     "Headphone Jack", "HP_OUT";
+             mux-int-port = <1>;
+             mux-ext-port = <4>;
+     };
+};
+
+&i2c3 {
+     codec: sgtl5000 at 0a {
+             compatible = "fsl,sgtl5000";
+             reg = <0x0a>;
+             clocks = <&clks IMX6QDL_CLK_CKO>;
+             VDDA-supply = <&reg_2p5v>;
+             VDDIO-supply = <&reg_3p3v>;
+             VDDD-supply = <&reg_1p8v>;
+     };
+};
+
+&sata {
+     status = "okay";
+};
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +72 -0
new file mode 100644
index 0000000..b984128
@@ -0,0 +1,410 @@
+/*
+ * Copyright (C) 2015 Amarula Solutions B.V.
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+     memory {
+             reg = <0x10000000 0x80000000>;
+     };
+
+     reg_1p8v: regulator-1p8v {
+             compatible = "regulator-fixed";
+             regulator-name = "1P8V";
+             regulator-min-microvolt = <1800000>;
+             regulator-max-microvolt = <1800000>;
+             regulator-boot-on;
+             regulator-always-on;
+     };
+
+     reg_2p5v: regulator-2p5v {
+             compatible = "regulator-fixed";
+             regulator-name = "2P5V";
+             regulator-min-microvolt = <2500000>;
+             regulator-max-microvolt = <2500000>;
+             regulator-boot-on;
+             regulator-always-on;
+     };
+
+     reg_3p3v: regulator-3p3v {
+             compatible = "regulator-fixed";
+             regulator-name = "3P3V";
+             regulator-min-microvolt = <3300000>;
+             regulator-max-microvolt = <3300000>;
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 77

Quoted 5 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +5 -0
+             regulator-boot-on;
+             regulator-always-on;
+     };
+
+     reg_sd3_vmmc: sd3-vmmc {

Why are the regulator nodes starting from this one not following the naming schema regulator-xxx any more?

will fix

Quoted 56 lines
Quoted 56 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +56 -0
+             compatible = "regulator-fixed";
+             regulator-name = "P3V3_SD3_SWITCHED";
+             regulator-min-microvolt = <3300000>;
+             regulator-max-microvolt = <3300000>;
+             gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+             enable-active-high;
+     };
+
+     reg_sd4_vmmc: sd4-vmmc {
+             compatible = "regulator-fixed";
+             regulator-name = "P3V3_SD4_SWITCHED";
+             regulator-min-microvolt = <3300000>;
+             regulator-max-microvolt = <3300000>;
+             regulator-boot-on;
+             regulator-always-on;
+     };
+
+     reg_usb_h1_vbus: usb-h1-vbus {
+             compatible = "regulator-fixed";
+             regulator-name = "usb_h1_vbus";
+             regulator-min-microvolt = <5000000>;
+             regulator-max-microvolt = <5000000>;
+             regulator-boot-on;
+             regulator-always-on;
+     };
+
+     reg_usb_otg_vbus: usb-otg-vbus {
+             compatible = "regulator-fixed";
+             regulator-name = "usb_otg_vbus";
+             regulator-min-microvolt = <5000000>;
+             regulator-max-microvolt = <5000000>;
+             regulator-boot-on;
+             regulator-always-on;
+     };
+
+     usb_hub: usb-hub {
+             compatible = "smsc,usb3503a";
+             pinctrl-names = "default";
+             pinctrl-0 = <&pinctrl_usbhub>;
+             reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+             clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+             clock-names = "refclk";
+     };
+};
+
+&clks {
+     assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+     assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
+};
+
+&audmux {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_audmux>;
+     status = "okay";
+};
+
Quoted 9 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 139

Quoted 6 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +6 -0
+&fec {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_enet_3>;
+     phy-handle = <&eth_phy>;
+     phy-mode = "rgmii";
+     status = "okay";

Have a new line between properties and sub-node.

ok

Quoted 116 lines
Quoted 103 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +103 -0
+     mdio {
+             eth_phy: ethernet-phy {
+                     rxc-skew-ps = <1140>;
+                     txc-skew-ps = <1140>;
+                     txen-skew-ps = <600>;
+                     rxdv-skew-ps = <240>;
+                     rxd0-skew-ps = <420>;
+                     rxd1-skew-ps = <600>;
+                     rxd2-skew-ps = <420>;
+                     rxd3-skew-ps = <240>;
+                     txd0-skew-ps = <60>;
+                     txd1-skew-ps = <60>;
+                     txd2-skew-ps = <60>;
+                     txd3-skew-ps = <240>;
+             };
+     };
+};
+
+&i2c1 {
+     clock-frequency = <100000>;
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_i2c1_1>;
+     status = "okay";
+};
+
+&i2c2 {
+     clock-frequency = <100000>;
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_i2c2_2>;
+     status = "okay";
+};
+
+&i2c3 {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_i2c3_4>;
+     status = "okay";
+};
+
+&pcie {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_pcie>;
+     reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+     status = "okay";
+};
+
+&ssi1 {
+     fsl,mode = "i2s-slave";
+     status = "okay";
+};
+
+&uart4 {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_uart4_1>;
+     status = "okay";
+};
+
+&usbh1 {
+     vbus-supply = <&reg_usb_h1_vbus>;
+     disable-over-current;
+     clocks = <&clks IMX6QDL_CLK_USBOH3>;
+     status = "okay";
+};
+
+&usbotg {
+     vbus-supply = <&reg_usb_otg_vbus>;
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_usbotg_2>;
+     disable-over-current;
+     status = "okay";
+};
+
+&usdhc1 {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_usdhc1_1>;
+     no-1-8-v;
+     status = "okay";
+};
+
+&usdhc3 {
+     pinctrl-names = "default", "state_100mhz", "state_200mhz";
+     pinctrl-0 = <&pinctrl_usdhc3_2>;
+     pinctrl-1 = <&pinctrl_usdhc3_2_100mhz>;
+     pinctrl-2 = <&pinctrl_usdhc3_2_200mhz>;
+     vmcc-supply = <&reg_sd3_vmmc>;
+     cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+     bus-witdh=<4>;
+     no-1-8-v;
+     status = "okay";
+};
+
+&usdhc4 {
+     pinctrl-names = "default", "state_100mhz", "state_200mhz";
+     pinctrl-0 = <&pinctrl_usdhc4_1>;
+     pinctrl-1 = <&pinctrl_usdhc4_1_100mhz>;
+     pinctrl-2 = <&pinctrl_usdhc4_1_200mhz>;
+     vmcc-supply = <&reg_sd4_vmmc>;
+     bus-witdh=<8>;
+     no-1-8-v;
+     non-removable;
+     status = "okay";
+};
+
+&iomuxc {

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 252

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+     pinctrl_audmux: audmux {
+             fsl,pins = <
+                     MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+                     MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+                     MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+                     MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+             >;
+     };
+
+     pinctrl_enet_3: enetgrp-3 {

The suffix number means nothing here. Please drop them.

Quoted 2 lines

pinctrl_enet: enetgrp

Ok, will fix

Quoted 22 lines
Quoted 11 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +11 -0
+             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

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 273

Quoted 10 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +10 -0
+                     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_ENET_TX_EN__ENET_TX_EN     0x1b0b0
+             >;
+     };
+
+     pinctrl_i2c1_1: i2c1grp-1 {
Quoted 4 lines
        pinctrl_i2c1: i2c1grp

Please check all the pinctrl nodes below.

Michael

Quoted 143 lines

Shawn

Quoted 141 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +137 -1
+             fsl,pins = <
+                     MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+                     MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+             >;
+     };
+
+     pinctrl_i2c2_2: i2c2grp-2 {
+             fsl,pins = <
+                     MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+                     MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+             >;
+     };
+
+     pinctrl_i2c3_4: i2c3grp-4 {
+             fsl,pins = <
+                     MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
+                     MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+                     MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+             >;
+     };
+
+     pinctrl_pcie: pciegrp {
+             fsl,pins = <
+                     MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059  /* PCIe Reset */
+             >;
+     };
+
+     pinctrl_uart4_1: uart4grp-1 {
+             fsl,pins = <
+                     MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+                     MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+             >;
+     };
+
+     pinctrl_usbhub: usbhubgrp {
+             fsl,pins = <
+                     MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059  /* HUB USB Reset */
+             >;
+     };
+
+     pinctrl_usbotg_2: usbotggrp-2 {
+             fsl,pins = <
+                     MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+             >;
+     };
+
+     pinctrl_usdhc1_1: usdhc1grp-1 {
+             fsl,pins = <
+                     MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+                     MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+                     MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+                     MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+                     MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+                     MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+             >;
+     };
+
+     pinctrl_usdhc3_2: usdhc3grp-2 {
+             fsl,pins = <
+                     MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
+                     MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10070
+                     MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17070
+                     MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
+                     MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
+                     MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+                     MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059  /* CD */
+                     MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059  /* PWR */
+             >;
+     };
+
+     pinctrl_usdhc3_2_100mhz: usdhc3grp-2_100mhz {
+             fsl,pins = <
+                     MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+                     MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+                     MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+                     MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+                     MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+                     MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+             >;
+     };
+
+     pinctrl_usdhc3_2_200mhz: usdhc3grp-2_200mhz {
+             fsl,pins = <
+                     MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+                     MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+                     MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+                     MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+                     MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+                     MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
+             >;
+     };
+
+     pinctrl_usdhc4_1: usdhc4grp-1 {
+             fsl,pins = <
+                     MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17070
+                     MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10070
+                     MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17070
+                     MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17070
+                     MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17070
+                     MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17070
+                     MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17070
+                     MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17070
+                     MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17070
+                     MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17070
+             >;
+     };
+
+     pinctrl_usdhc4_1_100mhz: usdhc4grp-1_100mhz {
+             fsl,pins = <
+                     MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170B1
+                     MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100B1
+                     MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170B1
+                     MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170B1
+                     MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170B1
+                     MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170B1
+                     MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170B1
+                     MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170B1
+                     MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170B1
+                     MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170B1
+             >;
+     };
+
+     pinctrl_usdhc4_1_200mhz: usdhc4grp-2_200mhz {
+             fsl,pins = <
+                     MX6QDL_PAD_SD4_CMD__SD4_CMD    0x170F9
+                     MX6QDL_PAD_SD4_CLK__SD4_CLK    0x100F9
+                     MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x170F9
+                     MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x170F9
+                     MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x170F9
+                     MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x170F9
+                     MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x170F9
+                     MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x170F9
+                     MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x170F9
+                     MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
+             >;
+     };
+};
--

2.6.4

Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#26 lore raw

PATCH v6 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

In reply to Shawn Guo

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

---

Test on top of ARM: dts: imx6q: clean up unused ipu2grp

Changes in v6:
- fix all the regulator name using regulator- as prefix
- cleanup pinmux group name

Changes in v5:
- None

Changes in v4:
- update regulator name
- using flat pins,fsl
- move iomuxc
- add X11 license
- better alphabetic order

Changes in v3:
- add sgtl audio support
- add ethernet gigabit tuning
- use hub reset only in usbhub and not
in otg vbus

Changes in v2:
- add the board in alphabetic order
- remove cpu operating point
- remove simple-bus and adjust regulaotor
- add gpios to correct pinctrl
- remove no mainline binding of gpc

 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6q-icore-rqs.dts    |  78 ++++++
 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 411 +++++++++++++++++++++++++++++++
 3 files changed, 490 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6q-icore-rqs.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi
arch/arm/boot/dts/Makefile +1 -0
index 30bbc37..5caf0a6 100644
@@ -323,6 +323,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-gw551x.dtb \
 	imx6q-gw552x.dtb \
 	imx6q-hummingboard.dtb \
+	imx6q-icore-rqs.dtb \
 	imx6q-nitrogen6x.dtb \
 	imx6q-nitrogen6_max.dtb \
 	imx6q-phytec-pbab01.dtb \
arch/arm/boot/dts/imx6q-icore-rqs.dts new file +78 -0

78 lines not on this page · raw message

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +411 -0

411 lines not on this page · raw message

Signature · 7 lines
2.7.0

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
Applied
#27 lore raw

PATCH v6 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Quoted 3 lines · Michael Trimarchi

www.engicam.com/en/products/embedded/som/standard/i-core-rqs-m6s-dl-d-q

Applied, thanks.

#28 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

In reply to Lucas Stach

On Mon, Nov 16, 2015 at 12:38:15PM +0100, Lucas Stach wrote:
<snip>

Quoted 16 lines
Quoted 16 lines
Quoted 15 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 80

Quoted 9 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +9 -0
+		reg_sd3_vmmc: sd3_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD3_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

A lot of those regulators look like they don't need to be always-on.

Also the use of a simple-bus, while giving some structure to the DT is considered bad style as it doesn't reflect any real hardware.

Quoted 6 lines
Quoted 2 lines

I will check how other boards do it

Note that there are a lot of bad examples still around. What you need to do is essentially just remove the additional DT level of the regulator bus. The regulators are board components that belong to the same level as the usb hub below, or the memory node above.

Will kernel populate platform_device for these fixed regulators if they are being put directly under root node? Kernel used to only do that for devices under simple-bus.

Shawn

#29 lore raw

PATCH 1/1 ARM: dts: imx6q-icore-rqs: Add Engicam IMX6 Q7 initial support

Am Dienstag, den 24.11.2015, 17:19 +0800 schrieb Shawn Guo:

Quoted 20 lines · Lucas Stach

<snip>

Quoted 18 lines
Quoted 18 lines
Quoted 12 lines

arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi line 80

Quoted 9 lines
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi new file +9 -0
+		reg_sd3_vmmc: sd3_vmmc {
+			compatible = "regulator-fixed";
+			regulator-name = "P3V3_SD3_SWITCHED";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+			regulator-boot-on;
+			regulator-always-on;
+		};

A lot of those regulators look like they don't need to be always-on.

Quoted 3 lines

Also the use of a simple-bus, while giving some structure to the DT is considered bad style as it doesn't reflect any real hardware.

I will check how other boards do it

Quoted 9 lines
Quoted 4 lines

Note that there are a lot of bad examples still around. What you need to do is essentially just remove the additional DT level of the regulator bus. The regulators are board components that belong to the same level as the usb hub below, or the memory node above.

Will kernel populate platform_device for these fixed regulators if they are being put directly under root node? Kernel used to only do that for devices under simple-bus.

It does, as other behavior would clearly be a bug that should not be worked around in the DT itself.

We are using of_platform_populate() to populate the root bus. From the comment above this function:
"It differs in that it follows the modern convention of requiring all device nodes to have a 'compatible' property, and it is suitable for creating devices which are children of the root node (of_platform_bus_probe will only create children of the root which are selected by the @matches argument)."

Regards,
Lucas

Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |