drm/mipi-dsi: Add helper to find input format
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@linaro.org> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Signed-off-by: Aradhya Bhatia <a-bhatia1@ti.com> Signed-off-by: Aradhya Bhatia <aradhya.bhatia@linux.dev> Link: https://lore.kernel.org/r/20250329113925.68204-8-aradhya.bhatia@linux.dev Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
This commit is contained in:
committed by
Dmitry Baryshkov
parent
7ad8b3441b
commit
e83967c355
@@ -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>
|
||||
|
||||
/**
|
||||
@@ -870,6 +872,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
|
||||
|
||||
@@ -293,6 +293,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 { \
|
||||
|
||||
Reference in New Issue
Block a user