This commit provides support for HSC and DDC boards from
Kieback&Peter GmbH vendor.
Signed-off-by: Lukasz Majewski <[email protected]>
---
arch/arm/boot/dts/Makefile | 2 +
arch/arm/boot/dts/imx53-kp-ddc.dts | 146 ++++++++++++++++++++++++++++
arch/arm/boot/dts/imx53-kp-hsc.dts | 53 ++++++++++
arch/arm/boot/dts/imx53-kp.dtsi | 191 +++++++++++++++++++++++++++++++++++++
4 files changed, 392 insertions(+)
create mode 100644 arch/arm/boot/dts/imx53-kp-ddc.dts
create mode 100644 arch/arm/boot/dts/imx53-kp-hsc.dts
create mode 100644 arch/arm/boot/dts/imx53-kp.dtsi
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index fbc04b0db781..00854a5b6ac4 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -360,6 +360,8 @@ dtb-$(CONFIG_SOC_IMX51) += \
dtb-$(CONFIG_SOC_IMX53) += \
imx53-ard.dtb \
imx53-cx9020.dtb \
+ imx53-kp-ddc.dtb \
+ imx53-kp-hsc.dtb \
imx53-m53evk.dtb \
imx53-mba53.dtb \
imx53-ppd.dtb \
diff --git a/arch/arm/boot/dts/imx53-kp-ddc.dts b/arch/arm/boot/dts/imx53-kp-ddc.dts
new file mode 100644
index 000000000000..acaf477a52c5
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp-ddc.dts
@@ -0,0 +1,146 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-kp.dtsi"
+
+/ {
+ model = "K+P imx53 DDC";
+ compatible = "kiebackpeter,imx53-ddc", "fsl,imx53";
+
+ backlight_lcd: backlight {
+ compatible = "pwm-backlight";
+ pwms = <&pwm2 0 50000>;
+ power-supply = <®_backlight>;
+ brightness-levels = <0 24 28 32 36
+ 40 44 48 52 56
+ 60 64 68 72 76
+ 80 84 88 92 96 100>;
+ default-brightness-level = <20>;
+ };
+
+ lcd_display: disp1 {
+ compatible = "fsl,imx-parallel-display";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interface-pix-fmt = "rgb24";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_disp>;
+
+ port@0 {
+ reg = <0>;
+
+ display1_in: endpoint {
+ remote-endpoint = <&ipu_di1_disp1>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ lcd_display_out: endpoint {
+ remote-endpoint = <&lcd_panel_in>;
+ };
+ };
+ };
+
+ lcd_panel: lcd-panel {
+ compatible = "koe,tx14d24vm1bpa";
+ backlight = <&backlight_lcd>;
+ power-supply = <®_3v3>;
+
+ port {
+ lcd_panel_in: endpoint {
+ remote-endpoint = <&lcd_display_out>;
+ };
+ };
+ };
+
+ reg_backlight: regulator-backlight {
+ compatible = "regulator-fixed";
+ regulator-name = "backlight-supply";
+ regulator-min-microvolt = <15000000>;
+ regulator-max-microvolt = <15000000>;
+ regulator-always-on;
+ };
+};
+
+&i2c3 {
+ adc@48 {
+ compatible = "ti,ads1015";
+ reg = <0x48>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ channel@4 {
+ reg = <4>;
+ ti,gain = <2>;
+ ti,datarate = <4>;
+ };
+
+ channel@6 {
+ reg = <6>;
+ ti,gain = <2>;
+ ti,datarate = <4>;
+ };
+ };
+
+ gpio_expander2@21 {
+ compatible = "nxp,pcf8574";
+ reg = <0x21>;
+ interrupts = <109>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ };
+};
+
+&iomuxc {
+ imx53-kp-ddc {
+ pinctrl_disp: dispgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_A16__IPU_DI1_DISP_CLK 0x4
+ MX53_PAD_EIM_DA10__IPU_DI1_PIN15 0x4
+ MX53_PAD_EIM_DA9__IPU_DISP1_DAT_0 0x4
+ MX53_PAD_EIM_DA8__IPU_DISP1_DAT_1 0x4
+ MX53_PAD_EIM_DA7__IPU_DISP1_DAT_2 0x4
+ MX53_PAD_EIM_DA6__IPU_DISP1_DAT_3 0x4
+ MX53_PAD_EIM_DA5__IPU_DISP1_DAT_4 0x4
+ MX53_PAD_EIM_DA4__IPU_DISP1_DAT_5 0x4
+ MX53_PAD_EIM_DA3__IPU_DISP1_DAT_6 0x4
+ MX53_PAD_EIM_DA2__IPU_DISP1_DAT_7 0x4
+ MX53_PAD_EIM_DA1__IPU_DISP1_DAT_8 0x4
+ MX53_PAD_EIM_DA0__IPU_DISP1_DAT_9 0x4
+ MX53_PAD_EIM_EB1__IPU_DISP1_DAT_10 0x4
+ MX53_PAD_EIM_EB0__IPU_DISP1_DAT_11 0x4
+ MX53_PAD_EIM_A17__IPU_DISP1_DAT_12 0x4
+ MX53_PAD_EIM_A18__IPU_DISP1_DAT_13 0x4
+ MX53_PAD_EIM_A19__IPU_DISP1_DAT_14 0x4
+ MX53_PAD_EIM_A20__IPU_DISP1_DAT_15 0x4
+ MX53_PAD_EIM_A21__IPU_DISP1_DAT_16 0x4
+ MX53_PAD_EIM_A22__IPU_DISP1_DAT_17 0x4
+ MX53_PAD_EIM_A23__IPU_DISP1_DAT_18 0x4
+ MX53_PAD_EIM_A24__IPU_DISP1_DAT_19 0x4
+ MX53_PAD_EIM_D31__IPU_DISP1_DAT_20 0x4
+ MX53_PAD_EIM_D30__IPU_DISP1_DAT_21 0x4
+ MX53_PAD_EIM_D26__IPU_DISP1_DAT_22 0x4
+ MX53_PAD_EIM_D27__IPU_DISP1_DAT_23 0x4
+ MX53_PAD_GPIO_1__PWM2_PWMO 0x4
+ >;
+ };
+ };
+};
+
+&ipu_di1_disp1 {
+ remote-endpoint = <&display1_in>;
+};
+
+&fec {
+ status = "okay";
+};
+
+&pmic {
+ fsl,mc13xxx-uses-touch;
+};
diff --git a/arch/arm/boot/dts/imx53-kp-hsc.dts b/arch/arm/boot/dts/imx53-kp-hsc.dts
new file mode 100644
index 000000000000..fff358395c9d
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp-hsc.dts
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-kp.dtsi"
+
+/ {
+ model = "K+P imx53 HSC";
+ compatible = "kiebackpeter,imx53-hsc", "fsl,imx53";
+
+};
+
+&fec {
+ status = "okay";
+
+ fixed-link { /* RMII fixed link to LAN9303 */
+ speed = <100>;
+ full-duplex;
+ };
+};
+
+&i2c3 {
+ switch: switch@a {
+ compatible = "smsc,lan9303-i2c";
+ reg = <0xa>;
+ reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
+ reset-duration = <400>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 { /* RMII fixed link to master */
+ reg = <0>;
+ label = "cpu";
+ ethernet = <&fec>;
+ };
+
+ port@1 { /* external port 1 */
+ reg = <1>;
+ label = "lan1";
+ };
+
+ port@2 { /* external port 2 */
+ reg = <2>;
+ label = "lan2";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-kp.dtsi b/arch/arm/boot/dts/imx53-kp.dtsi
new file mode 100644
index 000000000000..86bea3217f18
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp.dtsi
@@ -0,0 +1,191 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-tqma53.dtsi"
+
+/ {
+ buzzer {
+ compatible = "pwm-beeper";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_buzzer>;
+
+ pwms = <&pwm1 0 500000>;
+ };
+
+ gpio_buttons {
+ compatible = "gpio-keys";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_gpiobuttons>;
+
+ button@1 {
+ label = "Kaltstart";
+ linux,code = <64>; /* KEY_F6 */
+ gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
+ };
+ button@2 {
+ label = "PowerFailInterrupt";
+ linux,code = <65>; /* KEY_F7 */
+ gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_leds>;
+
+ led_bus {
+ label = "bus";
+ gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "gpio";
+ default-state = "off";
+ };
+
+ led_error {
+ label = "error";
+ gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "gpio";
+ default-state = "off";
+ };
+
+ led_flash {
+ label = "flash";
+ gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ reg_3v3: regulator-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+};
+
+&can1 {
+ status = "okay";
+};
+
+&can2 {
+ status = "okay";
+};
+
+&i2c3 {
+ status = "okay";
+
+ gpio_expander1@22 {
+ compatible = "nxp,pcf8574";
+ reg = <0x22>;
+ interrupts = <109>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ };
+
+ rtc@51 {
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ };
+};
+
+&iomuxc {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_kp_common>;
+
+ imx53-kp-common {
+ pinctrl_buzzer: buzzergrp {
+ fsl,pins = <
+ MX53_PAD_SD1_DATA3__PWM1_PWMO 0x1e4
+ >;
+ };
+
+ pinctrl_gpiobuttons: gpiobuttonsgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_RW__GPIO2_26 0x1e4
+ MX53_PAD_EIM_D22__GPIO3_22 0x1e4
+ >;
+ };
+
+ pinctrl_kp_common: kpcommongrp {
+ fsl,pins = <
+ MX53_PAD_EIM_CS0__GPIO2_23 0x1e4
+ MX53_PAD_GPIO_19__GPIO4_5 0x1e4
+ MX53_PAD_PATA_DATA6__GPIO2_6 0x1e4
+ MX53_PAD_PATA_DATA7__GPIO2_7 0xe0
+ MX53_PAD_CSI0_DAT14__GPIO6_0 0x1e4
+ MX53_PAD_CSI0_DAT16__GPIO6_2 0x1e4
+ MX53_PAD_CSI0_DAT18__GPIO6_4 0x1e4
+ MX53_PAD_EIM_D17__GPIO3_17 0x1e4
+ MX53_PAD_EIM_D18__GPIO3_18 0x1e4
+ MX53_PAD_EIM_D21__GPIO3_21 0x1e4
+ MX53_PAD_EIM_D29__GPIO3_29 0x1e4
+ MX53_PAD_EIM_DA11__GPIO3_11 0x1e4
+ MX53_PAD_EIM_DA13__GPIO3_13 0x1e4
+ MX53_PAD_EIM_DA14__GPIO3_14 0x1e4
+ MX53_PAD_SD1_DATA0__GPIO1_16 0x1e4
+ MX53_PAD_SD1_CMD__GPIO1_18 0x1e4
+ MX53_PAD_SD1_CLK__GPIO1_20 0x1e4
+ >;
+ };
+
+ pinctrl_leds: ledgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_EB2__GPIO2_30 0x1d4
+ MX53_PAD_EIM_D28__GPIO3_28 0x1d4
+ MX53_PAD_EIM_WAIT__GPIO5_0 0x1d4
+ >;
+ };
+
+ pinctrl_uart4: uart4grp {
+ fsl,pins = <
+ MX53_PAD_CSI0_DAT12__UART4_TXD_MUX 0x1e4
+ MX53_PAD_CSI0_DAT13__UART4_RXD_MUX 0x1e4
+ >;
+ };
+ };
+};
+
+&pinctrl_uart1 {
+ fsl,pins = <
+ MX53_PAD_EIM_D23__GPIO3_23 0x1e4
+ MX53_PAD_EIM_EB3__GPIO2_31 0x1e4
+ MX53_PAD_EIM_D24__GPIO3_24 0x1e4
+ MX53_PAD_EIM_D25__GPIO3_25 0x1e4
+ MX53_PAD_EIM_D19__GPIO3_19 0x1e4
+ MX53_PAD_EIM_D20__GPIO3_20 0x1e4
+ >;
+};
+
+&uart1 {
+ status = "okay";
+};
+
+&uart2 {
+ status = "okay";
+};
+
+&uart3 {
+ status = "okay";
+};
+
+&uart4 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart4>;
+
+ status = "okay";
+};
+
+&usbh1 {
+ status = "okay";
+};
+
+&usbphy0 {
+ status = "disabled";
+};
--
2.11.0
Hi Lukasz,
On Wed, May 9, 2018 at 12:34 PM, Lukasz Majewski <[email protected]> wrote:
> +&iomuxc {
> + imx53-kp-ddc {
No need for keeping this imx53-kp-ddc.
> diff --git a/arch/arm/boot/dts/imx53-kp-hsc.dts b/arch/arm/boot/dts/imx53-kp-hsc.dts
> new file mode 100644
> index 000000000000..fff358395c9d
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx53-kp-hsc.dts
> @@ -0,0 +1,53 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2018
> + * Lukasz Majewski, DENX Software Engineering, [email protected]
> + */
> +
> +/dts-v1/;
> +#include "imx53-kp.dtsi"
> +
> +/ {
> + model = "K+P imx53 HSC";
> + compatible = "kiebackpeter,imx53-hsc", "fsl,imx53";
> +
No need for this blank line.
> +};
> +
> +&fec {
> + status = "okay";
We usually put the status in the last line.
> + gpio_buttons {
> + compatible = "gpio-keys";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_gpiobuttons>;
> +
> + button@1 {
You pass @1 without a reg property. This triggers a warning when
building with W=1.
You could remove the @1.
Please make sure this patch does not introduce any W=1 dtc warning.
> +&iomuxc {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_kp_common>;
> +
> + imx53-kp-common {
No need for this imx53-kp-common
> +&uart4 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_uart4>;
> +
No need for this blank line.
On Wed, May 9, 2018 at 12:34 PM, Lukasz Majewski <[email protected]> wrote:
> + button@1 {
> + label = "Kaltstart";
> + linux,code = <64>; /* KEY_F6 */
If you include <dt-bindings/input/input.h> then you can simply do:
linux,code = <KEY_F6 >;
> + gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
> + };
> + button@2 {
> + label = "PowerFailInterrupt";
> + linux,code = <65>; /* KEY_F7 */
Same here.
Hi Fabio,
Thanks for your feedback.
> Hi Lukasz,
>
> On Wed, May 9, 2018 at 12:34 PM, Lukasz Majewski <[email protected]>
> wrote:
>
> > +&iomuxc {
> > + imx53-kp-ddc {
>
> No need for keeping this imx53-kp-ddc.
>
> > diff --git a/arch/arm/boot/dts/imx53-kp-hsc.dts
> > b/arch/arm/boot/dts/imx53-kp-hsc.dts new file mode 100644
> > index 000000000000..fff358395c9d
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/imx53-kp-hsc.dts
> > @@ -0,0 +1,53 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright 2018
> > + * Lukasz Majewski, DENX Software Engineering, [email protected]
> > + */
> > +
> > +/dts-v1/;
> > +#include "imx53-kp.dtsi"
> > +
> > +/ {
> > + model = "K+P imx53 HSC";
> > + compatible = "kiebackpeter,imx53-hsc", "fsl,imx53";
> > +
>
> No need for this blank line.
>
> > +};
> > +
> > +&fec {
> > + status = "okay";
>
> We usually put the status in the last line.
After moving status property to the end:
Error: arch/arm/boot/dts/imx53-kp-hsc.dts:21.2-18 Properties must
precede subnodes FATAL ERROR: Unable to parse input tree
So I opt for leaving it as it was.
>
> > + gpio_buttons {
> > + compatible = "gpio-keys";
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_gpiobuttons>;
> > +
> > + button@1 {
>
> You pass @1 without a reg property. This triggers a warning when
> building with W=1.
>
> You could remove the @1.
>
> Please make sure this patch does not introduce any W=1 dtc warning.
>
> > +&iomuxc {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_kp_common>;
> > +
> > + imx53-kp-common {
>
> No need for this imx53-kp-common
After removing imx53-kp-ddc and imx53-kp-common iomux subnodes I do see
following errors in the dmesg (v4.17-rc5):
imx53-pinctrl 53fa8000.iomuxc: function 'iomuxc' not supported
imx53-pinctrl 53fa8000.iomuxc: invalid function iomuxc in map table
Above statements are not visible when I use the v1 code of this patch.
>
> > +&uart4 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_uart4>;
> > +
>
> No need for this blank line.
I will sent fixed version in v2.
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected]
This commit provides support for HSC and DDC boards from
Kieback&Peter GmbH vendor.
Signed-off-by: Lukasz Majewski <[email protected]>
---
Changes for v2:
- Remove not needed #address-cells and #size-cells in
the gpio_buttons node to pass make W=1
- Rename button@{12} to button_{kalt|pwr} nodes to pass make W=1
- Include #include <dt-bindings/input/input.h> to use KEY_F6|F7 directly
---
arch/arm/boot/dts/Makefile | 2 +
arch/arm/boot/dts/imx53-kp-ddc.dts | 146 ++++++++++++++++++++++++++++
arch/arm/boot/dts/imx53-kp-hsc.dts | 51 ++++++++++
arch/arm/boot/dts/imx53-kp.dtsi | 190 +++++++++++++++++++++++++++++++++++++
4 files changed, 389 insertions(+)
create mode 100644 arch/arm/boot/dts/imx53-kp-ddc.dts
create mode 100644 arch/arm/boot/dts/imx53-kp-hsc.dts
create mode 100644 arch/arm/boot/dts/imx53-kp.dtsi
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index fbc04b0db781..00854a5b6ac4 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -360,6 +360,8 @@ dtb-$(CONFIG_SOC_IMX51) += \
dtb-$(CONFIG_SOC_IMX53) += \
imx53-ard.dtb \
imx53-cx9020.dtb \
+ imx53-kp-ddc.dtb \
+ imx53-kp-hsc.dtb \
imx53-m53evk.dtb \
imx53-mba53.dtb \
imx53-ppd.dtb \
diff --git a/arch/arm/boot/dts/imx53-kp-ddc.dts b/arch/arm/boot/dts/imx53-kp-ddc.dts
new file mode 100644
index 000000000000..acaf477a52c5
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp-ddc.dts
@@ -0,0 +1,146 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-kp.dtsi"
+
+/ {
+ model = "K+P imx53 DDC";
+ compatible = "kiebackpeter,imx53-ddc", "fsl,imx53";
+
+ backlight_lcd: backlight {
+ compatible = "pwm-backlight";
+ pwms = <&pwm2 0 50000>;
+ power-supply = <®_backlight>;
+ brightness-levels = <0 24 28 32 36
+ 40 44 48 52 56
+ 60 64 68 72 76
+ 80 84 88 92 96 100>;
+ default-brightness-level = <20>;
+ };
+
+ lcd_display: disp1 {
+ compatible = "fsl,imx-parallel-display";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interface-pix-fmt = "rgb24";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_disp>;
+
+ port@0 {
+ reg = <0>;
+
+ display1_in: endpoint {
+ remote-endpoint = <&ipu_di1_disp1>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ lcd_display_out: endpoint {
+ remote-endpoint = <&lcd_panel_in>;
+ };
+ };
+ };
+
+ lcd_panel: lcd-panel {
+ compatible = "koe,tx14d24vm1bpa";
+ backlight = <&backlight_lcd>;
+ power-supply = <®_3v3>;
+
+ port {
+ lcd_panel_in: endpoint {
+ remote-endpoint = <&lcd_display_out>;
+ };
+ };
+ };
+
+ reg_backlight: regulator-backlight {
+ compatible = "regulator-fixed";
+ regulator-name = "backlight-supply";
+ regulator-min-microvolt = <15000000>;
+ regulator-max-microvolt = <15000000>;
+ regulator-always-on;
+ };
+};
+
+&i2c3 {
+ adc@48 {
+ compatible = "ti,ads1015";
+ reg = <0x48>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ channel@4 {
+ reg = <4>;
+ ti,gain = <2>;
+ ti,datarate = <4>;
+ };
+
+ channel@6 {
+ reg = <6>;
+ ti,gain = <2>;
+ ti,datarate = <4>;
+ };
+ };
+
+ gpio_expander2@21 {
+ compatible = "nxp,pcf8574";
+ reg = <0x21>;
+ interrupts = <109>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ };
+};
+
+&iomuxc {
+ imx53-kp-ddc {
+ pinctrl_disp: dispgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_A16__IPU_DI1_DISP_CLK 0x4
+ MX53_PAD_EIM_DA10__IPU_DI1_PIN15 0x4
+ MX53_PAD_EIM_DA9__IPU_DISP1_DAT_0 0x4
+ MX53_PAD_EIM_DA8__IPU_DISP1_DAT_1 0x4
+ MX53_PAD_EIM_DA7__IPU_DISP1_DAT_2 0x4
+ MX53_PAD_EIM_DA6__IPU_DISP1_DAT_3 0x4
+ MX53_PAD_EIM_DA5__IPU_DISP1_DAT_4 0x4
+ MX53_PAD_EIM_DA4__IPU_DISP1_DAT_5 0x4
+ MX53_PAD_EIM_DA3__IPU_DISP1_DAT_6 0x4
+ MX53_PAD_EIM_DA2__IPU_DISP1_DAT_7 0x4
+ MX53_PAD_EIM_DA1__IPU_DISP1_DAT_8 0x4
+ MX53_PAD_EIM_DA0__IPU_DISP1_DAT_9 0x4
+ MX53_PAD_EIM_EB1__IPU_DISP1_DAT_10 0x4
+ MX53_PAD_EIM_EB0__IPU_DISP1_DAT_11 0x4
+ MX53_PAD_EIM_A17__IPU_DISP1_DAT_12 0x4
+ MX53_PAD_EIM_A18__IPU_DISP1_DAT_13 0x4
+ MX53_PAD_EIM_A19__IPU_DISP1_DAT_14 0x4
+ MX53_PAD_EIM_A20__IPU_DISP1_DAT_15 0x4
+ MX53_PAD_EIM_A21__IPU_DISP1_DAT_16 0x4
+ MX53_PAD_EIM_A22__IPU_DISP1_DAT_17 0x4
+ MX53_PAD_EIM_A23__IPU_DISP1_DAT_18 0x4
+ MX53_PAD_EIM_A24__IPU_DISP1_DAT_19 0x4
+ MX53_PAD_EIM_D31__IPU_DISP1_DAT_20 0x4
+ MX53_PAD_EIM_D30__IPU_DISP1_DAT_21 0x4
+ MX53_PAD_EIM_D26__IPU_DISP1_DAT_22 0x4
+ MX53_PAD_EIM_D27__IPU_DISP1_DAT_23 0x4
+ MX53_PAD_GPIO_1__PWM2_PWMO 0x4
+ >;
+ };
+ };
+};
+
+&ipu_di1_disp1 {
+ remote-endpoint = <&display1_in>;
+};
+
+&fec {
+ status = "okay";
+};
+
+&pmic {
+ fsl,mc13xxx-uses-touch;
+};
diff --git a/arch/arm/boot/dts/imx53-kp-hsc.dts b/arch/arm/boot/dts/imx53-kp-hsc.dts
new file mode 100644
index 000000000000..d68cdd5da819
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp-hsc.dts
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-kp.dtsi"
+
+/ {
+ model = "K+P imx53 HSC";
+ compatible = "kiebackpeter,imx53-hsc", "fsl,imx53";
+};
+
+&fec {
+ status = "okay";
+ fixed-link { /* RMII fixed link to LAN9303 */
+ speed = <100>;
+ full-duplex;
+ };
+};
+
+&i2c3 {
+ switch: switch@a {
+ compatible = "smsc,lan9303-i2c";
+ reg = <0xa>;
+ reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
+ reset-duration = <400>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 { /* RMII fixed link to master */
+ reg = <0>;
+ label = "cpu";
+ ethernet = <&fec>;
+ };
+
+ port@1 { /* external port 1 */
+ reg = <1>;
+ label = "lan1";
+ };
+
+ port@2 { /* external port 2 */
+ reg = <2>;
+ label = "lan2";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-kp.dtsi b/arch/arm/boot/dts/imx53-kp.dtsi
new file mode 100644
index 000000000000..f87266843842
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp.dtsi
@@ -0,0 +1,190 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-tqma53.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+ buzzer {
+ compatible = "pwm-beeper";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_buzzer>;
+
+ pwms = <&pwm1 0 500000>;
+ };
+
+ gpio_buttons {
+ compatible = "gpio-keys";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_gpiobuttons>;
+
+ button_kalt {
+ label = "Kaltstart";
+ linux,code = <KEY_F6>;
+ gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
+ };
+
+ button_pwr {
+ label = "PowerFailInterrupt";
+ linux,code = <KEY_F7>;
+ gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_leds>;
+
+ led_bus {
+ label = "bus";
+ gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "gpio";
+ default-state = "off";
+ };
+
+ led_error {
+ label = "error";
+ gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "gpio";
+ default-state = "off";
+ };
+
+ led_flash {
+ label = "flash";
+ gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ reg_3v3: regulator-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+};
+
+&can1 {
+ status = "okay";
+};
+
+&can2 {
+ status = "okay";
+};
+
+&i2c3 {
+ status = "okay";
+
+ gpio_expander1@22 {
+ compatible = "nxp,pcf8574";
+ reg = <0x22>;
+ interrupts = <109>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ };
+
+ rtc@51 {
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ };
+};
+
+&iomuxc {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_kp_common>;
+
+ imx53-kp-common {
+ pinctrl_buzzer: buzzergrp {
+ fsl,pins = <
+ MX53_PAD_SD1_DATA3__PWM1_PWMO 0x1e4
+ >;
+ };
+
+ pinctrl_gpiobuttons: gpiobuttonsgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_RW__GPIO2_26 0x1e4
+ MX53_PAD_EIM_D22__GPIO3_22 0x1e4
+ >;
+ };
+
+ pinctrl_kp_common: kpcommongrp {
+ fsl,pins = <
+ MX53_PAD_EIM_CS0__GPIO2_23 0x1e4
+ MX53_PAD_GPIO_19__GPIO4_5 0x1e4
+ MX53_PAD_PATA_DATA6__GPIO2_6 0x1e4
+ MX53_PAD_PATA_DATA7__GPIO2_7 0xe0
+ MX53_PAD_CSI0_DAT14__GPIO6_0 0x1e4
+ MX53_PAD_CSI0_DAT16__GPIO6_2 0x1e4
+ MX53_PAD_CSI0_DAT18__GPIO6_4 0x1e4
+ MX53_PAD_EIM_D17__GPIO3_17 0x1e4
+ MX53_PAD_EIM_D18__GPIO3_18 0x1e4
+ MX53_PAD_EIM_D21__GPIO3_21 0x1e4
+ MX53_PAD_EIM_D29__GPIO3_29 0x1e4
+ MX53_PAD_EIM_DA11__GPIO3_11 0x1e4
+ MX53_PAD_EIM_DA13__GPIO3_13 0x1e4
+ MX53_PAD_EIM_DA14__GPIO3_14 0x1e4
+ MX53_PAD_SD1_DATA0__GPIO1_16 0x1e4
+ MX53_PAD_SD1_CMD__GPIO1_18 0x1e4
+ MX53_PAD_SD1_CLK__GPIO1_20 0x1e4
+ >;
+ };
+
+ pinctrl_leds: ledgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_EB2__GPIO2_30 0x1d4
+ MX53_PAD_EIM_D28__GPIO3_28 0x1d4
+ MX53_PAD_EIM_WAIT__GPIO5_0 0x1d4
+ >;
+ };
+
+ pinctrl_uart4: uart4grp {
+ fsl,pins = <
+ MX53_PAD_CSI0_DAT12__UART4_TXD_MUX 0x1e4
+ MX53_PAD_CSI0_DAT13__UART4_RXD_MUX 0x1e4
+ >;
+ };
+ };
+};
+
+&pinctrl_uart1 {
+ fsl,pins = <
+ MX53_PAD_EIM_D23__GPIO3_23 0x1e4
+ MX53_PAD_EIM_EB3__GPIO2_31 0x1e4
+ MX53_PAD_EIM_D24__GPIO3_24 0x1e4
+ MX53_PAD_EIM_D25__GPIO3_25 0x1e4
+ MX53_PAD_EIM_D19__GPIO3_19 0x1e4
+ MX53_PAD_EIM_D20__GPIO3_20 0x1e4
+ >;
+};
+
+&uart1 {
+ status = "okay";
+};
+
+&uart2 {
+ status = "okay";
+};
+
+&uart3 {
+ status = "okay";
+};
+
+&uart4 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart4>;
+ status = "okay";
+};
+
+&usbh1 {
+ status = "okay";
+};
+
+&usbphy0 {
+ status = "disabled";
+};
--
2.11.0
Hi Lukasz,
On Sat, May 19, 2018 at 9:02 AM, Lukasz Majewski <[email protected]> wrote:
> After removing imx53-kp-ddc and imx53-kp-common iomux subnodes I do see
> following errors in the dmesg (v4.17-rc5):
>
> imx53-pinctrl 53fa8000.iomuxc: function 'iomuxc' not supported
> imx53-pinctrl 53fa8000.iomuxc: invalid function iomuxc in map table
Could you please investigate this error?
I have just tried the following change on a imx53-qsb:
http://code.bulix.org/ik01yu-339697
and it works as expected:
# dmesg | grep iomux
[ 0.100046] imx53-pinctrl 53fa8000.iomuxc: initialized IMX pinctrl driver
Hi Fabio,
> Hi Lukasz,
>
> On Sat, May 19, 2018 at 9:02 AM, Lukasz Majewski <[email protected]>
> wrote:
>
> > After removing imx53-kp-ddc and imx53-kp-common iomux subnodes I do
> > see following errors in the dmesg (v4.17-rc5):
> >
> > imx53-pinctrl 53fa8000.iomuxc: function 'iomuxc' not supported
> > imx53-pinctrl 53fa8000.iomuxc: invalid function iomuxc in map
> > table
>
> Could you please investigate this error?
>
Ok.
> I have just tried the following change on a imx53-qsb:
> http://code.bulix.org/ik01yu-339697
I've noticed that this is the "common" dtsi file:
imx53-qsb-common.dtsi
Is there any board inheriting it? Is it extending the iomux node with
its own code ?
>
> and it works as expected:
> # dmesg | grep iomux
> [ 0.100046] imx53-pinctrl 53fa8000.iomuxc: initialized IMX pinctrl
> driver
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected]
Hi Fabio,
> Hi Lukasz,
>
> On Sat, May 19, 2018 at 9:02 AM, Lukasz Majewski <[email protected]>
> wrote:
>
> > After removing imx53-kp-ddc and imx53-kp-common iomux subnodes I do
> > see following errors in the dmesg (v4.17-rc5):
> >
> > imx53-pinctrl 53fa8000.iomuxc: function 'iomuxc' not supported
> > imx53-pinctrl 53fa8000.iomuxc: invalid function iomuxc in map
> > table
>
> Could you please investigate this error?
Sorry for "small" delay on this.
Ok, so I've investigated the issue:
1. The code, which you pasted:
http://code.bulix.org/ik01yu-339697
works correctly as imx53-qsb-common.dtsi directly includes "imx53.dtsi"
in which iomuxc label is defined.
In my case though,
2. I do include imx53-tqma53.dtsi [1], in which the iomuxc" label
is extended:
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
imx53-tqma53 {
pinctrl_hog: hoggrp {
.......
};
The imx53-tqma53.dtsi then includes imx53.dtsi.
Moreover, my file -> imx53-kp.dtsi as it includes [1], it extends
further the &iomuxc label:
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_kp_common>;
imx53-kp-common {
pinctrl_buzzer: buzzergrp {
.......
};
So, when I remove imx53-kp-common I will have mismatch with [1] iomuxc
structure.
The code works as expected when I do remove imx53-tqma53 in [1].
However, I would prefer to not touch this imx53-tqma53.dtsi file.
It is also included in: imx53-mba53.dts, which extends iomux in
following way:
&iomuxc {
lvds1 {
pinctrl_lvds1_1: lvds1-grp1 {
Here I would need to remove lvds1, disp1 and tve to make it working.
However, it will not break during build, but at run time.
Considering the above, I would prefer to leave the code in [1] as is
and use imx53-kp-common as well (as in v2 of this patch).
Fabio, what do you think?
[I'm using linux 4.17-rc7 (with included dtc 1.4.6)]
>
> I have just tried the following change on a imx53-qsb:
> http://code.bulix.org/ik01yu-339697
>
> and it works as expected:
> # dmesg | grep iomux
> [ 0.100046] imx53-pinctrl 53fa8000.iomuxc: initialized IMX pinctrl
> driver
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected]
Hi Lukasz,
On Tue, May 29, 2018 at 10:58 AM, Lukasz Majewski <[email protected]> wrote:
> Sorry for "small" delay on this.
>
> Ok, so I've investigated the issue:
>
> 1. The code, which you pasted:
> http://code.bulix.org/ik01yu-339697
>
> works correctly as imx53-qsb-common.dtsi directly includes "imx53.dtsi"
> in which iomuxc label is defined.
>
> In my case though,
>
> 2. I do include imx53-tqma53.dtsi [1], in which the iomuxc" label
> is extended:
>
> &iomuxc {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_hog>;
>
> imx53-tqma53 {
> pinctrl_hog: hoggrp {
>
> .......
>
> };
>
> The imx53-tqma53.dtsi then includes imx53.dtsi.
>
> Moreover, my file -> imx53-kp.dtsi as it includes [1], it extends
> further the &iomuxc label:
>
> &iomuxc {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_kp_common>;
>
> imx53-kp-common {
> pinctrl_buzzer: buzzergrp {
> .......
> };
>
> So, when I remove imx53-kp-common I will have mismatch with [1] iomuxc
> structure.
>
> The code works as expected when I do remove imx53-tqma53 in [1].
>
> However, I would prefer to not touch this imx53-tqma53.dtsi file.
> It is also included in: imx53-mba53.dts, which extends iomux in
> following way:
>
> &iomuxc {
> lvds1 {
> pinctrl_lvds1_1: lvds1-grp1 {
>
>
> Here I would need to remove lvds1, disp1 and tve to make it working.
> However, it will not break during build, but at run time.
>
> Considering the above, I would prefer to leave the code in [1] as is
> and use imx53-kp-common as well (as in v2 of this patch).
>
> Fabio, what do you think?
Ok, thanks for the clarification. I just wanted to make sure we did
not have some kind of iomux bug there.
I think your proposed patch is fine then.
Thanks
Hi Fabio,
> Hi Lukasz,
>
> On Tue, May 29, 2018 at 10:58 AM, Lukasz Majewski <[email protected]>
> wrote:
>
> > Sorry for "small" delay on this.
> >
> > Ok, so I've investigated the issue:
> >
> > 1. The code, which you pasted:
> > http://code.bulix.org/ik01yu-339697
> >
> > works correctly as imx53-qsb-common.dtsi directly includes
> > "imx53.dtsi" in which iomuxc label is defined.
> >
> > In my case though,
> >
> > 2. I do include imx53-tqma53.dtsi [1], in which the iomuxc" label
> > is extended:
> >
> > &iomuxc {
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_hog>;
> >
> > imx53-tqma53 {
> > pinctrl_hog: hoggrp {
> >
> > .......
> >
> > };
> >
> > The imx53-tqma53.dtsi then includes imx53.dtsi.
> >
> > Moreover, my file -> imx53-kp.dtsi as it includes [1], it extends
> > further the &iomuxc label:
> >
> > &iomuxc {
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_kp_common>;
> >
> > imx53-kp-common {
> > pinctrl_buzzer: buzzergrp {
> > .......
> > };
> >
> > So, when I remove imx53-kp-common I will have mismatch with [1]
> > iomuxc structure.
> >
> > The code works as expected when I do remove imx53-tqma53 in [1].
> >
> > However, I would prefer to not touch this imx53-tqma53.dtsi file.
> > It is also included in: imx53-mba53.dts, which extends iomux in
> > following way:
> >
> > &iomuxc {
> > lvds1 {
> > pinctrl_lvds1_1: lvds1-grp1 {
> >
> >
> > Here I would need to remove lvds1, disp1 and tve to make it working.
> > However, it will not break during build, but at run time.
> >
> > Considering the above, I would prefer to leave the code in [1] as is
> > and use imx53-kp-common as well (as in v2 of this patch).
> >
> > Fabio, what do you think?
>
> Ok, thanks for the clarification. I just wanted to make sure we did
> not have some kind of iomux bug there.
>
> I think your proposed patch is fine then.
Would you be so kind and add your Reviwed-by or Acked-by tag to second
version of this patch?
[PATCH v2] ARM: DTS: imx53: Add support for imx53 HSC/DDC boards from
K+P
>
> Thanks
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected]
On Sat, May 19, 2018 at 9:15 AM, Lukasz Majewski <[email protected]> wrote:
> This commit provides support for HSC and DDC boards from
> Kieback&Peter GmbH vendor.
>
> Signed-off-by: Lukasz Majewski <[email protected]>
Reviewed-by: Fabio Estevam <[email protected]>
Hi Shawn,
> On Sat, May 19, 2018 at 9:15 AM, Lukasz Majewski <[email protected]>
> wrote:
> > This commit provides support for HSC and DDC boards from
> > Kieback&Peter GmbH vendor.
> >
> > Signed-off-by: Lukasz Majewski <[email protected]>
>
> Reviewed-by: Fabio Estevam <[email protected]>
Gentle ping on this patch.
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected]
On Sat, May 19, 2018 at 02:15:06PM +0200, Lukasz Majewski wrote:
> This commit provides support for HSC and DDC boards from
> Kieback&Peter GmbH vendor.
>
> Signed-off-by: Lukasz Majewski <[email protected]>
> ---
> Changes for v2:
>
> - Remove not needed #address-cells and #size-cells in
> the gpio_buttons node to pass make W=1
> - Rename button@{12} to button_{kalt|pwr} nodes to pass make W=1
> - Include #include <dt-bindings/input/input.h> to use KEY_F6|F7 directly
>
> ---
> arch/arm/boot/dts/Makefile | 2 +
> arch/arm/boot/dts/imx53-kp-ddc.dts | 146 ++++++++++++++++++++++++++++
> arch/arm/boot/dts/imx53-kp-hsc.dts | 51 ++++++++++
> arch/arm/boot/dts/imx53-kp.dtsi | 190 +++++++++++++++++++++++++++++++++++++
> 4 files changed, 389 insertions(+)
> create mode 100644 arch/arm/boot/dts/imx53-kp-ddc.dts
> create mode 100644 arch/arm/boot/dts/imx53-kp-hsc.dts
> create mode 100644 arch/arm/boot/dts/imx53-kp.dtsi
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index fbc04b0db781..00854a5b6ac4 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -360,6 +360,8 @@ dtb-$(CONFIG_SOC_IMX51) += \
> dtb-$(CONFIG_SOC_IMX53) += \
> imx53-ard.dtb \
> imx53-cx9020.dtb \
> + imx53-kp-ddc.dtb \
> + imx53-kp-hsc.dtb \
> imx53-m53evk.dtb \
> imx53-mba53.dtb \
> imx53-ppd.dtb \
> diff --git a/arch/arm/boot/dts/imx53-kp-ddc.dts b/arch/arm/boot/dts/imx53-kp-ddc.dts
> new file mode 100644
> index 000000000000..acaf477a52c5
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx53-kp-ddc.dts
> @@ -0,0 +1,146 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2018
> + * Lukasz Majewski, DENX Software Engineering, [email protected]
> + */
> +
> +/dts-v1/;
> +#include "imx53-kp.dtsi"
> +
> +/ {
> + model = "K+P imx53 DDC";
> + compatible = "kiebackpeter,imx53-ddc", "fsl,imx53";
> +
> + backlight_lcd: backlight {
> + compatible = "pwm-backlight";
> + pwms = <&pwm2 0 50000>;
> + power-supply = <®_backlight>;
> + brightness-levels = <0 24 28 32 36
> + 40 44 48 52 56
> + 60 64 68 72 76
> + 80 84 88 92 96 100>;
> + default-brightness-level = <20>;
> + };
> +
> + lcd_display: disp1 {
display for node node.
> + compatible = "fsl,imx-parallel-display";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + interface-pix-fmt = "rgb24";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_disp>;
> +
> + port@0 {
> + reg = <0>;
> +
> + display1_in: endpoint {
> + remote-endpoint = <&ipu_di1_disp1>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + lcd_display_out: endpoint {
> + remote-endpoint = <&lcd_panel_in>;
> + };
> + };
> + };
> +
> + lcd_panel: lcd-panel {
> + compatible = "koe,tx14d24vm1bpa";
Undefined compatible?
> + backlight = <&backlight_lcd>;
> + power-supply = <®_3v3>;
> +
> + port {
> + lcd_panel_in: endpoint {
> + remote-endpoint = <&lcd_display_out>;
> + };
> + };
> + };
> +
> + reg_backlight: regulator-backlight {
> + compatible = "regulator-fixed";
> + regulator-name = "backlight-supply";
> + regulator-min-microvolt = <15000000>;
> + regulator-max-microvolt = <15000000>;
> + regulator-always-on;
> + };
> +};
> +
> +&i2c3 {
> + adc@48 {
> + compatible = "ti,ads1015";
> + reg = <0x48>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + channel@4 {
> + reg = <4>;
> + ti,gain = <2>;
> + ti,datarate = <4>;
> + };
> +
> + channel@6 {
> + reg = <6>;
> + ti,gain = <2>;
> + ti,datarate = <4>;
> + };
> + };
> +
> + gpio_expander2@21 {
Use hyphen instead of underscore in node name.
> + compatible = "nxp,pcf8574";
> + reg = <0x21>;
> + interrupts = <109>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + };
> +};
> +
> +&iomuxc {
> + imx53-kp-ddc {
> + pinctrl_disp: dispgrp {
> + fsl,pins = <
> + MX53_PAD_EIM_A16__IPU_DI1_DISP_CLK 0x4
> + MX53_PAD_EIM_DA10__IPU_DI1_PIN15 0x4
> + MX53_PAD_EIM_DA9__IPU_DISP1_DAT_0 0x4
> + MX53_PAD_EIM_DA8__IPU_DISP1_DAT_1 0x4
> + MX53_PAD_EIM_DA7__IPU_DISP1_DAT_2 0x4
> + MX53_PAD_EIM_DA6__IPU_DISP1_DAT_3 0x4
> + MX53_PAD_EIM_DA5__IPU_DISP1_DAT_4 0x4
> + MX53_PAD_EIM_DA4__IPU_DISP1_DAT_5 0x4
> + MX53_PAD_EIM_DA3__IPU_DISP1_DAT_6 0x4
> + MX53_PAD_EIM_DA2__IPU_DISP1_DAT_7 0x4
> + MX53_PAD_EIM_DA1__IPU_DISP1_DAT_8 0x4
> + MX53_PAD_EIM_DA0__IPU_DISP1_DAT_9 0x4
> + MX53_PAD_EIM_EB1__IPU_DISP1_DAT_10 0x4
> + MX53_PAD_EIM_EB0__IPU_DISP1_DAT_11 0x4
> + MX53_PAD_EIM_A17__IPU_DISP1_DAT_12 0x4
> + MX53_PAD_EIM_A18__IPU_DISP1_DAT_13 0x4
> + MX53_PAD_EIM_A19__IPU_DISP1_DAT_14 0x4
> + MX53_PAD_EIM_A20__IPU_DISP1_DAT_15 0x4
> + MX53_PAD_EIM_A21__IPU_DISP1_DAT_16 0x4
> + MX53_PAD_EIM_A22__IPU_DISP1_DAT_17 0x4
> + MX53_PAD_EIM_A23__IPU_DISP1_DAT_18 0x4
> + MX53_PAD_EIM_A24__IPU_DISP1_DAT_19 0x4
> + MX53_PAD_EIM_D31__IPU_DISP1_DAT_20 0x4
> + MX53_PAD_EIM_D30__IPU_DISP1_DAT_21 0x4
> + MX53_PAD_EIM_D26__IPU_DISP1_DAT_22 0x4
> + MX53_PAD_EIM_D27__IPU_DISP1_DAT_23 0x4
> + MX53_PAD_GPIO_1__PWM2_PWMO 0x4
> + >;
> + };
> + };
> +};
> +
> +&ipu_di1_disp1 {
> + remote-endpoint = <&display1_in>;
> +};
> +
> +&fec {
> + status = "okay";
> +};
Sort the labeled nodes alphabetically in label name.
> +
> +&pmic {
> + fsl,mc13xxx-uses-touch;
> +};
> diff --git a/arch/arm/boot/dts/imx53-kp-hsc.dts b/arch/arm/boot/dts/imx53-kp-hsc.dts
> new file mode 100644
> index 000000000000..d68cdd5da819
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx53-kp-hsc.dts
> @@ -0,0 +1,51 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2018
> + * Lukasz Majewski, DENX Software Engineering, [email protected]
> + */
> +
> +/dts-v1/;
> +#include "imx53-kp.dtsi"
> +
> +/ {
> + model = "K+P imx53 HSC";
> + compatible = "kiebackpeter,imx53-hsc", "fsl,imx53";
> +};
> +
> +&fec {
> + status = "okay";
Have a newline between property list and child node.
> + fixed-link { /* RMII fixed link to LAN9303 */
> + speed = <100>;
> + full-duplex;
> + };
> +};
> +
> +&i2c3 {
> + switch: switch@a {
> + compatible = "smsc,lan9303-i2c";
> + reg = <0xa>;
> + reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
> + reset-duration = <400>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 { /* RMII fixed link to master */
> + reg = <0>;
> + label = "cpu";
> + ethernet = <&fec>;
> + };
> +
> + port@1 { /* external port 1 */
> + reg = <1>;
> + label = "lan1";
> + };
> +
> + port@2 { /* external port 2 */
> + reg = <2>;
> + label = "lan2";
> + };
> + };
> + };
> +};
> diff --git a/arch/arm/boot/dts/imx53-kp.dtsi b/arch/arm/boot/dts/imx53-kp.dtsi
> new file mode 100644
> index 000000000000..f87266843842
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx53-kp.dtsi
> @@ -0,0 +1,190 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2018
> + * Lukasz Majewski, DENX Software Engineering, [email protected]
> + */
> +
> +/dts-v1/;
> +#include "imx53-tqma53.dtsi"
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> + buzzer {
> + compatible = "pwm-beeper";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_buzzer>;
> +
Drop this newline.
> + pwms = <&pwm1 0 500000>;
> + };
> +
> + gpio_buttons {
Use hyphen.
> + compatible = "gpio-keys";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_gpiobuttons>;
> +
> + button_kalt {
Ditto
> + label = "Kaltstart";
> + linux,code = <KEY_F6>;
> + gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
> + };
> +
> + button_pwr {
Ditto
> + label = "PowerFailInterrupt";
> + linux,code = <KEY_F7>;
> + gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
> + };
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_leds>;
> +
> + led_bus {
Ditto
> + label = "bus";
> + gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "gpio";
> + default-state = "off";
> + };
> +
> + led_error {
Ditto
> + label = "error";
> + gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "gpio";
> + default-state = "off";
> + };
> +
> + led_flash {
Ditto
> + label = "flash";
> + gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "heartbeat";
> + };
> + };
> +
> + reg_3v3: regulator-3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "3V3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + };
> +};
> +
> +&can1 {
> + status = "okay";
> +};
> +
> +&can2 {
> + status = "okay";
> +};
> +
> +&i2c3 {
> + status = "okay";
> +
> + gpio_expander1@22 {
Ditto
Shawn
> + compatible = "nxp,pcf8574";
> + reg = <0x22>;
> + interrupts = <109>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + };
> +
> + rtc@51 {
> + compatible = "nxp,pcf8563";
> + reg = <0x51>;
> + };
> +};
> +
> +&iomuxc {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_kp_common>;
> +
> + imx53-kp-common {
> + pinctrl_buzzer: buzzergrp {
> + fsl,pins = <
> + MX53_PAD_SD1_DATA3__PWM1_PWMO 0x1e4
> + >;
> + };
> +
> + pinctrl_gpiobuttons: gpiobuttonsgrp {
> + fsl,pins = <
> + MX53_PAD_EIM_RW__GPIO2_26 0x1e4
> + MX53_PAD_EIM_D22__GPIO3_22 0x1e4
> + >;
> + };
> +
> + pinctrl_kp_common: kpcommongrp {
> + fsl,pins = <
> + MX53_PAD_EIM_CS0__GPIO2_23 0x1e4
> + MX53_PAD_GPIO_19__GPIO4_5 0x1e4
> + MX53_PAD_PATA_DATA6__GPIO2_6 0x1e4
> + MX53_PAD_PATA_DATA7__GPIO2_7 0xe0
> + MX53_PAD_CSI0_DAT14__GPIO6_0 0x1e4
> + MX53_PAD_CSI0_DAT16__GPIO6_2 0x1e4
> + MX53_PAD_CSI0_DAT18__GPIO6_4 0x1e4
> + MX53_PAD_EIM_D17__GPIO3_17 0x1e4
> + MX53_PAD_EIM_D18__GPIO3_18 0x1e4
> + MX53_PAD_EIM_D21__GPIO3_21 0x1e4
> + MX53_PAD_EIM_D29__GPIO3_29 0x1e4
> + MX53_PAD_EIM_DA11__GPIO3_11 0x1e4
> + MX53_PAD_EIM_DA13__GPIO3_13 0x1e4
> + MX53_PAD_EIM_DA14__GPIO3_14 0x1e4
> + MX53_PAD_SD1_DATA0__GPIO1_16 0x1e4
> + MX53_PAD_SD1_CMD__GPIO1_18 0x1e4
> + MX53_PAD_SD1_CLK__GPIO1_20 0x1e4
> + >;
> + };
> +
> + pinctrl_leds: ledgrp {
> + fsl,pins = <
> + MX53_PAD_EIM_EB2__GPIO2_30 0x1d4
> + MX53_PAD_EIM_D28__GPIO3_28 0x1d4
> + MX53_PAD_EIM_WAIT__GPIO5_0 0x1d4
> + >;
> + };
> +
> + pinctrl_uart4: uart4grp {
> + fsl,pins = <
> + MX53_PAD_CSI0_DAT12__UART4_TXD_MUX 0x1e4
> + MX53_PAD_CSI0_DAT13__UART4_RXD_MUX 0x1e4
> + >;
> + };
> + };
> +};
> +
> +&pinctrl_uart1 {
> + fsl,pins = <
> + MX53_PAD_EIM_D23__GPIO3_23 0x1e4
> + MX53_PAD_EIM_EB3__GPIO2_31 0x1e4
> + MX53_PAD_EIM_D24__GPIO3_24 0x1e4
> + MX53_PAD_EIM_D25__GPIO3_25 0x1e4
> + MX53_PAD_EIM_D19__GPIO3_19 0x1e4
> + MX53_PAD_EIM_D20__GPIO3_20 0x1e4
> + >;
> +};
> +
> +&uart1 {
> + status = "okay";
> +};
> +
> +&uart2 {
> + status = "okay";
> +};
> +
> +&uart3 {
> + status = "okay";
> +};
> +
> +&uart4 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_uart4>;
> + status = "okay";
> +};
> +
> +&usbh1 {
> + status = "okay";
> +};
> +
> +&usbphy0 {
> + status = "disabled";
> +};
> --
> 2.11.0
>
Hi Shawn,
Thanks for you review.
> On Sat, May 19, 2018 at 02:15:06PM +0200, Lukasz Majewski wrote:
> > This commit provides support for HSC and DDC boards from
> > Kieback&Peter GmbH vendor.
> >
> > Signed-off-by: Lukasz Majewski <[email protected]>
> > ---
> > Changes for v2:
> >
> > - Remove not needed #address-cells and #size-cells in
> > the gpio_buttons node to pass make W=1
> > - Rename button@{12} to button_{kalt|pwr} nodes to pass make W=1
> > - Include #include <dt-bindings/input/input.h> to use KEY_F6|F7
> > directly
> >
> > ---
> > arch/arm/boot/dts/Makefile | 2 +
> > arch/arm/boot/dts/imx53-kp-ddc.dts | 146
> > ++++++++++++++++++++++++++++ arch/arm/boot/dts/imx53-kp-hsc.dts |
> > 51 ++++++++++ arch/arm/boot/dts/imx53-kp.dtsi | 190
> > +++++++++++++++++++++++++++++++++++++ 4 files changed, 389
> > insertions(+) create mode 100644 arch/arm/boot/dts/imx53-kp-ddc.dts
> > create mode 100644 arch/arm/boot/dts/imx53-kp-hsc.dts
> > create mode 100644 arch/arm/boot/dts/imx53-kp.dtsi
> >
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index fbc04b0db781..00854a5b6ac4 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -360,6 +360,8 @@ dtb-$(CONFIG_SOC_IMX51) += \
> > dtb-$(CONFIG_SOC_IMX53) += \
> > imx53-ard.dtb \
> > imx53-cx9020.dtb \
> > + imx53-kp-ddc.dtb \
> > + imx53-kp-hsc.dtb \
> > imx53-m53evk.dtb \
> > imx53-mba53.dtb \
> > imx53-ppd.dtb \
> > diff --git a/arch/arm/boot/dts/imx53-kp-ddc.dts
> > b/arch/arm/boot/dts/imx53-kp-ddc.dts new file mode 100644
> > index 000000000000..acaf477a52c5
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/imx53-kp-ddc.dts
> > @@ -0,0 +1,146 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright 2018
> > + * Lukasz Majewski, DENX Software Engineering, [email protected]
> > + */
> > +
> > +/dts-v1/;
> > +#include "imx53-kp.dtsi"
> > +
> > +/ {
> > + model = "K+P imx53 DDC";
> > + compatible = "kiebackpeter,imx53-ddc", "fsl,imx53";
> > +
> > + backlight_lcd: backlight {
> > + compatible = "pwm-backlight";
> > + pwms = <&pwm2 0 50000>;
> > + power-supply = <®_backlight>;
> > + brightness-levels = <0 24 28 32 36
> > + 40 44 48 52 56
> > + 60 64 68 72 76
> > + 80 84 88 92 96 100>;
> > + default-brightness-level = <20>;
> > + };
> > +
> > + lcd_display: disp1 {
>
> display for node node.
I assume that I shall change disp1 -> display ?
>
> > + compatible = "fsl,imx-parallel-display";
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + interface-pix-fmt = "rgb24";
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_disp>;
> > +
> > + port@0 {
> > + reg = <0>;
> > +
> > + display1_in: endpoint {
> > + remote-endpoint = <&ipu_di1_disp1>;
> > + };
> > + };
> > +
> > + port@1 {
> > + reg = <1>;
> > +
> > + lcd_display_out: endpoint {
> > + remote-endpoint = <&lcd_panel_in>;
> > + };
> > + };
> > + };
> > +
> > + lcd_panel: lcd-panel {
> > + compatible = "koe,tx14d24vm1bpa";
>
> Undefined compatible?
The display's in question "koe,tx14d24vm1bpa" compatible has been
ack'ed by Rob Herring and Thierry promised to apply it to his tree:
https://patchwork.kernel.org/patch/10391589/
The v2 of this patch:
https://patchwork.kernel.org/patch/10436007/
>
> > + backlight = <&backlight_lcd>;
> > + power-supply = <®_3v3>;
> > +
> > + port {
> > + lcd_panel_in: endpoint {
> > + remote-endpoint =
> > <&lcd_display_out>;
> > + };
> > + };
> > + };
> > +
> > + reg_backlight: regulator-backlight {
> > + compatible = "regulator-fixed";
> > + regulator-name = "backlight-supply";
> > + regulator-min-microvolt = <15000000>;
> > + regulator-max-microvolt = <15000000>;
> > + regulator-always-on;
> > + };
> > +};
> > +
> > +&i2c3 {
> > + adc@48 {
> > + compatible = "ti,ads1015";
> > + reg = <0x48>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + channel@4 {
> > + reg = <4>;
> > + ti,gain = <2>;
> > + ti,datarate = <4>;
> > + };
> > +
> > + channel@6 {
> > + reg = <6>;
> > + ti,gain = <2>;
> > + ti,datarate = <4>;
> > + };
> > + };
> > +
> > + gpio_expander2@21 {
>
> Use hyphen instead of underscore in node name.
Ok. I will change this globally. And send v3.
>
> > + compatible = "nxp,pcf8574";
> > + reg = <0x21>;
> > + interrupts = <109>;
> > + #gpio-cells = <2>;
> > + gpio-controller;
> > + };
> > +};
> > +
> > +&iomuxc {
> > + imx53-kp-ddc {
> > + pinctrl_disp: dispgrp {
> > + fsl,pins = <
> > +
> > MX53_PAD_EIM_A16__IPU_DI1_DISP_CLK 0x4
> > +
> > MX53_PAD_EIM_DA10__IPU_DI1_PIN15 0x4
> > +
> > MX53_PAD_EIM_DA9__IPU_DISP1_DAT_0 0x4
> > +
> > MX53_PAD_EIM_DA8__IPU_DISP1_DAT_1 0x4
> > +
> > MX53_PAD_EIM_DA7__IPU_DISP1_DAT_2 0x4
> > +
> > MX53_PAD_EIM_DA6__IPU_DISP1_DAT_3 0x4
> > +
> > MX53_PAD_EIM_DA5__IPU_DISP1_DAT_4 0x4
> > +
> > MX53_PAD_EIM_DA4__IPU_DISP1_DAT_5 0x4
> > +
> > MX53_PAD_EIM_DA3__IPU_DISP1_DAT_6 0x4
> > +
> > MX53_PAD_EIM_DA2__IPU_DISP1_DAT_7 0x4
> > +
> > MX53_PAD_EIM_DA1__IPU_DISP1_DAT_8 0x4
> > +
> > MX53_PAD_EIM_DA0__IPU_DISP1_DAT_9 0x4
> > +
> > MX53_PAD_EIM_EB1__IPU_DISP1_DAT_10 0x4
> > +
> > MX53_PAD_EIM_EB0__IPU_DISP1_DAT_11 0x4
> > +
> > MX53_PAD_EIM_A17__IPU_DISP1_DAT_12 0x4
> > +
> > MX53_PAD_EIM_A18__IPU_DISP1_DAT_13 0x4
> > +
> > MX53_PAD_EIM_A19__IPU_DISP1_DAT_14 0x4
> > +
> > MX53_PAD_EIM_A20__IPU_DISP1_DAT_15 0x4
> > +
> > MX53_PAD_EIM_A21__IPU_DISP1_DAT_16 0x4
> > +
> > MX53_PAD_EIM_A22__IPU_DISP1_DAT_17 0x4
> > +
> > MX53_PAD_EIM_A23__IPU_DISP1_DAT_18 0x4
> > +
> > MX53_PAD_EIM_A24__IPU_DISP1_DAT_19 0x4
> > +
> > MX53_PAD_EIM_D31__IPU_DISP1_DAT_20 0x4
> > +
> > MX53_PAD_EIM_D30__IPU_DISP1_DAT_21 0x4
> > +
> > MX53_PAD_EIM_D26__IPU_DISP1_DAT_22 0x4
> > +
> > MX53_PAD_EIM_D27__IPU_DISP1_DAT_23 0x4
> > + MX53_PAD_GPIO_1__PWM2_PWMO 0x4
> > + >;
> > + };
> > + };
> > +};
> > +
> > +&ipu_di1_disp1 {
> > + remote-endpoint = <&display1_in>;
> > +};
> > +
> > +&fec {
> > + status = "okay";
> > +};
>
> Sort the labeled nodes alphabetically in label name.
>
> > +
> > +&pmic {
> > + fsl,mc13xxx-uses-touch;
> > +};
> > diff --git a/arch/arm/boot/dts/imx53-kp-hsc.dts
> > b/arch/arm/boot/dts/imx53-kp-hsc.dts new file mode 100644
> > index 000000000000..d68cdd5da819
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/imx53-kp-hsc.dts
> > @@ -0,0 +1,51 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright 2018
> > + * Lukasz Majewski, DENX Software Engineering, [email protected]
> > + */
> > +
> > +/dts-v1/;
> > +#include "imx53-kp.dtsi"
> > +
> > +/ {
> > + model = "K+P imx53 HSC";
> > + compatible = "kiebackpeter,imx53-hsc", "fsl,imx53";
> > +};
> > +
> > +&fec {
> > + status = "okay";
>
> Have a newline between property list and child node.
>
> > + fixed-link { /* RMII fixed link to LAN9303 */
> > + speed = <100>;
> > + full-duplex;
> > + };
> > +};
> > +
> > +&i2c3 {
> > + switch: switch@a {
> > + compatible = "smsc,lan9303-i2c";
> > + reg = <0xa>;
> > + reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
> > + reset-duration = <400>;
> > +
> > + ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@0 { /* RMII fixed link to master */
> > + reg = <0>;
> > + label = "cpu";
> > + ethernet = <&fec>;
> > + };
> > +
> > + port@1 { /* external port 1 */
> > + reg = <1>;
> > + label = "lan1";
> > + };
> > +
> > + port@2 { /* external port 2 */
> > + reg = <2>;
> > + label = "lan2";
> > + };
> > + };
> > + };
> > +};
> > diff --git a/arch/arm/boot/dts/imx53-kp.dtsi
> > b/arch/arm/boot/dts/imx53-kp.dtsi new file mode 100644
> > index 000000000000..f87266843842
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/imx53-kp.dtsi
> > @@ -0,0 +1,190 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright 2018
> > + * Lukasz Majewski, DENX Software Engineering, [email protected]
> > + */
> > +
> > +/dts-v1/;
> > +#include "imx53-tqma53.dtsi"
> > +#include <dt-bindings/input/input.h>
> > +
> > +/ {
> > + buzzer {
> > + compatible = "pwm-beeper";
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_buzzer>;
> > +
>
> Drop this newline.
>
> > + pwms = <&pwm1 0 500000>;
> > + };
> > +
> > + gpio_buttons {
>
> Use hyphen.
>
> > + compatible = "gpio-keys";
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_gpiobuttons>;
> > +
> > + button_kalt {
>
> Ditto
>
> > + label = "Kaltstart";
> > + linux,code = <KEY_F6>;
> > + gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
> > + };
> > +
> > + button_pwr {
>
> Ditto
>
> > + label = "PowerFailInterrupt";
> > + linux,code = <KEY_F7>;
> > + gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
> > + };
> > + };
> > +
> > + leds {
> > + compatible = "gpio-leds";
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_leds>;
> > +
> > + led_bus {
>
> Ditto
>
> > + label = "bus";
> > + gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
> > + linux,default-trigger = "gpio";
> > + default-state = "off";
> > + };
> > +
> > + led_error {
>
> Ditto
>
> > + label = "error";
> > + gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
> > + linux,default-trigger = "gpio";
> > + default-state = "off";
> > + };
> > +
> > + led_flash {
>
> Ditto
>
> > + label = "flash";
> > + gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
> > + linux,default-trigger = "heartbeat";
> > + };
> > + };
> > +
> > + reg_3v3: regulator-3v3 {
> > + compatible = "regulator-fixed";
> > + regulator-name = "3V3";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-always-on;
> > + };
> > +};
> > +
> > +&can1 {
> > + status = "okay";
> > +};
> > +
> > +&can2 {
> > + status = "okay";
> > +};
> > +
> > +&i2c3 {
> > + status = "okay";
> > +
> > + gpio_expander1@22 {
>
> Ditto
>
> Shawn
>
> > + compatible = "nxp,pcf8574";
> > + reg = <0x22>;
> > + interrupts = <109>;
> > + #gpio-cells = <2>;
> > + gpio-controller;
> > + };
> > +
> > + rtc@51 {
> > + compatible = "nxp,pcf8563";
> > + reg = <0x51>;
> > + };
> > +};
> > +
> > +&iomuxc {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_kp_common>;
> > +
> > + imx53-kp-common {
> > + pinctrl_buzzer: buzzergrp {
> > + fsl,pins = <
> > + MX53_PAD_SD1_DATA3__PWM1_PWMO 0x1e4
> > + >;
> > + };
> > +
> > + pinctrl_gpiobuttons: gpiobuttonsgrp {
> > + fsl,pins = <
> > + MX53_PAD_EIM_RW__GPIO2_26 0x1e4
> > + MX53_PAD_EIM_D22__GPIO3_22 0x1e4
> > + >;
> > + };
> > +
> > + pinctrl_kp_common: kpcommongrp {
> > + fsl,pins = <
> > + MX53_PAD_EIM_CS0__GPIO2_23 0x1e4
> > + MX53_PAD_GPIO_19__GPIO4_5 0x1e4
> > + MX53_PAD_PATA_DATA6__GPIO2_6 0x1e4
> > + MX53_PAD_PATA_DATA7__GPIO2_7 0xe0
> > + MX53_PAD_CSI0_DAT14__GPIO6_0 0x1e4
> > + MX53_PAD_CSI0_DAT16__GPIO6_2 0x1e4
> > + MX53_PAD_CSI0_DAT18__GPIO6_4 0x1e4
> > + MX53_PAD_EIM_D17__GPIO3_17 0x1e4
> > + MX53_PAD_EIM_D18__GPIO3_18 0x1e4
> > + MX53_PAD_EIM_D21__GPIO3_21 0x1e4
> > + MX53_PAD_EIM_D29__GPIO3_29 0x1e4
> > + MX53_PAD_EIM_DA11__GPIO3_11 0x1e4
> > + MX53_PAD_EIM_DA13__GPIO3_13 0x1e4
> > + MX53_PAD_EIM_DA14__GPIO3_14 0x1e4
> > + MX53_PAD_SD1_DATA0__GPIO1_16 0x1e4
> > + MX53_PAD_SD1_CMD__GPIO1_18 0x1e4
> > + MX53_PAD_SD1_CLK__GPIO1_20 0x1e4
> > + >;
> > + };
> > +
> > + pinctrl_leds: ledgrp {
> > + fsl,pins = <
> > + MX53_PAD_EIM_EB2__GPIO2_30 0x1d4
> > + MX53_PAD_EIM_D28__GPIO3_28 0x1d4
> > + MX53_PAD_EIM_WAIT__GPIO5_0 0x1d4
> > + >;
> > + };
> > +
> > + pinctrl_uart4: uart4grp {
> > + fsl,pins = <
> > + MX53_PAD_CSI0_DAT12__UART4_TXD_MUX
> > 0x1e4
> > + MX53_PAD_CSI0_DAT13__UART4_RXD_MUX
> > 0x1e4
> > + >;
> > + };
> > + };
> > +};
> > +
> > +&pinctrl_uart1 {
> > + fsl,pins = <
> > + MX53_PAD_EIM_D23__GPIO3_23 0x1e4
> > + MX53_PAD_EIM_EB3__GPIO2_31 0x1e4
> > + MX53_PAD_EIM_D24__GPIO3_24 0x1e4
> > + MX53_PAD_EIM_D25__GPIO3_25 0x1e4
> > + MX53_PAD_EIM_D19__GPIO3_19 0x1e4
> > + MX53_PAD_EIM_D20__GPIO3_20 0x1e4
> > + >;
> > +};
> > +
> > +&uart1 {
> > + status = "okay";
> > +};
> > +
> > +&uart2 {
> > + status = "okay";
> > +};
> > +
> > +&uart3 {
> > + status = "okay";
> > +};
> > +
> > +&uart4 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_uart4>;
> > + status = "okay";
> > +};
> > +
> > +&usbh1 {
> > + status = "okay";
> > +};
> > +
> > +&usbphy0 {
> > + status = "disabled";
> > +};
> > --
> > 2.11.0
> >
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected]
This commit provides support for HSC and DDC boards from
Kieback&Peter GmbH vendor.
Signed-off-by: Lukasz Majewski <[email protected]>
Reviewed-by: Fabio Estevam <[email protected]>
---
Changes for v3:
- Add Reviewed-by tag
- The &fec label moved to proper position
- Newline between property list and child node
- Remove not needed blank line
- Change name from underscore to hypen in the 'led' and 'button' node names
- Change the 'gpio_expanderX' name to 'gpio-expander'
Changes for v2:
- Remove not needed #address-cells and #size-cells in
the gpio_buttons node to pass make W=1
- Rename button@{12} to button_{kalt|pwr} nodes to pass make W=1
- Include #include <dt-bindings/input/input.h> to use KEY_F6|F7 directly
---
arch/arm/boot/dts/Makefile | 2 +
arch/arm/boot/dts/imx53-kp-ddc.dts | 146 ++++++++++++++++++++++++++++
arch/arm/boot/dts/imx53-kp-hsc.dts | 52 ++++++++++
arch/arm/boot/dts/imx53-kp.dtsi | 189 +++++++++++++++++++++++++++++++++++++
4 files changed, 389 insertions(+)
create mode 100644 arch/arm/boot/dts/imx53-kp-ddc.dts
create mode 100644 arch/arm/boot/dts/imx53-kp-hsc.dts
create mode 100644 arch/arm/boot/dts/imx53-kp.dtsi
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index fbc04b0db781..00854a5b6ac4 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -360,6 +360,8 @@ dtb-$(CONFIG_SOC_IMX51) += \
dtb-$(CONFIG_SOC_IMX53) += \
imx53-ard.dtb \
imx53-cx9020.dtb \
+ imx53-kp-ddc.dtb \
+ imx53-kp-hsc.dtb \
imx53-m53evk.dtb \
imx53-mba53.dtb \
imx53-ppd.dtb \
diff --git a/arch/arm/boot/dts/imx53-kp-ddc.dts b/arch/arm/boot/dts/imx53-kp-ddc.dts
new file mode 100644
index 000000000000..0e7f071fd10e
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp-ddc.dts
@@ -0,0 +1,146 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-kp.dtsi"
+
+/ {
+ model = "K+P imx53 DDC";
+ compatible = "kiebackpeter,imx53-ddc", "fsl,imx53";
+
+ backlight_lcd: backlight {
+ compatible = "pwm-backlight";
+ pwms = <&pwm2 0 50000>;
+ power-supply = <®_backlight>;
+ brightness-levels = <0 24 28 32 36
+ 40 44 48 52 56
+ 60 64 68 72 76
+ 80 84 88 92 96 100>;
+ default-brightness-level = <20>;
+ };
+
+ lcd_display: display {
+ compatible = "fsl,imx-parallel-display";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interface-pix-fmt = "rgb24";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_disp>;
+
+ port@0 {
+ reg = <0>;
+
+ display1_in: endpoint {
+ remote-endpoint = <&ipu_di1_disp1>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ lcd_display_out: endpoint {
+ remote-endpoint = <&lcd_panel_in>;
+ };
+ };
+ };
+
+ lcd_panel: lcd-panel {
+ compatible = "koe,tx14d24vm1bpa";
+ backlight = <&backlight_lcd>;
+ power-supply = <®_3v3>;
+
+ port {
+ lcd_panel_in: endpoint {
+ remote-endpoint = <&lcd_display_out>;
+ };
+ };
+ };
+
+ reg_backlight: regulator-backlight {
+ compatible = "regulator-fixed";
+ regulator-name = "backlight-supply";
+ regulator-min-microvolt = <15000000>;
+ regulator-max-microvolt = <15000000>;
+ regulator-always-on;
+ };
+};
+
+&fec {
+ status = "okay";
+};
+
+&i2c3 {
+ adc@48 {
+ compatible = "ti,ads1015";
+ reg = <0x48>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ channel@4 {
+ reg = <4>;
+ ti,gain = <2>;
+ ti,datarate = <4>;
+ };
+
+ channel@6 {
+ reg = <6>;
+ ti,gain = <2>;
+ ti,datarate = <4>;
+ };
+ };
+
+ gpio-expander2@21 {
+ compatible = "nxp,pcf8574";
+ reg = <0x21>;
+ interrupts = <109>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ };
+};
+
+&iomuxc {
+ imx53-kp-ddc {
+ pinctrl_disp: dispgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_A16__IPU_DI1_DISP_CLK 0x4
+ MX53_PAD_EIM_DA10__IPU_DI1_PIN15 0x4
+ MX53_PAD_EIM_DA9__IPU_DISP1_DAT_0 0x4
+ MX53_PAD_EIM_DA8__IPU_DISP1_DAT_1 0x4
+ MX53_PAD_EIM_DA7__IPU_DISP1_DAT_2 0x4
+ MX53_PAD_EIM_DA6__IPU_DISP1_DAT_3 0x4
+ MX53_PAD_EIM_DA5__IPU_DISP1_DAT_4 0x4
+ MX53_PAD_EIM_DA4__IPU_DISP1_DAT_5 0x4
+ MX53_PAD_EIM_DA3__IPU_DISP1_DAT_6 0x4
+ MX53_PAD_EIM_DA2__IPU_DISP1_DAT_7 0x4
+ MX53_PAD_EIM_DA1__IPU_DISP1_DAT_8 0x4
+ MX53_PAD_EIM_DA0__IPU_DISP1_DAT_9 0x4
+ MX53_PAD_EIM_EB1__IPU_DISP1_DAT_10 0x4
+ MX53_PAD_EIM_EB0__IPU_DISP1_DAT_11 0x4
+ MX53_PAD_EIM_A17__IPU_DISP1_DAT_12 0x4
+ MX53_PAD_EIM_A18__IPU_DISP1_DAT_13 0x4
+ MX53_PAD_EIM_A19__IPU_DISP1_DAT_14 0x4
+ MX53_PAD_EIM_A20__IPU_DISP1_DAT_15 0x4
+ MX53_PAD_EIM_A21__IPU_DISP1_DAT_16 0x4
+ MX53_PAD_EIM_A22__IPU_DISP1_DAT_17 0x4
+ MX53_PAD_EIM_A23__IPU_DISP1_DAT_18 0x4
+ MX53_PAD_EIM_A24__IPU_DISP1_DAT_19 0x4
+ MX53_PAD_EIM_D31__IPU_DISP1_DAT_20 0x4
+ MX53_PAD_EIM_D30__IPU_DISP1_DAT_21 0x4
+ MX53_PAD_EIM_D26__IPU_DISP1_DAT_22 0x4
+ MX53_PAD_EIM_D27__IPU_DISP1_DAT_23 0x4
+ MX53_PAD_GPIO_1__PWM2_PWMO 0x4
+ >;
+ };
+ };
+};
+
+&ipu_di1_disp1 {
+ remote-endpoint = <&display1_in>;
+};
+
+&pmic {
+ fsl,mc13xxx-uses-touch;
+};
diff --git a/arch/arm/boot/dts/imx53-kp-hsc.dts b/arch/arm/boot/dts/imx53-kp-hsc.dts
new file mode 100644
index 000000000000..6e3d71baac0f
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp-hsc.dts
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-kp.dtsi"
+
+/ {
+ model = "K+P imx53 HSC";
+ compatible = "kiebackpeter,imx53-hsc", "fsl,imx53";
+};
+
+&fec {
+ status = "okay";
+
+ fixed-link { /* RMII fixed link to LAN9303 */
+ speed = <100>;
+ full-duplex;
+ };
+};
+
+&i2c3 {
+ switch: switch@a {
+ compatible = "smsc,lan9303-i2c";
+ reg = <0xa>;
+ reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
+ reset-duration = <400>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 { /* RMII fixed link to master */
+ reg = <0>;
+ label = "cpu";
+ ethernet = <&fec>;
+ };
+
+ port@1 { /* external port 1 */
+ reg = <1>;
+ label = "lan1";
+ };
+
+ port@2 { /* external port 2 */
+ reg = <2>;
+ label = "lan2";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-kp.dtsi b/arch/arm/boot/dts/imx53-kp.dtsi
new file mode 100644
index 000000000000..8b25416a5303
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-kp.dtsi
@@ -0,0 +1,189 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018
+ * Lukasz Majewski, DENX Software Engineering, [email protected]
+ */
+
+/dts-v1/;
+#include "imx53-tqma53.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+ buzzer {
+ compatible = "pwm-beeper";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_buzzer>;
+ pwms = <&pwm1 0 500000>;
+ };
+
+ gpio-buttons {
+ compatible = "gpio-keys";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_gpiobuttons>;
+
+ button-kalt {
+ label = "Kaltstart";
+ linux,code = <KEY_F6>;
+ gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
+ };
+
+ button-pwr {
+ label = "PowerFailInterrupt";
+ linux,code = <KEY_F7>;
+ gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_leds>;
+
+ led-bus {
+ label = "bus";
+ gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "gpio";
+ default-state = "off";
+ };
+
+ led-error {
+ label = "error";
+ gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "gpio";
+ default-state = "off";
+ };
+
+ led-flash {
+ label = "flash";
+ gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ reg_3v3: regulator-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+};
+
+&can1 {
+ status = "okay";
+};
+
+&can2 {
+ status = "okay";
+};
+
+&i2c3 {
+ status = "okay";
+
+ gpio-expander1@22 {
+ compatible = "nxp,pcf8574";
+ reg = <0x22>;
+ interrupts = <109>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ };
+
+ rtc@51 {
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ };
+};
+
+&iomuxc {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_kp_common>;
+
+ imx53-kp-common {
+ pinctrl_buzzer: buzzergrp {
+ fsl,pins = <
+ MX53_PAD_SD1_DATA3__PWM1_PWMO 0x1e4
+ >;
+ };
+
+ pinctrl_gpiobuttons: gpiobuttonsgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_RW__GPIO2_26 0x1e4
+ MX53_PAD_EIM_D22__GPIO3_22 0x1e4
+ >;
+ };
+
+ pinctrl_kp_common: kpcommongrp {
+ fsl,pins = <
+ MX53_PAD_EIM_CS0__GPIO2_23 0x1e4
+ MX53_PAD_GPIO_19__GPIO4_5 0x1e4
+ MX53_PAD_PATA_DATA6__GPIO2_6 0x1e4
+ MX53_PAD_PATA_DATA7__GPIO2_7 0xe0
+ MX53_PAD_CSI0_DAT14__GPIO6_0 0x1e4
+ MX53_PAD_CSI0_DAT16__GPIO6_2 0x1e4
+ MX53_PAD_CSI0_DAT18__GPIO6_4 0x1e4
+ MX53_PAD_EIM_D17__GPIO3_17 0x1e4
+ MX53_PAD_EIM_D18__GPIO3_18 0x1e4
+ MX53_PAD_EIM_D21__GPIO3_21 0x1e4
+ MX53_PAD_EIM_D29__GPIO3_29 0x1e4
+ MX53_PAD_EIM_DA11__GPIO3_11 0x1e4
+ MX53_PAD_EIM_DA13__GPIO3_13 0x1e4
+ MX53_PAD_EIM_DA14__GPIO3_14 0x1e4
+ MX53_PAD_SD1_DATA0__GPIO1_16 0x1e4
+ MX53_PAD_SD1_CMD__GPIO1_18 0x1e4
+ MX53_PAD_SD1_CLK__GPIO1_20 0x1e4
+ >;
+ };
+
+ pinctrl_leds: ledgrp {
+ fsl,pins = <
+ MX53_PAD_EIM_EB2__GPIO2_30 0x1d4
+ MX53_PAD_EIM_D28__GPIO3_28 0x1d4
+ MX53_PAD_EIM_WAIT__GPIO5_0 0x1d4
+ >;
+ };
+
+ pinctrl_uart4: uart4grp {
+ fsl,pins = <
+ MX53_PAD_CSI0_DAT12__UART4_TXD_MUX 0x1e4
+ MX53_PAD_CSI0_DAT13__UART4_RXD_MUX 0x1e4
+ >;
+ };
+ };
+};
+
+&pinctrl_uart1 {
+ fsl,pins = <
+ MX53_PAD_EIM_D23__GPIO3_23 0x1e4
+ MX53_PAD_EIM_EB3__GPIO2_31 0x1e4
+ MX53_PAD_EIM_D24__GPIO3_24 0x1e4
+ MX53_PAD_EIM_D25__GPIO3_25 0x1e4
+ MX53_PAD_EIM_D19__GPIO3_19 0x1e4
+ MX53_PAD_EIM_D20__GPIO3_20 0x1e4
+ >;
+};
+
+&uart1 {
+ status = "okay";
+};
+
+&uart2 {
+ status = "okay";
+};
+
+&uart3 {
+ status = "okay";
+};
+
+&uart4 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart4>;
+ status = "okay";
+};
+
+&usbh1 {
+ status = "okay";
+};
+
+&usbphy0 {
+ status = "disabled";
+};
--
2.11.0
On Tue, Jun 12, 2018 at 03:32:08PM +0200, Lukasz Majewski wrote:
> This commit provides support for HSC and DDC boards from
> Kieback&Peter GmbH vendor.
>
> Signed-off-by: Lukasz Majewski <[email protected]>
> Reviewed-by: Fabio Estevam <[email protected]>
"ARM: dts: ..." for prefix. I fixed it up and applied the patch.
Shawn
Hi Shawn,
> On Tue, Jun 12, 2018 at 03:32:08PM +0200, Lukasz Majewski wrote:
> > This commit provides support for HSC and DDC boards from
> > Kieback&Peter GmbH vendor.
> >
> > Signed-off-by: Lukasz Majewski <[email protected]>
> > Reviewed-by: Fabio Estevam <[email protected]>
>
> "ARM: dts: ..." for prefix. I fixed it up and applied the patch.
>
> Shawn
Thanks :-)
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected]