Re: [PATCH 7/7] ARM: dts: r8a7742-iwg21d-q7: Add LCD support

From: Laurent Pinchart
Date: Tue Aug 11 2020 - 07:26:58 EST


Hi Prabhakar,

Thank you for the patch.

On Fri, Aug 07, 2020 at 06:49:54PM +0100, Lad Prabhakar wrote:
> The iwg21d comes with a 7" capacitive touch screen, therefore
> add support for it.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
> Reviewed-by: Marian-Cristian Rotariu <marian-cristian.rotariu.rb@xxxxxxxxxxxxxx>
> ---
> arch/arm/boot/dts/r8a7742-iwg21d-q7.dts | 84 +++++++++++++++++++++++++
> 1 file changed, 84 insertions(+)
>
> diff --git a/arch/arm/boot/dts/r8a7742-iwg21d-q7.dts b/arch/arm/boot/dts/r8a7742-iwg21d-q7.dts
> index b3461a61a4bf..cf59fd61e422 100644
> --- a/arch/arm/boot/dts/r8a7742-iwg21d-q7.dts
> +++ b/arch/arm/boot/dts/r8a7742-iwg21d-q7.dts
> @@ -30,6 +30,7 @@
>
> /dts-v1/;
> #include "r8a7742-iwg21m.dtsi"
> +#include <dt-bindings/pwm/pwm.h>
>
> / {
> model = "iWave Systems RainboW-G21D-Qseven board based on RZ/G1H";
> @@ -52,6 +53,50 @@
> clock-frequency = <26000000>;
> };
>
> + lcd_backlight: backlight {
> + compatible = "pwm-backlight";
> + pwms = <&tpu 2 5000000 0>;
> + brightness-levels = <0 4 8 16 32 64 128 255>;
> + pinctrl-0 = <&backlight_pins>;
> + pinctrl-names = "default";
> + default-brightness-level = <7>;
> + enable-gpios = <&gpio3 11 GPIO_ACTIVE_HIGH>;

It's actually a power supply, not an enable GPIO, but it doesn't matter
much, I don't think there's a need to declare a regulator just for the
sake of it.

> + };
> +
> + lvds-receiver {
> + compatible = "ti,ds90cf384a", "lvds-decoder";
> + powerdown-gpios = <&gpio5 28 GPIO_ACTIVE_LOW>;

This should be handled as a shared power supply, as it's also needed for
the touch screen. Biju has sent patches for the iwg20d that fixes a
probe issue due to that problem, I think you can just copy the fix.

> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> + lvds_receiver_in: endpoint {
> + remote-endpoint = <&lvds0_out>;
> + };
> + };
> + port@1 {
> + reg = <1>;
> + lvds_receiver_out: endpoint {
> + remote-endpoint = <&panel_in>;
> + };
> + };
> + };
> + };
> +
> + panel {
> + compatible = "edt,etm0700g0dh6";
> + backlight = <&lcd_backlight>;
> +
> + port {
> + panel_in: endpoint {
> + remote-endpoint = <&lvds_receiver_out>;
> + };
> + };
> + };
> +
> reg_1p5v: 1p5v {
> compatible = "regulator-fixed";
> regulator-name = "1P5V";
> @@ -129,12 +174,31 @@
> VDDIO-supply = <&reg_3p3v>;
> VDDD-supply = <&reg_1p5v>;
> };
> +
> + touch: touchpanel@38 {
> + compatible = "edt,edt-ft5406";
> + reg = <0x38>;
> + interrupt-parent = <&gpio0>;
> + interrupts = <24 IRQ_TYPE_EDGE_FALLING>;

Should the reset GPIO also be wired ? It seems to be shared with the
audio codec though, which is annoying.

> + };
> };
>
> &cmt0 {
> status = "okay";
> };
>
> +&du {
> + status = "okay";
> +};
> +
> +&gpio0 {
> + touch-interrupt {
> + gpio-hog;
> + gpios = <24 GPIO_ACTIVE_LOW>;
> + input;
> + };

Is this needed, or does requesting the interrupt in the touch screen
driver configured the GPIO to an input automatically ?

> +};
> +
> &hsusb {
> pinctrl-0 = <&usb0_pins>;
> pinctrl-names = "default";
> @@ -165,6 +229,11 @@
> function = "avb";
> };
>
> + backlight_pins: backlight {
> + groups = "tpu0_to2";
> + function = "tpu0";
> + };
> +
> i2c2_pins: i2c2 {
> groups = "i2c2_b";
> function = "i2c2";
> @@ -208,6 +277,17 @@
> };
> };
>
> +&lvds0 {
> + status = "okay";
> + ports {
> + port@1 {
> + lvds0_out: endpoint {
> + remote-endpoint = <&lvds_receiver_in>;
> + };
> + };
> + };
> +};
> +
> &rcar_sound {
> pinctrl-0 = <&sound_pins>;
> pinctrl-names = "default";
> @@ -261,6 +341,10 @@
> shared-pin;
> };
>
> +&tpu {
> + status = "okay";
> +};
> +
> &usbphy {
> status = "okay";
> };

--
Regards,

Laurent Pinchart