From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 64952C433F5 for ; Tue, 1 Mar 2022 20:13:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237516AbiCAUOV (ORCPT ); Tue, 1 Mar 2022 15:14:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232861AbiCAUOU (ORCPT ); Tue, 1 Mar 2022 15:14:20 -0500 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6EFF431349; Tue, 1 Mar 2022 12:13:35 -0800 (PST) Received: by mail-wm1-x335.google.com with SMTP id r187-20020a1c2bc4000000b003810e6b192aso2093561wmr.1; Tue, 01 Mar 2022 12:13:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=cNkSABONt1iilJgkq2YMVmO0Set3/v2FPmsLCi8Uqs4=; b=qiQAcVWEGHMTEbYpNdDeCnzKri1SumVGIwsTbmLRl+4F1NoaYSlLt1lMk8uLPMf8vf EWXqbZxsLcJicelqJcif5ezMG54km1qCSm5Tw/NmpUtZyYLrdsyys39XfxZ530OEwnON +VzVV2KdTRFlZBObGfvWyJk4w3m27Amx+dhX9SDrYwWr7PL9ENugZ1ew10hSxugB2YGH B+PToZWHN8O5wdHei+18mPyDtJ1ahxKNW+WZxBlooj0NpeLTPOE3VmfgEOOtu5m4n/kQ 95POXWtjgAE13h0NpsiUEwp2Ge4R7XC9abbIxkTOHO30a+cmmHz6xkc3bgXX+YlMNDb4 sytg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=cNkSABONt1iilJgkq2YMVmO0Set3/v2FPmsLCi8Uqs4=; b=508jJMa1Nke8XQTVpeC3po+gJuPyjLT1tWpJd+inpZX+LJ4vrnxZHVuPuUSa71L7T0 7xaqX0fF9dwZXCNfsDnNefeguMovQpbAu/7qqgH1PnayKeaWvmlJQCVwEcL2CGyiY3A1 LXEKHjcqFPqQrof/OAV7IhRw6dY9RdA6AbsZrkDXXsbSjLGyzyF3OaJV6GSkDS+iMoT9 Eea/5hKnL+SUeAkcWtv624CzB2DVLG/cUV0CJagQRWnSmMoEyAiOAhgxtKmAM4t5A4D2 EylkaUjKAOsUS8VqbVA2WKbMcdeyChdLzcLls2juFSvtEbWxnLDm5+N3RwREFaZ1YYVr CCgQ== X-Gm-Message-State: AOAM5313MVkAj9/FivxxVXDyvEeG0J1eshA713Kx0L2jfWN569hYUnXo Jnl4rb4RRbcD7FoCfXlUQnY= X-Google-Smtp-Source: ABdhPJzj4CEi9+klR+Zl+Z4BwpFJwMS67HUqMOKpBUhrAmFq7liQlA7Bpra6Dk99ZRQ8yq4l+tVq3w== X-Received: by 2002:a05:600c:1f14:b0:381:812d:7214 with SMTP id bd20-20020a05600c1f1400b00381812d7214mr5539531wmb.190.1646165613668; Tue, 01 Mar 2022 12:13:33 -0800 (PST) Received: from adroid (027-177-184-091.ip-addr.vsenet.de. [91.184.177.27]) by smtp.gmail.com with ESMTPSA id l13-20020a05600002ad00b001ea78a5df11sm17133591wry.1.2022.03.01.12.13.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Mar 2022 12:13:33 -0800 (PST) Date: Tue, 1 Mar 2022 21:13:30 +0100 From: Martin =?iso-8859-1?Q?J=FCcker?= To: Inki Dae Cc: Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , David Airlie , Daniel Vetter , Krzysztof Kozlowski , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Martin =?iso-8859-1?Q?J=FCcker?= Subject: Re: [PATCH] drm/exynos: fimd: add BGR support for exynos4/5 Message-ID: <20220301201330.GA12615@adroid> References: <20220129220153.GA33165@adroid> <5e18705f-79c1-18a7-57f2-74866abe21e9@samsung.com> <20220224232723.GA133007@adroid> <20220225093313.GA87542@adroid> <45867b37-1fb0-2f09-5961-6f099a1ed611@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <45867b37-1fb0-2f09-5961-6f099a1ed611@samsung.com> Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org Hi Inki, On Tue, Mar 01, 2022 at 04:52:20PM +0900, Inki Dae wrote: > Hi Martin, > > 22. 2. 25. 18:33에 Martin Jücker 이(가) 쓴 글: > > Hello Inki, > > > > On Fri, Feb 25, 2022 at 12:52:56PM +0900, Inki Dae wrote: > >> Hi Martin, > >> > >> 22. 2. 25. 08:27에 Martin Jücker 이(가) 쓴 글: > >>> Hello Inki, > >>> > >>> On Thu, Feb 24, 2022 at 10:41:04AM +0900, Inki Dae wrote: > >>>> Hi Martin. > >>>> > >>>> I found that exynos4 and 5 data sheet include documented same register. > >>>> RGB_ORDER_E field of VIDCONx registers will do same thing. > >>> > >>> If I read the manual correctly, this register combined with the > >>> RGB_ORDER_O makes it possible to map the whole RGB interface output to a > >>> different order. What my patch provides is a way to configure each > >>> hardware plane separately while maintaining a consistent output on the > >>> RGB interface. > >>> > >> > >> Understood. Your patch will allow BGR pixel order per a plane. Seems to be useful because a framebuffer with BGR pixel format can be displayed on screen without any color space conversion. :) > >> > >>> Implementing the RGB_ORDER_O and E would need some logic to make sure > >>> that all planes are always using the same RGB order. > >>> > >>>> > >>>> I'm not sure whether the use of undocumented register is safe or not - maybe some HW bug exists. > >>> > >>> I see, that makes sense. Would it be possible then to introduce a new > >>> compatible, e.g. samsung,exynos4210-fimd-ext which can be used on tested > >> > >> Seems providing a new compatible is not a good idea. Thinking about it afterwards, I fully agree :) > >> > >>> devices? I know that some other Galaxy Note and S devices with the > >>> exynos4 chip have the same problem (and solution). > >> > >> Could you give me more details about the same problem and its solution on the devices? > >> It would be useful for us to decide the upstream direction. > >> > >> If necessary then we may need to contact HW engineer for clarity. > > > > Here is my current understanding of the situation: > > > > The issue is related to Android and a recovery image having conflicting > > pixel formats on the same device. There is a solution in Replicant[1] > > for this using parameters for the fimd driver to force the pixel format > > to RGB or BGR. It's using the PNRMODE register on VIDCON0, but this > > solution needs two separate kernels to be built to add the parameter as > > the boot loader is not adjustable. > > > > This was also discussed in dri-devel irc and it was proposed to expose > > both formats and fail the atomic commit if userspace tried to use both > > RGB and BGR formats at the same time. With this approach there should be > > something on the screen but it might happen that some users can't deal > > with the failing commits as it's rather difficult to find the cause and > > fix it on the go. > > Thanks for sharing. > > > > > After that I accidentally discovered this undocumented register while > > reading the old vendor sources and it seems that it fixes all the > > Are the old vendor sources using this undocumented register? If so then the use of the register would be safe. Here are some examples for vendor sources collected by Krzysztof that make use of this register on several Exynos4/5 devices. * Galaxy S4 (Exynos 5410) [1] * Samsung Galaxy Tab S10.5 (Exynos 5420) [2] * Galaxy Note 10.1 (Exynos 4412) [3] * Galaxy S2/S3 (Exynos 4210/4412) [4] > > > issues. At least if there are no HW bugs as you mentioned. > > I will try to contact HW engineer and check if no problem. If you could get definitive confirmation, that would be great of course. Thank you for your effort. Kind Regards Martin [1] https://github.com/krzk/linux-vendor-backup/blob/mokee/android-3.4-samsung-galaxy-s4-i9500-exynos5410/drivers/video/s3c-fb.c#L1127 [2] https://github.com/krzk/linux-vendor-backup/blob/mokee/android-3.4-samsung-galaxy-tab-s-10.5-sm-t805-exynos5420/drivers/video/s3c-fb.c#L1533 [3] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-note-tab-10.1-2012-gt-n8010-p4note-exynos4412-dump/drivers/video/samsung/s3cfb_ops.c#L1594 [4] https://github.com/krzk/linux-vendor-backup/blob/lineage/android-samsung-galaxy-i9100-i9300-exynos4210-exynos4412/drivers/video/samsung/s3cfb_ops.c#L1600 > > Thanks, > Inki Dae > > > > > > > > Kind Regards > > Martin > > > > [1] https://protect2.fireeye.com/v1/url?k=d515db34-b4683348-d514507b-74fe485cc33c-0ee001ffdcafd932&q=1&e=851ccfed-b6fa-4794-8989-27ef28bc7ac6&u=https%3A%2F%2Fgit.replicant.us%2Freplicant-next%2Fkernel_replicant_linux%2Fcommit%2F%3Fh%3Dreplicant-11%26id%3Dcc5a0615b40cd5ede1eb87a60daa50333701a135 > > > >> > >> Thanks, > >> Inki Dae > >> > >>> > >>>> > >>>> Anyway, I'd like to recommend you to use documented register only. > >>>> > >>>> Sorry for late and thanks, > >>>> Inki Dae > >>> > >>> Kind Regards > >>> Martin > >>> > >>>> > >>>> 22. 1. 30. 07:01에 Martin Jücker 이(가) 쓴 글: > >>>>> In the downstream kernels for exynos4 and exynos5 devices, there is an > >>>>> undocumented register that controls the order of the RGB output. It can > >>>>> be set to either normal order or reversed, which enables BGR support for > >>>>> those SoCs. > >>>>> > >>>>> This patch enables the BGR support for all the SoCs that were found to > >>>>> have at least one device with this logic in the corresponding downstream > >>>>> kernels. > >>>>> > >>>>> Signed-off-by: Martin Jücker > >>>>> --- > >>>>> drivers/gpu/drm/exynos/exynos_drm_fimd.c | 42 ++++++++++++++++++++++-- > >>>>> include/video/samsung_fimd.h | 4 +++ > >>>>> 2 files changed, 44 insertions(+), 2 deletions(-) > >>>>> > >>>>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > >>>>> index c735e53939d8..cb632360c968 100644 > >>>>> --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c > >>>>> +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > >>>>> @@ -109,6 +109,7 @@ struct fimd_driver_data { > >>>>> unsigned int has_dp_clk:1; > >>>>> unsigned int has_hw_trigger:1; > >>>>> unsigned int has_trigger_per_te:1; > >>>>> + unsigned int has_bgr_support:1; > >>>>> }; > >>>>> > >>>>> static struct fimd_driver_data s3c64xx_fimd_driver_data = { > >>>>> @@ -138,6 +139,7 @@ static struct fimd_driver_data exynos4_fimd_driver_data = { > >>>>> .lcdblk_bypass_shift = 1, > >>>>> .has_shadowcon = 1, > >>>>> .has_vtsel = 1, > >>>>> + .has_bgr_support = 1, > >>>>> }; > >>>>> > >>>>> static struct fimd_driver_data exynos5_fimd_driver_data = { > >>>>> @@ -149,6 +151,7 @@ static struct fimd_driver_data exynos5_fimd_driver_data = { > >>>>> .has_vidoutcon = 1, > >>>>> .has_vtsel = 1, > >>>>> .has_dp_clk = 1, > >>>>> + .has_bgr_support = 1, > >>>>> }; > >>>>> > >>>>> static struct fimd_driver_data exynos5420_fimd_driver_data = { > >>>>> @@ -162,6 +165,7 @@ static struct fimd_driver_data exynos5420_fimd_driver_data = { > >>>>> .has_vtsel = 1, > >>>>> .has_mic_bypass = 1, > >>>>> .has_dp_clk = 1, > >>>>> + .has_bgr_support = 1, > >>>>> }; > >>>>> > >>>>> struct fimd_context { > >>>>> @@ -226,6 +230,18 @@ static const uint32_t fimd_formats[] = { > >>>>> DRM_FORMAT_ARGB8888, > >>>>> }; > >>>>> > >>>>> +static const uint32_t fimd_extended_formats[] = { > >>>>> + DRM_FORMAT_C8, > >>>>> + DRM_FORMAT_XRGB1555, > >>>>> + DRM_FORMAT_XBGR1555, > >>>>> + DRM_FORMAT_RGB565, > >>>>> + DRM_FORMAT_BGR565, > >>>>> + DRM_FORMAT_XRGB8888, > >>>>> + DRM_FORMAT_XBGR8888, > >>>>> + DRM_FORMAT_ARGB8888, > >>>>> + DRM_FORMAT_ABGR8888, > >>>>> +}; > >>>>> + > >>>>> static const unsigned int capabilities[WINDOWS_NR] = { > >>>>> 0, > >>>>> EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, > >>>>> @@ -673,21 +689,25 @@ static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int win, > >>>>> val |= WINCONx_BYTSWP; > >>>>> break; > >>>>> case DRM_FORMAT_XRGB1555: > >>>>> + case DRM_FORMAT_XBGR1555: > >>>>> val |= WINCON0_BPPMODE_16BPP_1555; > >>>>> val |= WINCONx_HAWSWP; > >>>>> val |= WINCONx_BURSTLEN_16WORD; > >>>>> break; > >>>>> case DRM_FORMAT_RGB565: > >>>>> + case DRM_FORMAT_BGR565: > >>>>> val |= WINCON0_BPPMODE_16BPP_565; > >>>>> val |= WINCONx_HAWSWP; > >>>>> val |= WINCONx_BURSTLEN_16WORD; > >>>>> break; > >>>>> case DRM_FORMAT_XRGB8888: > >>>>> + case DRM_FORMAT_XBGR8888: > >>>>> val |= WINCON0_BPPMODE_24BPP_888; > >>>>> val |= WINCONx_WSWP; > >>>>> val |= WINCONx_BURSTLEN_16WORD; > >>>>> break; > >>>>> case DRM_FORMAT_ARGB8888: > >>>>> + case DRM_FORMAT_ABGR8888: > >>>>> default: > >>>>> val |= WINCON1_BPPMODE_25BPP_A1888; > >>>>> val |= WINCONx_WSWP; > >>>>> @@ -695,6 +715,18 @@ static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int win, > >>>>> break; > >>>>> } > >>>>> > >>>>> + switch (pixel_format) { > >>>>> + case DRM_FORMAT_XBGR1555: > >>>>> + case DRM_FORMAT_XBGR8888: > >>>>> + case DRM_FORMAT_ABGR8888: > >>>>> + case DRM_FORMAT_BGR565: > >>>>> + writel(WIN_RGB_ORDER_REVERSE, ctx->regs + WIN_RGB_ORDER(win)); > >>>>> + break; > >>>>> + default: > >>>>> + writel(WIN_RGB_ORDER_FORWARD, ctx->regs + WIN_RGB_ORDER(win)); > >>>>> + break; > >>>>> + } > >>>>> + > >>>>> /* > >>>>> * Setting dma-burst to 16Word causes permanent tearing for very small > >>>>> * buffers, e.g. cursor buffer. Burst Mode switching which based on > >>>>> @@ -1074,8 +1106,14 @@ static int fimd_bind(struct device *dev, struct device *master, void *data) > >>>>> ctx->drm_dev = drm_dev; > >>>>> > >>>>> for (i = 0; i < WINDOWS_NR; i++) { > >>>>> - ctx->configs[i].pixel_formats = fimd_formats; > >>>>> - ctx->configs[i].num_pixel_formats = ARRAY_SIZE(fimd_formats); > >>>>> + if (ctx->driver_data->has_bgr_support) { > >>>>> + ctx->configs[i].pixel_formats = fimd_extended_formats; > >>>>> + ctx->configs[i].num_pixel_formats = ARRAY_SIZE(fimd_extended_formats); > >>>>> + } else { > >>>>> + ctx->configs[i].pixel_formats = fimd_formats; > >>>>> + ctx->configs[i].num_pixel_formats = ARRAY_SIZE(fimd_formats); > >>>>> + } > >>>>> + > >>>>> ctx->configs[i].zpos = i; > >>>>> ctx->configs[i].type = fimd_win_types[i]; > >>>>> ctx->configs[i].capabilities = capabilities[i]; > >>>>> diff --git a/include/video/samsung_fimd.h b/include/video/samsung_fimd.h > >>>>> index c4a93ce1de48..e6966d187591 100644 > >>>>> --- a/include/video/samsung_fimd.h > >>>>> +++ b/include/video/samsung_fimd.h > >>>>> @@ -476,6 +476,10 @@ > >>>>> * 1111 -none- -none- -none- -none- -none- > >>>>> */ > >>>>> > >>>>> +#define WIN_RGB_ORDER(_win) (0x2020 + ((_win) * 4)) > >>>>> +#define WIN_RGB_ORDER_FORWARD (0 << 11) > >>>>> +#define WIN_RGB_ORDER_REVERSE (1 << 11) > >>>>> + > >>>>> /* FIMD Version 8 register offset definitions */ > >>>>> #define FIMD_V8_VIDTCON0 0x20010 > >>>>> #define FIMD_V8_VIDTCON1 0x20014 > >>> > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1DBCEC433F5 for ; Tue, 1 Mar 2022 20:15:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lYMmFMZCOaj7+BeTouTBvD+uNVYKlLZFffnGUjYtRN4=; b=GYecwzA1fnzg72 5G51iDtuV0AQyyXSM2sX9ynU6Bwha8zz2yyGJmNL/03Zk7KknK2DPStViD7qRYpjpT9wZbX5224AI C+UYL2ZxNT2LSmLAKpjlonMiUHg1f2u3tSPxRmcZOLvTSLn7siPzf+6Bw+s8snw33GjK/9iKz25YD mGYIJuQsklprBfF3yxhQdg0qHmA8KbVKvHn8dUZYbEgbTDZrUCyc5ESsxekNCAisCOrYWv2lhDBzH Y4q8RU+bpN1m7feuPxRVF7ADMvjkYjraBiUapLfb5snSgm+B4M8UuLnpa3IFfE2V9/wrwE9MjVAPB e5oc4XDo39mdpoFEtRpg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nP8sV-000NjY-QF; Tue, 01 Mar 2022 20:13:47 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nP8sR-000NhF-Js for linux-arm-kernel@lists.infradead.org; Tue, 01 Mar 2022 20:13:45 +0000 Received: by mail-wm1-x32e.google.com with SMTP id o18-20020a05600c4fd200b003826701f847so1324103wmq.4 for ; Tue, 01 Mar 2022 12:13:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=cNkSABONt1iilJgkq2YMVmO0Set3/v2FPmsLCi8Uqs4=; b=qiQAcVWEGHMTEbYpNdDeCnzKri1SumVGIwsTbmLRl+4F1NoaYSlLt1lMk8uLPMf8vf EWXqbZxsLcJicelqJcif5ezMG54km1qCSm5Tw/NmpUtZyYLrdsyys39XfxZ530OEwnON +VzVV2KdTRFlZBObGfvWyJk4w3m27Amx+dhX9SDrYwWr7PL9ENugZ1ew10hSxugB2YGH B+PToZWHN8O5wdHei+18mPyDtJ1ahxKNW+WZxBlooj0NpeLTPOE3VmfgEOOtu5m4n/kQ 95POXWtjgAE13h0NpsiUEwp2Ge4R7XC9abbIxkTOHO30a+cmmHz6xkc3bgXX+YlMNDb4 sytg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=cNkSABONt1iilJgkq2YMVmO0Set3/v2FPmsLCi8Uqs4=; b=X9fOFoOlnnR+LawuKrqMmuhpkKjezdTq5hgZQ7LsLLJxMov7Bwz6jWRkTOE7SvOGoe 9mfkRTIOMF6yXmrYIWETA/RqfY9ah0VF3NzYKmMiQSpw5mXMTu6R2AkjXBnwWNfe3IIf v/iJh3nkSsptNHEirU/FD9Oaxpj1omK4OzrT2yIeSqCLDMtPMCli5JyIJs6AP7y2EeEJ +DzVxoBJVU3KbWA2fPdjCMOgFlrYMzlbVcnGPzy75ZE+BP7zb+gOTqJn4HH3LO5MVdiV zfYdFSLFVn6iUjKi1KSAD45JhdY7msXwVNnKVnv7hbZ6aRHdyWIDcSRywY7dIaNGS/Im POWg== X-Gm-Message-State: AOAM531P366K2c7B+qrjThjCxVTpnlsJzdM5+h9kKXY6xsrxkXUF8Gh7 mlIDCBcw5ulYfBEcwtwTWuw= X-Google-Smtp-Source: ABdhPJzj4CEi9+klR+Zl+Z4BwpFJwMS67HUqMOKpBUhrAmFq7liQlA7Bpra6Dk99ZRQ8yq4l+tVq3w== X-Received: by 2002:a05:600c:1f14:b0:381:812d:7214 with SMTP id bd20-20020a05600c1f1400b00381812d7214mr5539531wmb.190.1646165613668; Tue, 01 Mar 2022 12:13:33 -0800 (PST) Received: from adroid (027-177-184-091.ip-addr.vsenet.de. [91.184.177.27]) by smtp.gmail.com with ESMTPSA id l13-20020a05600002ad00b001ea78a5df11sm17133591wry.1.2022.03.01.12.13.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Mar 2022 12:13:33 -0800 (PST) Date: Tue, 1 Mar 2022 21:13:30 +0100 From: Martin =?iso-8859-1?Q?J=FCcker?= To: Inki Dae Cc: Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , David Airlie , Daniel Vetter , Krzysztof Kozlowski , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Martin =?iso-8859-1?Q?J=FCcker?= Subject: Re: [PATCH] drm/exynos: fimd: add BGR support for exynos4/5 Message-ID: <20220301201330.GA12615@adroid> References: <20220129220153.GA33165@adroid> <5e18705f-79c1-18a7-57f2-74866abe21e9@samsung.com> <20220224232723.GA133007@adroid> <20220225093313.GA87542@adroid> <45867b37-1fb0-2f09-5961-6f099a1ed611@samsung.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <45867b37-1fb0-2f09-5961-6f099a1ed611@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220301_121343_695906_A6DB7C00 X-CRM114-Status: GOOD ( 63.55 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgSW5raSwKCk9uIFR1ZSwgTWFyIDAxLCAyMDIyIGF0IDA0OjUyOjIwUE0gKzA5MDAsIElua2kg RGFlIHdyb3RlOgo+IEhpIE1hcnRpbiwKPiAKPiAyMi4gMi4gMjUuIDE4OjMz7JeQIE1hcnRpbiBK w7xja2VyIOydtCjqsIApIOyTtCDquIA6Cj4gPiBIZWxsbyBJbmtpLAo+ID4gCj4gPiBPbiBGcmks IEZlYiAyNSwgMjAyMiBhdCAxMjo1Mjo1NlBNICswOTAwLCBJbmtpIERhZSB3cm90ZToKPiA+PiBI aSBNYXJ0aW4sCj4gPj4KPiA+PiAyMi4gMi4gMjUuIDA4OjI37JeQIE1hcnRpbiBKw7xja2VyIOyd tCjqsIApIOyTtCDquIA6Cj4gPj4+IEhlbGxvIElua2ksCj4gPj4+Cj4gPj4+IE9uIFRodSwgRmVi IDI0LCAyMDIyIGF0IDEwOjQxOjA0QU0gKzA5MDAsIElua2kgRGFlIHdyb3RlOgo+ID4+Pj4gSGkg TWFydGluLgo+ID4+Pj4KPiA+Pj4+IEkgZm91bmQgdGhhdCBleHlub3M0IGFuZCA1IGRhdGEgc2hl ZXQgaW5jbHVkZSBkb2N1bWVudGVkIHNhbWUgcmVnaXN0ZXIuCj4gPj4+PiBSR0JfT1JERVJfRSBm aWVsZCBvZiBWSURDT054IHJlZ2lzdGVycyB3aWxsIGRvIHNhbWUgdGhpbmcuCj4gPj4+Cj4gPj4+ IElmIEkgcmVhZCB0aGUgbWFudWFsIGNvcnJlY3RseSwgdGhpcyByZWdpc3RlciBjb21iaW5lZCB3 aXRoIHRoZQo+ID4+PiBSR0JfT1JERVJfTyBtYWtlcyBpdCBwb3NzaWJsZSB0byBtYXAgdGhlIHdo b2xlIFJHQiBpbnRlcmZhY2Ugb3V0cHV0IHRvIGEKPiA+Pj4gZGlmZmVyZW50IG9yZGVyLiBXaGF0 IG15IHBhdGNoIHByb3ZpZGVzIGlzIGEgd2F5IHRvIGNvbmZpZ3VyZSBlYWNoCj4gPj4+IGhhcmR3 YXJlIHBsYW5lIHNlcGFyYXRlbHkgd2hpbGUgbWFpbnRhaW5pbmcgYSBjb25zaXN0ZW50IG91dHB1 dCBvbiB0aGUKPiA+Pj4gUkdCIGludGVyZmFjZS4KPiA+Pj4KPiA+Pgo+ID4+IFVuZGVyc3Rvb2Qu IFlvdXIgcGF0Y2ggd2lsbCBhbGxvdyBCR1IgcGl4ZWwgb3JkZXIgcGVyIGEgcGxhbmUuIFNlZW1z IHRvIGJlIHVzZWZ1bCBiZWNhdXNlIGEgZnJhbWVidWZmZXIgd2l0aCBCR1IgcGl4ZWwgZm9ybWF0 IGNhbiBiZSBkaXNwbGF5ZWQgb24gc2NyZWVuIHdpdGhvdXQgYW55IGNvbG9yIHNwYWNlIGNvbnZl cnNpb24uIDopCj4gPj4KPiA+Pj4gSW1wbGVtZW50aW5nIHRoZSBSR0JfT1JERVJfTyBhbmQgRSB3 b3VsZCBuZWVkIHNvbWUgbG9naWMgdG8gbWFrZSBzdXJlCj4gPj4+IHRoYXQgYWxsIHBsYW5lcyBh cmUgYWx3YXlzIHVzaW5nIHRoZSBzYW1lIFJHQiBvcmRlci4KPiA+Pj4KPiA+Pj4+Cj4gPj4+PiBJ J20gbm90IHN1cmUgd2hldGhlciB0aGUgdXNlIG9mIHVuZG9jdW1lbnRlZCByZWdpc3RlciBpcyBz YWZlIG9yIG5vdCAtIG1heWJlIHNvbWUgSFcgYnVnIGV4aXN0cy4KPiA+Pj4KPiA+Pj4gSSBzZWUs IHRoYXQgbWFrZXMgc2Vuc2UuIFdvdWxkIGl0IGJlIHBvc3NpYmxlIHRoZW4gdG8gaW50cm9kdWNl IGEgbmV3Cj4gPj4+IGNvbXBhdGlibGUsIGUuZy4gc2Ftc3VuZyxleHlub3M0MjEwLWZpbWQtZXh0 IHdoaWNoIGNhbiBiZSB1c2VkIG9uIHRlc3RlZAo+ID4+Cj4gPj4gU2VlbXMgcHJvdmlkaW5nIGEg bmV3IGNvbXBhdGlibGUgaXMgbm90IGEgZ29vZCBpZGVhLgoKVGhpbmtpbmcgYWJvdXQgaXQgYWZ0 ZXJ3YXJkcywgSSBmdWxseSBhZ3JlZSA6KQoKPiA+Pgo+ID4+PiBkZXZpY2VzPyBJIGtub3cgdGhh dCBzb21lIG90aGVyIEdhbGF4eSBOb3RlIGFuZCBTIGRldmljZXMgd2l0aCB0aGUKPiA+Pj4gZXh5 bm9zNCBjaGlwIGhhdmUgdGhlIHNhbWUgcHJvYmxlbSAoYW5kIHNvbHV0aW9uKS4KPiA+Pgo+ID4+ IENvdWxkIHlvdSBnaXZlIG1lIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgc2FtZSBwcm9ibGVtIGFu ZCBpdHMgc29sdXRpb24gb24gdGhlIGRldmljZXM/Cj4gPj4gSXQgd291bGQgYmUgdXNlZnVsIGZv ciB1cyB0byBkZWNpZGUgdGhlIHVwc3RyZWFtIGRpcmVjdGlvbi4KPiA+Pgo+ID4+IElmIG5lY2Vz c2FyeSB0aGVuIHdlIG1heSBuZWVkIHRvIGNvbnRhY3QgSFcgZW5naW5lZXIgZm9yIGNsYXJpdHku Cj4gPiAKPiA+IEhlcmUgaXMgbXkgY3VycmVudCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRp b246Cj4gPiAKPiA+IFRoZSBpc3N1ZSBpcyByZWxhdGVkIHRvIEFuZHJvaWQgYW5kIGEgcmVjb3Zl cnkgaW1hZ2UgaGF2aW5nIGNvbmZsaWN0aW5nCj4gPiBwaXhlbCBmb3JtYXRzIG9uIHRoZSBzYW1l IGRldmljZS4gVGhlcmUgaXMgYSBzb2x1dGlvbiBpbiBSZXBsaWNhbnRbMV0KPiA+IGZvciB0aGlz IHVzaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBmaW1kIGRyaXZlciB0byBmb3JjZSB0aGUgcGl4ZWwg Zm9ybWF0Cj4gPiB0byBSR0Igb3IgQkdSLiBJdCdzIHVzaW5nIHRoZSBQTlJNT0RFIHJlZ2lzdGVy IG9uIFZJRENPTjAsIGJ1dCB0aGlzCj4gPiBzb2x1dGlvbiBuZWVkcyB0d28gc2VwYXJhdGUga2Vy bmVscyB0byBiZSBidWlsdCB0byBhZGQgdGhlIHBhcmFtZXRlciBhcwo+ID4gdGhlIGJvb3QgbG9h ZGVyIGlzIG5vdCBhZGp1c3RhYmxlLgo+ID4gCj4gPiBUaGlzIHdhcyBhbHNvIGRpc2N1c3NlZCBp biBkcmktZGV2ZWwgaXJjIGFuZCBpdCB3YXMgcHJvcG9zZWQgdG8gZXhwb3NlCj4gPiBib3RoIGZv cm1hdHMgYW5kIGZhaWwgdGhlIGF0b21pYyBjb21taXQgaWYgdXNlcnNwYWNlIHRyaWVkIHRvIHVz ZSBib3RoCj4gPiBSR0IgYW5kIEJHUiBmb3JtYXRzIGF0IHRoZSBzYW1lIHRpbWUuIFdpdGggdGhp cyBhcHByb2FjaCB0aGVyZSBzaG91bGQgYmUKPiA+IHNvbWV0aGluZyBvbiB0aGUgc2NyZWVuIGJ1 dCBpdCBtaWdodCBoYXBwZW4gdGhhdCBzb21lIHVzZXJzIGNhbid0IGRlYWwKPiA+IHdpdGggdGhl IGZhaWxpbmcgY29tbWl0cyBhcyBpdCdzIHJhdGhlciBkaWZmaWN1bHQgdG8gZmluZCB0aGUgY2F1 c2UgYW5kCj4gPiBmaXggaXQgb24gdGhlIGdvLgo+IAo+IFRoYW5rcyBmb3Igc2hhcmluZy4KPiAK PiA+IAo+ID4gQWZ0ZXIgdGhhdCBJIGFjY2lkZW50YWxseSBkaXNjb3ZlcmVkIHRoaXMgdW5kb2N1 bWVudGVkIHJlZ2lzdGVyIHdoaWxlCj4gPiByZWFkaW5nIHRoZSBvbGQgdmVuZG9yIHNvdXJjZXMg YW5kIGl0IHNlZW1zIHRoYXQgaXQgZml4ZXMgYWxsIHRoZQo+IAo+IEFyZSB0aGUgb2xkIHZlbmRv ciBzb3VyY2VzIHVzaW5nIHRoaXMgdW5kb2N1bWVudGVkIHJlZ2lzdGVyPyBJZiBzbyB0aGVuIHRo ZSB1c2Ugb2YgdGhlIHJlZ2lzdGVyIHdvdWxkIGJlIHNhZmUuCgpIZXJlIGFyZSBzb21lIGV4YW1w bGVzIGZvciB2ZW5kb3Igc291cmNlcyBjb2xsZWN0ZWQgYnkgS3J6eXN6dG9mIHRoYXQKbWFrZSB1 c2Ugb2YgdGhpcyByZWdpc3RlciBvbiBzZXZlcmFsIEV4eW5vczQvNSBkZXZpY2VzLgoKKiBHYWxh eHkgUzQgKEV4eW5vcyA1NDEwKSBbMV0KKiBTYW1zdW5nIEdhbGF4eSBUYWIgUzEwLjUgKEV4eW5v cyA1NDIwKSBbMl0KKiBHYWxheHkgTm90ZSAxMC4xIChFeHlub3MgNDQxMikgWzNdCiogR2FsYXh5 IFMyL1MzIChFeHlub3MgNDIxMC80NDEyKSBbNF0KCj4gCj4gPiBpc3N1ZXMuIEF0IGxlYXN0IGlm IHRoZXJlIGFyZSBubyBIVyBidWdzIGFzIHlvdSBtZW50aW9uZWQuCj4gCj4gSSB3aWxsIHRyeSB0 byBjb250YWN0IEhXIGVuZ2luZWVyIGFuZCBjaGVjayBpZiBubyBwcm9ibGVtLgoKSWYgeW91IGNv dWxkIGdldCBkZWZpbml0aXZlIGNvbmZpcm1hdGlvbiwgdGhhdCB3b3VsZCBiZSBncmVhdCBvZiBj b3Vyc2UuCgpUaGFuayB5b3UgZm9yIHlvdXIgZWZmb3J0LgoKS2luZCBSZWdhcmRzCk1hcnRpbgoK WzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9rcnprL2xpbnV4LXZlbmRvci1iYWNrdXAvYmxvYi9tb2tl ZS9hbmRyb2lkLTMuNC1zYW1zdW5nLWdhbGF4eS1zNC1pOTUwMC1leHlub3M1NDEwL2RyaXZlcnMv dmlkZW8vczNjLWZiLmMjTDExMjcKWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9rcnprL2xpbnV4LXZl bmRvci1iYWNrdXAvYmxvYi9tb2tlZS9hbmRyb2lkLTMuNC1zYW1zdW5nLWdhbGF4eS10YWItcy0x MC41LXNtLXQ4MDUtZXh5bm9zNTQyMC9kcml2ZXJzL3ZpZGVvL3MzYy1mYi5jI0wxNTMzClszXSBo dHRwczovL2dpdGh1Yi5jb20va3J6ay9saW51eC12ZW5kb3ItYmFja3VwL2Jsb2Ivc2Ftc3VuZy9n YWxheHktbm90ZS10YWItMTAuMS0yMDEyLWd0LW44MDEwLXA0bm90ZS1leHlub3M0NDEyLWR1bXAv ZHJpdmVycy92aWRlby9zYW1zdW5nL3MzY2ZiX29wcy5jI0wxNTk0Cls0XSBodHRwczovL2dpdGh1 Yi5jb20va3J6ay9saW51eC12ZW5kb3ItYmFja3VwL2Jsb2IvbGluZWFnZS9hbmRyb2lkLXNhbXN1 bmctZ2FsYXh5LWk5MTAwLWk5MzAwLWV4eW5vczQyMTAtZXh5bm9zNDQxMi9kcml2ZXJzL3ZpZGVv L3NhbXN1bmcvczNjZmJfb3BzLmMjTDE2MDAKCj4KPiBUaGFua3MsCj4gSW5raSBEYWUKPiAKPiA+ IAo+IAo+IAo+IAo+ID4gS2luZCBSZWdhcmRzCj4gPiBNYXJ0aW4KPiA+IAo+ID4gWzFdIGh0dHBz Oi8vcHJvdGVjdDIuZmlyZWV5ZS5jb20vdjEvdXJsP2s9ZDUxNWRiMzQtYjQ2ODMzNDgtZDUxNDUw N2ItNzRmZTQ4NWNjMzNjLTBlZTAwMWZmZGNhZmQ5MzImcT0xJmU9ODUxY2NmZWQtYjZmYS00Nzk0 LTg5ODktMjdlZjI4YmM3YWM2JnU9aHR0cHMlM0ElMkYlMkZnaXQucmVwbGljYW50LnVzJTJGcmVw bGljYW50LW5leHQlMkZrZXJuZWxfcmVwbGljYW50X2xpbnV4JTJGY29tbWl0JTJGJTNGaCUzRHJl cGxpY2FudC0xMSUyNmlkJTNEY2M1YTA2MTViNDBjZDVlZGUxZWI4N2E2MGRhYTUwMzMzNzAxYTEz NQo+ID4gCj4gPj4KPiA+PiBUaGFua3MsCj4gPj4gSW5raSBEYWUKPiA+Pgo+ID4+Pgo+ID4+Pj4K PiA+Pj4+IEFueXdheSwgSSdkIGxpa2UgdG8gcmVjb21tZW5kIHlvdSB0byB1c2UgZG9jdW1lbnRl ZCByZWdpc3RlciBvbmx5Lgo+ID4+Pj4KPiA+Pj4+IFNvcnJ5IGZvciBsYXRlIGFuZCB0aGFua3Ms Cj4gPj4+PiBJbmtpIERhZQo+ID4+Pgo+ID4+PiBLaW5kIFJlZ2FyZHMKPiA+Pj4gTWFydGluCj4g Pj4+Cj4gPj4+Pgo+ID4+Pj4gMjIuIDEuIDMwLiAwNzowMeyXkCBNYXJ0aW4gSsO8Y2tlciDsnbQo 6rCAKSDsk7Qg6riAOgo+ID4+Pj4+IEluIHRoZSBkb3duc3RyZWFtIGtlcm5lbHMgZm9yIGV4eW5v czQgYW5kIGV4eW5vczUgZGV2aWNlcywgdGhlcmUgaXMgYW4KPiA+Pj4+PiB1bmRvY3VtZW50ZWQg cmVnaXN0ZXIgdGhhdCBjb250cm9scyB0aGUgb3JkZXIgb2YgdGhlIFJHQiBvdXRwdXQuIEl0IGNh bgo+ID4+Pj4+IGJlIHNldCB0byBlaXRoZXIgbm9ybWFsIG9yZGVyIG9yIHJldmVyc2VkLCB3aGlj aCBlbmFibGVzIEJHUiBzdXBwb3J0IGZvcgo+ID4+Pj4+IHRob3NlIFNvQ3MuCj4gPj4+Pj4KPiA+ Pj4+PiBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIEJHUiBzdXBwb3J0IGZvciBhbGwgdGhlIFNvQ3Mg dGhhdCB3ZXJlIGZvdW5kIHRvCj4gPj4+Pj4gaGF2ZSBhdCBsZWFzdCBvbmUgZGV2aWNlIHdpdGgg dGhpcyBsb2dpYyBpbiB0aGUgY29ycmVzcG9uZGluZyBkb3duc3RyZWFtCj4gPj4+Pj4ga2VybmVs cy4KPiA+Pj4+Pgo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKw7xja2VyIDxtYXJ0aW4u anVlY2tlckBnbWFpbC5jb20+Cj4gPj4+Pj4gLS0tCj4gPj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV9maW1kLmMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrLS0KPiA+ Pj4+PiAgaW5jbHVkZS92aWRlby9zYW1zdW5nX2ZpbWQuaCAgICAgICAgICAgICB8ICA0ICsrKwo+ ID4+Pj4+ICAyIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p Cj4gPj4+Pj4KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3NfZHJtX2ZpbWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMK PiA+Pj4+PiBpbmRleCBjNzM1ZTUzOTM5ZDguLmNiNjMyMzYwYzk2OCAxMDA2NDQKPiA+Pj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZmltZC5jCj4gPj4+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2ZpbWQuYwo+ID4+Pj4+IEBAIC0x MDksNiArMTA5LDcgQEAgc3RydWN0IGZpbWRfZHJpdmVyX2RhdGEgewo+ID4+Pj4+ICAJdW5zaWdu ZWQgaW50IGhhc19kcF9jbGs6MTsKPiA+Pj4+PiAgCXVuc2lnbmVkIGludCBoYXNfaHdfdHJpZ2dl cjoxOwo+ID4+Pj4+ICAJdW5zaWduZWQgaW50IGhhc190cmlnZ2VyX3Blcl90ZToxOwo+ID4+Pj4+ ICsJdW5zaWduZWQgaW50IGhhc19iZ3Jfc3VwcG9ydDoxOwo+ID4+Pj4+ICB9Owo+ID4+Pj4+ICAK PiA+Pj4+PiAgc3RhdGljIHN0cnVjdCBmaW1kX2RyaXZlcl9kYXRhIHMzYzY0eHhfZmltZF9kcml2 ZXJfZGF0YSA9IHsKPiA+Pj4+PiBAQCAtMTM4LDYgKzEzOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZmlt ZF9kcml2ZXJfZGF0YSBleHlub3M0X2ZpbWRfZHJpdmVyX2RhdGEgPSB7Cj4gPj4+Pj4gIAkubGNk YmxrX2J5cGFzc19zaGlmdCA9IDEsCj4gPj4+Pj4gIAkuaGFzX3NoYWRvd2NvbiA9IDEsCj4gPj4+ Pj4gIAkuaGFzX3Z0c2VsID0gMSwKPiA+Pj4+PiArCS5oYXNfYmdyX3N1cHBvcnQgPSAxLAo+ID4+ Pj4+ICB9Owo+ID4+Pj4+ICAKPiA+Pj4+PiAgc3RhdGljIHN0cnVjdCBmaW1kX2RyaXZlcl9kYXRh IGV4eW5vczVfZmltZF9kcml2ZXJfZGF0YSA9IHsKPiA+Pj4+PiBAQCAtMTQ5LDYgKzE1MSw3IEBA IHN0YXRpYyBzdHJ1Y3QgZmltZF9kcml2ZXJfZGF0YSBleHlub3M1X2ZpbWRfZHJpdmVyX2RhdGEg PSB7Cj4gPj4+Pj4gIAkuaGFzX3ZpZG91dGNvbiA9IDEsCj4gPj4+Pj4gIAkuaGFzX3Z0c2VsID0g MSwKPiA+Pj4+PiAgCS5oYXNfZHBfY2xrID0gMSwKPiA+Pj4+PiArCS5oYXNfYmdyX3N1cHBvcnQg PSAxLAo+ID4+Pj4+ICB9Owo+ID4+Pj4+ICAKPiA+Pj4+PiAgc3RhdGljIHN0cnVjdCBmaW1kX2Ry aXZlcl9kYXRhIGV4eW5vczU0MjBfZmltZF9kcml2ZXJfZGF0YSA9IHsKPiA+Pj4+PiBAQCAtMTYy LDYgKzE2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZmltZF9kcml2ZXJfZGF0YSBleHlub3M1NDIwX2Zp bWRfZHJpdmVyX2RhdGEgPSB7Cj4gPj4+Pj4gIAkuaGFzX3Z0c2VsID0gMSwKPiA+Pj4+PiAgCS5o YXNfbWljX2J5cGFzcyA9IDEsCj4gPj4+Pj4gIAkuaGFzX2RwX2NsayA9IDEsCj4gPj4+Pj4gKwku aGFzX2Jncl9zdXBwb3J0ID0gMSwKPiA+Pj4+PiAgfTsKPiA+Pj4+PiAgCj4gPj4+Pj4gIHN0cnVj dCBmaW1kX2NvbnRleHQgewo+ID4+Pj4+IEBAIC0yMjYsNiArMjMwLDE4IEBAIHN0YXRpYyBjb25z dCB1aW50MzJfdCBmaW1kX2Zvcm1hdHNbXSA9IHsKPiA+Pj4+PiAgCURSTV9GT1JNQVRfQVJHQjg4 ODgsCj4gPj4+Pj4gIH07Cj4gPj4+Pj4gIAo+ID4+Pj4+ICtzdGF0aWMgY29uc3QgdWludDMyX3Qg ZmltZF9leHRlbmRlZF9mb3JtYXRzW10gPSB7Cj4gPj4+Pj4gKwlEUk1fRk9STUFUX0M4LAo+ID4+ Pj4+ICsJRFJNX0ZPUk1BVF9YUkdCMTU1NSwKPiA+Pj4+PiArCURSTV9GT1JNQVRfWEJHUjE1NTUs Cj4gPj4+Pj4gKwlEUk1fRk9STUFUX1JHQjU2NSwKPiA+Pj4+PiArCURSTV9GT1JNQVRfQkdSNTY1 LAo+ID4+Pj4+ICsJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiA+Pj4+PiArCURSTV9GT1JNQVRfWEJH Ujg4ODgsCj4gPj4+Pj4gKwlEUk1fRk9STUFUX0FSR0I4ODg4LAo+ID4+Pj4+ICsJRFJNX0ZPUk1B VF9BQkdSODg4OCwKPiA+Pj4+PiArfTsKPiA+Pj4+PiArCj4gPj4+Pj4gIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBpbnQgY2FwYWJpbGl0aWVzW1dJTkRPV1NfTlJdID0gewo+ID4+Pj4+ICAJMCwKPiA+ Pj4+PiAgCUVYWU5PU19EUk1fUExBTkVfQ0FQX1dJTl9CTEVORCB8IEVYWU5PU19EUk1fUExBTkVf Q0FQX1BJWF9CTEVORCwKPiA+Pj4+PiBAQCAtNjczLDIxICs2ODksMjUgQEAgc3RhdGljIHZvaWQg ZmltZF93aW5fc2V0X3BpeGZtdChzdHJ1Y3QgZmltZF9jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGlu dCB3aW4sCj4gPj4+Pj4gIAkJdmFsIHw9IFdJTkNPTnhfQllUU1dQOwo+ID4+Pj4+ICAJCWJyZWFr Owo+ID4+Pj4+ICAJY2FzZSBEUk1fRk9STUFUX1hSR0IxNTU1Ogo+ID4+Pj4+ICsJY2FzZSBEUk1f Rk9STUFUX1hCR1IxNTU1Ogo+ID4+Pj4+ICAJCXZhbCB8PSBXSU5DT04wX0JQUE1PREVfMTZCUFBf MTU1NTsKPiA+Pj4+PiAgCQl2YWwgfD0gV0lOQ09OeF9IQVdTV1A7Cj4gPj4+Pj4gIAkJdmFsIHw9 IFdJTkNPTnhfQlVSU1RMRU5fMTZXT1JEOwo+ID4+Pj4+ICAJCWJyZWFrOwo+ID4+Pj4+ICAJY2Fz ZSBEUk1fRk9STUFUX1JHQjU2NToKPiA+Pj4+PiArCWNhc2UgRFJNX0ZPUk1BVF9CR1I1NjU6Cj4g Pj4+Pj4gIAkJdmFsIHw9IFdJTkNPTjBfQlBQTU9ERV8xNkJQUF81NjU7Cj4gPj4+Pj4gIAkJdmFs IHw9IFdJTkNPTnhfSEFXU1dQOwo+ID4+Pj4+ICAJCXZhbCB8PSBXSU5DT054X0JVUlNUTEVOXzE2 V09SRDsKPiA+Pj4+PiAgCQlicmVhazsKPiA+Pj4+PiAgCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4 ODoKPiA+Pj4+PiArCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKPiA+Pj4+PiAgCQl2YWwgfD0g V0lOQ09OMF9CUFBNT0RFXzI0QlBQXzg4ODsKPiA+Pj4+PiAgCQl2YWwgfD0gV0lOQ09OeF9XU1dQ Owo+ID4+Pj4+ICAJCXZhbCB8PSBXSU5DT054X0JVUlNUTEVOXzE2V09SRDsKPiA+Pj4+PiAgCQli cmVhazsKPiA+Pj4+PiAgCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiA+Pj4+PiArCWNhc2Ug RFJNX0ZPUk1BVF9BQkdSODg4ODoKPiA+Pj4+PiAgCWRlZmF1bHQ6Cj4gPj4+Pj4gIAkJdmFsIHw9 IFdJTkNPTjFfQlBQTU9ERV8yNUJQUF9BMTg4ODsKPiA+Pj4+PiAgCQl2YWwgfD0gV0lOQ09OeF9X U1dQOwo+ID4+Pj4+IEBAIC02OTUsNiArNzE1LDE4IEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX3Nl dF9waXhmbXQoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQgd2luLAo+ID4+ Pj4+ICAJCWJyZWFrOwo+ID4+Pj4+ICAJfQo+ID4+Pj4+ICAKPiA+Pj4+PiArCXN3aXRjaCAocGl4 ZWxfZm9ybWF0KSB7Cj4gPj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjE1NTU6Cj4gPj4+Pj4g KwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gPj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfQUJH Ujg4ODg6Cj4gPj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfQkdSNTY1Ogo+ID4+Pj4+ICsJCXdyaXRl bChXSU5fUkdCX09SREVSX1JFVkVSU0UsIGN0eC0+cmVncyArIFdJTl9SR0JfT1JERVIod2luKSk7 Cj4gPj4+Pj4gKwkJYnJlYWs7Cj4gPj4+Pj4gKwlkZWZhdWx0Ogo+ID4+Pj4+ICsJCXdyaXRlbChX SU5fUkdCX09SREVSX0ZPUldBUkQsIGN0eC0+cmVncyArIFdJTl9SR0JfT1JERVIod2luKSk7Cj4g Pj4+Pj4gKwkJYnJlYWs7Cj4gPj4+Pj4gKwl9Cj4gPj4+Pj4gKwo+ID4+Pj4+ICAJLyoKPiA+Pj4+ PiAgCSAqIFNldHRpbmcgZG1hLWJ1cnN0IHRvIDE2V29yZCBjYXVzZXMgcGVybWFuZW50IHRlYXJp bmcgZm9yIHZlcnkgc21hbGwKPiA+Pj4+PiAgCSAqIGJ1ZmZlcnMsIGUuZy4gY3Vyc29yIGJ1ZmZl ci4gQnVyc3QgTW9kZSBzd2l0Y2hpbmcgd2hpY2ggYmFzZWQgb24KPiA+Pj4+PiBAQCAtMTA3NCw4 ICsxMTA2LDE0IEBAIHN0YXRpYyBpbnQgZmltZF9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQo+ID4+Pj4+ICAJY3R4LT5kcm1fZGV2ID0g ZHJtX2RldjsKPiA+Pj4+PiAgCj4gPj4+Pj4gIAlmb3IgKGkgPSAwOyBpIDwgV0lORE9XU19OUjsg aSsrKSB7Cj4gPj4+Pj4gLQkJY3R4LT5jb25maWdzW2ldLnBpeGVsX2Zvcm1hdHMgPSBmaW1kX2Zv cm1hdHM7Cj4gPj4+Pj4gLQkJY3R4LT5jb25maWdzW2ldLm51bV9waXhlbF9mb3JtYXRzID0gQVJS QVlfU0laRShmaW1kX2Zvcm1hdHMpOwo+ID4+Pj4+ICsJCWlmIChjdHgtPmRyaXZlcl9kYXRhLT5o YXNfYmdyX3N1cHBvcnQpIHsKPiA+Pj4+PiArCQkJY3R4LT5jb25maWdzW2ldLnBpeGVsX2Zvcm1h dHMgPSBmaW1kX2V4dGVuZGVkX2Zvcm1hdHM7Cj4gPj4+Pj4gKwkJCWN0eC0+Y29uZmlnc1tpXS5u dW1fcGl4ZWxfZm9ybWF0cyA9IEFSUkFZX1NJWkUoZmltZF9leHRlbmRlZF9mb3JtYXRzKTsKPiA+ Pj4+PiArCQl9IGVsc2Ugewo+ID4+Pj4+ICsJCQljdHgtPmNvbmZpZ3NbaV0ucGl4ZWxfZm9ybWF0 cyA9IGZpbWRfZm9ybWF0czsKPiA+Pj4+PiArCQkJY3R4LT5jb25maWdzW2ldLm51bV9waXhlbF9m b3JtYXRzID0gQVJSQVlfU0laRShmaW1kX2Zvcm1hdHMpOwo+ID4+Pj4+ICsJCX0KPiA+Pj4+PiAr Cj4gPj4+Pj4gIAkJY3R4LT5jb25maWdzW2ldLnpwb3MgPSBpOwo+ID4+Pj4+ICAJCWN0eC0+Y29u Zmlnc1tpXS50eXBlID0gZmltZF93aW5fdHlwZXNbaV07Cj4gPj4+Pj4gIAkJY3R4LT5jb25maWdz W2ldLmNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdGllc1tpXTsKPiA+Pj4+PiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS92aWRlby9zYW1zdW5nX2ZpbWQuaCBiL2luY2x1ZGUvdmlkZW8vc2Ftc3VuZ19maW1k LmgKPiA+Pj4+PiBpbmRleCBjNGE5M2NlMWRlNDguLmU2OTY2ZDE4NzU5MSAxMDA2NDQKPiA+Pj4+ PiAtLS0gYS9pbmNsdWRlL3ZpZGVvL3NhbXN1bmdfZmltZC5oCj4gPj4+Pj4gKysrIGIvaW5jbHVk ZS92aWRlby9zYW1zdW5nX2ZpbWQuaAo+ID4+Pj4+IEBAIC00NzYsNiArNDc2LDEwIEBACj4gPj4+ Pj4gICAqIDExMTEJCS1ub25lLQkgLW5vbmUtICAgLW5vbmUtICAgLW5vbmUtICAgIC1ub25lLQo+ ID4+Pj4+ICAqLwo+ID4+Pj4+ICAKPiA+Pj4+PiArI2RlZmluZSBXSU5fUkdCX09SREVSKF93aW4p CQkJKDB4MjAyMCArICgoX3dpbikgKiA0KSkKPiA+Pj4+PiArI2RlZmluZSBXSU5fUkdCX09SREVS X0ZPUldBUkQJCQkoMCA8PCAxMSkKPiA+Pj4+PiArI2RlZmluZSBXSU5fUkdCX09SREVSX1JFVkVS U0UJCQkoMSA8PCAxMSkKPiA+Pj4+PiArCj4gPj4+Pj4gIC8qIEZJTUQgVmVyc2lvbiA4IHJlZ2lz dGVyIG9mZnNldCBkZWZpbml0aW9ucyAqLwo+ID4+Pj4+ICAjZGVmaW5lIEZJTURfVjhfVklEVENP TjAJMHgyMDAxMAo+ID4+Pj4+ICAjZGVmaW5lIEZJTURfVjhfVklEVENPTjEJMHgyMDAxNAo+ID4+ Pgo+ID4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hcm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A7DF1C433EF for ; Wed, 2 Mar 2022 08:54:51 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E614810EE72; Wed, 2 Mar 2022 08:54:43 +0000 (UTC) Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7EA5F10E1A1 for ; Tue, 1 Mar 2022 20:13:35 +0000 (UTC) Received: by mail-wm1-x333.google.com with SMTP id i66so1946489wma.5 for ; Tue, 01 Mar 2022 12:13:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=cNkSABONt1iilJgkq2YMVmO0Set3/v2FPmsLCi8Uqs4=; b=qiQAcVWEGHMTEbYpNdDeCnzKri1SumVGIwsTbmLRl+4F1NoaYSlLt1lMk8uLPMf8vf EWXqbZxsLcJicelqJcif5ezMG54km1qCSm5Tw/NmpUtZyYLrdsyys39XfxZ530OEwnON +VzVV2KdTRFlZBObGfvWyJk4w3m27Amx+dhX9SDrYwWr7PL9ENugZ1ew10hSxugB2YGH B+PToZWHN8O5wdHei+18mPyDtJ1ahxKNW+WZxBlooj0NpeLTPOE3VmfgEOOtu5m4n/kQ 95POXWtjgAE13h0NpsiUEwp2Ge4R7XC9abbIxkTOHO30a+cmmHz6xkc3bgXX+YlMNDb4 sytg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=cNkSABONt1iilJgkq2YMVmO0Set3/v2FPmsLCi8Uqs4=; b=rGJeTq0Yho5DQVPB84k54LcDRzRNaWdyYkJYxZzSksPscGYfXXGsNG4uxJXGFBAPd4 IbltqhznWxpl3A1XofwsLCcoqG4yQYYWp8rAUy/w9b1duQt0G8A2s8SDbXOwN+B+jBmh T/oooKXSq2OqG6EcwEeHZUDChFDPKOm45aD1dCzNmRdxE8snffXquczpyX1h0LkoSL+a ujS9e6zqkaVedm/Qyk64oAZYjdRALQiAYeeFl7EIsX7l1/ukXG00swF6l+4nOl4Y9/X+ WoqMGk/ea5pdKxFjj6Do24URBCQD+D4gkhKg3D6QTtCgr6EqefZooHSdxfsJHgApcO42 7wDw== X-Gm-Message-State: AOAM530vQn0boCeaf0czS5U8Eaf1IhAvnsV9Damx3bnxwzNOwAXKTOE1 QwDCXW7rRrwNejfChUW3M7M= X-Google-Smtp-Source: ABdhPJzj4CEi9+klR+Zl+Z4BwpFJwMS67HUqMOKpBUhrAmFq7liQlA7Bpra6Dk99ZRQ8yq4l+tVq3w== X-Received: by 2002:a05:600c:1f14:b0:381:812d:7214 with SMTP id bd20-20020a05600c1f1400b00381812d7214mr5539531wmb.190.1646165613668; Tue, 01 Mar 2022 12:13:33 -0800 (PST) Received: from adroid (027-177-184-091.ip-addr.vsenet.de. [91.184.177.27]) by smtp.gmail.com with ESMTPSA id l13-20020a05600002ad00b001ea78a5df11sm17133591wry.1.2022.03.01.12.13.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Mar 2022 12:13:33 -0800 (PST) Date: Tue, 1 Mar 2022 21:13:30 +0100 From: Martin =?iso-8859-1?Q?J=FCcker?= To: Inki Dae Subject: Re: [PATCH] drm/exynos: fimd: add BGR support for exynos4/5 Message-ID: <20220301201330.GA12615@adroid> References: <20220129220153.GA33165@adroid> <5e18705f-79c1-18a7-57f2-74866abe21e9@samsung.com> <20220224232723.GA133007@adroid> <20220225093313.GA87542@adroid> <45867b37-1fb0-2f09-5961-6f099a1ed611@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <45867b37-1fb0-2f09-5961-6f099a1ed611@samsung.com> X-Mailman-Approved-At: Wed, 02 Mar 2022 08:54:41 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-samsung-soc@vger.kernel.org, Joonyoung Shim , Krzysztof Kozlowski , David Airlie , Seung-Woo Kim , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Kyungmin Park , Martin =?iso-8859-1?Q?J=FCcker?= , linux-arm-kernel@lists.infradead.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Inki, On Tue, Mar 01, 2022 at 04:52:20PM +0900, Inki Dae wrote: > Hi Martin, > > 22. 2. 25. 18:33에 Martin Jücker 이(가) 쓴 글: > > Hello Inki, > > > > On Fri, Feb 25, 2022 at 12:52:56PM +0900, Inki Dae wrote: > >> Hi Martin, > >> > >> 22. 2. 25. 08:27에 Martin Jücker 이(가) 쓴 글: > >>> Hello Inki, > >>> > >>> On Thu, Feb 24, 2022 at 10:41:04AM +0900, Inki Dae wrote: > >>>> Hi Martin. > >>>> > >>>> I found that exynos4 and 5 data sheet include documented same register. > >>>> RGB_ORDER_E field of VIDCONx registers will do same thing. > >>> > >>> If I read the manual correctly, this register combined with the > >>> RGB_ORDER_O makes it possible to map the whole RGB interface output to a > >>> different order. What my patch provides is a way to configure each > >>> hardware plane separately while maintaining a consistent output on the > >>> RGB interface. > >>> > >> > >> Understood. Your patch will allow BGR pixel order per a plane. Seems to be useful because a framebuffer with BGR pixel format can be displayed on screen without any color space conversion. :) > >> > >>> Implementing the RGB_ORDER_O and E would need some logic to make sure > >>> that all planes are always using the same RGB order. > >>> > >>>> > >>>> I'm not sure whether the use of undocumented register is safe or not - maybe some HW bug exists. > >>> > >>> I see, that makes sense. Would it be possible then to introduce a new > >>> compatible, e.g. samsung,exynos4210-fimd-ext which can be used on tested > >> > >> Seems providing a new compatible is not a good idea. Thinking about it afterwards, I fully agree :) > >> > >>> devices? I know that some other Galaxy Note and S devices with the > >>> exynos4 chip have the same problem (and solution). > >> > >> Could you give me more details about the same problem and its solution on the devices? > >> It would be useful for us to decide the upstream direction. > >> > >> If necessary then we may need to contact HW engineer for clarity. > > > > Here is my current understanding of the situation: > > > > The issue is related to Android and a recovery image having conflicting > > pixel formats on the same device. There is a solution in Replicant[1] > > for this using parameters for the fimd driver to force the pixel format > > to RGB or BGR. It's using the PNRMODE register on VIDCON0, but this > > solution needs two separate kernels to be built to add the parameter as > > the boot loader is not adjustable. > > > > This was also discussed in dri-devel irc and it was proposed to expose > > both formats and fail the atomic commit if userspace tried to use both > > RGB and BGR formats at the same time. With this approach there should be > > something on the screen but it might happen that some users can't deal > > with the failing commits as it's rather difficult to find the cause and > > fix it on the go. > > Thanks for sharing. > > > > > After that I accidentally discovered this undocumented register while > > reading the old vendor sources and it seems that it fixes all the > > Are the old vendor sources using this undocumented register? If so then the use of the register would be safe. Here are some examples for vendor sources collected by Krzysztof that make use of this register on several Exynos4/5 devices. * Galaxy S4 (Exynos 5410) [1] * Samsung Galaxy Tab S10.5 (Exynos 5420) [2] * Galaxy Note 10.1 (Exynos 4412) [3] * Galaxy S2/S3 (Exynos 4210/4412) [4] > > > issues. At least if there are no HW bugs as you mentioned. > > I will try to contact HW engineer and check if no problem. If you could get definitive confirmation, that would be great of course. Thank you for your effort. Kind Regards Martin [1] https://github.com/krzk/linux-vendor-backup/blob/mokee/android-3.4-samsung-galaxy-s4-i9500-exynos5410/drivers/video/s3c-fb.c#L1127 [2] https://github.com/krzk/linux-vendor-backup/blob/mokee/android-3.4-samsung-galaxy-tab-s-10.5-sm-t805-exynos5420/drivers/video/s3c-fb.c#L1533 [3] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-note-tab-10.1-2012-gt-n8010-p4note-exynos4412-dump/drivers/video/samsung/s3cfb_ops.c#L1594 [4] https://github.com/krzk/linux-vendor-backup/blob/lineage/android-samsung-galaxy-i9100-i9300-exynos4210-exynos4412/drivers/video/samsung/s3cfb_ops.c#L1600 > > Thanks, > Inki Dae > > > > > > > > Kind Regards > > Martin > > > > [1] https://protect2.fireeye.com/v1/url?k=d515db34-b4683348-d514507b-74fe485cc33c-0ee001ffdcafd932&q=1&e=851ccfed-b6fa-4794-8989-27ef28bc7ac6&u=https%3A%2F%2Fgit.replicant.us%2Freplicant-next%2Fkernel_replicant_linux%2Fcommit%2F%3Fh%3Dreplicant-11%26id%3Dcc5a0615b40cd5ede1eb87a60daa50333701a135 > > > >> > >> Thanks, > >> Inki Dae > >> > >>> > >>>> > >>>> Anyway, I'd like to recommend you to use documented register only. > >>>> > >>>> Sorry for late and thanks, > >>>> Inki Dae > >>> > >>> Kind Regards > >>> Martin > >>> > >>>> > >>>> 22. 1. 30. 07:01에 Martin Jücker 이(가) 쓴 글: > >>>>> In the downstream kernels for exynos4 and exynos5 devices, there is an > >>>>> undocumented register that controls the order of the RGB output. It can > >>>>> be set to either normal order or reversed, which enables BGR support for > >>>>> those SoCs. > >>>>> > >>>>> This patch enables the BGR support for all the SoCs that were found to > >>>>> have at least one device with this logic in the corresponding downstream > >>>>> kernels. > >>>>> > >>>>> Signed-off-by: Martin Jücker > >>>>> --- > >>>>> drivers/gpu/drm/exynos/exynos_drm_fimd.c | 42 ++++++++++++++++++++++-- > >>>>> include/video/samsung_fimd.h | 4 +++ > >>>>> 2 files changed, 44 insertions(+), 2 deletions(-) > >>>>> > >>>>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > >>>>> index c735e53939d8..cb632360c968 100644 > >>>>> --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c > >>>>> +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > >>>>> @@ -109,6 +109,7 @@ struct fimd_driver_data { > >>>>> unsigned int has_dp_clk:1; > >>>>> unsigned int has_hw_trigger:1; > >>>>> unsigned int has_trigger_per_te:1; > >>>>> + unsigned int has_bgr_support:1; > >>>>> }; > >>>>> > >>>>> static struct fimd_driver_data s3c64xx_fimd_driver_data = { > >>>>> @@ -138,6 +139,7 @@ static struct fimd_driver_data exynos4_fimd_driver_data = { > >>>>> .lcdblk_bypass_shift = 1, > >>>>> .has_shadowcon = 1, > >>>>> .has_vtsel = 1, > >>>>> + .has_bgr_support = 1, > >>>>> }; > >>>>> > >>>>> static struct fimd_driver_data exynos5_fimd_driver_data = { > >>>>> @@ -149,6 +151,7 @@ static struct fimd_driver_data exynos5_fimd_driver_data = { > >>>>> .has_vidoutcon = 1, > >>>>> .has_vtsel = 1, > >>>>> .has_dp_clk = 1, > >>>>> + .has_bgr_support = 1, > >>>>> }; > >>>>> > >>>>> static struct fimd_driver_data exynos5420_fimd_driver_data = { > >>>>> @@ -162,6 +165,7 @@ static struct fimd_driver_data exynos5420_fimd_driver_data = { > >>>>> .has_vtsel = 1, > >>>>> .has_mic_bypass = 1, > >>>>> .has_dp_clk = 1, > >>>>> + .has_bgr_support = 1, > >>>>> }; > >>>>> > >>>>> struct fimd_context { > >>>>> @@ -226,6 +230,18 @@ static const uint32_t fimd_formats[] = { > >>>>> DRM_FORMAT_ARGB8888, > >>>>> }; > >>>>> > >>>>> +static const uint32_t fimd_extended_formats[] = { > >>>>> + DRM_FORMAT_C8, > >>>>> + DRM_FORMAT_XRGB1555, > >>>>> + DRM_FORMAT_XBGR1555, > >>>>> + DRM_FORMAT_RGB565, > >>>>> + DRM_FORMAT_BGR565, > >>>>> + DRM_FORMAT_XRGB8888, > >>>>> + DRM_FORMAT_XBGR8888, > >>>>> + DRM_FORMAT_ARGB8888, > >>>>> + DRM_FORMAT_ABGR8888, > >>>>> +}; > >>>>> + > >>>>> static const unsigned int capabilities[WINDOWS_NR] = { > >>>>> 0, > >>>>> EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, > >>>>> @@ -673,21 +689,25 @@ static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int win, > >>>>> val |= WINCONx_BYTSWP; > >>>>> break; > >>>>> case DRM_FORMAT_XRGB1555: > >>>>> + case DRM_FORMAT_XBGR1555: > >>>>> val |= WINCON0_BPPMODE_16BPP_1555; > >>>>> val |= WINCONx_HAWSWP; > >>>>> val |= WINCONx_BURSTLEN_16WORD; > >>>>> break; > >>>>> case DRM_FORMAT_RGB565: > >>>>> + case DRM_FORMAT_BGR565: > >>>>> val |= WINCON0_BPPMODE_16BPP_565; > >>>>> val |= WINCONx_HAWSWP; > >>>>> val |= WINCONx_BURSTLEN_16WORD; > >>>>> break; > >>>>> case DRM_FORMAT_XRGB8888: > >>>>> + case DRM_FORMAT_XBGR8888: > >>>>> val |= WINCON0_BPPMODE_24BPP_888; > >>>>> val |= WINCONx_WSWP; > >>>>> val |= WINCONx_BURSTLEN_16WORD; > >>>>> break; > >>>>> case DRM_FORMAT_ARGB8888: > >>>>> + case DRM_FORMAT_ABGR8888: > >>>>> default: > >>>>> val |= WINCON1_BPPMODE_25BPP_A1888; > >>>>> val |= WINCONx_WSWP; > >>>>> @@ -695,6 +715,18 @@ static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int win, > >>>>> break; > >>>>> } > >>>>> > >>>>> + switch (pixel_format) { > >>>>> + case DRM_FORMAT_XBGR1555: > >>>>> + case DRM_FORMAT_XBGR8888: > >>>>> + case DRM_FORMAT_ABGR8888: > >>>>> + case DRM_FORMAT_BGR565: > >>>>> + writel(WIN_RGB_ORDER_REVERSE, ctx->regs + WIN_RGB_ORDER(win)); > >>>>> + break; > >>>>> + default: > >>>>> + writel(WIN_RGB_ORDER_FORWARD, ctx->regs + WIN_RGB_ORDER(win)); > >>>>> + break; > >>>>> + } > >>>>> + > >>>>> /* > >>>>> * Setting dma-burst to 16Word causes permanent tearing for very small > >>>>> * buffers, e.g. cursor buffer. Burst Mode switching which based on > >>>>> @@ -1074,8 +1106,14 @@ static int fimd_bind(struct device *dev, struct device *master, void *data) > >>>>> ctx->drm_dev = drm_dev; > >>>>> > >>>>> for (i = 0; i < WINDOWS_NR; i++) { > >>>>> - ctx->configs[i].pixel_formats = fimd_formats; > >>>>> - ctx->configs[i].num_pixel_formats = ARRAY_SIZE(fimd_formats); > >>>>> + if (ctx->driver_data->has_bgr_support) { > >>>>> + ctx->configs[i].pixel_formats = fimd_extended_formats; > >>>>> + ctx->configs[i].num_pixel_formats = ARRAY_SIZE(fimd_extended_formats); > >>>>> + } else { > >>>>> + ctx->configs[i].pixel_formats = fimd_formats; > >>>>> + ctx->configs[i].num_pixel_formats = ARRAY_SIZE(fimd_formats); > >>>>> + } > >>>>> + > >>>>> ctx->configs[i].zpos = i; > >>>>> ctx->configs[i].type = fimd_win_types[i]; > >>>>> ctx->configs[i].capabilities = capabilities[i]; > >>>>> diff --git a/include/video/samsung_fimd.h b/include/video/samsung_fimd.h > >>>>> index c4a93ce1de48..e6966d187591 100644 > >>>>> --- a/include/video/samsung_fimd.h > >>>>> +++ b/include/video/samsung_fimd.h > >>>>> @@ -476,6 +476,10 @@ > >>>>> * 1111 -none- -none- -none- -none- -none- > >>>>> */ > >>>>> > >>>>> +#define WIN_RGB_ORDER(_win) (0x2020 + ((_win) * 4)) > >>>>> +#define WIN_RGB_ORDER_FORWARD (0 << 11) > >>>>> +#define WIN_RGB_ORDER_REVERSE (1 << 11) > >>>>> + > >>>>> /* FIMD Version 8 register offset definitions */ > >>>>> #define FIMD_V8_VIDTCON0 0x20010 > >>>>> #define FIMD_V8_VIDTCON1 0x20014 > >>> > >