Hi Thierry,
On Tue, Apr 22, 2014 at 1:49 PM, Thierry Reding <thierry.reding@xxxxxxxxx> wrote:
> On Tue, Apr 22, 2014 at 04:09:11AM +0530, Ajay Kumar wrote:
>> Most of the panels need an init sequence as mentioned below:
>> -- poweron LCD unit/LCD_EN
>> -- start video data
>> -- poweron LED unit/BL_EN
>> And, a de-init sequence as mentioned below:
>> -- poweroff LED unit/BL_EN
>> -- stop video data
>> -- poweroff LCD unit/LCD_EN
>> With existing callbacks for drm panel, we cannot accomodate such panels,
>> since only two callbacks, i.e "panel_enable" and panel_disable are supported.
>>
>> This patch adds:
>> -- "pre_enable" callback which can be called before
>> the actual video data is on, and then call the "enable"
>> callback after the video data is available.
>>
>> -- "post_disable" callback which can be called after
>> the video data is off, and use "disable" callback
>> to do something before switching off the video data.
>>
>> Now, we can easily map the above scenario as shown below:
>> poweron LCD unit/LCD_EN = "pre_enable" callback
>> poweron LED unit/BL_EN = "enable" callback
>> poweroff LED unit/BL_EN = "disable" callback
>> poweroff LCD unit/LCD_EN = "post_disable" callback
>
> I don't like this. What happens when the next panel comes around that
> has a yet slightly different requirement? Will we introduce a new
> pre_pre_enable() and post_post_disable() function then?
>
On Tue, Apr 22, 2014 at 1:49 PM, Thierry Reding <thierry.reding@xxxxxxxxx> wrote:
> On Tue, Apr 22, 2014 at 04:09:11AM +0530, Ajay Kumar wrote:
>> Most of the panels need an init sequence as mentioned below:
>> -- poweron LCD unit/LCD_EN
>> -- start video data
>> -- poweron LED unit/BL_EN
>> And, a de-init sequence as mentioned below:
>> -- poweroff LED unit/BL_EN
>> -- stop video data
>> -- poweroff LCD unit/LCD_EN
>> With existing callbacks for drm panel, we cannot accomodate such panels,
>> since only two callbacks, i.e "panel_enable" and panel_disable are supported.
>>
>> This patch adds:
>> -- "pre_enable" callback which can be called before
>> the actual video data is on, and then call the "enable"
>> callback after the video data is available.
>>
>> -- "post_disable" callback which can be called after
>> the video data is off, and use "disable" callback
>> to do something before switching off the video data.
>>
>> Now, we can easily map the above scenario as shown below:
>> poweron LCD unit/LCD_EN = "pre_enable" callback
>> poweron LED unit/BL_EN = "enable" callback
>> poweroff LED unit/BL_EN = "disable" callback
>> poweroff LCD unit/LCD_EN = "post_disable" callback
>
> I don't like this. What happens when the next panel comes around that
> has a yet slightly different requirement? Will we introduce a new
> pre_pre_enable() and post_post_disable() function then?
>
As I have already explained, these 2 callbacks are sufficient enough to take care
the power up/down sequence for LVDS and eDP panels. And, definitely having
just 2 callbacks "enable" and "disable" is not at all sufficient.
I initially thought of using panel_simple_enable from panel-simple driver.
But it doesn't go well with case wherein there are 2 regulators(one for LCD and one for LED)
a BL_EN signal etc. And, often(Believe me, I have referred to both eDP panel datasheets
and LVDS panel datasheets) proper powerup sequence for such panels is as mentioned below:
powerup:
-- power up the supply (LCD_VCC).
-- start video data.
-- enable backlight.
powerdown
-- disable backlight.
-- stop video data.
-- power off the supply (LCD VCC)
For the above cases, if I have to somehow fit in all the required settings,
it breaks the sequence and I end up getting glitches during bootup/DPMS.
Also, when the drm_bridge can support pre_enable and post_disable, why not
drm_panel provide that both should work in tandem?
> There's got to be a better way to solve this.
>
> Thierry
>
> Thierry
Thanks and Regards,
Ajay Kumar
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel