From 091bb6442a8ca74d4a46c8142530252a7595873f Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Fri, 29 Sep 2023 17:14:11 +0300 Subject: [PATCH 0775/1085] media: rp1: cfe: Add cfe_find_16bit_code() and cfe_find_compressed_code() Add helper functions which, given an mbus code, return the 16-bit remapped mbus code or the compressed mbus code. Signed-off-by: Tomi Valkeinen --- .../media/platform/raspberrypi/rp1_cfe/cfe.c | 40 +++++++++++++++++++ .../media/platform/raspberrypi/rp1_cfe/cfe.h | 2 + 2 files changed, 42 insertions(+) --- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c +++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c @@ -473,6 +473,46 @@ const struct cfe_fmt *find_format_by_pix return NULL; } +/* + * Given the mbus code, find the 16 bit remapped code. Returns 0 if no remap + * possible. + */ +u32 cfe_find_16bit_code(u32 code) +{ + const struct cfe_fmt *cfe_fmt; + + cfe_fmt = find_format_by_code(code); + + if (!cfe_fmt || !cfe_fmt->remap[CFE_REMAP_16BIT]) + return 0; + + cfe_fmt = find_format_by_pix(cfe_fmt->remap[CFE_REMAP_16BIT]); + if (!cfe_fmt) + return 0; + + return cfe_fmt->code; +} + +/* + * Given the mbus code, find the 8 bit compressed code. Returns 0 if no remap + * possible. + */ +u32 cfe_find_compressed_code(u32 code) +{ + const struct cfe_fmt *cfe_fmt; + + cfe_fmt = find_format_by_code(code); + + if (!cfe_fmt || !cfe_fmt->remap[CFE_REMAP_COMPRESSED]) + return 0; + + cfe_fmt = find_format_by_pix(cfe_fmt->remap[CFE_REMAP_COMPRESSED]); + if (!cfe_fmt) + return 0; + + return cfe_fmt->code; +} + static int cfe_calc_format_size_bpl(struct cfe_device *cfe, const struct cfe_fmt *fmt, struct v4l2_format *f) --- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.h +++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.h @@ -37,5 +37,7 @@ extern const struct v4l2_mbus_framefmt c const struct cfe_fmt *find_format_by_code(u32 code); const struct cfe_fmt *find_format_by_pix(u32 pixelformat); +u32 cfe_find_16bit_code(u32 code); +u32 cfe_find_compressed_code(u32 code); #endif