[PATCH 0/3] imx drm atomic mode setting fixups

Ying Liu gnuiyl at gmail.com
Thu Jul 7 07:44:09 UTC 2016


Hi Philipp,

On Wed, Jul 6, 2016 at 11:52 PM, Philipp Zabel <p.zabel at pengutronix.de> wrote:
> Hi,
>
> I have tested Liu Ying's imx drm atomic mode setting conversion series [1]

Thanks for the testing!

> with three different outputs (DPI + eDP bridge, LVDS + panel, HDMI)
> and noticed that in the LDB case bus_format handling doesn't work
> correctly if the format is determined by the panel instead of the
> device tree. In that case, the LVDS bus_format is not yet known at bind
> time, but is filled into the display_info structure by the panel driver
> in the get_modes callback. The LDB driver then has to translate from the
> LVDS bus format to the corresponding internal parallel bus format and
> let the crtc know about the format before crtc mode_set is called.
> The same issue occurs when the bus_format is determined by a bridge driver
> which implements its own connector. To solve this, and because crtc state
> seems to be the right place for potentially dynamic crtc settings, I have
> moved the bus_format, bus_flags, and di_*sync_pin configuration into an
> imx-drm specific crtc state structure and removed imx_drm_encoder again.

I didn't program imx_ldb_ch->imx_encoder.bus_format correctly
in imx_ldb_connector_get_modes() - I forgot to translate the bus format
from LVDS bus format to internal bus format.  Also, data width and
LVDS data mapping(SPWG/JEIDA) can be set to ldb->ldb_ctrl in
the function. So, one option to fix the issue you found is to simply
modify the function and respin the particular patch in my patch set.
Actually, I have got a fix tested with the format determined by the panel.

I don't have strong opinion on storing bus_format, bus_flags and
di_*sync_pin in imx_crtc_state.  But, very likely, they will not be
dynamically changed.  Setting them again and again at atomic_check
is somewhat wasting CPU cycles...

BTW, the imx-drm atomic conversion patch set has reached version 3
which uses the new non-blocking atomic commit helpers.

Regards,
Liu Ying

>
> I have also removed the now optional empty encoder mode_set callbacks
> and turned the container_of helper macros into inline functions.
>
> [1] https://lists.freedesktop.org/archives/dri-devel/2016-May/108218.html
>
> regards
> Philipp
>
> Philipp Zabel (3):
>   drm/imx: remove empty mode_set encoder callbacks
>   drm/imx: store internal bus configuration in crtc state
>   drm/imx: turn remaining container_of macros into inline functions
>
>  drivers/gpu/drm/imx/dw_hdmi-imx.c      |  38 +++++----
>  drivers/gpu/drm/imx/imx-drm.h          |   9 ++-
>  drivers/gpu/drm/imx/imx-ldb.c          | 142 +++++++++++++++++++++------------
>  drivers/gpu/drm/imx/imx-tve.c          |  45 ++++++++---
>  drivers/gpu/drm/imx/ipuv3-crtc.c       |  72 +++++++++++++----
>  drivers/gpu/drm/imx/ipuv3-plane.c      |   5 +-
>  drivers/gpu/drm/imx/parallel-display.c |  85 +++++++++++---------
>  7 files changed, 259 insertions(+), 137 deletions(-)
>
> --
> 2.8.1
>


More information about the dri-devel mailing list