Hi Dmitry,

Thank you for the patch.

On Sun, May 07, 2023 at 11:12:18PM +0300, Dmitry Baryshkov wrote:
> On some devices the 5V pin of the HDMI connector and/or the ESD
> protection logic is powered on by a separate regulator. Instead of
> declaring this regulator as always-on, make hdmi-connector support the
> additional hdmi-pwr supply.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
> ---
>  drivers/gpu/drm/bridge/display-connector.c | 37 +++++++++++++++++-----
>  1 file changed, 29 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/display-connector.c 
> b/drivers/gpu/drm/bridge/display-connector.c
> index 0d94e6edea50..037ba2eb5a2f 100644
> --- a/drivers/gpu/drm/bridge/display-connector.c
> +++ b/drivers/gpu/drm/bridge/display-connector.c
> @@ -337,18 +337,12 @@ static int display_connector_probe(struct 
> platform_device *pdev)
>                               return ret;
>                       }
>               }
> -
> -             if (conn->connector_pwr) {
> -                     ret = regulator_enable(conn->connector_pwr);
> -                     if (ret) {
> -                             dev_err(&pdev->dev, "failed to enable DP PWR 
> regulator: %d\n", ret);
> -                             return ret;
> -                     }
> -             }
>       }
>  
>       /* enable DDC */
>       if (type == DRM_MODE_CONNECTOR_HDMIA) {
> +             int ret;
> +
>               conn->ddc_en = devm_gpiod_get_optional(&pdev->dev, "ddc-en",
>                                                      GPIOD_OUT_HIGH);
>  
> @@ -356,6 +350,33 @@ static int display_connector_probe(struct 
> platform_device *pdev)
>                       dev_err(&pdev->dev, "Couldn't get ddc-en gpio\n");
>                       return PTR_ERR(conn->ddc_en);
>               }
> +
> +             conn->connector_pwr = devm_regulator_get_optional(&pdev->dev, 
> "hdmi-pwr");
> +
> +             if (IS_ERR(conn->connector_pwr)) {
> +                     ret = PTR_ERR(conn->connector_pwr);
> +
> +                     switch (ret) {
> +                     case -ENODEV:
> +                             conn->connector_pwr = NULL;
> +                             break;
> +
> +                     case -EPROBE_DEFER:
> +                             return -EPROBE_DEFER;
> +
> +                     default:
> +                             dev_err(&pdev->dev, "failed to get HDMI PWR 
> regulator: %d\n", ret);
> +                             return ret;
> +                     }
> +             }
> +     }

Please share this logic with the DP code. You can move it to a separate
function for instance, that would take the regulator name as a
parameter.

> +
> +     if (conn->connector_pwr) {
> +             ret = regulator_enable(conn->connector_pwr);
> +             if (ret) {
> +                     dev_err(&pdev->dev, "failed to enable DP PWR regulator: 
> %d\n", ret);
> +                     return ret;
> +             }
>       }
>  
>       conn->bridge.funcs = &display_connector_bridge_funcs;

-- 
Regards,

Laurent Pinchart

Reply via email to