diff mbox series

[3/6] drm/bridge: display-connector: allow YCbCr 420 for HDMI and DP

Message ID 20241019-bridge-yuv420-v1-3-d74efac9e4e6@linaro.org (mailing list archive)
State New, archived
Headers show
Series drm/bridge: add ycbcr_420_allowed support | expand

Commit Message

Dmitry Baryshkov Oct. 18, 2024, 9:49 p.m. UTC
Allow YCbCr 420 output for HDMI and DisplayPort connectors. Other
bridges in the chain still might limit YCbCr 420 support on the
corresponding connector.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/bridge/display-connector.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Neil Armstrong Oct. 21, 2024, 7:29 a.m. UTC | #1
On 18/10/2024 23:49, Dmitry Baryshkov wrote:
> Allow YCbCr 420 output for HDMI and DisplayPort connectors. Other
> bridges in the chain still might limit YCbCr 420 support on the
> corresponding connector.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
>   drivers/gpu/drm/bridge/display-connector.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/bridge/display-connector.c
> index ab8e00baf3f1..aab9ce7be94c 100644
> --- a/drivers/gpu/drm/bridge/display-connector.c
> +++ b/drivers/gpu/drm/bridge/display-connector.c
> @@ -270,6 +270,10 @@ static int display_connector_probe(struct platform_device *pdev)
>   	/* All the supported connector types support interlaced modes. */
>   	conn->bridge.interlace_allowed = true;
>   
> +	if (type == DRM_MODE_CONNECTOR_HDMIA ||
> +	    type == DRM_MODE_CONNECTOR_DisplayPort)
> +		conn->bridge.ycbcr_420_allowed = true;
> +
>   	/* Get the optional connector label. */
>   	of_property_read_string(pdev->dev.of_node, "label", &label);
>   
> 

I think we should make sure all HDMI bridges can filter out 420 before
landing this, no ?

Neil
Dmitry Baryshkov Oct. 21, 2024, 9:06 a.m. UTC | #2
On Mon, 21 Oct 2024 at 10:29, Neil Armstrong <neil.armstrong@linaro.org> wrote:
>
> On 18/10/2024 23:49, Dmitry Baryshkov wrote:
> > Allow YCbCr 420 output for HDMI and DisplayPort connectors. Other
> > bridges in the chain still might limit YCbCr 420 support on the
> > corresponding connector.
> >
> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> > ---
> >   drivers/gpu/drm/bridge/display-connector.c | 4 ++++
> >   1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/bridge/display-connector.c
> > index ab8e00baf3f1..aab9ce7be94c 100644
> > --- a/drivers/gpu/drm/bridge/display-connector.c
> > +++ b/drivers/gpu/drm/bridge/display-connector.c
> > @@ -270,6 +270,10 @@ static int display_connector_probe(struct platform_device *pdev)
> >       /* All the supported connector types support interlaced modes. */
> >       conn->bridge.interlace_allowed = true;
> >
> > +     if (type == DRM_MODE_CONNECTOR_HDMIA ||
> > +         type == DRM_MODE_CONNECTOR_DisplayPort)
> > +             conn->bridge.ycbcr_420_allowed = true;
> > +
> >       /* Get the optional connector label. */
> >       of_property_read_string(pdev->dev.of_node, "label", &label);
> >
> >
>
> I think we should make sure all HDMI bridges can filter out 420 before
> landing this, no ?

No, it's the other way around: if one of the bridges in a chain
doesn't set 420_allowed, then 420_allowed won't be set for the
connector, disallowing YCbCr 420 modes.
Before this patchset the bridge / platform drivers had to manually set
the flag on the created connector (see dw-hdmi + meson-encoder-hdmi or
msm/dp).
Neil Armstrong Oct. 21, 2024, 9:54 a.m. UTC | #3
On 21/10/2024 11:06, Dmitry Baryshkov wrote:
> On Mon, 21 Oct 2024 at 10:29, Neil Armstrong <neil.armstrong@linaro.org> wrote:
>>
>> On 18/10/2024 23:49, Dmitry Baryshkov wrote:
>>> Allow YCbCr 420 output for HDMI and DisplayPort connectors. Other
>>> bridges in the chain still might limit YCbCr 420 support on the
>>> corresponding connector.
>>>
>>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>> ---
>>>    drivers/gpu/drm/bridge/display-connector.c | 4 ++++
>>>    1 file changed, 4 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/bridge/display-connector.c
>>> index ab8e00baf3f1..aab9ce7be94c 100644
>>> --- a/drivers/gpu/drm/bridge/display-connector.c
>>> +++ b/drivers/gpu/drm/bridge/display-connector.c
>>> @@ -270,6 +270,10 @@ static int display_connector_probe(struct platform_device *pdev)
>>>        /* All the supported connector types support interlaced modes. */
>>>        conn->bridge.interlace_allowed = true;
>>>
>>> +     if (type == DRM_MODE_CONNECTOR_HDMIA ||
>>> +         type == DRM_MODE_CONNECTOR_DisplayPort)
>>> +             conn->bridge.ycbcr_420_allowed = true;
>>> +
>>>        /* Get the optional connector label. */
>>>        of_property_read_string(pdev->dev.of_node, "label", &label);
>>>
>>>
>>
>> I think we should make sure all HDMI bridges can filter out 420 before
>> landing this, no ?
> 
> No, it's the other way around: if one of the bridges in a chain
> doesn't set 420_allowed, then 420_allowed won't be set for the
> connector, disallowing YCbCr 420 modes.
> Before this patchset the bridge / platform drivers had to manually set
> the flag on the created connector (see dw-hdmi + meson-encoder-hdmi or
> msm/dp).
> 

Right, sorry for the noise...

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/bridge/display-connector.c
index ab8e00baf3f1..aab9ce7be94c 100644
--- a/drivers/gpu/drm/bridge/display-connector.c
+++ b/drivers/gpu/drm/bridge/display-connector.c
@@ -270,6 +270,10 @@  static int display_connector_probe(struct platform_device *pdev)
 	/* All the supported connector types support interlaced modes. */
 	conn->bridge.interlace_allowed = true;
 
+	if (type == DRM_MODE_CONNECTOR_HDMIA ||
+	    type == DRM_MODE_CONNECTOR_DisplayPort)
+		conn->bridge.ycbcr_420_allowed = true;
+
 	/* Get the optional connector label. */
 	of_property_read_string(pdev->dev.of_node, "label", &label);