[RFC PATCHv2 1/9] drm: Add support for extracting sync signal drive edge from videomode

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Jul 24 14:00:29 UTC 2018


Hi Tomi,

Thank you for the patch.


On Monday, 18 June 2018 16:22:34 EEST Tomi Valkeinen wrote:
> From: Peter Ujfalusi <peter.ujfalusi at ti.com>
> 
> The sync in some panels needs to be driven by different edge of the pixel
> clock compared to data. This is reflected by the
> DISPLAY_FLAGS_SYNC_(POS|NEG)EDGE in videmode flags.
> Add similar similar definitions for bus_flags and convert the sync drive
> edge via drm_bus_flags_from_videomode().
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi at ti.com>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
> Signed-off-by: Jyri Sarha <jsarha at ti.com>

Given "[PATCH 08/23] drm: Add display info bus flags to specify sync signals 
clock edges" (https://patchwork.kernel.org/patch/10454713/),

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  drivers/gpu/drm/drm_modes.c | 15 +++++++++++----
>  include/drm/drm_connector.h |  4 ++++
>  2 files changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
> index e82b61e08f8c..1661bfc55687 100644
> --- a/drivers/gpu/drm/drm_modes.c
> +++ b/drivers/gpu/drm/drm_modes.c
> @@ -659,10 +659,12 @@ EXPORT_SYMBOL_GPL(drm_display_mode_to_videomode);
>   * drm_bus_flags_from_videomode - extract information about pixelclk and
>   * DE polarity from videomode and store it in a separate variable
>   * @vm: videomode structure to use
> - * @bus_flags: information about pixelclk and DE polarity will be stored
> here + * @bus_flags: information about pixelclk, sync and DE polarity will
> be stored + * here
>   *
> - * Sets DRM_BUS_FLAG_DE_(LOW|HIGH) and DRM_BUS_FLAG_PIXDATA_(POS|NEG)EDGE
> - * in @bus_flags according to DISPLAY_FLAGS found in @vm
> + * Sets DRM_BUS_FLAG_DE_(LOW|HIGH),  DRM_BUS_FLAG_PIXDATA_(POS|NEG)EDGE and
> + * DISPLAY_FLAGS_SYNC_(POS|NEG)EDGE in @bus_flags according to
> DISPLAY_FLAGS + * found in @vm
>   */
>  void drm_bus_flags_from_videomode(const struct videomode *vm, u32
> *bus_flags) {
> @@ -672,6 +674,11 @@ void drm_bus_flags_from_videomode(const struct
> videomode *vm, u32 *bus_flags) if (vm->flags &
> DISPLAY_FLAGS_PIXDATA_NEGEDGE)
>  		*bus_flags |= DRM_BUS_FLAG_PIXDATA_NEGEDGE;
> 
> +	if (vm->flags & DISPLAY_FLAGS_SYNC_POSEDGE)
> +		*bus_flags |= DRM_BUS_FLAG_SYNC_POSEDGE;
> +	if (vm->flags & DISPLAY_FLAGS_SYNC_NEGEDGE)
> +		*bus_flags |= DRM_BUS_FLAG_SYNC_NEGEDGE;
> +
>  	if (vm->flags & DISPLAY_FLAGS_DE_LOW)
>  		*bus_flags |= DRM_BUS_FLAG_DE_LOW;
>  	if (vm->flags & DISPLAY_FLAGS_DE_HIGH)
> @@ -684,7 +691,7 @@ EXPORT_SYMBOL_GPL(drm_bus_flags_from_videomode);
>   * of_get_drm_display_mode - get a drm_display_mode from devicetree
>   * @np: device_node with the timing specification
>   * @dmode: will be set to the return value
> - * @bus_flags: information about pixelclk and DE polarity
> + * @bus_flags: information about pixelclk, sync and DE polarity
>   * @index: index into the list of display timings in devicetree
>   *
>   * This function is expensive and should only be used, if only one mode is
> to be diff --git a/include/drm/drm_connector.h
> b/include/drm/drm_connector.h index 675cc3f8cf85..8fa901637f00 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -290,6 +290,10 @@ struct drm_display_info {
>  #define DRM_BUS_FLAG_DATA_MSB_TO_LSB	(1<<4)
>  /* data is transmitted LSB to MSB on the bus */
>  #define DRM_BUS_FLAG_DATA_LSB_TO_MSB	(1<<5)
> +/* drive sync on pos. edge */
> +#define DRM_BUS_FLAG_SYNC_POSEDGE	(1<<6)
> +/* drive sync on neg. edge */
> +#define DRM_BUS_FLAG_SYNC_NEGEDGE	(1<<7)
> 
>  	/**
>  	 * @bus_flags: Additional information (like pixel signal polarity) for

-- 
Regards,

Laurent Pinchart





More information about the dri-devel mailing list