[PATCH] drm/exynos: remove hardware overlays disable from fimd probe
YoungJun Cho
yj44.cho at samsung.com
Mon Jun 2 03:32:01 PDT 2014
Hi Rahul,
On 06/02/2014 06:42 PM, Rahul Sharma wrote:
> On 2 June 2014 14:41, Andrzej Hajda <a.hajda at samsung.com> wrote:
>> Hi Rahul,
>>
>> On 05/28/2014 08:11 AM, Rahul Sharma wrote:
>>> System hangs when FIMD registers are accessed to disable
>>> hardware overlays. This is because of the clocks which are
>>> not enabled before register access.
>>>
>>> 'Hardware overlay disable' is cleaned from the FIMD probe.
>>>
>>> Signed-off-by: Rahul Sharma <rahul.sharma at samsung.com>
>>
>> This patch causes regression on some exynos4210-universal_c210 devices,
>> everything works expect colors are incorrect - it seems blue component
>> is very dark, almost black.
>>
>
> Oh.... Sorry for that. I did not see any problem on 5250/5420/5800. I do not
> have setup for 4210. Better we should revert this patch.
>
> Would you please help me by verifying the following patch on 4210? This
> is an alternate solution to the same problem.
>
> http://www.mail-archive.com/linux-samsung-soc@vger.kernel.org/msg31426.html
In my humble opinion, the patch is required to modify like below:
+ ret = pm_runtime_get_sync(ctx->dev);
+ if (ret < 0) {
When the bootloader enabled FIMD to show logo(boot image) or animation,
this function pm_runtime_get_sync() in fimd_bind() would return 1.
Thank you.
Best regards YJ
>
> Thanks Andrej, for bringing it to notice.
>
> Regards,
> Rahul Sharma
>
>> Regards
>> Andrzej
>>
>>> ---
>>> Based on exynos-drm-next branch.
>>>
>>> drivers/gpu/drm/exynos/exynos_drm_fimd.c | 17 -----------------
>>> 1 file changed, 17 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
>>> index bd30d0c..2ec634f 100644
>>> --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
>>> +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
>>> @@ -703,19 +703,6 @@ static void fimd_win_disable(struct exynos_drm_manager *mgr, int zpos)
>>> win_data->enabled = false;
>>> }
>>>
>>> -static void fimd_clear_win(struct fimd_context *ctx, int win)
>>> -{
>>> - writel(0, ctx->regs + WINCON(win));
>>> - writel(0, ctx->regs + VIDOSD_A(win));
>>> - writel(0, ctx->regs + VIDOSD_B(win));
>>> - writel(0, ctx->regs + VIDOSD_C(win));
>>> -
>>> - if (win == 1 || win == 2)
>>> - writel(0, ctx->regs + VIDOSD_D(win));
>>> -
>>> - fimd_shadow_protect_win(ctx, win, false);
>>> -}
>>> -
>>> static void fimd_window_suspend(struct exynos_drm_manager *mgr)
>>> {
>>> struct fimd_context *ctx = mgr->ctx;
>>> @@ -898,16 +885,12 @@ static int fimd_bind(struct device *dev, struct device *master, void *data)
>>> {
>>> struct fimd_context *ctx = fimd_manager.ctx;
>>> struct drm_device *drm_dev = data;
>>> - int win;
>>>
>>> fimd_mgr_initialize(&fimd_manager, drm_dev);
>>> exynos_drm_crtc_create(&fimd_manager);
>>> if (ctx->display)
>>> exynos_drm_create_enc_conn(drm_dev, ctx->display);
>>>
>>> - for (win = 0; win < WINDOWS_NR; win++)
>>> - fimd_clear_win(ctx, win);
>>> -
>>> return 0;
>>>
>>> }
>>>
>>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
More information about the dri-devel
mailing list