[PATCH v4 08/11] drm/mipi-dsi: Add helper to find input format

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Wed Jun 26 11:06:27 UTC 2024


On 22/06/2024 14:09, Aradhya Bhatia wrote:
> Add a helper API that can be used by the DSI hosts to find the required
> input bus format for the given output dsi pixel format.
> 
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> Signed-off-by: Aradhya Bhatia <a-bhatia1 at ti.com>
> ---
>   drivers/gpu/drm/drm_mipi_dsi.c | 37 ++++++++++++++++++++++++++++++++++
>   include/drm/drm_mipi_dsi.h     |  1 +
>   2 files changed, 38 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
> index a471c46f5ca6..937aa16dfcf6 100644
> --- a/drivers/gpu/drm/drm_mipi_dsi.c
> +++ b/drivers/gpu/drm/drm_mipi_dsi.c
> @@ -36,6 +36,8 @@
>   #include <drm/drm_mipi_dsi.h>
>   #include <drm/drm_print.h>
>   
> +#include <linux/media-bus-format.h>
> +
>   #include <video/mipi_display.h>
>   
>   /**
> @@ -866,6 +868,41 @@ ssize_t mipi_dsi_generic_read(struct mipi_dsi_device *dsi, const void *params,
>   }
>   EXPORT_SYMBOL(mipi_dsi_generic_read);
>   
> +/**
> + * drm_mipi_dsi_get_input_bus_fmt() - Get the required MEDIA_BUS_FMT_* based
> + *				      input pixel format for a given DSI output
> + *				      pixel format
> + * @dsi_format: pixel format that a DSI host needs to output
> + *
> + * Various DSI hosts can use this function during their
> + * &drm_bridge_funcs.atomic_get_input_bus_fmts operation to ascertain
> + * the MEDIA_BUS_FMT_* pixel format required as input.
> + *
> + * RETURNS:
> + * a 32-bit MEDIA_BUS_FMT_* value on success or 0 in case of failure.
> + */
> +u32 drm_mipi_dsi_get_input_bus_fmt(enum mipi_dsi_pixel_format dsi_format)
> +{
> +	switch (dsi_format) {
> +	case MIPI_DSI_FMT_RGB888:
> +		return MEDIA_BUS_FMT_RGB888_1X24;
> +
> +	case MIPI_DSI_FMT_RGB666:
> +		return MEDIA_BUS_FMT_RGB666_1X24_CPADHI;
> +
> +	case MIPI_DSI_FMT_RGB666_PACKED:
> +		return MEDIA_BUS_FMT_RGB666_1X18;
> +
> +	case MIPI_DSI_FMT_RGB565:
> +		return MEDIA_BUS_FMT_RGB565_1X16;
> +
> +	default:
> +		/* Unsupported DSI Format */
> +		return 0;
> +	}
> +}
> +EXPORT_SYMBOL(drm_mipi_dsi_get_input_bus_fmt);
> +
>   /**
>    * mipi_dsi_dcs_write_buffer() - transmit a DCS command with payload
>    * @dsi: DSI peripheral device
> diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
> index 71d121aeef24..78a2c7d9eefb 100644
> --- a/include/drm/drm_mipi_dsi.h
> +++ b/include/drm/drm_mipi_dsi.h
> @@ -290,6 +290,7 @@ void mipi_dsi_generic_write_multi(struct mipi_dsi_multi_context *ctx,
>   				  const void *payload, size_t size);
>   ssize_t mipi_dsi_generic_read(struct mipi_dsi_device *dsi, const void *params,
>   			      size_t num_params, void *data, size_t size);
> +u32 drm_mipi_dsi_get_input_bus_fmt(enum mipi_dsi_pixel_format dsi_format);
>   
>   #define mipi_dsi_msleep(ctx, delay)	\
>   	do {				\

Reviewed-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>

  Tomi



More information about the dri-devel mailing list