All of 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


WARNING: multiple messages have this Message-ID (diff)
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Marek Vasut <marex@denx.de>, Jagan Teki <jagan@amarulasolutions.com>
Cc: Andrzej Hajda <andrzej.hajda@intel.com>,
	Inki Dae <inki.dae@samsung.com>,
	Joonyoung Shim <jy0922.shim@samsung.com>,
	Seung-Woo Kim <sw0312.kim@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Frieder Schrempf <frieder.schrempf@kontron.de>,
	Fancy Fang <chen.fang@nxp.com>,
	Tim Harvey <tharvey@gateworks.com>,
	Michael Nazzareno Trimarchi <michael@amarulasolutions.com>,
	Adam Ford <aford173@gmail.com>,
	Neil Armstrong <narmstrong@linaro.org>,
	Robert Foss <robert.foss@linaro.org>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	Tommaso Merciai <tommaso.merciai@amarulasolutions.com>,
	Matteo Lisi <matteo.lisi@engicam.com>,
	dri-devel@lists.freedesktop.org,
	linux-samsung-soc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	NXP Linux Team <linux-imx@nxp.com>,
	linux-amarula <linux-amarula@amarulasolutions.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


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Marek Vasut <marex@denx.de>, Jagan Teki <jagan@amarulasolutions.com>
Cc: Andrzej Hajda <andrzej.hajda@intel.com>,
	Inki Dae <inki.dae@samsung.com>,
	Joonyoung Shim <jy0922.shim@samsung.com>,
	Seung-Woo Kim <sw0312.kim@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Frieder Schrempf <frieder.schrempf@kontron.de>,
	Fancy Fang <chen.fang@nxp.com>,
	Tim Harvey <tharvey@gateworks.com>,
	Michael Nazzareno Trimarchi <michael@amarulasolutions.com>,
	Adam Ford <aford173@gmail.com>,
	Neil Armstrong <narmstrong@linaro.org>,
	Robert Foss <robert.foss@linaro.org>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	Tommaso Merciai <tommaso.merciai@amarulasolutions.com>,
	Matteo Lisi <matteo.lisi@engicam.com>,
	dri-devel@lists.freedesktop.org,
	linux-samsung-soc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	NXP Linux Team <linux-imx@nxp.com>,
	linux-amarula <linux-amarula@amarulasolutions.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: 181+ 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 ` Jagan Teki
2022-11-10 18:38 ` Jagan Teki
2022-11-10 18:38 ` [PATCH v8 01/14] drm: exynos: dsi: Fix MIPI_DSI*_NO_* mode flags Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-11  0:49   ` Nicolas Boichat
2022-11-11  0:49     ` Nicolas Boichat
2022-11-11  0:49     ` Nicolas Boichat
2022-11-11  8:49     ` Jagan Teki
2022-11-11  8:49       ` Jagan Teki
2022-11-11  8:49       ` Jagan Teki
2022-11-11 12:12       ` Nicolas Boichat
2022-11-11 12:12         ` Nicolas Boichat
2022-11-11 12:12         ` Nicolas Boichat
2022-11-11 12:45         ` Jagan Teki
2022-11-11 12:45           ` Jagan Teki
2022-11-11 12:45           ` Jagan Teki
2022-11-13  0:29         ` Marek Vasut
2022-11-13  0:29           ` Marek Vasut
2022-11-13  0:29           ` Marek Vasut
2022-11-14  1:11           ` Nicolas Boichat
2022-11-14  1:11             ` Nicolas Boichat
2022-11-14  1:11             ` Nicolas Boichat
2022-11-14  3:16             ` Marek Vasut
2022-11-14  3:16               ` Marek Vasut
2022-11-14  3:16               ` Marek Vasut
2022-12-05 11:55               ` Frieder Schrempf
2022-12-05 11:55                 ` Frieder Schrempf
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-10 18:38   ` Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-13  0:25   ` Marek Vasut
2022-11-13  0:25     ` Marek Vasut
2022-11-13  0:25     ` Marek Vasut
2022-11-14  8:27     ` Jagan Teki
2022-11-14  8:27       ` Jagan Teki
2022-11-14  8:27       ` Jagan Teki
2022-12-05 11:59   ` Frieder Schrempf
2022-12-05 11:59     ` Frieder Schrempf
2022-12-05 11:59     ` Frieder Schrempf
2022-12-05 12:06     ` Jagan Teki
2022-12-05 12:06       ` Jagan Teki
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-17  5:01     ` Marek Vasut
2022-11-17  5:01     ` Marek Vasut
2022-11-18  6:40     ` Jagan Teki
2022-11-18  6:40       ` Jagan Teki
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   ` Jagan Teki
2022-11-10 18:38   ` 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   ` Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-10 18:38 ` [PATCH v8 06/14] drm: bridge: samsung-dsim: Handle proper DSI host initialization Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-17  4:58   ` Marek Vasut
2022-11-17  4:58     ` Marek Vasut
2022-11-17  4:58     ` Marek Vasut
2022-11-17 13:04     ` Marek Szyprowski
2022-11-17 13:04       ` Marek Szyprowski
2022-11-17 13:04       ` Marek Szyprowski
2022-11-19 13:36       ` Marek Vasut
2022-11-19 13:36         ` Marek Vasut
2022-11-19 13:36         ` Marek Vasut
2022-11-23 20:09         ` Jagan Teki
2022-11-23 20:09           ` Jagan Teki
2022-11-23 20:09           ` Jagan Teki
2022-11-25 22:14           ` Marek Vasut
2022-11-25 22:14             ` Marek Vasut
2022-11-25 22:14             ` Marek Vasut
2022-11-28 14:43             ` Jagan Teki
2022-11-28 14:43               ` Jagan Teki
2022-11-28 14:43               ` Jagan Teki
2022-12-02 10:52               ` Marek Szyprowski
2022-12-02 10:52                 ` Marek Szyprowski
2022-12-02 10:52                 ` Marek Szyprowski
2022-12-02 12:21                 ` Marek Vasut
2022-12-02 12:21                   ` Marek Vasut
2022-12-02 12:21                   ` Marek Vasut
2022-12-02 14:55                   ` Dave Stevenson
2022-12-02 14:55                     ` Dave Stevenson
2022-12-02 14:55                     ` Dave Stevenson
2022-12-05  7:30                     ` Frieder Schrempf
2022-12-05  7:30                       ` Frieder Schrempf
2022-12-05  7:30                       ` Frieder Schrempf
2022-12-05 15:20                       ` Dave Stevenson
2022-12-05 15:20                         ` Dave Stevenson
2022-12-05 15:20                         ` Dave Stevenson
2022-12-05 15:37                         ` Frieder Schrempf
2022-12-05 15:37                           ` Frieder Schrempf
2022-12-05 15:37                           ` Frieder Schrempf
2022-12-06  9:02                           ` Frieder Schrempf
2022-12-06  9:02                             ` Frieder Schrempf
2022-12-06  9:02                             ` Frieder Schrempf
2022-12-08 11:32                             ` Jagan Teki
2022-12-08 11:32                               ` Jagan Teki
2022-12-08 11:32                               ` Jagan Teki
2022-12-08 12:21                               ` Marek Szyprowski
2022-12-08 12:21                                 ` Marek Szyprowski
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   ` Jagan Teki
2022-11-10 18:38   ` 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   ` Jagan Teki
2022-11-10 18:38   ` 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-10 18:38   ` Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-13  0:21   ` Marek Vasut
2022-11-13  0:21     ` Marek Vasut
2022-11-13  0:21     ` Marek Vasut
2022-11-14  7:49     ` Jagan Teki
2022-11-14  7:49       ` Jagan Teki
2022-11-14  7:49       ` Jagan Teki
2022-11-15 12:00       ` Marek Vasut
2022-11-15 12:00         ` Marek Vasut
2022-11-15 12:00         ` Marek Vasut
2022-11-16  8:07         ` Marek Szyprowski
2022-11-16  8:07           ` Marek Szyprowski
2022-11-16  8:07           ` Marek Szyprowski
2022-11-16 10:49           ` Marek Vasut
2022-11-16 10:49             ` Marek Vasut
2022-11-16 10:49             ` Marek Vasut
2022-11-16 11:07             ` Marek Szyprowski [this message]
2022-11-16 11:07               ` Marek Szyprowski
2022-11-16 11:07               ` Marek Szyprowski
2022-11-16 11:30               ` Jagan Teki
2022-11-16 11:30                 ` Jagan Teki
2022-11-16 11:30                 ` Jagan Teki
2022-11-14 10:57   ` Marek Szyprowski
2022-11-14 10:57     ` Marek Szyprowski
2022-11-14 10:57     ` Marek Szyprowski
2022-11-14 14:40     ` Marek Szyprowski
2022-11-14 14:40       ` Marek Szyprowski
2022-11-14 14:40       ` Marek Szyprowski
2022-11-14 17:07       ` Jagan Teki
2022-11-14 17:07         ` Jagan Teki
2022-11-14 17:07         ` Jagan Teki
2022-11-15  8:09         ` Marek Szyprowski
2022-11-15  8:09           ` Marek Szyprowski
2022-11-15  8:09           ` Marek Szyprowski
2022-11-15  8:48           ` Frieder Schrempf
2022-11-15  8:48             ` Frieder Schrempf
2022-11-15  8:48             ` Frieder Schrempf
2022-11-15  9:20             ` Jagan Teki
2022-11-15  9:20               ` Jagan Teki
2022-11-15  9:20               ` Jagan Teki
2022-11-15 21:38               ` Marek Szyprowski
2022-11-15 21:38                 ` Marek Szyprowski
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   ` Jagan Teki
2022-11-10 18:38   ` 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   ` Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-10 18:38 ` [PATCH v8 12/14] drm: bridge: samsung-dsim: Add " Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-10 18:38   ` 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   ` Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-10 18:38 ` [PATCH v8 14/14] drm: bridge: samsung-dsim: Add " Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-10 18:38   ` Jagan Teki
2022-11-14  8:41 ` [PATCH v8 00/14] drm: bridge: Add Samsung MIPI DSIM bridge Frieder Schrempf
2022-11-14  8:41   ` Frieder Schrempf
2022-11-14  8:41   ` Frieder Schrempf
2022-11-14  8:47   ` Jagan Teki
2022-11-14  8:47     ` Jagan Teki
2022-11-14  8:47     ` Jagan Teki
2022-12-05 13:22 ` Frieder Schrempf
2022-12-05 13:22   ` Frieder Schrempf
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.