diff options
Diffstat (limited to 'include/video/imx-ipu-v3.h')
| -rw-r--r-- | include/video/imx-ipu-v3.h | 56 |
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 | */ | ||
| 397 | struct ipu_ic_colorspace { | ||
| 398 | enum v4l2_ycbcr_encoding enc; | ||
| 399 | enum v4l2_quantization quant; | ||
| 400 | enum ipu_color_space cs; | ||
| 401 | }; | ||
| 402 | |||
| 403 | static inline void | ||
| 404 | ipu_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 | |||
| 414 | struct 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 | |||
| 421 | struct 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 | |||
| 390 | struct ipu_ic; | 427 | struct ipu_ic; |
| 428 | |||
| 429 | int __ipu_ic_calc_csc(struct ipu_ic_csc *csc); | ||
| 430 | int 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); | ||
| 391 | int ipu_ic_task_init(struct ipu_ic *ic, | 437 | int 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); | ||
| 396 | int ipu_ic_task_init_rsc(struct ipu_ic *ic, | 441 | int 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); |
| 402 | int ipu_ic_task_graphics_init(struct ipu_ic *ic, | 446 | int 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); |
| 406 | void ipu_ic_task_enable(struct ipu_ic *ic); | 450 | void ipu_ic_task_enable(struct ipu_ic *ic); |
