diff mbox

[V7] ARM: dts: da850-evm: Enable LCD and Backlight

Message ID 20180518203335.13878-1-aford173@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Adam Ford May 18, 2018, 8:33 p.m. UTC
When using the board files the LCD works, but not with the DT.
This adds enables the original da850-evm to work with the same
LCD in device tree mode.

The EVM has a gpio for the regulator and a PWM for dimming the
backlight.  The LCD and the vpif display pins are mutually
exclusive, so if using the LCD, do not load the vpif driver.

Signed-off-by: Adam Ford <aford173@gmail.com>
---
V7:  Missed one reference to backlight_reg->backlight_lcd

V6:  Fix some whitespace and comment formatting.  Rename backlight_reg to
     backlight_lcd

V5:  Resync against v4.18/dt

V4:  Move the backlight to PWM, so the driver can control the regulator allowing the 
     regulator to power down and enabling the ability to change the brightness of the
     backlight

V3:  Fix errant GPIO, label GPIO pins, and rename the regulator to be more explict to
     backlight which better matches the schematic.  Updated the description to explain
     that it cannot be used at the same time as the vpif driver.

V2:  Add regulator and GPIO enable pins. Remove PWM backlight and replace with GPIO

Comments

Sekhar Nori May 21, 2018, 2:51 p.m. UTC | #1
On Saturday 19 May 2018 02:03 AM, Adam Ford wrote:
> When using the board files the LCD works, but not with the DT.
> This adds enables the original da850-evm to work with the same
> LCD in device tree mode.
> 
> The EVM has a gpio for the regulator and a PWM for dimming the
> backlight.  The LCD and the vpif display pins are mutually
> exclusive, so if using the LCD, do not load the vpif driver.
> 
> Signed-off-by: Adam Ford <aford173@gmail.com>

> diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
> index 0e82bb988fde..a76c2ddfd23e 100644
> --- a/arch/arm/boot/dts/da850-evm.dts
> +++ b/arch/arm/boot/dts/da850-evm.dts
> @@ -27,6 +27,60 @@
>  		spi0 = &spi1;
>  	};
>  
> +	backlight: backlight-pwm {
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&ecap2_pins>;
> +		power-supply = <&backlight_lcd>;
> +		compatible = "pwm-backlight";
> +		pwms = <&ecap2 0 50000 0>;

It will be nice to add a comment here: "The PWM here corresponds to 
production hardware. The schematic needs to be 1015171 (15 March 2010), 
Rev A or newer."

> +		brightness-levels = <0 10 20 30 40 50 60 70 80 90 99>;
> +		default-brightness-level = <7>;
> +	};
> +
> +	panel {
> +		compatible = "ti,tilcdc,panel";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&lcd_pins>;
> +		/*
> +		 * The vpif and the LCD are mutually exclusive.
> +		 * To enable VPIF, change the status below to 'disabled' then
> +		 * then change the status of the vpif below to 'okay'
> +		*/

This results in checkpatch warning:
 
[PATCH V7] ARM: dts: da850-evm: Enable LCD and Backlight.eml:153: WARNING: Block comments should align the * on each line
[PATCH V7] ARM: dts: da850-evm: Enable LCD and Backlight.eml:239: WARNING: Block comments should align the * on each line

>  &vpif {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&vpif_capture_pins>, <&vpif_display_pins>;
> -	status = "okay";
> +	/*
> +	 * The vpif and the LCD are mutually exclusive.
> +	 * To enable VPIF, disable the ti,tilcdc,panel then
> +	 * changed the status below to 'okay'
> +	*/
> +	status = "disabled";

Are you able to see VPIF is disabled after this? Trying your patch, I 
still see VPIF probing[1]. Also, only VPIF display has a conflict with 
LCD, correct (capture should be fine)?

Thanks,
Sekhar

[1]
[   34.739314] adv7343 0-002a: chip found @ 0x54 (DaVinci I2C adapter)
[   34.881422] vpif_display vpif_display: Pixel details: Width = 720,Height = 480
[   34.881506] vpif_display vpif_display: channel=5bf2d970,channel->video_dev=5bf2d970
[   34.883374] vpif_display vpif_display: Pixel details: Width = 720,Height = 480
[   34.883450] vpif_display vpif_display: channel=16041996,channel->video_dev=16041996
[   35.370777] tvp514x 0-005d: tvp514x 0-005d decoder driver registered !!
[   35.470088] vpif_capture vpif_capture: registered sub device tvp514x-0
[   35.827492] tvp514x 0-005c: tvp514x 0-005c decoder driver registered !!
[   35.866031] vpif_capture vpif_capture: registered sub device tvp514x-1
[   35.953752] vpif_capture vpif_capture: VPIF capture driver initialized

# ls /dev/video
video0  video1  video2  video3
Sekhar Nori May 22, 2018, 10:58 a.m. UTC | #2
On Monday 21 May 2018 08:21 PM, Sekhar Nori wrote:
> On Saturday 19 May 2018 02:03 AM, Adam Ford wrote:
>> When using the board files the LCD works, but not with the DT.
>> This adds enables the original da850-evm to work with the same
>> LCD in device tree mode.
>>
>> The EVM has a gpio for the regulator and a PWM for dimming the
>> backlight.  The LCD and the vpif display pins are mutually
>> exclusive, so if using the LCD, do not load the vpif driver.
>>
>> Signed-off-by: Adam Ford <aford173@gmail.com>
> 
>> diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
>> index 0e82bb988fde..a76c2ddfd23e 100644
>> --- a/arch/arm/boot/dts/da850-evm.dts
>> +++ b/arch/arm/boot/dts/da850-evm.dts
>> @@ -27,6 +27,60 @@
>>  		spi0 = &spi1;
>>  	};
>>  
>> +	backlight: backlight-pwm {
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&ecap2_pins>;
>> +		power-supply = <&backlight_lcd>;
>> +		compatible = "pwm-backlight";
>> +		pwms = <&ecap2 0 50000 0>;
> 
> It will be nice to add a comment here: "The PWM here corresponds to 
> production hardware. The schematic needs to be 1015171 (15 March 2010), 
> Rev A or newer."
> 
>> +		brightness-levels = <0 10 20 30 40 50 60 70 80 90 99>;
>> +		default-brightness-level = <7>;
>> +	};
>> +
>> +	panel {
>> +		compatible = "ti,tilcdc,panel";
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&lcd_pins>;
>> +		/*
>> +		 * The vpif and the LCD are mutually exclusive.
>> +		 * To enable VPIF, change the status below to 'disabled' then
>> +		 * then change the status of the vpif below to 'okay'
>> +		*/
> 
> This results in checkpatch warning:
>  
> [PATCH V7] ARM: dts: da850-evm: Enable LCD and Backlight.eml:153: WARNING: Block comments should align the * on each line
> [PATCH V7] ARM: dts: da850-evm: Enable LCD and Backlight.eml:239: WARNING: Block comments should align the * on each line
> 
>>  &vpif {
>>  	pinctrl-names = "default";
>>  	pinctrl-0 = <&vpif_capture_pins>, <&vpif_display_pins>;
>> -	status = "okay";
>> +	/*
>> +	 * The vpif and the LCD are mutually exclusive.
>> +	 * To enable VPIF, disable the ti,tilcdc,panel then
>> +	 * changed the status below to 'okay'
>> +	*/
>> +	status = "disabled";
> 
> Are you able to see VPIF is disabled after this? Trying your patch, I 
> still see VPIF probing[1]. Also, only VPIF display has a conflict with 
> LCD, correct (capture should be fine)?

To answer myself, I forgot that VPIF is bit special because it is
registered through pdata-quirks. As such the parent vpif node is used
only for pinmux setting. I do think the platform devices for capture and
display should not be registered if the vpif parent node is disabled in
DT. But thats a subject of another patch.

With that, I fixed up my comments above locally and added this in queue
for v4.19

Thanks,
Sekhar
diff mbox

Patch

diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index 0e82bb988fde..a76c2ddfd23e 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -27,6 +27,60 @@ 
 		spi0 = &spi1;
 	};
 
+	backlight: backlight-pwm {
+		pinctrl-names = "default";
+		pinctrl-0 = <&ecap2_pins>;
+		power-supply = <&backlight_lcd>;
+		compatible = "pwm-backlight";
+		pwms = <&ecap2 0 50000 0>;
+		brightness-levels = <0 10 20 30 40 50 60 70 80 90 99>;
+		default-brightness-level = <7>;
+	};
+
+	panel {
+		compatible = "ti,tilcdc,panel";
+		pinctrl-names = "default";
+		pinctrl-0 = <&lcd_pins>;
+		/*
+		 * The vpif and the LCD are mutually exclusive.
+		 * To enable VPIF, change the status below to 'disabled' then
+		 * then change the status of the vpif below to 'okay'
+		*/
+		status = "okay";
+		enable-gpios = <&gpio 40 GPIO_ACTIVE_HIGH>; /* lcd_panel_pwr */
+
+		panel-info {
+			ac-bias		= <255>;
+			ac-bias-intrpt	= <0>;
+			dma-burst-sz	= <16>;
+			bpp		= <16>;
+			fdd		= <0x80>;
+			sync-edge	= <0>;
+			sync-ctrl	= <1>;
+			raster-order	= <0>;
+			fifo-th		= <0>;
+		};
+
+		display-timings {
+			native-mode = <&timing0>;
+			timing0: 480x272 {
+				clock-frequency = <9000000>;
+				hactive = <480>;
+				vactive = <272>;
+				hfront-porch = <3>;
+				hback-porch = <2>;
+				hsync-len = <42>;
+				vback-porch = <3>;
+				vfront-porch = <4>;
+				vsync-len = <11>;
+				hsync-active = <0>;
+				vsync-active = <0>;
+				de-active = <1>;
+				pixelclk-active = <1>;
+			};
+		};
+	};
+
 	vbat: fixedregulator0 {
 		compatible = "regulator-fixed";
 		regulator-name = "vbat";
@@ -35,6 +89,15 @@ 
 		regulator-boot-on;
 	};
 
+	backlight_lcd: backlight-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "lcd_backlight_pwr";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio 47 GPIO_ACTIVE_HIGH>; /* lcd_backlight_pwr */
+		enable-active-high;
+	};
+
 	sound {
 		compatible = "simple-audio-card";
 		simple-audio-card,name = "DA850/OMAP-L138 EVM";
@@ -63,6 +126,10 @@ 
 	};
 };
 
+&ecap2 {
+	status = "okay";
+};
+
 &pmx_core {
 	status = "okay";
 
@@ -109,6 +176,10 @@ 
 	status = "okay";
 };
 
+&lcdc {
+	status = "okay";
+};
+
 &i2c0 {
 	status = "okay";
 	clock-frequency = <100000>;
@@ -336,5 +407,10 @@ 
 &vpif {
 	pinctrl-names = "default";
 	pinctrl-0 = <&vpif_capture_pins>, <&vpif_display_pins>;
-	status = "okay";
+	/*
+	 * The vpif and the LCD are mutually exclusive.
+	 * To enable VPIF, disable the ti,tilcdc,panel then
+	 * changed the status below to 'okay'
+	*/
+	status = "disabled";
 };