dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Marek Vasut <marex@denx.de>, Jagan Teki <jagan@amarulasolutions.com>
Cc: dri-devel@lists.freedesktop.org,
	linux-samsung-soc@vger.kernel.org,
	Joonyoung Shim <jy0922.shim@samsung.com>,
	Tommaso Merciai <tommaso.merciai@amarulasolutions.com>,
	linux-amarula <linux-amarula@amarulasolutions.com>,
	Seung-Woo Kim <sw0312.kim@samsung.com>,
	Neil Armstrong <narmstrong@linaro.org>,
	Frieder Schrempf <frieder.schrempf@kontron.de>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Matteo Lisi <matteo.lisi@engicam.com>,
	Robert Foss <robert.foss@linaro.org>,
	Andrzej Hajda <andrzej.hajda@intel.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	Fancy Fang <chen.fang@nxp.com>,
	Michael Nazzareno Trimarchi <michael@amarulasolutions.com>,
	Adam Ford <aford173@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Subject: Re: [PATCH v8 09/14] drm: bridge: samsung-dsim: Add atomic_get_input_bus_fmts
Date: Wed, 16 Nov 2022 12:07:03 +0100	[thread overview]
Message-ID: <bfd2eea0-04eb-9c98-e8a2-967455d6e5ad@samsung.com> (raw)
In-Reply-To: <7635358a-fc32-5a78-6130-7c5f4dd2d81b@denx.de>

On 16.11.2022 11:49, Marek Vasut wrote:
> On 11/16/22 09:07, Marek Szyprowski wrote:
>> On 15.11.2022 13:00, Marek Vasut wrote:
>>> On 11/14/22 08:49, Jagan Teki wrote:
>>>> On Sun, Nov 13, 2022 at 5:51 AM Marek Vasut <marex@denx.de> wrote:
>>>>>
>>>>> On 11/10/22 19:38, Jagan Teki wrote:
>>>>>> Finding the right input bus format throughout the pipeline is hard
>>>>>> so add atomic_get_input_bus_fmts callback and initialize with the
>>>>>> proper input format from list of supported output formats.
>>>>>>
>>>>>> This format can be used in pipeline for negotiating bus format 
>>>>>> between
>>>>>> the DSI-end of this bridge and the other component closer to 
>>>>>> pipeline
>>>>>> components.
>>>>>>
>>>>>> List of Pixel formats are taken from,
>>>>>> AN13573 i.MX 8/RT MIPI DSI/CSI-2, Rev. 0, 21 March 2022
>>>>>> 3.7.4 Pixel formats
>>>>>> Table 14. DSI pixel packing formats
>>>>>>
>>>>>> v8:
>>>>>> * added pixel formats supported by NXP AN13573 i.MX 8/RT MIPI
>>>>>> DSI/CSI-2
>>>>>>
>>>>>> v7, v6, v5, v4:
>>>>>> * none
>>>>>>
>>>>>> v3:
>>>>>> * include media-bus-format.h
>>>>>>
>>>>>> v2:
>>>>>> * none
>>>>>>
>>>>>> v1:
>>>>>> * new patch
>>>>>>
>>>>>> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
>>>>>> ---
>>>>>>     drivers/gpu/drm/bridge/samsung-dsim.c | 53
>>>>>> +++++++++++++++++++++++++++
>>>>>>     1 file changed, 53 insertions(+)
>>>>>>
>>>>>> diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c
>>>>>> b/drivers/gpu/drm/bridge/samsung-dsim.c
>>>>>> index 0fe153b29e4f..33e5ae9c865f 100644
>>>>>> --- a/drivers/gpu/drm/bridge/samsung-dsim.c
>>>>>> +++ b/drivers/gpu/drm/bridge/samsung-dsim.c
>>>>>> @@ -15,6 +15,7 @@
>>>>>>     #include <linux/clk.h>
>>>>>>     #include <linux/delay.h>
>>>>>>     #include <linux/irq.h>
>>>>>> +#include <linux/media-bus-format.h>
>>>>>>     #include <linux/of_device.h>
>>>>>>     #include <linux/phy/phy.h>
>>>>>>
>>>>>> @@ -1321,6 +1322,57 @@ static void
>>>>>> samsung_dsim_atomic_post_disable(struct drm_bridge *bridge,
>>>>>>         pm_runtime_put_sync(dsi->dev);
>>>>>>     }
>>>>>>
>>>>>> +/*
>>>>>> + * This pixel output formats list referenced from,
>>>>>> + * AN13573 i.MX 8/RT MIPI DSI/CSI-2, Rev. 0, 21 March 2022
>>>>>> + * 3.7.4 Pixel formats
>>>>>> + * Table 14. DSI pixel packing formats
>>>>>> + */
>>>>>> +static const u32 samsung_dsim_pixel_output_fmts[] = {
>>>>>
>>>>> You can also add :
>>>>>
>>>>> MEDIA_BUS_FMT_YUYV10_1X20
>>>>>
>>>>> MEDIA_BUS_FMT_YUYV12_1X24
>>>>
>>>> Are these for the below formats?
>>>>
>>>> "Loosely Packed Pixel Stream, 20-bit YCbCr, 4:2:2
>>>>    Packed Pixel Stream, 24-bit YCbCr, 4:2:2"
>>>>>
>>>>>> +     MEDIA_BUS_FMT_UYVY8_1X16,
>>>>>> +     MEDIA_BUS_FMT_RGB101010_1X30,
>>>>>> +     MEDIA_BUS_FMT_RGB121212_1X36,
>>>>>> +     MEDIA_BUS_FMT_RGB565_1X16,
>>>>>> +     MEDIA_BUS_FMT_RGB666_1X18,
>>>>>> +     MEDIA_BUS_FMT_RGB888_1X24,
>>>>>> +};
>>>>>> +
>>>>>> +static bool samsung_dsim_pixel_output_fmt_supported(u32 fmt)
>>>>>> +{
>>>>>> +     int i;
>>>>>> +
>>>>>> +     for (i = 0; i < ARRAY_SIZE(samsung_dsim_pixel_output_fmts);
>>>>>> i++) {
>>>>>> +             if (samsung_dsim_pixel_output_fmts[i] == fmt)
>>>>>> +                     return true;
>>>>>> +     }
>>>>>> +
>>>>>> +     return false;
>>>>>> +}
>>>>>> +
>>>>>> +static u32 *
>>>>>> +samsung_dsim_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
>>>>>> +                                    struct drm_bridge_state
>>>>>> *bridge_state,
>>>>>> +                                    struct drm_crtc_state
>>>>>> *crtc_state,
>>>>>> +                                    struct drm_connector_state
>>>>>> *conn_state,
>>>>>> +                                    u32 output_fmt,
>>>>>> +                                    unsigned int *num_input_fmts)
>>>>>> +{
>>>>>> +     u32 *input_fmts;
>>>>>> +
>>>>>> +     if (!samsung_dsim_pixel_output_fmt_supported(output_fmt))
>>>>>> +             return NULL;
>>>>>> +
>>>>>> +     *num_input_fmts = 1;
>>>>>
>>>>> Shouldn't this be 6 ?
>>>>>
>>>>>> +     input_fmts = kmalloc(sizeof(*input_fmts), GFP_KERNEL);
>>>>>> +     if (!input_fmts)
>>>>>> +             return NULL;
>>>>>> +
>>>>>> +     input_fmts[0] = output_fmt;
>>>>>
>>>>> Shouldn't this be a list of all 6 supported pixel formats ?
>>>>
>>>> Negotiation would settle to return one input_fmt from the list of
>>>> supporting output_fmts. so the num_input_fmts would be 1 rather than
>>>> the number of fmts in the supporting list. This is what I understood
>>>> from the atomic_get_input_bus_fmts API. let me know if I miss
>>>> something here.
>>>
>>> How does the negotiation work for this kind of pipeline:
>>>
>>> LCDIFv3<->DSIM<->HDMI bridge<->HDMI connector
>>>
>>> where all elements (LCDIFv3, DSIM, HDMI bridge) can support either
>>> RGB888 or packed YUV422 ?
>>>
>>> Who decides the format used by such pipeline ?
>>>
>>> Why should it be the DSIM bridge and not e.g. the HDMI bridge or the
>>> LCDIFv3 ?
>>
>>
>> If I got it right, the drivers reports their preference for the returned
>> formats. The format that is first in the reported array is the most
>> preferred one. This probably means that in your case the HDMI bridge
>> decides by reporting RGB or YUV first (if all elements supports both).
>
> But in that case, we need to list input_fmts[0]...input_fmts[n-1] in 
> samsung_dsim_atomic_get_input_bus_fmts() and also set *num_input_fmts 
> = n, correct ?
>
Yes, if I got the bus format negotiation code right, but I didn't check 
the details.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland


  reply	other threads:[~2022-11-16 11:07 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-10 18:38 [PATCH v8 00/14] drm: bridge: Add Samsung MIPI DSIM bridge Jagan Teki
2022-11-10 18:38 ` [PATCH v8 01/14] drm: exynos: dsi: Fix MIPI_DSI*_NO_* mode flags Jagan Teki
2022-11-11  0:49   ` Nicolas Boichat
2022-11-11  8:49     ` Jagan Teki
2022-11-11 12:12       ` Nicolas Boichat
2022-11-11 12:45         ` Jagan Teki
2022-11-13  0:29         ` Marek Vasut
2022-11-14  1:11           ` Nicolas Boichat
2022-11-14  3:16             ` Marek Vasut
2022-12-05 11:55               ` Frieder Schrempf
2022-11-10 18:38 ` [PATCH v8 02/14] drm: exynos: dsi: Properly name HSA/HBP/HFP/HSE bits Jagan Teki
2022-11-13  0:25   ` Marek Vasut
2022-11-14  8:27     ` Jagan Teki
2022-12-05 11:59   ` Frieder Schrempf
2022-12-05 12:06     ` Jagan Teki
2022-11-10 18:38 ` [PATCH v8 03/14] drm: bridge: Generalize Exynos-DSI driver into a Samsung DSIM bridge Jagan Teki
2022-11-17  5:01   ` Marek Vasut
2022-11-18  6:40     ` Jagan Teki
2022-11-10 18:38 ` [PATCH v8 04/14] drm: bridge: samsung-dsim: Lookup OF-graph or Child node devices Jagan Teki
2022-11-10 18:38 ` [PATCH v8 05/14] drm: bridge: samsung-dsim: Mark PHY as optional Jagan Teki
2022-11-10 18:38 ` [PATCH v8 06/14] drm: bridge: samsung-dsim: Handle proper DSI host initialization Jagan Teki
2022-11-17  4:58   ` Marek Vasut
2022-11-17 13:04     ` Marek Szyprowski
2022-11-19 13:36       ` Marek Vasut
2022-11-23 20:09         ` Jagan Teki
2022-11-25 22:14           ` Marek Vasut
2022-11-28 14:43             ` Jagan Teki
2022-12-02 10:52               ` Marek Szyprowski
2022-12-02 12:21                 ` Marek Vasut
2022-12-02 14:55                   ` Dave Stevenson
2022-12-05  7:30                     ` Frieder Schrempf
2022-12-05 15:20                       ` Dave Stevenson
2022-12-05 15:37                         ` Frieder Schrempf
2022-12-06  9:02                           ` Frieder Schrempf
2022-12-08 11:32                             ` Jagan Teki
2022-12-08 12:21                               ` Marek Szyprowski
2022-11-10 18:38 ` [PATCH v8 07/14] drm: bridge: samsung-dsim: Add atomic_check Jagan Teki
2022-11-10 18:38 ` [PATCH v8 08/14] drm: bridge: samsung-dsim: Add platform PLL_P (PMS_P) offset Jagan Teki
2022-11-10 18:38 ` [PATCH v8 09/14] drm: bridge: samsung-dsim: Add atomic_get_input_bus_fmts Jagan Teki
2022-11-13  0:21   ` Marek Vasut
2022-11-14  7:49     ` Jagan Teki
2022-11-15 12:00       ` Marek Vasut
2022-11-16  8:07         ` Marek Szyprowski
2022-11-16 10:49           ` Marek Vasut
2022-11-16 11:07             ` Marek Szyprowski [this message]
2022-11-16 11:30               ` Jagan Teki
2022-11-14 10:57   ` Marek Szyprowski
2022-11-14 14:40     ` Marek Szyprowski
2022-11-14 17:07       ` Jagan Teki
2022-11-15  8:09         ` Marek Szyprowski
2022-11-15  8:48           ` Frieder Schrempf
2022-11-15  9:20             ` Jagan Teki
2022-11-15 21:38               ` Marek Szyprowski
2022-11-10 18:38 ` [PATCH v8 10/14] drm: bridge: samsung-dsim: Add input_bus_flags Jagan Teki
2022-11-10 18:38 ` [PATCH v8 11/14] dt-bindings: display: exynos: dsim: Add NXP i.MX8M Mini/Nano support Jagan Teki
2022-11-10 18:38 ` [PATCH v8 12/14] drm: bridge: samsung-dsim: Add " Jagan Teki
2022-11-10 18:38 ` [PATCH v8 13/14] dt-bindings: display: exynos: dsim: Add NXP i.MX8M Plus support Jagan Teki
2022-11-10 18:38 ` [PATCH v8 14/14] drm: bridge: samsung-dsim: Add " Jagan Teki
2022-11-14  8:41 ` [PATCH v8 00/14] drm: bridge: Add Samsung MIPI DSIM bridge Frieder Schrempf
2022-11-14  8:47   ` Jagan Teki
2022-12-05 13:22 ` Frieder Schrempf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bfd2eea0-04eb-9c98-e8a2-967455d6e5ad@samsung.com \
    --to=m.szyprowski@samsung.com \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=aford173@gmail.com \
    --cc=andrzej.hajda@intel.com \
    --cc=chen.fang@nxp.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=frieder.schrempf@kontron.de \
    --cc=jagan@amarulasolutions.com \
    --cc=jy0922.shim@samsung.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-amarula@amarulasolutions.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=marex@denx.de \
    --cc=matteo.lisi@engicam.com \
    --cc=michael@amarulasolutions.com \
    --cc=narmstrong@linaro.org \
    --cc=robert.foss@linaro.org \
    --cc=sw0312.kim@samsung.com \
    --cc=tommaso.merciai@amarulasolutions.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox