imx-drm: ldb and display power on sequence
Christian Gmeiner
christian.gmeiner at gmail.com
Thu Mar 13 09:04:07 EDT 2014
2014-03-11 9:51 GMT+01:00 Christian Gmeiner <christian.gmeiner at gmail.com>:
> 2014-03-07 12:18 GMT+01:00 Christian Gmeiner <christian.gmeiner at gmail.com>:
>> Hi Philipp,
>>
>>> Am Donnerstag, den 06.03.2014, 13:34 +0100 schrieb Christian Gmeiner:
>>>> Hi all.
>>>>
>>>> On our custom board design (imx6d) we are using a TFT-display
>>>> connceted via LVDS.
>>>> The datasheet [0] says that the display needs a defined power up
>>>> sequence. I need
>>>> to control the following stuff:
>>>>
>>>> - LCD_ON (gpio2 3)
>>>> - Backlight ON (gpio2 0)
>>>> - PMW for dimm
>>>>
>>>> At the moment I have the backlight suff ready:
>>>>
>>>> backlight {
>>>> compatible = "pwm-backlight";
>>>> pwms = <&pwm4 0 50000>;
>>>> enable-gpios = <&gpio2 0 0>;
>>>>
>>>> brightness-levels = <0 1 2 3 4>;
>>>> default-brightness-level = <4>;
>>>> };
>>>>
>>>> Now I only need to enable the LCD_ON and wait 40ms before turning on
>>>> the LVDS clocks and data.
>>>
>>> This can be done by adding a regulator-enable-ramp-delay property to the
>>> gpio regulator.
>>>
>>
>> Correct.
>>
>>>> For this I tought to add a regulator support in
>>>> imx_ldb_encoder_commit(..) of imx-ldb.c.
>>>>That should give me the correct sequence for
>>>> LVDS on to LVDS data/clock. Now I only need to get the pwm-backlight
>>>> driver doing its work after ldb is ready.
>>>
>>> We should rather add drm_panel support to imx-ldb. I have just sent a
>>> patch for this.
>>> The simple-panel driver already supports regulator and backlight.
>>>
>>
>> I am still life in the world of a stable kernel called 3.13.6 :) Will
>> backport the simple-panel driver
>> and will have a look at your patches - today.
>>
>
> I backported your patch and updated my dts file. It looks better now
> but one thing is does not work.
> The datasheet says I need to enable the lcd, enable LVDS data and then
> I can enable the backlight.
> With the simple panel following happens:
>
> panel_simple_enable:
> - regulator_enable(p->supply);
> - gpio_set_value
> - backlight_update_status
>
> The result of this sequence are graphical glitches and a ghost picture
> on the panel. Need to think
> about it to find a good solution for it. Maybe there should be a 2 way
> init phase for a panel.
> - preinit - turn on power-supply and set gpio
> - init ipu
> - postinit - unblank backlight
>
Okay... I am getting everything to work as expected but I am using
some hacks, which I hope to get
rid of. There is one simple 'problem' with my pwm-backlight.
backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm4 0 50000>;
enable-gpios = <&gpio2 0 0>;
brightness-levels = <0 1 ... 100>
default-brightness-level = <100>;
};
panel: panel {
compatible = "simple-panel";
power-supply = <®_lcd_on>;
backlight = <&backlight>;
};
The pwn-backlight driver gets loaded before imx-drm/simple panel
dirver. The result is that the backlight
gets turned on but the whole drm subsystem is not ready -> gohst
picture from last reboot get shown.
At the moment I removed the backlight_update_status(bl); call from the
pwm-backlight driver (probe function).
Is there a better way to do it?
greets
--
Christian Gmeiner, MSc
https://soundcloud.com/christian-gmeiner
More information about the linux-arm-kernel
mailing list