[PATCH] drm/imx: hdmi: fix HDMI setup to allow modes larger than FullHD
Lucas Stach
l.stach at pengutronix.de
Mon Oct 19 05:11:26 PDT 2015
Dave,
could you please pick this patch up as a fix for 4.3? It fixes a
regression introduced in this cycle by the stricter parameter validation
in the DW HDMI driver. Philipp is on holiday this week, so I guess he
won't be able to pick it up.
Thanks,
Lucas
Am Donnerstag, den 15.10.2015, 15:42 +0200 schrieb Lucas Stach:
> This worked before the dw-hdmi bridge code was changed to validate
> the setup data more strictly. Add back support for modes with a
> pixel clock up to 216MHz. Even higher clocks should work, but we
> are missing the required setup data for now.
>
> Also change the mode validate callbacks to disallow modes with
> higher pixelclocks, so we don't end up failing the modeset later
> on.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
> ---
> drivers/gpu/drm/imx/dw_hdmi-imx.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/imx/dw_hdmi-imx.c b/drivers/gpu/drm/imx/dw_hdmi-imx.c
> index 4aad6bce6241..13596e822391 100644
> --- a/drivers/gpu/drm/imx/dw_hdmi-imx.c
> +++ b/drivers/gpu/drm/imx/dw_hdmi-imx.c
> @@ -48,11 +48,17 @@ static const struct dw_hdmi_mpll_config imx_mpll_cfg[] = {
> { 0x40a2, 0x000a },
> },
> }, {
> - ~0UL, {
> + 216000000, {
> { 0x00a0, 0x000a },
> { 0x2001, 0x000f },
> { 0x4002, 0x000f },
> },
> + }, {
> + ~0UL, {
> + { 0x0000, 0x0000 },
> + { 0x0000, 0x0000 },
> + { 0x0000, 0x0000 },
> + },
> }
> };
>
> @@ -82,7 +88,7 @@ static const struct dw_hdmi_curr_ctrl imx_cur_ctr[] = {
> */
> static const struct dw_hdmi_phy_config imx_phy_config[] = {
> /*pixelclk symbol term vlev */
> - { 148500000, 0x800d, 0x0005, 0x01ad},
> + { 216000000, 0x800d, 0x0005, 0x01ad},
> { ~0UL, 0x0000, 0x0000, 0x0000}
> };
>
> @@ -148,7 +154,8 @@ static enum drm_mode_status imx6q_hdmi_mode_valid(struct drm_connector *con,
> {
> if (mode->clock < 13500)
> return MODE_CLOCK_LOW;
> - if (mode->clock > 266000)
> + /* FIXME: Hardware is capable of 266MHz, but setup data is missing. */
> + if (mode->clock > 216000)
> return MODE_CLOCK_HIGH;
>
> return MODE_OK;
> @@ -159,7 +166,8 @@ static enum drm_mode_status imx6dl_hdmi_mode_valid(struct drm_connector *con,
> {
> if (mode->clock < 13500)
> return MODE_CLOCK_LOW;
> - if (mode->clock > 270000)
> + /* FIXME: Hardware is capable of 270MHz, but setup data is missing. */
> + if (mode->clock > 216000)
> return MODE_CLOCK_HIGH;
>
> return MODE_OK;
--
Pengutronix e.K. | Lucas Stach |
Industrial Linux Solutions | http://www.pengutronix.de/ |
More information about the dri-devel
mailing list