[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190325013531.GB4540@pendragon.ideasonboard.com>
Date: Mon, 25 Mar 2019 03:35:31 +0200
From: Laurent Pinchart <laurent.pinchart@...asonboard.com>
To: Jernej Skrabec <jernej.skrabec@...l.net>
Cc: maxime.ripard@...tlin.com, a.hajda@...sung.com, airlied@...ux.ie,
daniel@...ll.ch, wens@...e.org, dri-devel@...ts.freedesktop.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH 1/2] drm/bridge/synopsys: dw-hdmi: Add an option to
suppress loading CEC driver
Hi Jernej,
Thank you for the patch.
On Sun, Mar 24, 2019 at 10:21:42PM +0100, Jernej Skrabec wrote:
> DW HDMI controller on some Allwinner SoCs has support for CEC, but due
> to additional logic put between CEC controller and pins, it doesn't work
> correctly, at least not with a lot of instrusive changes. Fortunately,
> it's still possible to bitbang protocol.
>
> For such cases, add a platform option to suppress loading CEC driver. If
> DW HDMI CEC driver would be loaded, it wouldn't work anyway and only
> cause a confusion with multiple /dev entries.
>
> Signed-off-by: Jernej Skrabec <jernej.skrabec@...l.net>
> ---
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +-
> include/drm/bridge/dw_hdmi.h | 2 ++
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index a63e5f0dae56..fdda26f8b056 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -2634,7 +2634,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
> hdmi->audio = platform_device_register_full(&pdevinfo);
> }
>
> - if (config0 & HDMI_CONFIG0_CEC) {
> + if (!plat_data->is_cec_unusable && (config0 & HDMI_CONFIG0_CEC)) {
> cec.hdmi = hdmi;
> cec.ops = &dw_hdmi_cec_ops;
> cec.irq = irq;
> diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h
> index 66e70770cce5..764b8bcfa62c 100644
> --- a/include/drm/bridge/dw_hdmi.h
> +++ b/include/drm/bridge/dw_hdmi.h
> @@ -144,6 +144,8 @@ struct dw_hdmi_plat_data {
> int (*configure_phy)(struct dw_hdmi *hdmi,
> const struct dw_hdmi_plat_data *pdata,
> unsigned long mpixelclock);
> +
> + unsigned int is_cec_unusable : 1;
Strictly speaking your CEC controller isn't unusable, it's just a bit
difficult to use it according to your commit message. Would disable_cec
be a more appropriate field name ? And how difficult would it be to
support the hardware CEC controller, would that result in changes that
could be useful to other vendors too ?
> };
>
> struct dw_hdmi *dw_hdmi_probe(struct platform_device *pdev,
--
Regards,
Laurent Pinchart
Powered by blists - more mailing lists