linux-clk.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/5] Add support for imx6qp
@ 2015-12-15  6:07 Bai Ping
  2015-12-15  6:07 ` [PATCH v2 1/5] ARM: dts: imx: Add basic dts support for imx6qp SOC Bai Ping
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Bai Ping @ 2015-12-15  6:07 UTC (permalink / raw)
  To: shawnguo, kernel
  Cc: pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

This patchset add basic support for i.MX6Quad Plus SOC.

change for v2:
 -- address commnet from Fabio Estevam, split the dts
    into three patch:
	dts for imx6qp soc; dts for imx6qp-sabresd
	and dts for imx6qp-sabreauto
 -- fix a typo in commit, the chip name should be i.MX6Quad Plus 

Bai Ping (5):
  ARM: dts: imx: Add basic dts support for imx6qp SOC
  ARM: dts: imx: Add basic dts support for imx6qp-sabresd
  ARM: dts: imx: Add basic dts support for imx6qp-sabreauto
  clk: imx: Add clock support for imx6qp
  ARM: imx: Add msl code support for imx6qp

 arch/arm/boot/dts/Makefile                |   2 +
 arch/arm/boot/dts/imx6q.dtsi              |   2 +-
 arch/arm/boot/dts/imx6qdl-sabresd.dtsi    |   1 +
 arch/arm/boot/dts/imx6qp-sabreauto.dts    |  67 +++++++++++++
 arch/arm/boot/dts/imx6qp-sabresd.dts      |  59 +++++++++++
 arch/arm/boot/dts/imx6qp.dtsi             | 157 ++++++++++++++++++++++++++++++
 arch/arm/mach-imx/anatop.c                |   5 +-
 arch/arm/mach-imx/mach-imx6q.c            |   8 +-
 drivers/clk/imx/clk-imx6q.c               | 132 ++++++++++++++++++++-----
 include/dt-bindings/clock/imx6qdl-clock.h |  16 ++-
 10 files changed, 417 insertions(+), 32 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx6qp-sabreauto.dts
 create mode 100644 arch/arm/boot/dts/imx6qp-sabresd.dts
 create mode 100644 arch/arm/boot/dts/imx6qp.dtsi

-- 
1.9.1

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v2 1/5] ARM: dts: imx: Add basic dts support for imx6qp SOC
  2015-12-15  6:07 [PATCH v2 0/5] Add support for imx6qp Bai Ping
@ 2015-12-15  6:07 ` Bai Ping
  2016-01-28  7:42   ` Shawn Guo
  2015-12-15  6:07 ` [PATCH v2 2/5] ARM: dts: imx: Add basic dts support for imx6qp-sabresd Bai Ping
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Bai Ping @ 2015-12-15  6:07 UTC (permalink / raw)
  To: shawnguo, kernel
  Cc: pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

The i.MX6Quad Plus processor is an high performance SOC of i.MX6 family.
It has enhanced graphics performance and increased overall memory bandwidth
compared to i.MX6Q. Most of the design are same as i.MX6Quad/Dual, so code
for i.MX6Quad can be resued by this chip. The revision number is identied as
i.MX6Q Rev2.0, but actually it is a new chip, as we did many change to the
overall architecture.

This patch adds basic dtsi file support for the new i.MX6Quad Plus processor.

Signed-off-by: Bai Ping <b51503@freescale.com>
---
 arch/arm/boot/dts/imx6q.dtsi              |   2 +-
 arch/arm/boot/dts/imx6qp.dtsi             | 157 ++++++++++++++++++++++++++++++
 include/dt-bindings/clock/imx6qdl-clock.h |  16 ++-
 3 files changed, 173 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx6qp.dtsi

diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
index a266a56..e26d0fd 100644
--- a/arch/arm/boot/dts/imx6q.dtsi
+++ b/arch/arm/boot/dts/imx6q.dtsi
@@ -22,7 +22,7 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 
-		cpu@0 {
+		cpu0: cpu@0 {
 			compatible = "arm,cortex-a9";
 			device_type = "cpu";
 			reg = <0>;
diff --git a/arch/arm/boot/dts/imx6qp.dtsi b/arch/arm/boot/dts/imx6qp.dtsi
new file mode 100644
index 0000000..e43751f
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qp.dtsi
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2015 Freescale Semiconductor, Inc.
+ *
+ * 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.
+ *
+ */
+
+/ {
+	aliases {
+		pre0 = &pre1;
+		pre1 = &pre2;
+		pre2 = &pre3;
+		pre3 = &pre4;
+		prg0 = &prg1;
+		prg1 = &prg2;
+	};
+
+	soc {
+		ocram_2: sram@00940000 {
+			compatible = "mmio-sram";
+			reg = <0x00940000 0x20000>;
+			clocks = <&clks IMX6QDL_CLK_OCRAM>;
+		};
+
+		ocram_3: sram@00960000 {
+			compatible = "mmio-sram";
+			reg = <0x00960000 0x20000>;
+			clocks = <&clks IMX6QDL_CLK_OCRAM>;
+		};
+
+		pcie: pcie@0x01000000 {
+			compatible = "fsl,imx6qp-pcie", "snps,dw-pcie";
+			reg = <0x01ffc000 0x4000>, <0x01f00000 0x80000>;
+			reg-names = "dbi", "config";
+			#address-cells = <3>;
+			#size-cells = <2>;
+			device_type = "pci";
+			ranges = <0x81000000 0 0          0x01f80000 0 0x00010000 /* downstream I/O */
+				  0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */
+			num-lanes = <1>;
+			interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "msi";
+			#interrupt-cells = <1>;
+			interrupt-map-mask = <0 0 0 0x7>;
+			interrupt-map = <0 0 0 1 &intc 0 123 IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 2 &intc 0 122 IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 3 &intc 0 121 IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 4 &intc 0 120 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clks IMX6QDL_CLK_PCIE_REF_125M>,
+				 <&clks IMX6QDL_CLK_SATA_REF_100M>,
+				 <&clks IMX6QDL_CLK_LVDS1_GATE>, <&clks IMX6QDL_CLK_PCIE_AXI>;
+			clock-names = "pcie_phy", "ref_100m", "pcie_bus", "pcie";
+			status = "disabled";
+		};
+
+		aips-bus@02100000 { /* AIPS2 */
+			pre1: pre@021c8000 {
+				compatible = "fsl,imx6q-pre";
+				reg = <0x021c8000 0x1000>;
+				clocks = <&clks IMX6QDL_CLK_PRE0>;
+				interrupts = <0 90 IRQ_TYPE_EDGE_RISING>;
+				ocram = <&ocram_2>;
+				status = "disabled";
+			};
+
+			pre2: pre@021c9000 {
+				compatible = "fsl,imx6q-pre";
+				reg = <0x021c9000 0x1000>;
+				clocks = <&clks IMX6QDL_CLK_PRE1>;
+				interrupts = <0 97 IRQ_TYPE_EDGE_RISING>;
+				ocram = <&ocram_2>;
+				status = "disabled";
+			};
+
+			pre3: pre@021ca000 {
+				compatible = "fsl,imx6q-pre";
+				reg = <0x021ca000 0x1000>;
+				clocks = <&clks IMX6QDL_CLK_PRE2>;
+				interrupts = <0 98 IRQ_TYPE_EDGE_RISING>;
+				ocram = <&ocram_3>;
+				status = "disabled";
+			};
+
+			pre4: pre@021cb000 {
+				compatible = "fsl,imx6q-pre";
+				reg = <0x021cb000 0x1000>;
+				clocks = <&clks IMX6QDL_CLK_PRE3>;
+				interrupts = <0 99 IRQ_TYPE_EDGE_RISING>;
+				ocram = <&ocram_3>;
+				status = "disabled";
+			};
+
+			prg1: prg@021cc000 {
+				compatible = "fsl,imx6q-prg";
+				reg = <0x021cc000 0x1000>;
+				clocks = <&clks IMX6QDL_CLK_PRG0_AXI>,
+					 <&clks IMX6QDL_CLK_PRG0_APB>;
+				clock-names = "axi", "apb";
+				gpr = <&gpr>;
+				status = "disabled";
+			};
+
+			prg2: prg@021cd000 {
+				compatible = "fsl,imx6q-prg";
+				reg = <0x021cd000 0x1000>;
+				clocks = <&clks IMX6QDL_CLK_PRG1_AXI>,
+					 <&clks IMX6QDL_CLK_PRG1_APB>;
+				clock-names = "axi", "apb";
+				gpr = <&gpr>;
+				status = "disabled";
+			};
+		};
+
+		ipu1: ipu@02400000 {
+			compatible = "fsl,imx6qp-ipu", "fsl,imx6q-ipu";
+			clocks = <&clks IMX6QDL_CLK_IPU1>,
+				 <&clks IMX6QDL_CLK_IPU1_DI0>, <&clks IMX6QDL_CLK_IPU1_DI1>,
+				 <&clks IMX6QDL_CLK_IPU1_DI0_SEL>, <&clks IMX6QDL_CLK_IPU1_DI1_SEL>,
+				 <&clks IMX6QDL_CLK_LDB_DI0_PODF>, <&clks IMX6QDL_CLK_LDB_DI1_PODF>,
+				 <&clks IMX6QDL_CLK_PRG0_APB>;
+			clock-names = "bus",
+				      "di0", "di1",
+				      "di0_sel", "di1_sel",
+				      "ldb_di0", "ldb_di1", "prg";
+		};
+
+		ipu2: ipu@02800000 {
+			compatible = "fsl,imx6qp-ipu", "fsl,imx6q-ipu";
+			clocks = <&clks IMX6QDL_CLK_IPU2>,
+				 <&clks IMX6QDL_CLK_IPU2_DI0>, <&clks IMX6QDL_CLK_IPU2_DI1>,
+				 <&clks IMX6QDL_CLK_IPU2_DI0_SEL>, <&clks IMX6QDL_CLK_IPU2_DI1_SEL>,
+				 <&clks IMX6QDL_CLK_LDB_DI0_PODF>, <&clks IMX6QDL_CLK_LDB_DI1_PODF>,
+				 <&clks IMX6QDL_CLK_PRG1_APB>;
+			clock-names = "bus",
+				      "di0", "di1",
+				      "di0_sel", "di1_sel",
+				      "ldb_di0", "ldb_di1", "prg";
+		};
+
+		sata: sata@02200000 {
+			compatible = "fsl,imx6qp-ahci";
+			reg = <0x02200000 0x4000>;
+			interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clks IMX6QDL_CLK_SATA>,
+				 <&clks IMX6QDL_CLK_SATA_REF_100M>,
+				 <&clks IMX6QDL_CLK_AHB>;
+			clock-names = "sata", "sata_ref", "ahb";
+			status = "disabled";
+		};
+	};
+};
+
+&ldb {
+	compatible = "fsl,imx6qp-ldb", "fsl,imx6q-ldb", "fsl,imx53-ldb";
+};
diff --git a/include/dt-bindings/clock/imx6qdl-clock.h b/include/dt-bindings/clock/imx6qdl-clock.h
index 77985cc..2905033 100644
--- a/include/dt-bindings/clock/imx6qdl-clock.h
+++ b/include/dt-bindings/clock/imx6qdl-clock.h
@@ -255,6 +255,20 @@
 #define IMX6QDL_CLK_CAAM_ACLK			242
 #define IMX6QDL_CLK_CAAM_IPG			243
 #define IMX6QDL_CLK_SPDIF_GCLK			244
-#define IMX6QDL_CLK_END				245
+#define IMX6QDL_CLK_UART_SEL			245
+#define IMX6QDL_CLK_IPG_PER_SEL			246
+#define IMX6QDL_CLK_ECSPI_SEL			247
+#define IMX6QDL_CLK_CAN_SEL			248
+#define IMX6QDL_CLK_MMDC_CH1_AXI_CG		249
+#define IMX6QDL_CLK_PRE0			250
+#define IMX6QDL_CLK_PRE1			251
+#define IMX6QDL_CLK_PRE2			252
+#define IMX6QDL_CLK_PRE3			253
+#define IMX6QDL_CLK_PRG0_AXI			254
+#define IMX6QDL_CLK_PRG1_AXI			255
+#define IMX6QDL_CLK_PRG0_APB			256
+#define IMX6QDL_CLK_PRG1_APB			257
+#define IMX6QDL_CLK_PRE_AXI			258
+#define IMX6QDL_CLK_END				259
 
 #endif /* __DT_BINDINGS_CLOCK_IMX6QDL_H */
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 2/5] ARM: dts: imx: Add basic dts support for imx6qp-sabresd
  2015-12-15  6:07 [PATCH v2 0/5] Add support for imx6qp Bai Ping
  2015-12-15  6:07 ` [PATCH v2 1/5] ARM: dts: imx: Add basic dts support for imx6qp SOC Bai Ping
@ 2015-12-15  6:07 ` Bai Ping
  2016-01-28  7:54   ` Shawn Guo
  2015-12-15  6:07 ` [PATCH v2 3/5] ARM: dts: imx: Add basic dts support for imx6qp-sabreauto Bai Ping
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Bai Ping @ 2015-12-15  6:07 UTC (permalink / raw)
  To: shawnguo, kernel
  Cc: pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

The patch adds dts file for imx6qp-sabresd board.

Signed-off-by: Bai Ping <b51503@freescale.com>
---
 arch/arm/boot/dts/Makefile             |  1 +
 arch/arm/boot/dts/imx6qdl-sabresd.dtsi |  1 +
 arch/arm/boot/dts/imx6qp-sabresd.dts   | 59 ++++++++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6qp-sabresd.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 36d8133..dfba765 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -302,6 +302,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6dl-sabreauto.dtb \
 	imx6dl-sabrelite.dtb \
 	imx6dl-sabresd.dtb \
+	imx6qp-sabresd.dtb \
 	imx6dl-tx6dl-comtft.dtb \
 	imx6dl-tx6u-801x.dtb \
 	imx6dl-tx6u-811x.dtb \
diff --git a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
index a6d445c..f65f57b 100644
--- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
@@ -238,6 +238,7 @@
 				regulator-max-microvolt = <3300000>;
 				regulator-boot-on;
 				regulator-always-on;
+				regulator-ramp-delay = <6250>;
 			};
 
 			sw3a_reg: sw3a {
diff --git a/arch/arm/boot/dts/imx6qp-sabresd.dts b/arch/arm/boot/dts/imx6qp-sabresd.dts
new file mode 100644
index 0000000..c3ab2b6
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qp-sabresd.dts
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * 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.
+ */
+
+#include "imx6q-sabresd.dts"
+#include "imx6qp.dtsi"
+
+/ {
+	model = "Freescale i.MX6 Quad Plus SABRE Smart Device Board";
+	compatible = "fsl,imx6qp-sabresd", "fsl,imx6qp";
+};
+
+&cpu0 {
+	arm-supply = <&sw2_reg>;
+};
+
+&iomuxc {
+	imx6qdl-sabresd {
+		pinctrl_usdhc2: usdhc2grp {
+			fsl,pins = <
+				MX6QDL_PAD_SD2_CMD__SD2_CMD		0x17059
+				MX6QDL_PAD_SD2_CLK__SD2_CLK		0x10071
+				MX6QDL_PAD_SD2_DAT0__SD2_DATA0		0x17059
+				MX6QDL_PAD_SD2_DAT1__SD2_DATA1		0x17059
+				MX6QDL_PAD_SD2_DAT2__SD2_DATA2		0x17059
+				MX6QDL_PAD_SD2_DAT3__SD2_DATA3		0x17059
+				MX6QDL_PAD_NANDF_D4__SD2_DATA4		0x17059
+				MX6QDL_PAD_NANDF_D5__SD2_DATA5		0x17059
+				MX6QDL_PAD_NANDF_D6__SD2_DATA6		0x17059
+				MX6QDL_PAD_NANDF_D7__SD2_DATA7		0x17059
+			>;
+		};
+
+		pinctrl_usdhc3: usdhc3grp {
+			fsl,pins = <
+				MX6QDL_PAD_SD3_CMD__SD3_CMD		0x17059
+				MX6QDL_PAD_SD3_CLK__SD3_CLK		0x10071
+				MX6QDL_PAD_SD3_DAT0__SD3_DATA0		0x17059
+				MX6QDL_PAD_SD3_DAT1__SD3_DATA1		0x17059
+				MX6QDL_PAD_SD3_DAT2__SD3_DATA2		0x17059
+				MX6QDL_PAD_SD3_DAT3__SD3_DATA3		0x17059
+				MX6QDL_PAD_SD3_DAT4__SD3_DATA4		0x17059
+				MX6QDL_PAD_SD3_DAT5__SD3_DATA5		0x17059
+				MX6QDL_PAD_SD3_DAT6__SD3_DATA6		0x17059
+				MX6QDL_PAD_SD3_DAT7__SD3_DATA7		0x17059
+			>;
+		};
+	};
+};
+
+&pcie {
+	power-on-gpio = <&gpio3 19 0>;
+	reset-gpio = <&gpio7 12 0>;
+	status = "okay";
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 3/5] ARM: dts: imx: Add basic dts support for imx6qp-sabreauto
  2015-12-15  6:07 [PATCH v2 0/5] Add support for imx6qp Bai Ping
  2015-12-15  6:07 ` [PATCH v2 1/5] ARM: dts: imx: Add basic dts support for imx6qp SOC Bai Ping
  2015-12-15  6:07 ` [PATCH v2 2/5] ARM: dts: imx: Add basic dts support for imx6qp-sabresd Bai Ping
@ 2015-12-15  6:07 ` Bai Ping
  2016-01-28  7:57   ` Shawn Guo
  2015-12-15  6:07 ` [PATCH v2 4/5] clk: imx: Add clock support for imx6qp Bai Ping
  2015-12-15  6:07 ` [PATCH v2 5/5] ARM: imx: Add msl code " Bai Ping
  4 siblings, 1 reply; 13+ messages in thread
From: Bai Ping @ 2015-12-15  6:07 UTC (permalink / raw)
  To: shawnguo, kernel
  Cc: pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

This patch adds basic dts file for imx6qp-sabreauto board.

Signed-off-by: Bai Ping <b51503@freescale.com>
---
 arch/arm/boot/dts/Makefile             |  1 +
 arch/arm/boot/dts/imx6qp-sabreauto.dts | 67 ++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6qp-sabreauto.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index dfba765..7996a51 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -329,6 +329,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-phytec-pbab01.dtb \
 	imx6q-rex-pro.dtb \
 	imx6q-sabreauto.dtb \
+	imx6qp-sabreauto.dtb \
 	imx6q-sabrelite.dtb \
 	imx6q-sabresd.dtb \
 	imx6q-sbc6x.dtb \
diff --git a/arch/arm/boot/dts/imx6qp-sabreauto.dts b/arch/arm/boot/dts/imx6qp-sabreauto.dts
new file mode 100644
index 0000000..b24aae6
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qp-sabreauto.dts
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * 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.
+ */
+
+#include "imx6q-sabreauto.dts"
+#include "imx6qp.dtsi"
+
+/ {
+	model = "Freescale i.MX6 Quad Plus SABRE Automotive Board";
+	compatible = "fsl,imx6qp-sabreauto", "fsl,imx6qp";
+};
+
+
+&fec {
+	pinctrl-assert-gpios = <&max7322 0 GPIO_ACTIVE_HIGH>;
+};
+
+&i2c2 {
+	max7322: gpio@68 {
+		compatible = "maxim,max7322";
+		reg = <0x68>;
+		gpio-controller;
+		#gpio-cells = <2>;
+	};
+};
+
+&iomuxc {
+	imx6qdl-sabreauto {
+		pinctrl_enet: enetgrp {
+			fsl,pins = <
+				MX6QDL_PAD_KEY_COL1__ENET_MDIO          0x1b0b0
+				MX6QDL_PAD_KEY_COL2__ENET_MDC           0x1b0b0
+				MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x1b018
+				MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x1b018
+				MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x1b018
+				MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x1b018
+				MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x1b018
+				MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x1b018
+				MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x1b018
+				MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x1b018
+				MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x1b018
+				MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1b018
+				MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1b018
+				MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x1b018
+				MX6QDL_PAD_GPIO_16__ENET_REF_CLK        0x4001b0a8
+				MX6QDL_PAD_GPIO_6__ENET_IRQ		0x000b1
+			>;
+		};
+	};
+};
+
+&pcie {
+	reset-gpio = <&max7310_c 5 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
+
+&sata {
+	status = "okay";
+};
+
+&vgen3_reg {
+	regulator-always-on;
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 4/5] clk: imx: Add clock support for imx6qp
  2015-12-15  6:07 [PATCH v2 0/5] Add support for imx6qp Bai Ping
                   ` (2 preceding siblings ...)
  2015-12-15  6:07 ` [PATCH v2 3/5] ARM: dts: imx: Add basic dts support for imx6qp-sabreauto Bai Ping
@ 2015-12-15  6:07 ` Bai Ping
  2015-12-15  6:07 ` [PATCH v2 5/5] ARM: imx: Add msl code " Bai Ping
  4 siblings, 0 replies; 13+ messages in thread
From: Bai Ping @ 2015-12-15  6:07 UTC (permalink / raw)
  To: shawnguo, kernel
  Cc: pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

most of the clock tree structures on i.MX6QP are same as
on i.MX6Q. there still some difference between these two
SOCs. Compared to the i.MX6Q, the differences of clocks on
i.MX6QP is mainly on:

1. UART clk root
2. IPG_PER clk,
3. ENFC
4. ECSPI
5. CAN_SEL
6. CSCMR1 register fixup issue
7. LDB clock
8. GPU2D clock
9 MMDC_CH1_AXI gate ...

Signed-off-by: Bai Ping <b51503@freescale.com>
---
 drivers/clk/imx/clk-imx6q.c | 132 +++++++++++++++++++++++++++++++++++---------
 1 file changed, 105 insertions(+), 27 deletions(-)

diff --git a/drivers/clk/imx/clk-imx6q.c b/drivers/clk/imx/clk-imx6q.c
index f0efc6f..02e1818 100644
--- a/drivers/clk/imx/clk-imx6q.c
+++ b/drivers/clk/imx/clk-imx6q.c
@@ -34,7 +34,9 @@ static const char *periph2_sels[]	= { "periph2_pre", "periph2_clk2", };
 static const char *axi_sels[]		= { "periph", "pll2_pfd2_396m", "periph", "pll3_pfd1_540m", };
 static const char *audio_sels[]	= { "pll4_audio_div", "pll3_pfd2_508m", "pll3_pfd3_454m", "pll3_usb_otg", };
 static const char *gpu_axi_sels[]	= { "axi", "ahb", };
+static const char *pre_axi_sels[]	= { "axi", "ahb", };
 static const char *gpu2d_core_sels[]	= { "axi", "pll3_usb_otg", "pll2_pfd0_352m", "pll2_pfd2_396m", };
+static const char *gpu2d_core_sels_2[]	= { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll3_pfd0_720m",};
 static const char *gpu3d_core_sels[]	= { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", };
 static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll3_pfd0_720m", };
 static const char *ipu_sels[]		= { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", };
@@ -44,15 +46,24 @@ static const char *ipu1_di0_sels[]	= { "ipu1_di0_pre", "dummy", "dummy", "ldb_di
 static const char *ipu1_di1_sels[]	= { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
 static const char *ipu2_di0_sels[]	= { "ipu2_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
 static const char *ipu2_di1_sels[]	= { "ipu2_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
+static const char *ipu1_di0_sels_2[]	= { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0_podf", "ldb_di1_podf", };
+static const char *ipu1_di1_sels_2[]	= { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0_podf", "ldb_di1_podf", };
+static const char *ipu2_di0_sels_2[]	= { "ipu2_di0_pre", "dummy", "dummy", "ldb_di0_podf", "ldb_di1_podf", };
+static const char *ipu2_di1_sels_2[]	= { "ipu2_di1_pre", "dummy", "dummy", "ldb_di0_podf", "ldb_di1_podf", };
 static const char *hsi_tx_sels[]	= { "pll3_120m", "pll2_pfd2_396m", };
 static const char *pcie_axi_sels[]	= { "axi", "ahb", };
 static const char *ssi_sels[]		= { "pll3_pfd2_508m", "pll3_pfd3_454m", "pll4_audio_div", };
 static const char *usdhc_sels[]	= { "pll2_pfd2_396m", "pll2_pfd0_352m", };
 static const char *enfc_sels[]	= { "pll2_pfd0_352m", "pll2_bus", "pll3_usb_otg", "pll2_pfd2_396m", };
+static const char *enfc_sels_2[] = {"pll2_pfd0_352m", "pll2_bus", "pll3_usb_otg", "pll2_pfd2_396m", "pll3_pfd3_454m", "dummy", };
 static const char *eim_sels[]		= { "pll2_pfd2_396m", "pll3_usb_otg", "axi", "pll2_pfd0_352m", };
 static const char *eim_slow_sels[]      = { "axi", "pll3_usb_otg", "pll2_pfd2_396m", "pll2_pfd0_352m", };
 static const char *vdo_axi_sels[]	= { "axi", "ahb", };
 static const char *vpu_axi_sels[]	= { "axi", "pll2_pfd2_396m", "pll2_pfd0_352m", };
+static const char *uart_sels[] = { "pll3_80m", "osc", };
+static const char *ipg_per_sels[] = { "ipg", "osc", };
+static const char *ecspi_sels[] = { "pll3_60m", "osc", };
+static const char *can_sels[] = { "pll3_60m", "osc", "pll3_80m", };
 static const char *cko1_sels[]	= { "pll3_usb_otg", "pll2_bus", "pll1_sys", "pll5_video_div",
 				    "dummy", "axi", "enfc", "ipu1_di0", "ipu1_di1", "ipu2_di0",
 				    "ipu2_di1", "ahb", "ipg", "ipg_per", "ckil", "pll4_audio_div", };
@@ -121,12 +132,19 @@ static unsigned int share_count_ssi2;
 static unsigned int share_count_ssi3;
 static unsigned int share_count_mipi_core_cfg;
 static unsigned int share_count_spdif;
+static unsigned int share_count_prg0;
+static unsigned int share_count_prg1;
 
 static inline int clk_on_imx6q(void)
 {
 	return of_machine_is_compatible("fsl,imx6q");
 }
 
+static inline int clk_on_imx6qp(void)
+{
+	return of_machine_is_compatible("fsl,imx6qp");
+}
+
 static inline int clk_on_imx6dl(void)
 {
 	return of_machine_is_compatible("fsl,imx6dl");
@@ -265,7 +283,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 	clk[IMX6QDL_CLK_TWD]       = imx_clk_fixed_factor("twd",       "arm",            1, 2);
 	clk[IMX6QDL_CLK_GPT_3M]    = imx_clk_fixed_factor("gpt_3m",    "osc",            1, 8);
 	clk[IMX6QDL_CLK_VIDEO_27M] = imx_clk_fixed_factor("video_27m", "pll3_pfd1_540m", 1, 20);
-	if (clk_on_imx6dl()) {
+	if (clk_on_imx6dl() || clk_on_imx6qp()) {
 		clk[IMX6QDL_CLK_GPU2D_AXI] = imx_clk_fixed_factor("gpu2d_axi", "mmdc_ch0_axi_podf", 1, 1);
 		clk[IMX6QDL_CLK_GPU3D_AXI] = imx_clk_fixed_factor("gpu3d_axi", "mmdc_ch0_axi_podf", 1, 1);
 	}
@@ -294,7 +312,15 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 		clk[IMX6QDL_CLK_GPU2D_AXI]        = imx_clk_mux("gpu2d_axi",        base + 0x18, 0,  1, gpu_axi_sels,      ARRAY_SIZE(gpu_axi_sels));
 		clk[IMX6QDL_CLK_GPU3D_AXI]        = imx_clk_mux("gpu3d_axi",        base + 0x18, 1,  1, gpu_axi_sels,      ARRAY_SIZE(gpu_axi_sels));
 	}
-	clk[IMX6QDL_CLK_GPU2D_CORE_SEL]   = imx_clk_mux("gpu2d_core_sel",   base + 0x18, 16, 2, gpu2d_core_sels,   ARRAY_SIZE(gpu2d_core_sels));
+	if (clk_on_imx6qp()) {
+		clk[IMX6QDL_CLK_CAN_SEL]   = imx_clk_mux("can_sel",	base + 0x20, 8,  2, can_sels, ARRAY_SIZE(can_sels));
+		clk[IMX6QDL_CLK_ECSPI_SEL] = imx_clk_mux("ecspi_sel",	base + 0x38, 18, 1, ecspi_sels,  ARRAY_SIZE(ecspi_sels));
+		clk[IMX6QDL_CLK_IPG_PER_SEL] = imx_clk_mux("ipg_per_sel", base + 0x1c, 6, 1, ipg_per_sels, ARRAY_SIZE(ipg_per_sels));
+		clk[IMX6QDL_CLK_UART_SEL] = imx_clk_mux("uart_sel", base + 0x24, 6, 1, uart_sels, ARRAY_SIZE(uart_sels));
+		clk[IMX6QDL_CLK_GPU2D_CORE_SEL] = imx_clk_mux("gpu2d_core_sel", base + 0x18, 16, 2, gpu2d_core_sels_2, ARRAY_SIZE(gpu2d_core_sels_2));
+	} else {
+		clk[IMX6QDL_CLK_GPU2D_CORE_SEL] = imx_clk_mux("gpu2d_core_sel",   base + 0x18, 16, 2, gpu2d_core_sels,   ARRAY_SIZE(gpu2d_core_sels));
+	}
 	clk[IMX6QDL_CLK_GPU3D_CORE_SEL]   = imx_clk_mux("gpu3d_core_sel",   base + 0x18, 4,  2, gpu3d_core_sels,   ARRAY_SIZE(gpu3d_core_sels));
 	clk[IMX6QDL_CLK_GPU3D_SHADER_SEL] = imx_clk_mux("gpu3d_shader_sel", base + 0x18, 8,  2, gpu3d_shader_sels, ARRAY_SIZE(gpu3d_shader_sels));
 	clk[IMX6QDL_CLK_IPU1_SEL]         = imx_clk_mux("ipu1_sel",         base + 0x3c, 9,  2, ipu_sels,          ARRAY_SIZE(ipu_sels));
@@ -305,22 +331,40 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 	clk[IMX6QDL_CLK_IPU1_DI1_PRE_SEL] = imx_clk_mux_flags("ipu1_di1_pre_sel", base + 0x34, 15, 3, ipu_di_pre_sels,   ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
 	clk[IMX6QDL_CLK_IPU2_DI0_PRE_SEL] = imx_clk_mux_flags("ipu2_di0_pre_sel", base + 0x38, 6,  3, ipu_di_pre_sels,   ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
 	clk[IMX6QDL_CLK_IPU2_DI1_PRE_SEL] = imx_clk_mux_flags("ipu2_di1_pre_sel", base + 0x38, 15, 3, ipu_di_pre_sels,   ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
-	clk[IMX6QDL_CLK_IPU1_DI0_SEL]     = imx_clk_mux_flags("ipu1_di0_sel",     base + 0x34, 0,  3, ipu1_di0_sels,     ARRAY_SIZE(ipu1_di0_sels), CLK_SET_RATE_PARENT);
-	clk[IMX6QDL_CLK_IPU1_DI1_SEL]     = imx_clk_mux_flags("ipu1_di1_sel",     base + 0x34, 9,  3, ipu1_di1_sels,     ARRAY_SIZE(ipu1_di1_sels), CLK_SET_RATE_PARENT);
-	clk[IMX6QDL_CLK_IPU2_DI0_SEL]     = imx_clk_mux_flags("ipu2_di0_sel",     base + 0x38, 0,  3, ipu2_di0_sels,     ARRAY_SIZE(ipu2_di0_sels), CLK_SET_RATE_PARENT);
-	clk[IMX6QDL_CLK_IPU2_DI1_SEL]     = imx_clk_mux_flags("ipu2_di1_sel",     base + 0x38, 9,  3, ipu2_di1_sels,     ARRAY_SIZE(ipu2_di1_sels), CLK_SET_RATE_PARENT);
 	clk[IMX6QDL_CLK_HSI_TX_SEL]       = imx_clk_mux("hsi_tx_sel",       base + 0x30, 28, 1, hsi_tx_sels,       ARRAY_SIZE(hsi_tx_sels));
 	clk[IMX6QDL_CLK_PCIE_AXI_SEL]     = imx_clk_mux("pcie_axi_sel",     base + 0x18, 10, 1, pcie_axi_sels,     ARRAY_SIZE(pcie_axi_sels));
-	clk[IMX6QDL_CLK_SSI1_SEL]         = imx_clk_fixup_mux("ssi1_sel",   base + 0x1c, 10, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_SSI2_SEL]         = imx_clk_fixup_mux("ssi2_sel",   base + 0x1c, 12, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_SSI3_SEL]         = imx_clk_fixup_mux("ssi3_sel",   base + 0x1c, 14, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_USDHC1_SEL]       = imx_clk_fixup_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_USDHC2_SEL]       = imx_clk_fixup_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_USDHC3_SEL]       = imx_clk_fixup_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_USDHC4_SEL]       = imx_clk_fixup_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_ENFC_SEL]         = imx_clk_mux("enfc_sel",         base + 0x2c, 16, 2, enfc_sels,         ARRAY_SIZE(enfc_sels));
-	clk[IMX6QDL_CLK_EIM_SEL]          = imx_clk_fixup_mux("eim_sel",      base + 0x1c, 27, 2, eim_sels,        ARRAY_SIZE(eim_sels), imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_EIM_SLOW_SEL]     = imx_clk_fixup_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels,   ARRAY_SIZE(eim_slow_sels), imx_cscmr1_fixup);
+	if (clk_on_imx6qp()) {
+		clk[IMX6QDL_CLK_IPU1_DI0_SEL]     = imx_clk_mux_flags("ipu1_di0_sel",     base + 0x34, 0,  3, ipu1_di0_sels_2,     ARRAY_SIZE(ipu1_di0_sels_2), CLK_SET_RATE_PARENT);
+		clk[IMX6QDL_CLK_IPU1_DI1_SEL]     = imx_clk_mux_flags("ipu1_di1_sel",     base + 0x34, 9,  3, ipu1_di1_sels_2,     ARRAY_SIZE(ipu1_di1_sels_2), CLK_SET_RATE_PARENT);
+		clk[IMX6QDL_CLK_IPU2_DI0_SEL]     = imx_clk_mux_flags("ipu2_di0_sel",     base + 0x38, 0,  3, ipu2_di0_sels_2,     ARRAY_SIZE(ipu2_di0_sels_2), CLK_SET_RATE_PARENT);
+		clk[IMX6QDL_CLK_IPU2_DI1_SEL]     = imx_clk_mux_flags("ipu2_di1_sel",     base + 0x38, 9,  3, ipu2_di1_sels_2,     ARRAY_SIZE(ipu2_di1_sels_2), CLK_SET_RATE_PARENT);
+		clk[IMX6QDL_CLK_SSI1_SEL]         = imx_clk_mux("ssi1_sel",   base + 0x1c, 10, 2, ssi_sels,          ARRAY_SIZE(ssi_sels));
+		clk[IMX6QDL_CLK_SSI2_SEL]         = imx_clk_mux("ssi2_sel",   base + 0x1c, 12, 2, ssi_sels,          ARRAY_SIZE(ssi_sels));
+		clk[IMX6QDL_CLK_SSI3_SEL]         = imx_clk_mux("ssi3_sel",   base + 0x1c, 14, 2, ssi_sels,          ARRAY_SIZE(ssi_sels));
+		clk[IMX6QDL_CLK_USDHC1_SEL]       = imx_clk_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels));
+		clk[IMX6QDL_CLK_USDHC2_SEL]       = imx_clk_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels));
+		clk[IMX6QDL_CLK_USDHC3_SEL]       = imx_clk_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels));
+		clk[IMX6QDL_CLK_USDHC4_SEL]       = imx_clk_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels));
+		clk[IMX6QDL_CLK_ENFC_SEL]         = imx_clk_mux("enfc_sel",         base + 0x2c, 15, 3, enfc_sels_2,         ARRAY_SIZE(enfc_sels_2));
+		clk[IMX6QDL_CLK_EIM_SEL]          = imx_clk_mux("eim_sel",      base + 0x1c, 27, 2, eim_sels,        ARRAY_SIZE(eim_sels));
+		clk[IMX6QDL_CLK_EIM_SLOW_SEL]     = imx_clk_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels,   ARRAY_SIZE(eim_slow_sels));
+		clk[IMX6QDL_CLK_PRE_AXI]	  = imx_clk_mux("pre_axi",	base + 0x18, 1,  1, pre_axi_sels,    ARRAY_SIZE(pre_axi_sels));
+	} else {
+		clk[IMX6QDL_CLK_IPU1_DI0_SEL]     = imx_clk_mux_flags("ipu1_di0_sel",     base + 0x34, 0,  3, ipu1_di0_sels,     ARRAY_SIZE(ipu1_di0_sels), CLK_SET_RATE_PARENT);
+		clk[IMX6QDL_CLK_IPU1_DI1_SEL]     = imx_clk_mux_flags("ipu1_di1_sel",     base + 0x34, 9,  3, ipu1_di1_sels,     ARRAY_SIZE(ipu1_di1_sels), CLK_SET_RATE_PARENT);
+		clk[IMX6QDL_CLK_IPU2_DI0_SEL]     = imx_clk_mux_flags("ipu2_di0_sel",     base + 0x38, 0,  3, ipu2_di0_sels,     ARRAY_SIZE(ipu2_di0_sels), CLK_SET_RATE_PARENT);
+		clk[IMX6QDL_CLK_IPU2_DI1_SEL]     = imx_clk_mux_flags("ipu2_di1_sel",     base + 0x38, 9,  3, ipu2_di1_sels,     ARRAY_SIZE(ipu2_di1_sels), CLK_SET_RATE_PARENT);
+		clk[IMX6QDL_CLK_SSI1_SEL]         = imx_clk_fixup_mux("ssi1_sel",   base + 0x1c, 10, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_SSI2_SEL]         = imx_clk_fixup_mux("ssi2_sel",   base + 0x1c, 12, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_SSI3_SEL]         = imx_clk_fixup_mux("ssi3_sel",   base + 0x1c, 14, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_USDHC1_SEL]       = imx_clk_fixup_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_USDHC2_SEL]       = imx_clk_fixup_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_USDHC3_SEL]       = imx_clk_fixup_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_USDHC4_SEL]       = imx_clk_fixup_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_ENFC_SEL]         = imx_clk_mux("enfc_sel",         base + 0x2c, 16, 2, enfc_sels,         ARRAY_SIZE(enfc_sels));
+		clk[IMX6QDL_CLK_EIM_SEL]          = imx_clk_fixup_mux("eim_sel",      base + 0x1c, 27, 2, eim_sels,        ARRAY_SIZE(eim_sels), imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_EIM_SLOW_SEL]     = imx_clk_fixup_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels,   ARRAY_SIZE(eim_slow_sels), imx_cscmr1_fixup);
+	}
 	clk[IMX6QDL_CLK_VDO_AXI_SEL]      = imx_clk_mux("vdo_axi_sel",      base + 0x18, 11, 1, vdo_axi_sels,      ARRAY_SIZE(vdo_axi_sels));
 	clk[IMX6QDL_CLK_VPU_AXI_SEL]      = imx_clk_mux("vpu_axi_sel",      base + 0x18, 14, 2, vpu_axi_sels,      ARRAY_SIZE(vpu_axi_sels));
 	clk[IMX6QDL_CLK_CKO1_SEL]         = imx_clk_mux("cko1_sel",         base + 0x60, 0,  4, cko1_sels,         ARRAY_SIZE(cko1_sels));
@@ -335,23 +379,33 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 	clk[IMX6QDL_CLK_PERIPH_CLK2]      = imx_clk_divider("periph_clk2",      "periph_clk2_sel",   base + 0x14, 27, 3);
 	clk[IMX6QDL_CLK_PERIPH2_CLK2]     = imx_clk_divider("periph2_clk2",     "periph2_clk2_sel",  base + 0x14, 0,  3);
 	clk[IMX6QDL_CLK_IPG]              = imx_clk_divider("ipg",              "ahb",               base + 0x14, 8,  2);
-	clk[IMX6QDL_CLK_IPG_PER]          = imx_clk_fixup_divider("ipg_per",    "ipg",               base + 0x1c, 0,  6, imx_cscmr1_fixup);
 	clk[IMX6QDL_CLK_ESAI_PRED]        = imx_clk_divider("esai_pred",        "esai_sel",          base + 0x28, 9,  3);
 	clk[IMX6QDL_CLK_ESAI_PODF]        = imx_clk_divider("esai_podf",        "esai_pred",         base + 0x28, 25, 3);
 	clk[IMX6QDL_CLK_ASRC_PRED]        = imx_clk_divider("asrc_pred",        "asrc_sel",          base + 0x30, 12, 3);
 	clk[IMX6QDL_CLK_ASRC_PODF]        = imx_clk_divider("asrc_podf",        "asrc_pred",         base + 0x30, 9,  3);
 	clk[IMX6QDL_CLK_SPDIF_PRED]       = imx_clk_divider("spdif_pred",       "spdif_sel",         base + 0x30, 25, 3);
 	clk[IMX6QDL_CLK_SPDIF_PODF]       = imx_clk_divider("spdif_podf",       "spdif_pred",        base + 0x30, 22, 3);
-	clk[IMX6QDL_CLK_CAN_ROOT]         = imx_clk_divider("can_root",         "pll3_60m",          base + 0x20, 2,  6);
-	clk[IMX6QDL_CLK_ECSPI_ROOT]       = imx_clk_divider("ecspi_root",       "pll3_60m",          base + 0x38, 19, 6);
+	if (clk_on_imx6qp()) {
+		clk[IMX6QDL_CLK_IPG_PER] = imx_clk_divider("ipg_per", "ipg_per_sel", base + 0x1c, 0, 6);
+		clk[IMX6QDL_CLK_ECSPI_ROOT] = imx_clk_divider("ecspi_root", "ecspi_sel", base + 0x38, 19, 6);
+		clk[IMX6QDL_CLK_CAN_ROOT] = imx_clk_divider("can_root", "can_sel", base + 0x20, 2, 6);
+		clk[IMX6QDL_CLK_UART_SERIAL_PODF] = imx_clk_divider("uart_serial_podf", "uart_sel", base + 0x24, 0, 6);
+		clk[IMX6QDL_CLK_LDB_DI0_DIV_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0", 2, 7);
+		clk[IMX6QDL_CLK_LDB_DI1_DIV_3_5] = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1", 2, 7);
+	} else {
+		clk[IMX6QDL_CLK_ECSPI_ROOT] = imx_clk_divider("ecspi_root", "pll3_60m", base + 0x38, 19, 6);
+		clk[IMX6QDL_CLK_CAN_ROOT] = imx_clk_divider("can_root", "pll3_60", base + 0x20, 2, 6);
+		clk[IMX6QDL_CLK_IPG_PER] = imx_clk_fixup_divider("ipg_per", "ipg", base + 0x1c, 0, 6, imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_UART_SERIAL_PODF] = imx_clk_divider("uart_serial_podf", "pll3_80m",          base + 0x24, 0,  6);
+		clk[IMX6QDL_CLK_LDB_DI0_DIV_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7);
+		clk[IMX6QDL_CLK_LDB_DI1_DIV_3_5] = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1_sel", 2, 7);
+	}
 	clk[IMX6QDL_CLK_GPU2D_CORE_PODF]  = imx_clk_divider("gpu2d_core_podf",  "gpu2d_core_sel",    base + 0x18, 23, 3);
 	clk[IMX6QDL_CLK_GPU3D_CORE_PODF]  = imx_clk_divider("gpu3d_core_podf",  "gpu3d_core_sel",    base + 0x18, 26, 3);
 	clk[IMX6QDL_CLK_GPU3D_SHADER]     = imx_clk_divider("gpu3d_shader",     "gpu3d_shader_sel",  base + 0x18, 29, 3);
 	clk[IMX6QDL_CLK_IPU1_PODF]        = imx_clk_divider("ipu1_podf",        "ipu1_sel",          base + 0x3c, 11, 3);
 	clk[IMX6QDL_CLK_IPU2_PODF]        = imx_clk_divider("ipu2_podf",        "ipu2_sel",          base + 0x3c, 16, 3);
-	clk[IMX6QDL_CLK_LDB_DI0_DIV_3_5]  = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7);
 	clk[IMX6QDL_CLK_LDB_DI0_PODF]     = imx_clk_divider_flags("ldb_di0_podf", "ldb_di0_div_3_5", base + 0x20, 10, 1, 0);
-	clk[IMX6QDL_CLK_LDB_DI1_DIV_3_5]  = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1_sel", 2, 7);
 	clk[IMX6QDL_CLK_LDB_DI1_PODF]     = imx_clk_divider_flags("ldb_di1_podf", "ldb_di1_div_3_5", base + 0x20, 11, 1, 0);
 	clk[IMX6QDL_CLK_IPU1_DI0_PRE]     = imx_clk_divider("ipu1_di0_pre",     "ipu1_di0_pre_sel",  base + 0x34, 3,  3);
 	clk[IMX6QDL_CLK_IPU1_DI1_PRE]     = imx_clk_divider("ipu1_di1_pre",     "ipu1_di1_pre_sel",  base + 0x34, 12, 3);
@@ -364,15 +418,19 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 	clk[IMX6QDL_CLK_SSI2_PODF]        = imx_clk_divider("ssi2_podf",        "ssi2_pred",         base + 0x2c, 0,  6);
 	clk[IMX6QDL_CLK_SSI3_PRED]        = imx_clk_divider("ssi3_pred",        "ssi3_sel",          base + 0x28, 22, 3);
 	clk[IMX6QDL_CLK_SSI3_PODF]        = imx_clk_divider("ssi3_podf",        "ssi3_pred",         base + 0x28, 16, 6);
-	clk[IMX6QDL_CLK_UART_SERIAL_PODF] = imx_clk_divider("uart_serial_podf", "pll3_80m",          base + 0x24, 0,  6);
 	clk[IMX6QDL_CLK_USDHC1_PODF]      = imx_clk_divider("usdhc1_podf",      "usdhc1_sel",        base + 0x24, 11, 3);
 	clk[IMX6QDL_CLK_USDHC2_PODF]      = imx_clk_divider("usdhc2_podf",      "usdhc2_sel",        base + 0x24, 16, 3);
 	clk[IMX6QDL_CLK_USDHC3_PODF]      = imx_clk_divider("usdhc3_podf",      "usdhc3_sel",        base + 0x24, 19, 3);
 	clk[IMX6QDL_CLK_USDHC4_PODF]      = imx_clk_divider("usdhc4_podf",      "usdhc4_sel",        base + 0x24, 22, 3);
 	clk[IMX6QDL_CLK_ENFC_PRED]        = imx_clk_divider("enfc_pred",        "enfc_sel",          base + 0x2c, 18, 3);
 	clk[IMX6QDL_CLK_ENFC_PODF]        = imx_clk_divider("enfc_podf",        "enfc_pred",         base + 0x2c, 21, 6);
-	clk[IMX6QDL_CLK_EIM_PODF]         = imx_clk_fixup_divider("eim_podf",   "eim_sel",           base + 0x1c, 20, 3, imx_cscmr1_fixup);
-	clk[IMX6QDL_CLK_EIM_SLOW_PODF]    = imx_clk_fixup_divider("eim_slow_podf", "eim_slow_sel",   base + 0x1c, 23, 3, imx_cscmr1_fixup);
+	if (clk_on_imx6qp()) {
+		clk[IMX6QDL_CLK_EIM_PODF]         = imx_clk_divider("eim_podf",   "eim_sel",           base + 0x1c, 20, 3);
+		clk[IMX6QDL_CLK_EIM_SLOW_PODF]    = imx_clk_divider("eim_slow_podf", "eim_slow_sel",   base + 0x1c, 23, 3);
+	} else {
+		clk[IMX6QDL_CLK_EIM_PODF]         = imx_clk_fixup_divider("eim_podf",   "eim_sel",           base + 0x1c, 20, 3, imx_cscmr1_fixup);
+		clk[IMX6QDL_CLK_EIM_SLOW_PODF]    = imx_clk_fixup_divider("eim_slow_podf", "eim_slow_sel",   base + 0x1c, 23, 3, imx_cscmr1_fixup);
+	}
 	clk[IMX6QDL_CLK_VPU_AXI_PODF]     = imx_clk_divider("vpu_axi_podf",     "vpu_axi_sel",       base + 0x24, 25, 3);
 	clk[IMX6QDL_CLK_CKO1_PODF]        = imx_clk_divider("cko1_podf",        "cko1_sel",          base + 0x60, 4,  3);
 	clk[IMX6QDL_CLK_CKO2_PODF]        = imx_clk_divider("cko2_podf",        "cko2_sel",          base + 0x60, 21, 3);
@@ -380,7 +438,12 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 	/*                                                        name                 parent_name    reg        shift width busy: reg, shift */
 	clk[IMX6QDL_CLK_AXI]               = imx_clk_busy_divider("axi",               "axi_sel",     base + 0x14, 16,  3,   base + 0x48, 0);
 	clk[IMX6QDL_CLK_MMDC_CH0_AXI_PODF] = imx_clk_busy_divider("mmdc_ch0_axi_podf", "periph",      base + 0x14, 19,  3,   base + 0x48, 4);
-	clk[IMX6QDL_CLK_MMDC_CH1_AXI_PODF] = imx_clk_busy_divider("mmdc_ch1_axi_podf", "periph2",     base + 0x14, 3,   3,   base + 0x48, 2);
+	if (clk_on_imx6qp()) {
+		clk[IMX6QDL_CLK_MMDC_CH1_AXI_CG] = imx_clk_gate("mmdc_ch1_axi_cg", "periph2", base + 0x4, 18);
+		clk[IMX6QDL_CLK_MMDC_CH1_AXI_PODF] = imx_clk_busy_divider("mmdc_ch1_axi_podf", "mmdc_ch1_axi_cg", base + 0x14, 3, 3, base + 0x48, 2);
+	} else {
+		clk[IMX6QDL_CLK_MMDC_CH1_AXI_PODF] = imx_clk_busy_divider("mmdc_ch1_axi_podf", "periph2",     base + 0x14, 3,   3,   base + 0x48, 2);
+	}
 	clk[IMX6QDL_CLK_ARM]               = imx_clk_busy_divider("arm",               "pll1_sw",     base + 0x10, 0,   3,   base + 0x48, 16);
 	clk[IMX6QDL_CLK_AHB]               = imx_clk_busy_divider("ahb",               "periph",      base + 0x14, 10,  3,   base + 0x48, 1);
 
@@ -432,8 +495,13 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 	clk[IMX6QDL_CLK_IPU1_DI1]     = imx_clk_gate2("ipu1_di1",      "ipu1_di1_sel",      base + 0x74, 4);
 	clk[IMX6QDL_CLK_IPU2]         = imx_clk_gate2("ipu2",          "ipu2_podf",         base + 0x74, 6);
 	clk[IMX6QDL_CLK_IPU2_DI0]     = imx_clk_gate2("ipu2_di0",      "ipu2_di0_sel",      base + 0x74, 8);
-	clk[IMX6QDL_CLK_LDB_DI0]      = imx_clk_gate2("ldb_di0",       "ldb_di0_podf",      base + 0x74, 12);
-	clk[IMX6QDL_CLK_LDB_DI1]      = imx_clk_gate2("ldb_di1",       "ldb_di1_podf",      base + 0x74, 14);
+	if (clk_on_imx6qp()) {
+		clk[IMX6QDL_CLK_LDB_DI0]      = imx_clk_gate2("ldb_di0",       "ldb_di0_sel",      base + 0x74, 12);
+		clk[IMX6QDL_CLK_LDB_DI1]      = imx_clk_gate2("ldb_di1",       "ldb_di1_sel",      base + 0x74, 14);
+	} else {
+		clk[IMX6QDL_CLK_LDB_DI0]      = imx_clk_gate2("ldb_di0",       "ldb_di0_podf",      base + 0x74, 12);
+		clk[IMX6QDL_CLK_LDB_DI1]      = imx_clk_gate2("ldb_di1",       "ldb_di1_podf",      base + 0x74, 14);
+	}
 	clk[IMX6QDL_CLK_IPU2_DI1]     = imx_clk_gate2("ipu2_di1",      "ipu2_di1_sel",      base + 0x74, 10);
 	clk[IMX6QDL_CLK_HSI_TX]       = imx_clk_gate2_shared("hsi_tx", "hsi_tx_podf",       base + 0x74, 16, &share_count_mipi_core_cfg);
 	clk[IMX6QDL_CLK_MIPI_CORE_CFG] = imx_clk_gate2_shared("mipi_core_cfg", "video_27m", base + 0x74, 16, &share_count_mipi_core_cfg);
@@ -482,6 +550,16 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
 	clk[IMX6QDL_CLK_EIM_SLOW]     = imx_clk_gate2("eim_slow",      "eim_slow_podf",     base + 0x80, 10);
 	clk[IMX6QDL_CLK_VDO_AXI]      = imx_clk_gate2("vdo_axi",       "vdo_axi_sel",       base + 0x80, 12);
 	clk[IMX6QDL_CLK_VPU_AXI]      = imx_clk_gate2("vpu_axi",       "vpu_axi_podf",      base + 0x80, 14);
+	if (clk_on_imx6qp()) {
+		clk[IMX6QDL_CLK_PRE0] = imx_clk_gate2("pre0",	       "pre_axi",	    base + 0x80, 16);
+		clk[IMX6QDL_CLK_PRE1] = imx_clk_gate2("pre1",	       "pre_axi",	    base + 0x80, 18);
+		clk[IMX6QDL_CLK_PRE2] = imx_clk_gate2("pre2",	       "pre_axi",         base + 0x80, 20);
+		clk[IMX6QDL_CLK_PRE3] = imx_clk_gate2("pre3",	       "pre_axi",	    base + 0x80, 22);
+		clk[IMX6QDL_CLK_PRG0_AXI] = imx_clk_gate2_shared("prg0_axi",  "ipu1_podf",  base + 0x80, 24, &share_count_prg0);
+		clk[IMX6QDL_CLK_PRG1_AXI] = imx_clk_gate2_shared("prg1_axi",  "ipu2_podf",  base + 0x80, 26, &share_count_prg1);
+		clk[IMX6QDL_CLK_PRG0_APB] = imx_clk_gate2_shared("prg0_apb",  "ipg",	    base + 0x80, 24, &share_count_prg0);
+		clk[IMX6QDL_CLK_PRG1_APB] = imx_clk_gate2_shared("prg1_apb",  "ipg",	    base + 0x80, 26, &share_count_prg1);
+	}
 	clk[IMX6QDL_CLK_CKO1]         = imx_clk_gate("cko1",           "cko1_podf",         base + 0x60, 7);
 	clk[IMX6QDL_CLK_CKO2]         = imx_clk_gate("cko2",           "cko2_podf",         base + 0x60, 24);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 5/5] ARM: imx: Add msl code support for imx6qp
  2015-12-15  6:07 [PATCH v2 0/5] Add support for imx6qp Bai Ping
                   ` (3 preceding siblings ...)
  2015-12-15  6:07 ` [PATCH v2 4/5] clk: imx: Add clock support for imx6qp Bai Ping
@ 2015-12-15  6:07 ` Bai Ping
  2016-01-28  8:10   ` Shawn Guo
  4 siblings, 1 reply; 13+ messages in thread
From: Bai Ping @ 2015-12-15  6:07 UTC (permalink / raw)
  To: shawnguo, kernel
  Cc: pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

The i.MX6QP is a different SOC, but internally we treate
it as i.MX6Q Rev_2.0 to maximum the code reusability. The chip
silicon number we read from the ANADIG_DIGPROG is 0x630100. This
patch add code to identify it as i.MX6QP Rev_1.0 when print out the
silicon version.

Signed-off-by: Bai Ping <b51503@freescale.com>
---
 arch/arm/mach-imx/anatop.c     | 5 ++++-
 arch/arm/mach-imx/mach-imx6q.c | 8 ++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-imx/anatop.c b/arch/arm/mach-imx/anatop.c
index 231bb25..9622763 100644
--- a/arch/arm/mach-imx/anatop.c
+++ b/arch/arm/mach-imx/anatop.c
@@ -129,7 +129,10 @@ void __init imx_init_revision_from_anatop(void)
 
 	switch (digprog & 0xff) {
 	case 0:
-		revision = IMX_CHIP_REVISION_1_0;
+		if (digprog >> 8 & 0x01)
+			revision = IMX_CHIP_REVISION_2_0;
+		else
+			revision = IMX_CHIP_REVISION_1_0;
 		break;
 	case 1:
 		revision = IMX_CHIP_REVISION_1_1;
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
index 3878494b..cb27d56 100644
--- a/arch/arm/mach-imx/mach-imx6q.c
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -266,8 +266,11 @@ static void __init imx6q_init_machine(void)
 {
 	struct device *parent;
 
-	imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q",
-			      imx_get_soc_revision());
+	if (cpu_is_imx6q() && imx_get_soc_revision() == IMX_CHIP_REVISION_2_0)
+		imx_print_silicon_rev("i.MX6QP", IMX_CHIP_REVISION_1_0);
+	else
+		imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q",
+				imx_get_soc_revision());
 
 	parent = imx_soc_device_init();
 	if (parent == NULL)
@@ -399,6 +402,7 @@ static void __init imx6q_init_irq(void)
 static const char * const imx6q_dt_compat[] __initconst = {
 	"fsl,imx6dl",
 	"fsl,imx6q",
+	"fsl,imx6qp",
 	NULL,
 };
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/5] ARM: dts: imx: Add basic dts support for imx6qp SOC
  2015-12-15  6:07 ` [PATCH v2 1/5] ARM: dts: imx: Add basic dts support for imx6qp SOC Bai Ping
@ 2016-01-28  7:42   ` Shawn Guo
  2016-01-28 10:38     ` Ping Bai
  0 siblings, 1 reply; 13+ messages in thread
From: Shawn Guo @ 2016-01-28  7:42 UTC (permalink / raw)
  To: Bai Ping
  Cc: kernel, pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

On Tue, Dec 15, 2015 at 02:07:49PM +0800, Bai Ping wrote:
> The i.MX6Quad Plus processor is an high performance SOC of i.MX6 family.
> It has enhanced graphics performance and increased overall memory bandwidth
> compared to i.MX6Q. Most of the design are same as i.MX6Quad/Dual, so code
> for i.MX6Quad can be resued by this chip. The revision number is identied as
> i.MX6Q Rev2.0, but actually it is a new chip, as we did many change to the
> overall architecture.
> 
> This patch adds basic dtsi file support for the new i.MX6Quad Plus processor.
> 
> Signed-off-by: Bai Ping <b51503@freescale.com>
> ---
>  arch/arm/boot/dts/imx6q.dtsi              |   2 +-
>  arch/arm/boot/dts/imx6qp.dtsi             | 157 ++++++++++++++++++++++++++++++
>  include/dt-bindings/clock/imx6qdl-clock.h |  16 ++-
>  3 files changed, 173 insertions(+), 2 deletions(-)
>  create mode 100644 arch/arm/boot/dts/imx6qp.dtsi
> 
> diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
> index a266a56..e26d0fd 100644
> --- a/arch/arm/boot/dts/imx6q.dtsi
> +++ b/arch/arm/boot/dts/imx6q.dtsi
> @@ -22,7 +22,7 @@
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  
> -		cpu@0 {
> +		cpu0: cpu@0 {
>  			compatible = "arm,cortex-a9";
>  			device_type = "cpu";
>  			reg = <0>;
> diff --git a/arch/arm/boot/dts/imx6qp.dtsi b/arch/arm/boot/dts/imx6qp.dtsi
> new file mode 100644
> index 0000000..e43751f
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6qp.dtsi
> @@ -0,0 +1,157 @@
> +/*
> + * Copyright 2015 Freescale Semiconductor, Inc.
> + *
> + * 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.

For new dts files, we suggest to use GPL/X11 dual license to consider
non-Linux users.  You can grep "dual-licensed" in arch/arm/boot/dts to
find a plenty of examples.

> + *
> + */
> +

Do you not need to include "imx6qdl.dtsi" here?

> +/ {
> +	aliases {
> +		pre0 = &pre1;
> +		pre1 = &pre2;
> +		pre2 = &pre3;
> +		pre3 = &pre4;
> +		prg0 = &prg1;
> +		prg1 = &prg2;
> +	};
> +
> +	soc {
> +		ocram_2: sram@00940000 {

The label can just be ocram2.

> +			compatible = "mmio-sram";
> +			reg = <0x00940000 0x20000>;
> +			clocks = <&clks IMX6QDL_CLK_OCRAM>;
> +		};
> +
> +		ocram_3: sram@00960000 {

ocram3

> +			compatible = "mmio-sram";
> +			reg = <0x00960000 0x20000>;
> +			clocks = <&clks IMX6QDL_CLK_OCRAM>;
> +		};
> +
> +		pcie: pcie@0x01000000 {
> +			compatible = "fsl,imx6qp-pcie", "snps,dw-pcie";
> +			reg = <0x01ffc000 0x4000>, <0x01f00000 0x80000>;
> +			reg-names = "dbi", "config";
> +			#address-cells = <3>;
> +			#size-cells = <2>;
> +			device_type = "pci";
> +			ranges = <0x81000000 0 0          0x01f80000 0 0x00010000 /* downstream I/O */
> +				  0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */
> +			num-lanes = <1>;
> +			interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "msi";
> +			#interrupt-cells = <1>;
> +			interrupt-map-mask = <0 0 0 0x7>;
> +			interrupt-map = <0 0 0 1 &intc 0 123 IRQ_TYPE_LEVEL_HIGH>,
> +					<0 0 0 2 &intc 0 122 IRQ_TYPE_LEVEL_HIGH>,
> +					<0 0 0 3 &intc 0 121 IRQ_TYPE_LEVEL_HIGH>,
> +					<0 0 0 4 &intc 0 120 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&clks IMX6QDL_CLK_PCIE_REF_125M>,
> +				 <&clks IMX6QDL_CLK_SATA_REF_100M>,
> +				 <&clks IMX6QDL_CLK_LVDS1_GATE>, <&clks IMX6QDL_CLK_PCIE_AXI>;
> +			clock-names = "pcie_phy", "ref_100m", "pcie_bus", "pcie";
> +			status = "disabled";
> +		};
> +
> +		aips-bus@02100000 { /* AIPS2 */
> +			pre1: pre@021c8000 {
> +				compatible = "fsl,imx6q-pre";

Is there already a device tree binding and driver for this block in
upstream kernel?  I do not accepted any unestablished device.

> +				reg = <0x021c8000 0x1000>;
> +				clocks = <&clks IMX6QDL_CLK_PRE0>;
> +				interrupts = <0 90 IRQ_TYPE_EDGE_RISING>;
> +				ocram = <&ocram_2>;
> +				status = "disabled";
> +			};
> +
> +			pre2: pre@021c9000 {
> +				compatible = "fsl,imx6q-pre";
> +				reg = <0x021c9000 0x1000>;
> +				clocks = <&clks IMX6QDL_CLK_PRE1>;
> +				interrupts = <0 97 IRQ_TYPE_EDGE_RISING>;
> +				ocram = <&ocram_2>;
> +				status = "disabled";
> +			};
> +
> +			pre3: pre@021ca000 {
> +				compatible = "fsl,imx6q-pre";
> +				reg = <0x021ca000 0x1000>;
> +				clocks = <&clks IMX6QDL_CLK_PRE2>;
> +				interrupts = <0 98 IRQ_TYPE_EDGE_RISING>;
> +				ocram = <&ocram_3>;
> +				status = "disabled";
> +			};
> +
> +			pre4: pre@021cb000 {
> +				compatible = "fsl,imx6q-pre";
> +				reg = <0x021cb000 0x1000>;
> +				clocks = <&clks IMX6QDL_CLK_PRE3>;
> +				interrupts = <0 99 IRQ_TYPE_EDGE_RISING>;
> +				ocram = <&ocram_3>;
> +				status = "disabled";
> +			};
> +
> +			prg1: prg@021cc000 {
> +				compatible = "fsl,imx6q-prg";

Ditto

> +				reg = <0x021cc000 0x1000>;
> +				clocks = <&clks IMX6QDL_CLK_PRG0_AXI>,
> +					 <&clks IMX6QDL_CLK_PRG0_APB>;
> +				clock-names = "axi", "apb";
> +				gpr = <&gpr>;
> +				status = "disabled";
> +			};
> +
> +			prg2: prg@021cd000 {
> +				compatible = "fsl,imx6q-prg";
> +				reg = <0x021cd000 0x1000>;
> +				clocks = <&clks IMX6QDL_CLK_PRG1_AXI>,
> +					 <&clks IMX6QDL_CLK_PRG1_APB>;
> +				clock-names = "axi", "apb";
> +				gpr = <&gpr>;
> +				status = "disabled";
> +			};
> +		};
> +
> +		ipu1: ipu@02400000 {
> +			compatible = "fsl,imx6qp-ipu", "fsl,imx6q-ipu";
> +			clocks = <&clks IMX6QDL_CLK_IPU1>,
> +				 <&clks IMX6QDL_CLK_IPU1_DI0>, <&clks IMX6QDL_CLK_IPU1_DI1>,
> +				 <&clks IMX6QDL_CLK_IPU1_DI0_SEL>, <&clks IMX6QDL_CLK_IPU1_DI1_SEL>,
> +				 <&clks IMX6QDL_CLK_LDB_DI0_PODF>, <&clks IMX6QDL_CLK_LDB_DI1_PODF>,
> +				 <&clks IMX6QDL_CLK_PRG0_APB>;
> +			clock-names = "bus",
> +				      "di0", "di1",
> +				      "di0_sel", "di1_sel",
> +				      "ldb_di0", "ldb_di1", "prg";
> +		};
> +
> +		ipu2: ipu@02800000 {
> +			compatible = "fsl,imx6qp-ipu", "fsl,imx6q-ipu";
> +			clocks = <&clks IMX6QDL_CLK_IPU2>,
> +				 <&clks IMX6QDL_CLK_IPU2_DI0>, <&clks IMX6QDL_CLK_IPU2_DI1>,
> +				 <&clks IMX6QDL_CLK_IPU2_DI0_SEL>, <&clks IMX6QDL_CLK_IPU2_DI1_SEL>,
> +				 <&clks IMX6QDL_CLK_LDB_DI0_PODF>, <&clks IMX6QDL_CLK_LDB_DI1_PODF>,
> +				 <&clks IMX6QDL_CLK_PRG1_APB>;
> +			clock-names = "bus",
> +				      "di0", "di1",
> +				      "di0_sel", "di1_sel",
> +				      "ldb_di0", "ldb_di1", "prg";
> +		};
> +
> +		sata: sata@02200000 {
> +			compatible = "fsl,imx6qp-ahci";
> +			reg = <0x02200000 0x4000>;
> +			interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&clks IMX6QDL_CLK_SATA>,
> +				 <&clks IMX6QDL_CLK_SATA_REF_100M>,
> +				 <&clks IMX6QDL_CLK_AHB>;
> +			clock-names = "sata", "sata_ref", "ahb";
> +			status = "disabled";
> +		};
> +	};
> +};
> +
> +&ldb {
> +	compatible = "fsl,imx6qp-ldb", "fsl,imx6q-ldb", "fsl,imx53-ldb";
> +};
> diff --git a/include/dt-bindings/clock/imx6qdl-clock.h b/include/dt-bindings/clock/imx6qdl-clock.h
> index 77985cc..2905033 100644
> --- a/include/dt-bindings/clock/imx6qdl-clock.h
> +++ b/include/dt-bindings/clock/imx6qdl-clock.h

This file should be updated in the patch that updates clock driver.
Only after these new clocks get supported by clock driver, you can use
them in device tree.

Shawn

> @@ -255,6 +255,20 @@
>  #define IMX6QDL_CLK_CAAM_ACLK			242
>  #define IMX6QDL_CLK_CAAM_IPG			243
>  #define IMX6QDL_CLK_SPDIF_GCLK			244
> -#define IMX6QDL_CLK_END				245
> +#define IMX6QDL_CLK_UART_SEL			245
> +#define IMX6QDL_CLK_IPG_PER_SEL			246
> +#define IMX6QDL_CLK_ECSPI_SEL			247
> +#define IMX6QDL_CLK_CAN_SEL			248
> +#define IMX6QDL_CLK_MMDC_CH1_AXI_CG		249
> +#define IMX6QDL_CLK_PRE0			250
> +#define IMX6QDL_CLK_PRE1			251
> +#define IMX6QDL_CLK_PRE2			252
> +#define IMX6QDL_CLK_PRE3			253
> +#define IMX6QDL_CLK_PRG0_AXI			254
> +#define IMX6QDL_CLK_PRG1_AXI			255
> +#define IMX6QDL_CLK_PRG0_APB			256
> +#define IMX6QDL_CLK_PRG1_APB			257
> +#define IMX6QDL_CLK_PRE_AXI			258
> +#define IMX6QDL_CLK_END				259
>  
>  #endif /* __DT_BINDINGS_CLOCK_IMX6QDL_H */
> -- 
> 1.9.1
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 2/5] ARM: dts: imx: Add basic dts support for imx6qp-sabresd
  2015-12-15  6:07 ` [PATCH v2 2/5] ARM: dts: imx: Add basic dts support for imx6qp-sabresd Bai Ping
@ 2016-01-28  7:54   ` Shawn Guo
  2016-01-28 10:43     ` Ping Bai
  0 siblings, 1 reply; 13+ messages in thread
From: Shawn Guo @ 2016-01-28  7:54 UTC (permalink / raw)
  To: Bai Ping
  Cc: kernel, devicetree, pawel.moll, mturquette, sboyd, robh+dt,
	linux-clk, linux-arm-kernel

On Tue, Dec 15, 2015 at 02:07:50PM +0800, Bai Ping wrote:
> The patch adds dts file for imx6qp-sabresd board.
> 
> Signed-off-by: Bai Ping <b51503@freescale.com>
> ---
>  arch/arm/boot/dts/Makefile             |  1 +
>  arch/arm/boot/dts/imx6qdl-sabresd.dtsi |  1 +
>  arch/arm/boot/dts/imx6qp-sabresd.dts   | 59 ++++++++++++++++++++++++++++++++++
>  3 files changed, 61 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6qp-sabresd.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 36d8133..dfba765 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -302,6 +302,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>  	imx6dl-sabreauto.dtb \
>  	imx6dl-sabrelite.dtb \
>  	imx6dl-sabresd.dtb \
> +	imx6qp-sabresd.dtb \

Please keep the list sort alphabetically.  That said,
imx6qp-sabresd.dtb should be added after imx6q-* ones.

>  	imx6dl-tx6dl-comtft.dtb \
>  	imx6dl-tx6u-801x.dtb \
>  	imx6dl-tx6u-811x.dtb \
> diff --git a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
> index a6d445c..f65f57b 100644
> --- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
> @@ -238,6 +238,7 @@
>  				regulator-max-microvolt = <3300000>;
>  				regulator-boot-on;
>  				regulator-always-on;
> +				regulator-ramp-delay = <6250>;

So this change applies to imx6q and imx6dl sabresd as well?

>  			};
>  
>  			sw3a_reg: sw3a {
> diff --git a/arch/arm/boot/dts/imx6qp-sabresd.dts b/arch/arm/boot/dts/imx6qp-sabresd.dts
> new file mode 100644
> index 0000000..c3ab2b6
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6qp-sabresd.dts
> @@ -0,0 +1,59 @@
> +/*
> + * Copyright (C) 2015 Freescale Semiconductor, Inc.
> + *
> + * 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.
> + */
> +
> +#include "imx6q-sabresd.dts"
> +#include "imx6qp.dtsi"

Ah, that's why you do not include "imx6qdl.dtsi" in imx6qp.dtsi.  I have
a question with this approach.  How people should write his imx6qp board
dts file, if his board never has an imx6q version?

> +
> +/ {
> +	model = "Freescale i.MX6 Quad Plus SABRE Smart Device Board";
> +	compatible = "fsl,imx6qp-sabresd", "fsl,imx6qp";
> +};
> +
> +&cpu0 {
> +	arm-supply = <&sw2_reg>;
> +};
> +
> +&iomuxc {
> +	imx6qdl-sabresd {

Since commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without
function nodes), this additional container node can just be saved.

Shawn

> +		pinctrl_usdhc2: usdhc2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD2_CMD__SD2_CMD		0x17059
> +				MX6QDL_PAD_SD2_CLK__SD2_CLK		0x10071
> +				MX6QDL_PAD_SD2_DAT0__SD2_DATA0		0x17059
> +				MX6QDL_PAD_SD2_DAT1__SD2_DATA1		0x17059
> +				MX6QDL_PAD_SD2_DAT2__SD2_DATA2		0x17059
> +				MX6QDL_PAD_SD2_DAT3__SD2_DATA3		0x17059
> +				MX6QDL_PAD_NANDF_D4__SD2_DATA4		0x17059
> +				MX6QDL_PAD_NANDF_D5__SD2_DATA5		0x17059
> +				MX6QDL_PAD_NANDF_D6__SD2_DATA6		0x17059
> +				MX6QDL_PAD_NANDF_D7__SD2_DATA7		0x17059
> +			>;
> +		};
> +
> +		pinctrl_usdhc3: usdhc3grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD3_CMD__SD3_CMD		0x17059
> +				MX6QDL_PAD_SD3_CLK__SD3_CLK		0x10071
> +				MX6QDL_PAD_SD3_DAT0__SD3_DATA0		0x17059
> +				MX6QDL_PAD_SD3_DAT1__SD3_DATA1		0x17059
> +				MX6QDL_PAD_SD3_DAT2__SD3_DATA2		0x17059
> +				MX6QDL_PAD_SD3_DAT3__SD3_DATA3		0x17059
> +				MX6QDL_PAD_SD3_DAT4__SD3_DATA4		0x17059
> +				MX6QDL_PAD_SD3_DAT5__SD3_DATA5		0x17059
> +				MX6QDL_PAD_SD3_DAT6__SD3_DATA6		0x17059
> +				MX6QDL_PAD_SD3_DAT7__SD3_DATA7		0x17059
> +			>;
> +		};
> +	};
> +};
> +
> +&pcie {
> +	power-on-gpio = <&gpio3 19 0>;
> +	reset-gpio = <&gpio7 12 0>;
> +	status = "okay";
> +};
> -- 
> 1.9.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/5] ARM: dts: imx: Add basic dts support for imx6qp-sabreauto
  2015-12-15  6:07 ` [PATCH v2 3/5] ARM: dts: imx: Add basic dts support for imx6qp-sabreauto Bai Ping
@ 2016-01-28  7:57   ` Shawn Guo
  0 siblings, 0 replies; 13+ messages in thread
From: Shawn Guo @ 2016-01-28  7:57 UTC (permalink / raw)
  To: Bai Ping
  Cc: kernel, pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

On Tue, Dec 15, 2015 at 02:07:51PM +0800, Bai Ping wrote:
> This patch adds basic dts file for imx6qp-sabreauto board.
> 
> Signed-off-by: Bai Ping <b51503@freescale.com>
> ---
>  arch/arm/boot/dts/Makefile             |  1 +
>  arch/arm/boot/dts/imx6qp-sabreauto.dts | 67 ++++++++++++++++++++++++++++++++++
>  2 files changed, 68 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6qp-sabreauto.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index dfba765..7996a51 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -329,6 +329,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>  	imx6q-phytec-pbab01.dtb \
>  	imx6q-rex-pro.dtb \
>  	imx6q-sabreauto.dtb \
> +	imx6qp-sabreauto.dtb \

This order is incorrect either.

>  	imx6q-sabrelite.dtb \
>  	imx6q-sabresd.dtb \
>  	imx6q-sbc6x.dtb \
> diff --git a/arch/arm/boot/dts/imx6qp-sabreauto.dts b/arch/arm/boot/dts/imx6qp-sabreauto.dts
> new file mode 100644
> index 0000000..b24aae6
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6qp-sabreauto.dts
> @@ -0,0 +1,67 @@
> +/*
> + * Copyright (C) 2015 Freescale Semiconductor, Inc.
> + *
> + * 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.

GPL/X11 dual license please.

> + */
> +
> +#include "imx6q-sabreauto.dts"
> +#include "imx6qp.dtsi"
> +
> +/ {
> +	model = "Freescale i.MX6 Quad Plus SABRE Automotive Board";
> +	compatible = "fsl,imx6qp-sabreauto", "fsl,imx6qp";
> +};
> +
> +
> +&fec {
> +	pinctrl-assert-gpios = <&max7322 0 GPIO_ACTIVE_HIGH>;

Upstream kernel doesn't have this property.

Shawn

> +};
> +
> +&i2c2 {
> +	max7322: gpio@68 {
> +		compatible = "maxim,max7322";
> +		reg = <0x68>;
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};
> +};
> +
> +&iomuxc {
> +	imx6qdl-sabreauto {
> +		pinctrl_enet: enetgrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_KEY_COL1__ENET_MDIO          0x1b0b0
> +				MX6QDL_PAD_KEY_COL2__ENET_MDC           0x1b0b0
> +				MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x1b018
> +				MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x1b018
> +				MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x1b018
> +				MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x1b018
> +				MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x1b018
> +				MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x1b018
> +				MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x1b018
> +				MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x1b018
> +				MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x1b018
> +				MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1b018
> +				MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1b018
> +				MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x1b018
> +				MX6QDL_PAD_GPIO_16__ENET_REF_CLK        0x4001b0a8
> +				MX6QDL_PAD_GPIO_6__ENET_IRQ		0x000b1
> +			>;
> +		};
> +	};
> +};
> +
> +&pcie {
> +	reset-gpio = <&max7310_c 5 GPIO_ACTIVE_LOW>;
> +	status = "okay";
> +};
> +
> +&sata {
> +	status = "okay";
> +};
> +
> +&vgen3_reg {
> +	regulator-always-on;
> +};
> -- 
> 1.9.1
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 5/5] ARM: imx: Add msl code support for imx6qp
  2015-12-15  6:07 ` [PATCH v2 5/5] ARM: imx: Add msl code " Bai Ping
@ 2016-01-28  8:10   ` Shawn Guo
  2016-01-28 10:45     ` Ping Bai
  0 siblings, 1 reply; 13+ messages in thread
From: Shawn Guo @ 2016-01-28  8:10 UTC (permalink / raw)
  To: Bai Ping
  Cc: kernel, pawel.moll, robh+dt, mturquette, sboyd, linux-arm-kernel,
	linux-clk, devicetree

On Tue, Dec 15, 2015 at 02:07:53PM +0800, Bai Ping wrote:
> The i.MX6QP is a different SOC, but internally we treate
> it as i.MX6Q Rev_2.0 to maximum the code reusability. The chip
> silicon number we read from the ANADIG_DIGPROG is 0x630100. This
> patch add code to identify it as i.MX6QP Rev_1.0 when print out the
> silicon version.
> 
> Signed-off-by: Bai Ping <b51503@freescale.com>
> ---
>  arch/arm/mach-imx/anatop.c     | 5 ++++-
>  arch/arm/mach-imx/mach-imx6q.c | 8 ++++++--
>  2 files changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/anatop.c b/arch/arm/mach-imx/anatop.c
> index 231bb25..9622763 100644
> --- a/arch/arm/mach-imx/anatop.c
> +++ b/arch/arm/mach-imx/anatop.c
> @@ -129,7 +129,10 @@ void __init imx_init_revision_from_anatop(void)
>  
>  	switch (digprog & 0xff) {
>  	case 0:
> -		revision = IMX_CHIP_REVISION_1_0;
> +		if (digprog >> 8 & 0x01)
> +			revision = IMX_CHIP_REVISION_2_0;
> +		else
> +			revision = IMX_CHIP_REVISION_1_0;

Please at least add some comment here to help us remember that this is
a trick we play for i.MX6QP.

Shawn

>  		break;
>  	case 1:
>  		revision = IMX_CHIP_REVISION_1_1;
> diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
> index 3878494b..cb27d56 100644
> --- a/arch/arm/mach-imx/mach-imx6q.c
> +++ b/arch/arm/mach-imx/mach-imx6q.c
> @@ -266,8 +266,11 @@ static void __init imx6q_init_machine(void)
>  {
>  	struct device *parent;
>  
> -	imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q",
> -			      imx_get_soc_revision());
> +	if (cpu_is_imx6q() && imx_get_soc_revision() == IMX_CHIP_REVISION_2_0)
> +		imx_print_silicon_rev("i.MX6QP", IMX_CHIP_REVISION_1_0);
> +	else
> +		imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q",
> +				imx_get_soc_revision());
>  
>  	parent = imx_soc_device_init();
>  	if (parent == NULL)
> @@ -399,6 +402,7 @@ static void __init imx6q_init_irq(void)
>  static const char * const imx6q_dt_compat[] __initconst = {
>  	"fsl,imx6dl",
>  	"fsl,imx6q",
> +	"fsl,imx6qp",
>  	NULL,
>  };
>  
> -- 
> 1.9.1
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH v2 1/5] ARM: dts: imx: Add basic dts support for imx6qp SOC
  2016-01-28  7:42   ` Shawn Guo
@ 2016-01-28 10:38     ` Ping Bai
  0 siblings, 0 replies; 13+ messages in thread
From: Ping Bai @ 2016-01-28 10:38 UTC (permalink / raw)
  To: Shawn Guo
  Cc: kernel@pengutronix.de, pawel.moll@arm.com, robh+dt@kernel.org,
	mturquette@baylibre.com, sboyd@codeaurora.org,
	linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
	devicetree@vger.kernel.org, jacky.baip@gmail.com

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU2hhd24gR3VvIFttYWls
dG86c2hhd25ndW9Aa2VybmVsLm9yZ10NCj4gU2VudDogMjAxNsTqMdTCMjjI1SAxNTo0Mw0KPiBU
bzogYjUxNTAzQGZyZWVzY2FsZS5jb20NCj4gQ2M6IGtlcm5lbEBwZW5ndXRyb25peC5kZTsgcGF3
ZWwubW9sbEBhcm0uY29tOyByb2JoK2R0QGtlcm5lbC5vcmc7DQo+IG10dXJxdWV0dGVAYmF5bGli
cmUuY29tOyBzYm95ZEBjb2RlYXVyb3JhLm9yZzsgbGludXgtYXJtLQ0KPiBrZXJuZWxAbGlzdHMu
aW5mcmFkZWFkLm9yZzsgbGludXgtY2xrQHZnZXIua2VybmVsLm9yZzsNCj4gZGV2aWNldHJlZUB2
Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAxLzVdIEFSTTogZHRzOiBp
bXg6IEFkZCBiYXNpYyBkdHMgc3VwcG9ydCBmb3IgaW14NnFwDQo+IFNPQw0KPiANCj4gT24gVHVl
LCBEZWMgMTUsIDIwMTUgYXQgMDI6MDc6NDlQTSArMDgwMCwgQmFpIFBpbmcgd3JvdGU6DQo+ID4g
VGhlIGkuTVg2UXVhZCBQbHVzIHByb2Nlc3NvciBpcyBhbiBoaWdoIHBlcmZvcm1hbmNlIFNPQyBv
ZiBpLk1YNiBmYW1pbHkuDQo+ID4gSXQgaGFzIGVuaGFuY2VkIGdyYXBoaWNzIHBlcmZvcm1hbmNl
IGFuZCBpbmNyZWFzZWQgb3ZlcmFsbCBtZW1vcnkNCj4gPiBiYW5kd2lkdGggY29tcGFyZWQgdG8g
aS5NWDZRLiBNb3N0IG9mIHRoZSBkZXNpZ24gYXJlIHNhbWUgYXMNCj4gPiBpLk1YNlF1YWQvRHVh
bCwgc28gY29kZSBmb3IgaS5NWDZRdWFkIGNhbiBiZSByZXN1ZWQgYnkgdGhpcyBjaGlwLiBUaGUN
Cj4gPiByZXZpc2lvbiBudW1iZXIgaXMgaWRlbnRpZWQgYXMgaS5NWDZRIFJldjIuMCwgYnV0IGFj
dHVhbGx5IGl0IGlzIGEgbmV3DQo+ID4gY2hpcCwgYXMgd2UgZGlkIG1hbnkgY2hhbmdlIHRvIHRo
ZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4NCj4gPg0KPiA+IFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBk
dHNpIGZpbGUgc3VwcG9ydCBmb3IgdGhlIG5ldyBpLk1YNlF1YWQgUGx1cyBwcm9jZXNzb3IuDQo+
ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBCYWkgUGluZyA8YjUxNTAzQGZyZWVzY2FsZS5jb20+DQo+
ID4gLS0tDQo+ID4gIGFyY2gvYXJtL2Jvb3QvZHRzL2lteDZxLmR0c2kgICAgICAgICAgICAgIHwg
ICAyICstDQo+ID4gIGFyY2gvYXJtL2Jvb3QvZHRzL2lteDZxcC5kdHNpICAgICAgICAgICAgIHwg
MTU3DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBpbmNsdWRlL2R0LWJp
bmRpbmdzL2Nsb2NrL2lteDZxZGwtY2xvY2suaCB8ICAxNiArKy0NCj4gPiAgMyBmaWxlcyBjaGFu
Z2VkLCAxNzMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlDQo+ID4g
MTAwNjQ0IGFyY2gvYXJtL2Jvb3QvZHRzL2lteDZxcC5kdHNpDQo+ID4NCj4gPiBkaWZmIC0tZ2l0
IGEvYXJjaC9hcm0vYm9vdC9kdHMvaW14NnEuZHRzaQ0KPiA+IGIvYXJjaC9hcm0vYm9vdC9kdHMv
aW14NnEuZHRzaSBpbmRleCBhMjY2YTU2Li5lMjZkMGZkIDEwMDY0NA0KPiA+IC0tLSBhL2FyY2gv
YXJtL2Jvb3QvZHRzL2lteDZxLmR0c2kNCj4gPiArKysgYi9hcmNoL2FybS9ib290L2R0cy9pbXg2
cS5kdHNpDQo+ID4gQEAgLTIyLDcgKzIyLDcgQEANCj4gPiAgCQkjYWRkcmVzcy1jZWxscyA9IDwx
PjsNCj4gPiAgCQkjc2l6ZS1jZWxscyA9IDwwPjsNCj4gPg0KPiA+IC0JCWNwdUAwIHsNCj4gPiAr
CQljcHUwOiBjcHVAMCB7DQo+ID4gIAkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hOSI7DQo+
ID4gIAkJCWRldmljZV90eXBlID0gImNwdSI7DQo+ID4gIAkJCXJlZyA9IDwwPjsNCj4gPiBkaWZm
IC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvaW14NnFwLmR0c2kNCj4gPiBiL2FyY2gvYXJtL2Jv
b3QvZHRzL2lteDZxcC5kdHNpIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAw
MC4uZTQzNzUxZg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9hcmNoL2FybS9ib290L2R0
cy9pbXg2cXAuZHRzaQ0KPiA+IEBAIC0wLDAgKzEsMTU3IEBADQo+ID4gKy8qDQo+ID4gKyAqIENv
cHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuDQo+ID4gKyAqDQo+ID4g
KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3INCj4gPiArbW9kaWZ5DQo+ID4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzDQo+ID4gKyAqIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KPiANCj4gRm9yIG5ldyBkdHMgZmls
ZXMsIHdlIHN1Z2dlc3QgdG8gdXNlIEdQTC9YMTEgZHVhbCBsaWNlbnNlIHRvIGNvbnNpZGVyIG5v
bi1MaW51eA0KPiB1c2Vycy4gIFlvdSBjYW4gZ3JlcCAiZHVhbC1saWNlbnNlZCIgaW4gYXJjaC9h
cm0vYm9vdC9kdHMgdG8gZmluZCBhIHBsZW50eSBvZg0KPiBleGFtcGxlcy4NCj4gDQoNCm9rLCBJ
IHdpbGwgZml4IHRoaXMgaW4gcGF0Y2ggVjMuDQoNCj4gPiArICoNCj4gPiArICovDQo+ID4gKw0K
PiANCj4gRG8geW91IG5vdCBuZWVkIHRvIGluY2x1ZGUgImlteDZxZGwuZHRzaSIgaGVyZT8NCj4g
DQo+ID4gKy8gew0KPiA+ICsJYWxpYXNlcyB7DQo+ID4gKwkJcHJlMCA9ICZwcmUxOw0KPiA+ICsJ
CXByZTEgPSAmcHJlMjsNCj4gPiArCQlwcmUyID0gJnByZTM7DQo+ID4gKwkJcHJlMyA9ICZwcmU0
Ow0KPiA+ICsJCXByZzAgPSAmcHJnMTsNCj4gPiArCQlwcmcxID0gJnByZzI7DQo+ID4gKwl9Ow0K
PiA+ICsNCj4gPiArCXNvYyB7DQo+ID4gKwkJb2NyYW1fMjogc3JhbUAwMDk0MDAwMCB7DQo+IA0K
PiBUaGUgbGFiZWwgY2FuIGp1c3QgYmUgb2NyYW0yLg0KPiANCg0Kb2ssIHRoYW5rcyBmb3IgeW91
IHN1Z2dlc3QuDQoNCj4gPiArCQkJY29tcGF0aWJsZSA9ICJtbWlvLXNyYW0iOw0KPiA+ICsJCQly
ZWcgPSA8MHgwMDk0MDAwMCAweDIwMDAwPjsNCj4gPiArCQkJY2xvY2tzID0gPCZjbGtzIElNWDZR
RExfQ0xLX09DUkFNPjsNCj4gPiArCQl9Ow0KPiA+ICsNCj4gPiArCQlvY3JhbV8zOiBzcmFtQDAw
OTYwMDAwIHsNCj4gDQo+IG9jcmFtMw0KPiANCj4gPiArCQkJY29tcGF0aWJsZSA9ICJtbWlvLXNy
YW0iOw0KPiA+ICsJCQlyZWcgPSA8MHgwMDk2MDAwMCAweDIwMDAwPjsNCj4gPiArCQkJY2xvY2tz
ID0gPCZjbGtzIElNWDZRRExfQ0xLX09DUkFNPjsNCj4gPiArCQl9Ow0KPiA+ICsNCj4gPiArCQlw
Y2llOiBwY2llQDB4MDEwMDAwMDAgew0KPiA+ICsJCQljb21wYXRpYmxlID0gImZzbCxpbXg2cXAt
cGNpZSIsICJzbnBzLGR3LXBjaWUiOw0KPiA+ICsJCQlyZWcgPSA8MHgwMWZmYzAwMCAweDQwMDA+
LCA8MHgwMWYwMDAwMCAweDgwMDAwPjsNCj4gPiArCQkJcmVnLW5hbWVzID0gImRiaSIsICJjb25m
aWciOw0KPiA+ICsJCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsNCj4gPiArCQkJI3NpemUtY2VsbHMg
PSA8Mj47DQo+ID4gKwkJCWRldmljZV90eXBlID0gInBjaSI7DQo+ID4gKwkJCXJhbmdlcyA9IDww
eDgxMDAwMDAwIDAgMCAgICAgICAgICAweDAxZjgwMDAwIDAgMHgwMDAxMDAwMA0KPiAvKiBkb3du
c3RyZWFtIEkvTyAqLw0KPiA+ICsJCQkJICAweDgyMDAwMDAwIDAgMHgwMTAwMDAwMCAweDAxMDAw
MDAwIDANCj4gMHgwMGYwMDAwMD47IC8qIG5vbi1wcmVmZXRjaGFibGUgbWVtb3J5ICovDQo+ID4g
KwkJCW51bS1sYW5lcyA9IDwxPjsNCj4gPiArCQkJaW50ZXJydXB0cyA9IDwwIDEyMCBJUlFfVFlQ
RV9MRVZFTF9ISUdIPjsNCj4gPiArCQkJaW50ZXJydXB0LW5hbWVzID0gIm1zaSI7DQo+ID4gKwkJ
CSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47DQo+ID4gKwkJCWludGVycnVwdC1tYXAtbWFzayA9IDww
IDAgMCAweDc+Ow0KPiA+ICsJCQlpbnRlcnJ1cHQtbWFwID0gPDAgMCAwIDEgJmludGMgMCAxMjMN
Cj4gSVJRX1RZUEVfTEVWRUxfSElHSD4sDQo+ID4gKwkJCQkJPDAgMCAwIDIgJmludGMgMCAxMjIN
Cj4gSVJRX1RZUEVfTEVWRUxfSElHSD4sDQo+ID4gKwkJCQkJPDAgMCAwIDMgJmludGMgMCAxMjEN
Cj4gSVJRX1RZUEVfTEVWRUxfSElHSD4sDQo+ID4gKwkJCQkJPDAgMCAwIDQgJmludGMgMCAxMjAN
Cj4gSVJRX1RZUEVfTEVWRUxfSElHSD47DQo+ID4gKwkJCWNsb2NrcyA9IDwmY2xrcyBJTVg2UURM
X0NMS19QQ0lFX1JFRl8xMjVNPiwNCj4gPiArCQkJCSA8JmNsa3MgSU1YNlFETF9DTEtfU0FUQV9S
RUZfMTAwTT4sDQo+ID4gKwkJCQkgPCZjbGtzIElNWDZRRExfQ0xLX0xWRFMxX0dBVEU+LCA8JmNs
a3MNCj4gSU1YNlFETF9DTEtfUENJRV9BWEk+Ow0KPiA+ICsJCQljbG9jay1uYW1lcyA9ICJwY2ll
X3BoeSIsICJyZWZfMTAwbSIsICJwY2llX2J1cyIsDQo+ICJwY2llIjsNCj4gPiArCQkJc3RhdHVz
ID0gImRpc2FibGVkIjsNCj4gPiArCQl9Ow0KPiA+ICsNCj4gPiArCQlhaXBzLWJ1c0AwMjEwMDAw
MCB7IC8qIEFJUFMyICovDQo+ID4gKwkJCXByZTE6IHByZUAwMjFjODAwMCB7DQo+ID4gKwkJCQlj
b21wYXRpYmxlID0gImZzbCxpbXg2cS1wcmUiOw0KPiANCj4gSXMgdGhlcmUgYWxyZWFkeSBhIGRl
dmljZSB0cmVlIGJpbmRpbmcgYW5kIGRyaXZlciBmb3IgdGhpcyBibG9jayBpbiB1cHN0cmVhbQ0K
PiBrZXJuZWw/ICBJIGRvIG5vdCBhY2NlcHRlZCBhbnkgdW5lc3RhYmxpc2hlZCBkZXZpY2UuDQo+
DQoNCk5vIGRyaXZlciBhdmFpbGFibGUgaW4gdXBzdHJlYW0ga2VybmVsLCBJIHdpbGwgcmVtb3Zl
IHRoZXNlIG5vZGUgaW4gcGF0Y2ggVjMuIA0KDQo+ID4gKwkJCQlyZWcgPSA8MHgwMjFjODAwMCAw
eDEwMDA+Ow0KPiA+ICsJCQkJY2xvY2tzID0gPCZjbGtzIElNWDZRRExfQ0xLX1BSRTA+Ow0KPiA+
ICsJCQkJaW50ZXJydXB0cyA9IDwwIDkwIElSUV9UWVBFX0VER0VfUklTSU5HPjsNCj4gPiArCQkJ
CW9jcmFtID0gPCZvY3JhbV8yPjsNCj4gPiArCQkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7DQo+ID4g
KwkJCX07DQo+ID4gKw0KPiA+ICsJCQlwcmUyOiBwcmVAMDIxYzkwMDAgew0KPiA+ICsJCQkJY29t
cGF0aWJsZSA9ICJmc2wsaW14NnEtcHJlIjsNCj4gPiArCQkJCXJlZyA9IDwweDAyMWM5MDAwIDB4
MTAwMD47DQo+ID4gKwkJCQljbG9ja3MgPSA8JmNsa3MgSU1YNlFETF9DTEtfUFJFMT47DQo+ID4g
KwkJCQlpbnRlcnJ1cHRzID0gPDAgOTcgSVJRX1RZUEVfRURHRV9SSVNJTkc+Ow0KPiA+ICsJCQkJ
b2NyYW0gPSA8Jm9jcmFtXzI+Ow0KPiA+ICsJCQkJc3RhdHVzID0gImRpc2FibGVkIjsNCj4gPiAr
CQkJfTsNCj4gPiArDQo+ID4gKwkJCXByZTM6IHByZUAwMjFjYTAwMCB7DQo+ID4gKwkJCQljb21w
YXRpYmxlID0gImZzbCxpbXg2cS1wcmUiOw0KPiA+ICsJCQkJcmVnID0gPDB4MDIxY2EwMDAgMHgx
MDAwPjsNCj4gPiArCQkJCWNsb2NrcyA9IDwmY2xrcyBJTVg2UURMX0NMS19QUkUyPjsNCj4gPiAr
CQkJCWludGVycnVwdHMgPSA8MCA5OCBJUlFfVFlQRV9FREdFX1JJU0lORz47DQo+ID4gKwkJCQlv
Y3JhbSA9IDwmb2NyYW1fMz47DQo+ID4gKwkJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOw0KPiA+ICsJ
CQl9Ow0KPiA+ICsNCj4gPiArCQkJcHJlNDogcHJlQDAyMWNiMDAwIHsNCj4gPiArCQkJCWNvbXBh
dGlibGUgPSAiZnNsLGlteDZxLXByZSI7DQo+ID4gKwkJCQlyZWcgPSA8MHgwMjFjYjAwMCAweDEw
MDA+Ow0KPiA+ICsJCQkJY2xvY2tzID0gPCZjbGtzIElNWDZRRExfQ0xLX1BSRTM+Ow0KPiA+ICsJ
CQkJaW50ZXJydXB0cyA9IDwwIDk5IElSUV9UWVBFX0VER0VfUklTSU5HPjsNCj4gPiArCQkJCW9j
cmFtID0gPCZvY3JhbV8zPjsNCj4gPiArCQkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7DQo+ID4gKwkJ
CX07DQo+ID4gKw0KPiA+ICsJCQlwcmcxOiBwcmdAMDIxY2MwMDAgew0KPiA+ICsJCQkJY29tcGF0
aWJsZSA9ICJmc2wsaW14NnEtcHJnIjsNCj4gDQo+IERpdHRvDQo+IA0KPiA+ICsJCQkJcmVnID0g
PDB4MDIxY2MwMDAgMHgxMDAwPjsNCj4gPiArCQkJCWNsb2NrcyA9IDwmY2xrcyBJTVg2UURMX0NM
S19QUkcwX0FYST4sDQo+ID4gKwkJCQkJIDwmY2xrcyBJTVg2UURMX0NMS19QUkcwX0FQQj47DQo+
ID4gKwkJCQljbG9jay1uYW1lcyA9ICJheGkiLCAiYXBiIjsNCj4gPiArCQkJCWdwciA9IDwmZ3By
PjsNCj4gPiArCQkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7DQo+ID4gKwkJCX07DQo+ID4gKw0KPiA+
ICsJCQlwcmcyOiBwcmdAMDIxY2QwMDAgew0KPiA+ICsJCQkJY29tcGF0aWJsZSA9ICJmc2wsaW14
NnEtcHJnIjsNCj4gPiArCQkJCXJlZyA9IDwweDAyMWNkMDAwIDB4MTAwMD47DQo+ID4gKwkJCQlj
bG9ja3MgPSA8JmNsa3MgSU1YNlFETF9DTEtfUFJHMV9BWEk+LA0KPiA+ICsJCQkJCSA8JmNsa3Mg
SU1YNlFETF9DTEtfUFJHMV9BUEI+Ow0KPiA+ICsJCQkJY2xvY2stbmFtZXMgPSAiYXhpIiwgImFw
YiI7DQo+ID4gKwkJCQlncHIgPSA8Jmdwcj47DQo+ID4gKwkJCQlzdGF0dXMgPSAiZGlzYWJsZWQi
Ow0KPiA+ICsJCQl9Ow0KPiA+ICsJCX07DQo+ID4gKw0KPiA+ICsJCWlwdTE6IGlwdUAwMjQwMDAw
MCB7DQo+ID4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxcC1pcHUiLCAiZnNsLGlteDZxLWlw
dSI7DQo+ID4gKwkJCWNsb2NrcyA9IDwmY2xrcyBJTVg2UURMX0NMS19JUFUxPiwNCj4gPiArCQkJ
CSA8JmNsa3MgSU1YNlFETF9DTEtfSVBVMV9ESTA+LCA8JmNsa3MNCj4gSU1YNlFETF9DTEtfSVBV
MV9ESTE+LA0KPiA+ICsJCQkJIDwmY2xrcyBJTVg2UURMX0NMS19JUFUxX0RJMF9TRUw+LCA8JmNs
a3MNCj4gSU1YNlFETF9DTEtfSVBVMV9ESTFfU0VMPiwNCj4gPiArCQkJCSA8JmNsa3MgSU1YNlFE
TF9DTEtfTERCX0RJMF9QT0RGPiwgPCZjbGtzDQo+IElNWDZRRExfQ0xLX0xEQl9ESTFfUE9ERj4s
DQo+ID4gKwkJCQkgPCZjbGtzIElNWDZRRExfQ0xLX1BSRzBfQVBCPjsNCj4gPiArCQkJY2xvY2st
bmFtZXMgPSAiYnVzIiwNCj4gPiArCQkJCSAgICAgICJkaTAiLCAiZGkxIiwNCj4gPiArCQkJCSAg
ICAgICJkaTBfc2VsIiwgImRpMV9zZWwiLA0KPiA+ICsJCQkJICAgICAgImxkYl9kaTAiLCAibGRi
X2RpMSIsICJwcmciOw0KPiA+ICsJCX07DQo+ID4gKw0KPiA+ICsJCWlwdTI6IGlwdUAwMjgwMDAw
MCB7DQo+ID4gKwkJCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxcC1pcHUiLCAiZnNsLGlteDZxLWlw
dSI7DQo+ID4gKwkJCWNsb2NrcyA9IDwmY2xrcyBJTVg2UURMX0NMS19JUFUyPiwNCj4gPiArCQkJ
CSA8JmNsa3MgSU1YNlFETF9DTEtfSVBVMl9ESTA+LCA8JmNsa3MNCj4gSU1YNlFETF9DTEtfSVBV
Ml9ESTE+LA0KPiA+ICsJCQkJIDwmY2xrcyBJTVg2UURMX0NMS19JUFUyX0RJMF9TRUw+LCA8JmNs
a3MNCj4gSU1YNlFETF9DTEtfSVBVMl9ESTFfU0VMPiwNCj4gPiArCQkJCSA8JmNsa3MgSU1YNlFE
TF9DTEtfTERCX0RJMF9QT0RGPiwgPCZjbGtzDQo+IElNWDZRRExfQ0xLX0xEQl9ESTFfUE9ERj4s
DQo+ID4gKwkJCQkgPCZjbGtzIElNWDZRRExfQ0xLX1BSRzFfQVBCPjsNCj4gPiArCQkJY2xvY2st
bmFtZXMgPSAiYnVzIiwNCj4gPiArCQkJCSAgICAgICJkaTAiLCAiZGkxIiwNCj4gPiArCQkJCSAg
ICAgICJkaTBfc2VsIiwgImRpMV9zZWwiLA0KPiA+ICsJCQkJICAgICAgImxkYl9kaTAiLCAibGRi
X2RpMSIsICJwcmciOw0KPiA+ICsJCX07DQo+ID4gKw0KPiA+ICsJCXNhdGE6IHNhdGFAMDIyMDAw
MDAgew0KPiA+ICsJCQljb21wYXRpYmxlID0gImZzbCxpbXg2cXAtYWhjaSI7DQo+ID4gKwkJCXJl
ZyA9IDwweDAyMjAwMDAwIDB4NDAwMD47DQo+ID4gKwkJCWludGVycnVwdHMgPSA8MCAzOSBJUlFf
VFlQRV9MRVZFTF9ISUdIPjsNCj4gPiArCQkJY2xvY2tzID0gPCZjbGtzIElNWDZRRExfQ0xLX1NB
VEE+LA0KPiA+ICsJCQkJIDwmY2xrcyBJTVg2UURMX0NMS19TQVRBX1JFRl8xMDBNPiwNCj4gPiAr
CQkJCSA8JmNsa3MgSU1YNlFETF9DTEtfQUhCPjsNCj4gPiArCQkJY2xvY2stbmFtZXMgPSAic2F0
YSIsICJzYXRhX3JlZiIsICJhaGIiOw0KPiA+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOw0KPiA+
ICsJCX07DQo+ID4gKwl9Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArJmxkYiB7DQo+ID4gKwljb21w
YXRpYmxlID0gImZzbCxpbXg2cXAtbGRiIiwgImZzbCxpbXg2cS1sZGIiLCAiZnNsLGlteDUzLWxk
YiI7IH07DQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svaW14NnFk
bC1jbG9jay5oDQo+ID4gYi9pbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2lteDZxZGwtY2xvY2su
aA0KPiA+IGluZGV4IDc3OTg1Y2MuLjI5MDUwMzMgMTAwNjQ0DQo+ID4gLS0tIGEvaW5jbHVkZS9k
dC1iaW5kaW5ncy9jbG9jay9pbXg2cWRsLWNsb2NrLmgNCj4gPiArKysgYi9pbmNsdWRlL2R0LWJp
bmRpbmdzL2Nsb2NrL2lteDZxZGwtY2xvY2suaA0KPiANCj4gVGhpcyBmaWxlIHNob3VsZCBiZSB1
cGRhdGVkIGluIHRoZSBwYXRjaCB0aGF0IHVwZGF0ZXMgY2xvY2sgZHJpdmVyLg0KPiBPbmx5IGFm
dGVyIHRoZXNlIG5ldyBjbG9ja3MgZ2V0IHN1cHBvcnRlZCBieSBjbG9jayBkcml2ZXIsIHlvdSBj
YW4gdXNlIHRoZW0gaW4NCj4gZGV2aWNlIHRyZWUuDQo+IA0KDQpvaywgdGhhbmtzIGZvciB5b3Ug
cmV2aWV3Lg0KDQo+IFNoYXduDQo+IA0KPiA+IEBAIC0yNTUsNiArMjU1LDIwIEBADQo+ID4gICNk
ZWZpbmUgSU1YNlFETF9DTEtfQ0FBTV9BQ0xLCQkJMjQyDQo+ID4gICNkZWZpbmUgSU1YNlFETF9D
TEtfQ0FBTV9JUEcJCQkyNDMNCj4gPiAgI2RlZmluZSBJTVg2UURMX0NMS19TUERJRl9HQ0xLCQkJ
MjQ0DQo+ID4gLSNkZWZpbmUgSU1YNlFETF9DTEtfRU5ECQkJCTI0NQ0KPiA+ICsjZGVmaW5lIElN
WDZRRExfQ0xLX1VBUlRfU0VMCQkJMjQ1DQo+ID4gKyNkZWZpbmUgSU1YNlFETF9DTEtfSVBHX1BF
Ul9TRUwJCQkyNDYNCj4gPiArI2RlZmluZSBJTVg2UURMX0NMS19FQ1NQSV9TRUwJCQkyNDcNCj4g
PiArI2RlZmluZSBJTVg2UURMX0NMS19DQU5fU0VMCQkJMjQ4DQo+ID4gKyNkZWZpbmUgSU1YNlFE
TF9DTEtfTU1EQ19DSDFfQVhJX0NHCQkyNDkNCj4gPiArI2RlZmluZSBJTVg2UURMX0NMS19QUkUw
CQkJMjUwDQo+ID4gKyNkZWZpbmUgSU1YNlFETF9DTEtfUFJFMQkJCTI1MQ0KPiA+ICsjZGVmaW5l
IElNWDZRRExfQ0xLX1BSRTIJCQkyNTINCj4gPiArI2RlZmluZSBJTVg2UURMX0NMS19QUkUzCQkJ
MjUzDQo+ID4gKyNkZWZpbmUgSU1YNlFETF9DTEtfUFJHMF9BWEkJCQkyNTQNCj4gPiArI2RlZmlu
ZSBJTVg2UURMX0NMS19QUkcxX0FYSQkJCTI1NQ0KPiA+ICsjZGVmaW5lIElNWDZRRExfQ0xLX1BS
RzBfQVBCCQkJMjU2DQo+ID4gKyNkZWZpbmUgSU1YNlFETF9DTEtfUFJHMV9BUEIJCQkyNTcNCj4g
PiArI2RlZmluZSBJTVg2UURMX0NMS19QUkVfQVhJCQkJMjU4DQo+ID4gKyNkZWZpbmUgSU1YNlFE
TF9DTEtfRU5ECQkJCTI1OQ0KPiA+DQo+ID4gICNlbmRpZiAvKiBfX0RUX0JJTkRJTkdTX0NMT0NL
X0lNWDZRRExfSCAqLw0KPiA+IC0tDQo+ID4gMS45LjENCj4gPg0KPiA+DQo=

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH v2 2/5] ARM: dts: imx: Add basic dts support for imx6qp-sabresd
  2016-01-28  7:54   ` Shawn Guo
@ 2016-01-28 10:43     ` Ping Bai
  0 siblings, 0 replies; 13+ messages in thread
From: Ping Bai @ 2016-01-28 10:43 UTC (permalink / raw)
  To: Shawn Guo
  Cc: kernel@pengutronix.de, devicetree@vger.kernel.org,
	pawel.moll@arm.com, mturquette@baylibre.com, sboyd@codeaurora.org,
	robh+dt@kernel.org, linux-clk@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, jacky.baip@gmail.com

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU2hhd24gR3VvIFttYWls
dG86c2hhd25ndW9Aa2VybmVsLm9yZ10NCj4gU2VudDogMjAxNsTqMdTCMjjI1SAxNTo1NA0KPiBU
bzogYjUxNTAzQGZyZWVzY2FsZS5jb20NCj4gQ2M6IGtlcm5lbEBwZW5ndXRyb25peC5kZTsgZGV2
aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7DQo+IHBhd2VsLm1vbGxAYXJtLmNvbTsgbXR1cnF1ZXR0
ZUBiYXlsaWJyZS5jb207IHNib3lkQGNvZGVhdXJvcmEub3JnOw0KPiByb2JoK2R0QGtlcm5lbC5v
cmc7IGxpbnV4LWNsa0B2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS0NCj4ga2VybmVsQGxpc3Rz
LmluZnJhZGVhZC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAyLzVdIEFSTTogZHRzOiBp
bXg6IEFkZCBiYXNpYyBkdHMgc3VwcG9ydCBmb3IgaW14NnFwLQ0KPiBzYWJyZXNkDQo+IA0KPiBP
biBUdWUsIERlYyAxNSwgMjAxNSBhdCAwMjowNzo1MFBNICswODAwLCBCYWkgUGluZyB3cm90ZToN
Cj4gPiBUaGUgcGF0Y2ggYWRkcyBkdHMgZmlsZSBmb3IgaW14NnFwLXNhYnJlc2QgYm9hcmQuDQo+
ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBCYWkgUGluZyA8YjUxNTAzQGZyZWVzY2FsZS5jb20+DQo+
ID4gLS0tDQo+ID4gIGFyY2gvYXJtL2Jvb3QvZHRzL01ha2VmaWxlICAgICAgICAgICAgIHwgIDEg
Kw0KPiA+ICBhcmNoL2FybS9ib290L2R0cy9pbXg2cWRsLXNhYnJlc2QuZHRzaSB8ICAxICsNCj4g
PiAgYXJjaC9hcm0vYm9vdC9kdHMvaW14NnFwLXNhYnJlc2QuZHRzICAgfCA1OQ0KPiArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNjEgaW5z
ZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vYm9vdC9kdHMvaW14
NnFwLXNhYnJlc2QuZHRzDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMv
TWFrZWZpbGUgYi9hcmNoL2FybS9ib290L2R0cy9NYWtlZmlsZQ0KPiA+IGluZGV4IDM2ZDgxMzMu
LmRmYmE3NjUgMTAwNjQ0DQo+ID4gLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvTWFrZWZpbGUNCj4g
PiArKysgYi9hcmNoL2FybS9ib290L2R0cy9NYWtlZmlsZQ0KPiA+IEBAIC0zMDIsNiArMzAyLDcg
QEAgZHRiLSQoQ09ORklHX1NPQ19JTVg2USkgKz0gXA0KPiA+ICAJaW14NmRsLXNhYnJlYXV0by5k
dGIgXA0KPiA+ICAJaW14NmRsLXNhYnJlbGl0ZS5kdGIgXA0KPiA+ICAJaW14NmRsLXNhYnJlc2Qu
ZHRiIFwNCj4gPiArCWlteDZxcC1zYWJyZXNkLmR0YiBcDQo+IA0KPiBQbGVhc2Uga2VlcCB0aGUg
bGlzdCBzb3J0IGFscGhhYmV0aWNhbGx5LiAgVGhhdCBzYWlkLCBpbXg2cXAtc2FicmVzZC5kdGIg
c2hvdWxkDQo+IGJlIGFkZGVkIGFmdGVyIGlteDZxLSogb25lcy4NCj4gDQo+ID4gIAlpbXg2ZGwt
dHg2ZGwtY29tdGZ0LmR0YiBcDQo+ID4gIAlpbXg2ZGwtdHg2dS04MDF4LmR0YiBcDQo+ID4gIAlp
bXg2ZGwtdHg2dS04MTF4LmR0YiBcDQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRz
L2lteDZxZGwtc2FicmVzZC5kdHNpDQo+ID4gYi9hcmNoL2FybS9ib290L2R0cy9pbXg2cWRsLXNh
YnJlc2QuZHRzaQ0KPiA+IGluZGV4IGE2ZDQ0NWMuLmY2NWY1N2IgMTAwNjQ0DQo+ID4gLS0tIGEv
YXJjaC9hcm0vYm9vdC9kdHMvaW14NnFkbC1zYWJyZXNkLmR0c2kNCj4gPiArKysgYi9hcmNoL2Fy
bS9ib290L2R0cy9pbXg2cWRsLXNhYnJlc2QuZHRzaQ0KPiA+IEBAIC0yMzgsNiArMjM4LDcgQEAN
Cj4gPiAgCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+Ow0KPiA+ICAJCQkJ
cmVndWxhdG9yLWJvb3Qtb247DQo+ID4gIAkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOw0KPiA+ICsJ
CQkJcmVndWxhdG9yLXJhbXAtZGVsYXkgPSA8NjI1MD47DQo+IA0KPiBTbyB0aGlzIGNoYW5nZSBh
cHBsaWVzIHRvIGlteDZxIGFuZCBpbXg2ZGwgc2FicmVzZCBhcyB3ZWxsPw0KPiANCg0KWWVzLCB0
aGlzIGNoYW5nZSBhcHBsaWVzIHRvIGlteDZxIGFuZCBpbXg2ZGwgc2FicmVzZC4NCg0KPiA+ICAJ
CQl9Ow0KPiA+DQo+ID4gIAkJCXN3M2FfcmVnOiBzdzNhIHsNCj4gPiBkaWZmIC0tZ2l0IGEvYXJj
aC9hcm0vYm9vdC9kdHMvaW14NnFwLXNhYnJlc2QuZHRzDQo+ID4gYi9hcmNoL2FybS9ib290L2R0
cy9pbXg2cXAtc2FicmVzZC5kdHMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4
IDAwMDAwMDAuLmMzYWIyYjYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvYXJjaC9hcm0v
Ym9vdC9kdHMvaW14NnFwLXNhYnJlc2QuZHRzDQo+ID4gQEAgLTAsMCArMSw1OSBAQA0KPiA+ICsv
Kg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIElu
Yy4NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KPiA+ICttb2RpZnkNCj4gPiArICogaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMN
Cj4gPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQo+ID4g
KyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImlteDZxLXNhYnJlc2QuZHRzIg0KPiA+ICsjaW5j
bHVkZSAiaW14NnFwLmR0c2kiDQo+IA0KPiBBaCwgdGhhdCdzIHdoeSB5b3UgZG8gbm90IGluY2x1
ZGUgImlteDZxZGwuZHRzaSIgaW4gaW14NnFwLmR0c2kuICBJIGhhdmUgYQ0KPiBxdWVzdGlvbiB3
aXRoIHRoaXMgYXBwcm9hY2guICBIb3cgcGVvcGxlIHNob3VsZCB3cml0ZSBoaXMgaW14NnFwIGJv
YXJkIGR0cyBmaWxlLA0KPiBpZiBoaXMgYm9hcmQgbmV2ZXIgaGFzIGFuIGlteDZxIHZlcnNpb24/
DQo+IA0KIA0KU3VyZSwgaXQgaXMgYSBwcm9ibGVtLCBpbmNsdWRlIHRoZSBpbXg2cWRsLmR0c2kg
aW4gaW14NnFwLmR0c2kgaXMgbW9yZSByZWFzb25hYmxlLg0KDQo+ID4gKw0KPiA+ICsvIHsNCj4g
PiArCW1vZGVsID0gIkZyZWVzY2FsZSBpLk1YNiBRdWFkIFBsdXMgU0FCUkUgU21hcnQgRGV2aWNl
IEJvYXJkIjsNCj4gPiArCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxcC1zYWJyZXNkIiwgImZzbCxp
bXg2cXAiOyB9Ow0KPiA+ICsNCj4gPiArJmNwdTAgew0KPiA+ICsJYXJtLXN1cHBseSA9IDwmc3cy
X3JlZz47DQo+ID4gK307DQo+ID4gKw0KPiA+ICsmaW9tdXhjIHsNCj4gPiArCWlteDZxZGwtc2Fi
cmVzZCB7DQo+IA0KPiBTaW5jZSBjb21taXQgNWZjZGY2YTdlZDk1IChwaW5jdHJsOiBpbXg6IEFs
bG93IHBhcnNpbmcgRFQgd2l0aG91dCBmdW5jdGlvbg0KPiBub2RlcyksIHRoaXMgYWRkaXRpb25h
bCBjb250YWluZXIgbm9kZSBjYW4ganVzdCBiZSBzYXZlZC4NCj4gDQo+IFNoYXduDQo+IA0KPiA+
ICsJCXBpbmN0cmxfdXNkaGMyOiB1c2RoYzJncnAgew0KPiA+ICsJCQlmc2wscGlucyA9IDwNCj4g
PiArCQkJCU1YNlFETF9QQURfU0QyX0NNRF9fU0QyX0NNRA0KPiAJMHgxNzA1OQ0KPiA+ICsJCQkJ
TVg2UURMX1BBRF9TRDJfQ0xLX19TRDJfQ0xLDQo+IAkweDEwMDcxDQo+ID4gKwkJCQlNWDZRRExf
UEFEX1NEMl9EQVQwX19TRDJfREFUQTANCj4gCTB4MTcwNTkNCj4gPiArCQkJCU1YNlFETF9QQURf
U0QyX0RBVDFfX1NEMl9EQVRBMQ0KPiAJMHgxNzA1OQ0KPiA+ICsJCQkJTVg2UURMX1BBRF9TRDJf
REFUMl9fU0QyX0RBVEEyDQo+IAkweDE3MDU5DQo+ID4gKwkJCQlNWDZRRExfUEFEX1NEMl9EQVQz
X19TRDJfREFUQTMNCj4gCTB4MTcwNTkNCj4gPiArCQkJCU1YNlFETF9QQURfTkFOREZfRDRfX1NE
Ml9EQVRBNA0KPiAJMHgxNzA1OQ0KPiA+ICsJCQkJTVg2UURMX1BBRF9OQU5ERl9ENV9fU0QyX0RB
VEE1DQo+IAkweDE3MDU5DQo+ID4gKwkJCQlNWDZRRExfUEFEX05BTkRGX0Q2X19TRDJfREFUQTYN
Cj4gCTB4MTcwNTkNCj4gPiArCQkJCU1YNlFETF9QQURfTkFOREZfRDdfX1NEMl9EQVRBNw0KPiAJ
MHgxNzA1OQ0KPiA+ICsJCQk+Ow0KPiA+ICsJCX07DQo+ID4gKw0KPiA+ICsJCXBpbmN0cmxfdXNk
aGMzOiB1c2RoYzNncnAgew0KPiA+ICsJCQlmc2wscGlucyA9IDwNCj4gPiArCQkJCU1YNlFETF9Q
QURfU0QzX0NNRF9fU0QzX0NNRA0KPiAJMHgxNzA1OQ0KPiA+ICsJCQkJTVg2UURMX1BBRF9TRDNf
Q0xLX19TRDNfQ0xLDQo+IAkweDEwMDcxDQo+ID4gKwkJCQlNWDZRRExfUEFEX1NEM19EQVQwX19T
RDNfREFUQTANCj4gCTB4MTcwNTkNCj4gPiArCQkJCU1YNlFETF9QQURfU0QzX0RBVDFfX1NEM19E
QVRBMQ0KPiAJMHgxNzA1OQ0KPiA+ICsJCQkJTVg2UURMX1BBRF9TRDNfREFUMl9fU0QzX0RBVEEy
DQo+IAkweDE3MDU5DQo+ID4gKwkJCQlNWDZRRExfUEFEX1NEM19EQVQzX19TRDNfREFUQTMNCj4g
CTB4MTcwNTkNCj4gPiArCQkJCU1YNlFETF9QQURfU0QzX0RBVDRfX1NEM19EQVRBNA0KPiAJMHgx
NzA1OQ0KPiA+ICsJCQkJTVg2UURMX1BBRF9TRDNfREFUNV9fU0QzX0RBVEE1DQo+IAkweDE3MDU5
DQo+ID4gKwkJCQlNWDZRRExfUEFEX1NEM19EQVQ2X19TRDNfREFUQTYNCj4gCTB4MTcwNTkNCj4g
PiArCQkJCU1YNlFETF9QQURfU0QzX0RBVDdfX1NEM19EQVRBNw0KPiAJMHgxNzA1OQ0KPiA+ICsJ
CQk+Ow0KPiA+ICsJCX07DQo+ID4gKwl9Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArJnBjaWUgew0K
PiA+ICsJcG93ZXItb24tZ3BpbyA9IDwmZ3BpbzMgMTkgMD47DQo+ID4gKwlyZXNldC1ncGlvID0g
PCZncGlvNyAxMiAwPjsNCj4gPiArCXN0YXR1cyA9ICJva2F5IjsNCj4gPiArfTsNCj4gPiAtLQ0K
PiA+IDEuOS4xDQo+ID4NCj4gPg0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fDQo+ID4gbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QNCj4gPiBs
aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcNCj4gPiBodHRwOi8vbGlzdHMuaW5m
cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwNCj4gPg0K

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH v2 5/5] ARM: imx: Add msl code support for imx6qp
  2016-01-28  8:10   ` Shawn Guo
@ 2016-01-28 10:45     ` Ping Bai
  0 siblings, 0 replies; 13+ messages in thread
From: Ping Bai @ 2016-01-28 10:45 UTC (permalink / raw)
  To: Shawn Guo
  Cc: kernel@pengutronix.de, pawel.moll@arm.com, robh+dt@kernel.org,
	mturquette@baylibre.com, sboyd@codeaurora.org,
	linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
	devicetree@vger.kernel.org, jacky.baip@gmail.com

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU2hhd24gR3VvIFttYWls
dG86c2hhd25ndW9Aa2VybmVsLm9yZ10NCj4gU2VudDogMjAxNsTqMdTCMjjI1SAxNjoxMQ0KPiBU
bzogYjUxNTAzQGZyZWVzY2FsZS5jb20NCj4gQ2M6IGtlcm5lbEBwZW5ndXRyb25peC5kZTsgcGF3
ZWwubW9sbEBhcm0uY29tOyByb2JoK2R0QGtlcm5lbC5vcmc7DQo+IG10dXJxdWV0dGVAYmF5bGli
cmUuY29tOyBzYm95ZEBjb2RlYXVyb3JhLm9yZzsgbGludXgtYXJtLQ0KPiBrZXJuZWxAbGlzdHMu
aW5mcmFkZWFkLm9yZzsgbGludXgtY2xrQHZnZXIua2VybmVsLm9yZzsNCj4gZGV2aWNldHJlZUB2
Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiA1LzVdIEFSTTogaW14OiBB
ZGQgbXNsIGNvZGUgc3VwcG9ydCBmb3IgaW14NnFwDQo+IA0KPiBPbiBUdWUsIERlYyAxNSwgMjAx
NSBhdCAwMjowNzo1M1BNICswODAwLCBCYWkgUGluZyB3cm90ZToNCj4gPiBUaGUgaS5NWDZRUCBp
cyBhIGRpZmZlcmVudCBTT0MsIGJ1dCBpbnRlcm5hbGx5IHdlIHRyZWF0ZSBpdCBhcyBpLk1YNlEN
Cj4gPiBSZXZfMi4wIHRvIG1heGltdW0gdGhlIGNvZGUgcmV1c2FiaWxpdHkuIFRoZSBjaGlwIHNp
bGljb24gbnVtYmVyIHdlDQo+ID4gcmVhZCBmcm9tIHRoZSBBTkFESUdfRElHUFJPRyBpcyAweDYz
MDEwMC4gVGhpcyBwYXRjaCBhZGQgY29kZSB0bw0KPiA+IGlkZW50aWZ5IGl0IGFzIGkuTVg2UVAg
UmV2XzEuMCB3aGVuIHByaW50IG91dCB0aGUgc2lsaWNvbiB2ZXJzaW9uLg0KPiA+DQo+ID4gU2ln
bmVkLW9mZi1ieTogQmFpIFBpbmcgPGI1MTUwM0BmcmVlc2NhbGUuY29tPg0KPiA+IC0tLQ0KPiA+
ICBhcmNoL2FybS9tYWNoLWlteC9hbmF0b3AuYyAgICAgfCA1ICsrKystDQo+ID4gIGFyY2gvYXJt
L21hY2gtaW14L21hY2gtaW14NnEuYyB8IDggKysrKysrLS0NCj4gPiAgMiBmaWxlcyBjaGFuZ2Vk
LCAxMCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh
L2FyY2gvYXJtL21hY2gtaW14L2FuYXRvcC5jIGIvYXJjaC9hcm0vbWFjaC1pbXgvYW5hdG9wLmMN
Cj4gPiBpbmRleCAyMzFiYjI1Li45NjIyNzYzIDEwMDY0NA0KPiA+IC0tLSBhL2FyY2gvYXJtL21h
Y2gtaW14L2FuYXRvcC5jDQo+ID4gKysrIGIvYXJjaC9hcm0vbWFjaC1pbXgvYW5hdG9wLmMNCj4g
PiBAQCAtMTI5LDcgKzEyOSwxMCBAQCB2b2lkIF9faW5pdCBpbXhfaW5pdF9yZXZpc2lvbl9mcm9t
X2FuYXRvcCh2b2lkKQ0KPiA+DQo+ID4gIAlzd2l0Y2ggKGRpZ3Byb2cgJiAweGZmKSB7DQo+ID4g
IAljYXNlIDA6DQo+ID4gLQkJcmV2aXNpb24gPSBJTVhfQ0hJUF9SRVZJU0lPTl8xXzA7DQo+ID4g
KwkJaWYgKGRpZ3Byb2cgPj4gOCAmIDB4MDEpDQo+ID4gKwkJCXJldmlzaW9uID0gSU1YX0NISVBf
UkVWSVNJT05fMl8wOw0KPiA+ICsJCWVsc2UNCj4gPiArCQkJcmV2aXNpb24gPSBJTVhfQ0hJUF9S
RVZJU0lPTl8xXzA7DQo+IA0KPiBQbGVhc2UgYXQgbGVhc3QgYWRkIHNvbWUgY29tbWVudCBoZXJl
IHRvIGhlbHAgdXMgcmVtZW1iZXIgdGhhdCB0aGlzIGlzIGEgdHJpY2sNCj4gd2UgcGxheSBmb3Ig
aS5NWDZRUC4NCj4gDQogDQpXaWxsIGFkZHJlc3MgdGhpcyBpbiBwYXRjaCBWMy4gVGhhbmtzIGZv
ciB5b3VyIHJldmlldy4NCg0KPiBTaGF3bg0KPiANCj4gPiAgCQlicmVhazsNCj4gPiAgCWNhc2Ug
MToNCj4gPiAgCQlyZXZpc2lvbiA9IElNWF9DSElQX1JFVklTSU9OXzFfMTsNCj4gPiBkaWZmIC0t
Z2l0IGEvYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jDQo+ID4gYi9hcmNoL2FybS9tYWNo
LWlteC9tYWNoLWlteDZxLmMgaW5kZXggMzg3ODQ5NGIuLmNiMjdkNTYgMTAwNjQ0DQo+ID4gLS0t
IGEvYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jDQo+ID4gKysrIGIvYXJjaC9hcm0vbWFj
aC1pbXgvbWFjaC1pbXg2cS5jDQo+ID4gQEAgLTI2Niw4ICsyNjYsMTEgQEAgc3RhdGljIHZvaWQg
X19pbml0IGlteDZxX2luaXRfbWFjaGluZSh2b2lkKSAgew0KPiA+ICAJc3RydWN0IGRldmljZSAq
cGFyZW50Ow0KPiA+DQo+ID4gLQlpbXhfcHJpbnRfc2lsaWNvbl9yZXYoY3B1X2lzX2lteDZkbCgp
ID8gImkuTVg2REwiIDogImkuTVg2USIsDQo+ID4gLQkJCSAgICAgIGlteF9nZXRfc29jX3Jldmlz
aW9uKCkpOw0KPiA+ICsJaWYgKGNwdV9pc19pbXg2cSgpICYmIGlteF9nZXRfc29jX3JldmlzaW9u
KCkgPT0NCj4gSU1YX0NISVBfUkVWSVNJT05fMl8wKQ0KPiA+ICsJCWlteF9wcmludF9zaWxpY29u
X3JldigiaS5NWDZRUCIsIElNWF9DSElQX1JFVklTSU9OXzFfMCk7DQo+ID4gKwllbHNlDQo+ID4g
KwkJaW14X3ByaW50X3NpbGljb25fcmV2KGNwdV9pc19pbXg2ZGwoKSA/ICJpLk1YNkRMIiA6ICJp
Lk1YNlEiLA0KPiA+ICsJCQkJaW14X2dldF9zb2NfcmV2aXNpb24oKSk7DQo+ID4NCj4gPiAgCXBh
cmVudCA9IGlteF9zb2NfZGV2aWNlX2luaXQoKTsNCj4gPiAgCWlmIChwYXJlbnQgPT0gTlVMTCkN
Cj4gPiBAQCAtMzk5LDYgKzQwMiw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBpbXg2cV9pbml0X2ly
cSh2b2lkKSAgc3RhdGljDQo+ID4gY29uc3QgY2hhciAqIGNvbnN0IGlteDZxX2R0X2NvbXBhdFtd
IF9faW5pdGNvbnN0ID0gew0KPiA+ICAJImZzbCxpbXg2ZGwiLA0KPiA+ICAJImZzbCxpbXg2cSIs
DQo+ID4gKwkiZnNsLGlteDZxcCIsDQo+ID4gIAlOVUxMLA0KPiA+ICB9Ow0KPiA+DQo+ID4gLS0N
Cj4gPiAxLjkuMQ0KPiA+DQo+ID4NCg==

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-01-28 10:45 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-15  6:07 [PATCH v2 0/5] Add support for imx6qp Bai Ping
2015-12-15  6:07 ` [PATCH v2 1/5] ARM: dts: imx: Add basic dts support for imx6qp SOC Bai Ping
2016-01-28  7:42   ` Shawn Guo
2016-01-28 10:38     ` Ping Bai
2015-12-15  6:07 ` [PATCH v2 2/5] ARM: dts: imx: Add basic dts support for imx6qp-sabresd Bai Ping
2016-01-28  7:54   ` Shawn Guo
2016-01-28 10:43     ` Ping Bai
2015-12-15  6:07 ` [PATCH v2 3/5] ARM: dts: imx: Add basic dts support for imx6qp-sabreauto Bai Ping
2016-01-28  7:57   ` Shawn Guo
2015-12-15  6:07 ` [PATCH v2 4/5] clk: imx: Add clock support for imx6qp Bai Ping
2015-12-15  6:07 ` [PATCH v2 5/5] ARM: imx: Add msl code " Bai Ping
2016-01-28  8:10   ` Shawn Guo
2016-01-28 10:45     ` Ping Bai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).