aboutsummaryrefslogtreecommitdiffstats
path: root/include/video/imx-ipu-v3.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/video/imx-ipu-v3.h')
-rw-r--r--include/video/imx-ipu-v3.h56
1 files changed, 50 insertions, 6 deletions
diff --git a/include/video/imx-ipu-v3.h b/include/video/imx-ipu-v3.h
index b03fafa1ff58..06b0b57e996c 100644
--- a/include/video/imx-ipu-v3.h
+++ b/include/video/imx-ipu-v3.h
@@ -387,20 +387,64 @@ enum ipu_ic_task {
387 IC_NUM_TASKS, 387 IC_NUM_TASKS,
388}; 388};
389 389
390/*
391 * The parameters that describe a colorspace according to the
392 * Image Converter:
393 * - Y'CbCr encoding
394 * - quantization
395 * - "colorspace" (RGB or YUV).
396 */
397struct ipu_ic_colorspace {
398 enum v4l2_ycbcr_encoding enc;
399 enum v4l2_quantization quant;
400 enum ipu_color_space cs;
401};
402
403static inline void
404ipu_ic_fill_colorspace(struct ipu_ic_colorspace *ic_cs,
405 enum v4l2_ycbcr_encoding enc,
406 enum v4l2_quantization quant,
407 enum ipu_color_space cs)
408{
409 ic_cs->enc = enc;
410 ic_cs->quant = quant;
411 ic_cs->cs = cs;
412}
413
414struct ipu_ic_csc_params {
415 s16 coeff[3][3]; /* signed 9-bit integer coefficients */
416 s16 offset[3]; /* signed 11+2-bit fixed point offset */
417 u8 scale:2; /* scale coefficients * 2^(scale-1) */
418 bool sat:1; /* saturate to (16, 235(Y) / 240(U, V)) */
419};
420
421struct ipu_ic_csc {
422 struct ipu_ic_colorspace in_cs;
423 struct ipu_ic_colorspace out_cs;
424 struct ipu_ic_csc_params params;
425};
426
390struct ipu_ic; 427struct ipu_ic;
428
429int __ipu_ic_calc_csc(struct ipu_ic_csc *csc);
430int ipu_ic_calc_csc(struct ipu_ic_csc *csc,
431 enum v4l2_ycbcr_encoding in_enc,
432 enum v4l2_quantization in_quant,
433 enum ipu_color_space in_cs,
434 enum v4l2_ycbcr_encoding out_enc,
435 enum v4l2_quantization out_quant,
436 enum ipu_color_space out_cs);
391int ipu_ic_task_init(struct ipu_ic *ic, 437int ipu_ic_task_init(struct ipu_ic *ic,
438 const struct ipu_ic_csc *csc,
392 int in_width, int in_height, 439 int in_width, int in_height,
393 int out_width, int out_height, 440 int out_width, int out_height);
394 enum ipu_color_space in_cs,
395 enum ipu_color_space out_cs);
396int ipu_ic_task_init_rsc(struct ipu_ic *ic, 441int ipu_ic_task_init_rsc(struct ipu_ic *ic,
442 const struct ipu_ic_csc *csc,
397 int in_width, int in_height, 443 int in_width, int in_height,
398 int out_width, int out_height, 444 int out_width, int out_height,
399 enum ipu_color_space in_cs,
400 enum ipu_color_space out_cs,
401 u32 rsc); 445 u32 rsc);
402int ipu_ic_task_graphics_init(struct ipu_ic *ic, 446int ipu_ic_task_graphics_init(struct ipu_ic *ic,
403 enum ipu_color_space in_g_cs, 447 const struct ipu_ic_colorspace *g_in_cs,
404 bool galpha_en, u32 galpha, 448 bool galpha_en, u32 galpha,
405 bool colorkey_en, u32 colorkey); 449 bool colorkey_en, u32 colorkey);
406void ipu_ic_task_enable(struct ipu_ic *ic); 450void ipu_ic_task_enable(struct ipu_ic *ic);