[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