lkml.org 
[lkml]   [2021]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectdrivers/staging/media/ipu3/ipu3-css-params.c:776:8: warning: variable 'pin_scale' set but not used
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 625acffd7ae2c52898d249e6c5c39f348db0d8df
commit: 32a363d0b0b142f35512848dc646ee53e0926723 media: Kconfig files: use select for V4L2 subdevs and MC
date: 1 year, 2 months ago
config: x86_64-buildonly-randconfig-r002-20210628 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 59558129276098d62046c8cda92240d292cbfb1c)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=32a363d0b0b142f35512848dc646ee53e0926723
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 32a363d0b0b142f35512848dc646ee53e0926723
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/staging/media/ipu3/ipu3-css-params.c:776:8: warning: variable 'pin_scale' set but not used [-Wunused-but-set-variable]
int pin_scale = 0;
^
1 warning generated.


vim +/pin_scale +776 drivers/staging/media/ipu3/ipu3-css-params.c

e11110a5b74487 Yong Zhi 2018-12-06 357
e11110a5b74487 Yong Zhi 2018-12-06 358 /*
e11110a5b74487 Yong Zhi 2018-12-06 359 * frame_params - size IMGU_ABI_OSYS_PINS
e11110a5b74487 Yong Zhi 2018-12-06 360 * stripe_params - size IPU3_UAPI_MAX_STRIPES
e11110a5b74487 Yong Zhi 2018-12-06 361 */
27b795adb3c221 Yong Zhi 2019-02-07 362 static int imgu_css_osys_calc_frame_and_stripe_params(
27b795adb3c221 Yong Zhi 2019-02-07 363 struct imgu_css *css, unsigned int stripes,
e11110a5b74487 Yong Zhi 2018-12-06 364 struct imgu_abi_osys_config *osys,
27b795adb3c221 Yong Zhi 2019-02-07 365 struct imgu_css_scaler_info *scaler_luma,
27b795adb3c221 Yong Zhi 2019-02-07 366 struct imgu_css_scaler_info *scaler_chroma,
27b795adb3c221 Yong Zhi 2019-02-07 367 struct imgu_css_frame_params frame_params[],
27b795adb3c221 Yong Zhi 2019-02-07 368 struct imgu_css_stripe_params stripe_params[],
51abe041c5ed56 Bingbu Cao 2018-12-06 369 unsigned int pipe)
e11110a5b74487 Yong Zhi 2018-12-06 370 {
27b795adb3c221 Yong Zhi 2019-02-07 371 struct imgu_css_reso reso;
e11110a5b74487 Yong Zhi 2018-12-06 372 unsigned int output_width, pin, s;
51abe041c5ed56 Bingbu Cao 2018-12-06 373 u32 input_width, input_height, target_width, target_height;
51abe041c5ed56 Bingbu Cao 2018-12-06 374 unsigned int procmode = 0;
27b795adb3c221 Yong Zhi 2019-02-07 375 struct imgu_css_pipe *css_pipe = &css->pipes[pipe];
51abe041c5ed56 Bingbu Cao 2018-12-06 376
51abe041c5ed56 Bingbu Cao 2018-12-06 377 input_width = css_pipe->rect[IPU3_CSS_RECT_GDC].width;
51abe041c5ed56 Bingbu Cao 2018-12-06 378 input_height = css_pipe->rect[IPU3_CSS_RECT_GDC].height;
51abe041c5ed56 Bingbu Cao 2018-12-06 379 target_width = css_pipe->queue[IPU3_CSS_QUEUE_VF].fmt.mpix.width;
51abe041c5ed56 Bingbu Cao 2018-12-06 380 target_height = css_pipe->queue[IPU3_CSS_QUEUE_VF].fmt.mpix.height;
e11110a5b74487 Yong Zhi 2018-12-06 381
e11110a5b74487 Yong Zhi 2018-12-06 382 /* Frame parameters */
e11110a5b74487 Yong Zhi 2018-12-06 383
e11110a5b74487 Yong Zhi 2018-12-06 384 /* Input width for Output System is output width of DVS (with GDC) */
51abe041c5ed56 Bingbu Cao 2018-12-06 385 reso.input_width = css_pipe->rect[IPU3_CSS_RECT_GDC].width;
e11110a5b74487 Yong Zhi 2018-12-06 386
e11110a5b74487 Yong Zhi 2018-12-06 387 /* Input height for Output System is output height of DVS (with GDC) */
51abe041c5ed56 Bingbu Cao 2018-12-06 388 reso.input_height = css_pipe->rect[IPU3_CSS_RECT_GDC].height;
e11110a5b74487 Yong Zhi 2018-12-06 389
e11110a5b74487 Yong Zhi 2018-12-06 390 reso.input_format =
51abe041c5ed56 Bingbu Cao 2018-12-06 391 css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->frame_format;
e11110a5b74487 Yong Zhi 2018-12-06 392
e11110a5b74487 Yong Zhi 2018-12-06 393 reso.pin_width[IMGU_ABI_OSYS_PIN_OUT] =
51abe041c5ed56 Bingbu Cao 2018-12-06 394 css_pipe->queue[IPU3_CSS_QUEUE_OUT].fmt.mpix.width;
e11110a5b74487 Yong Zhi 2018-12-06 395 reso.pin_height[IMGU_ABI_OSYS_PIN_OUT] =
51abe041c5ed56 Bingbu Cao 2018-12-06 396 css_pipe->queue[IPU3_CSS_QUEUE_OUT].fmt.mpix.height;
e11110a5b74487 Yong Zhi 2018-12-06 397 reso.pin_stride[IMGU_ABI_OSYS_PIN_OUT] =
51abe041c5ed56 Bingbu Cao 2018-12-06 398 css_pipe->queue[IPU3_CSS_QUEUE_OUT].width_pad;
e11110a5b74487 Yong Zhi 2018-12-06 399 reso.pin_format[IMGU_ABI_OSYS_PIN_OUT] =
51abe041c5ed56 Bingbu Cao 2018-12-06 400 css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->frame_format;
e11110a5b74487 Yong Zhi 2018-12-06 401
e11110a5b74487 Yong Zhi 2018-12-06 402 reso.pin_width[IMGU_ABI_OSYS_PIN_VF] =
51abe041c5ed56 Bingbu Cao 2018-12-06 403 css_pipe->queue[IPU3_CSS_QUEUE_VF].fmt.mpix.width;
e11110a5b74487 Yong Zhi 2018-12-06 404 reso.pin_height[IMGU_ABI_OSYS_PIN_VF] =
51abe041c5ed56 Bingbu Cao 2018-12-06 405 css_pipe->queue[IPU3_CSS_QUEUE_VF].fmt.mpix.height;
e11110a5b74487 Yong Zhi 2018-12-06 406 reso.pin_stride[IMGU_ABI_OSYS_PIN_VF] =
51abe041c5ed56 Bingbu Cao 2018-12-06 407 css_pipe->queue[IPU3_CSS_QUEUE_VF].width_pad;
e11110a5b74487 Yong Zhi 2018-12-06 408 reso.pin_format[IMGU_ABI_OSYS_PIN_VF] =
51abe041c5ed56 Bingbu Cao 2018-12-06 409 css_pipe->queue[IPU3_CSS_QUEUE_VF].css_fmt->frame_format;
e11110a5b74487 Yong Zhi 2018-12-06 410
e11110a5b74487 Yong Zhi 2018-12-06 411 /* Configure the frame parameters for all output pins */
e11110a5b74487 Yong Zhi 2018-12-06 412
e11110a5b74487 Yong Zhi 2018-12-06 413 frame_params[IMGU_ABI_OSYS_PIN_OUT].width =
51abe041c5ed56 Bingbu Cao 2018-12-06 414 css_pipe->queue[IPU3_CSS_QUEUE_OUT].fmt.mpix.width;
e11110a5b74487 Yong Zhi 2018-12-06 415 frame_params[IMGU_ABI_OSYS_PIN_OUT].height =
51abe041c5ed56 Bingbu Cao 2018-12-06 416 css_pipe->queue[IPU3_CSS_QUEUE_OUT].fmt.mpix.height;
e11110a5b74487 Yong Zhi 2018-12-06 417 frame_params[IMGU_ABI_OSYS_PIN_VF].width =
51abe041c5ed56 Bingbu Cao 2018-12-06 418 css_pipe->queue[IPU3_CSS_QUEUE_VF].fmt.mpix.width;
e11110a5b74487 Yong Zhi 2018-12-06 419 frame_params[IMGU_ABI_OSYS_PIN_VF].height =
51abe041c5ed56 Bingbu Cao 2018-12-06 420 css_pipe->queue[IPU3_CSS_QUEUE_VF].fmt.mpix.height;
e11110a5b74487 Yong Zhi 2018-12-06 421 frame_params[IMGU_ABI_OSYS_PIN_VF].crop_top = 0;
e11110a5b74487 Yong Zhi 2018-12-06 422 frame_params[IMGU_ABI_OSYS_PIN_VF].crop_left = 0;
e11110a5b74487 Yong Zhi 2018-12-06 423
e11110a5b74487 Yong Zhi 2018-12-06 424 for (pin = 0; pin < IMGU_ABI_OSYS_PINS; pin++) {
e11110a5b74487 Yong Zhi 2018-12-06 425 int enable = 0;
e11110a5b74487 Yong Zhi 2018-12-06 426 int scaled = 0;
e11110a5b74487 Yong Zhi 2018-12-06 427 unsigned int format = 0;
e11110a5b74487 Yong Zhi 2018-12-06 428 unsigned int tiling = 0;
e11110a5b74487 Yong Zhi 2018-12-06 429
e11110a5b74487 Yong Zhi 2018-12-06 430 frame_params[pin].flip = 0;
e11110a5b74487 Yong Zhi 2018-12-06 431 frame_params[pin].mirror = 0;
e11110a5b74487 Yong Zhi 2018-12-06 432 frame_params[pin].reduce_range = 0;
e11110a5b74487 Yong Zhi 2018-12-06 433 if (reso.pin_width[pin] != 0 && reso.pin_height[pin] != 0) {
e11110a5b74487 Yong Zhi 2018-12-06 434 enable = 1;
e11110a5b74487 Yong Zhi 2018-12-06 435 if (pin == IMGU_ABI_OSYS_PIN_OUT) {
e11110a5b74487 Yong Zhi 2018-12-06 436 if (reso.input_width < reso.pin_width[pin] ||
e11110a5b74487 Yong Zhi 2018-12-06 437 reso.input_height < reso.pin_height[pin])
e11110a5b74487 Yong Zhi 2018-12-06 438 return -EINVAL;
e11110a5b74487 Yong Zhi 2018-12-06 439 /*
e11110a5b74487 Yong Zhi 2018-12-06 440 * When input and output resolution is
e11110a5b74487 Yong Zhi 2018-12-06 441 * different instead of scaling, cropping
e11110a5b74487 Yong Zhi 2018-12-06 442 * should happen. Determine the crop factor
e11110a5b74487 Yong Zhi 2018-12-06 443 * to do the symmetric cropping
e11110a5b74487 Yong Zhi 2018-12-06 444 */
e11110a5b74487 Yong Zhi 2018-12-06 445 frame_params[pin].crop_left = roundclosest_down(
e11110a5b74487 Yong Zhi 2018-12-06 446 (reso.input_width -
e11110a5b74487 Yong Zhi 2018-12-06 447 reso.pin_width[pin]) / 2,
e11110a5b74487 Yong Zhi 2018-12-06 448 IMGU_OSYS_DMA_CROP_W_LIMIT);
e11110a5b74487 Yong Zhi 2018-12-06 449 frame_params[pin].crop_top = roundclosest_down(
e11110a5b74487 Yong Zhi 2018-12-06 450 (reso.input_height -
e11110a5b74487 Yong Zhi 2018-12-06 451 reso.pin_height[pin]) / 2,
e11110a5b74487 Yong Zhi 2018-12-06 452 IMGU_OSYS_DMA_CROP_H_LIMIT);
e11110a5b74487 Yong Zhi 2018-12-06 453 } else {
e11110a5b74487 Yong Zhi 2018-12-06 454 if (reso.pin_width[pin] != reso.input_width ||
e11110a5b74487 Yong Zhi 2018-12-06 455 reso.pin_height[pin] != reso.input_height) {
e11110a5b74487 Yong Zhi 2018-12-06 456 /*
e11110a5b74487 Yong Zhi 2018-12-06 457 * If resolution is different at input
e11110a5b74487 Yong Zhi 2018-12-06 458 * and output of OSYS, scaling is
e11110a5b74487 Yong Zhi 2018-12-06 459 * considered except when pin is MAIN.
e11110a5b74487 Yong Zhi 2018-12-06 460 * Later it will be decide whether
e11110a5b74487 Yong Zhi 2018-12-06 461 * scaler factor is 1 or other
e11110a5b74487 Yong Zhi 2018-12-06 462 * and cropping has to be done or not.
e11110a5b74487 Yong Zhi 2018-12-06 463 */
e11110a5b74487 Yong Zhi 2018-12-06 464 scaled = 1;
e11110a5b74487 Yong Zhi 2018-12-06 465 }
e11110a5b74487 Yong Zhi 2018-12-06 466 }
27b795adb3c221 Yong Zhi 2019-02-07 467 imgu_css_osys_set_format(reso.pin_format[pin], &format,
e11110a5b74487 Yong Zhi 2018-12-06 468 &tiling);
e11110a5b74487 Yong Zhi 2018-12-06 469 } else {
e11110a5b74487 Yong Zhi 2018-12-06 470 enable = 0;
e11110a5b74487 Yong Zhi 2018-12-06 471 }
e11110a5b74487 Yong Zhi 2018-12-06 472 frame_params[pin].enable = enable;
e11110a5b74487 Yong Zhi 2018-12-06 473 frame_params[pin].format = format;
e11110a5b74487 Yong Zhi 2018-12-06 474 frame_params[pin].tiling = tiling;
e11110a5b74487 Yong Zhi 2018-12-06 475 frame_params[pin].stride = reso.pin_stride[pin];
e11110a5b74487 Yong Zhi 2018-12-06 476 frame_params[pin].scaled = scaled;
e11110a5b74487 Yong Zhi 2018-12-06 477 }
e11110a5b74487 Yong Zhi 2018-12-06 478
27b795adb3c221 Yong Zhi 2019-02-07 479 imgu_css_scaler_calc(input_width, input_height, target_width,
e11110a5b74487 Yong Zhi 2018-12-06 480 target_height, osys, scaler_luma, scaler_chroma,
e11110a5b74487 Yong Zhi 2018-12-06 481 &reso.pin_width[IMGU_ABI_OSYS_PIN_VF],
e11110a5b74487 Yong Zhi 2018-12-06 482 &reso.pin_height[IMGU_ABI_OSYS_PIN_VF], &procmode);
e11110a5b74487 Yong Zhi 2018-12-06 483 dev_dbg(css->dev, "osys scaler procmode is %u", procmode);
e11110a5b74487 Yong Zhi 2018-12-06 484 output_width = reso.pin_width[IMGU_ABI_OSYS_PIN_VF];
e11110a5b74487 Yong Zhi 2018-12-06 485
e11110a5b74487 Yong Zhi 2018-12-06 486 if (output_width < reso.input_width / 2) {
e11110a5b74487 Yong Zhi 2018-12-06 487 /* Scaling factor <= 0.5 */
e11110a5b74487 Yong Zhi 2018-12-06 488 reso.chunk_width = IMGU_OSYS_BLOCK_WIDTH;
e11110a5b74487 Yong Zhi 2018-12-06 489 reso.block_width = IMGU_OSYS_BLOCK_WIDTH;
e11110a5b74487 Yong Zhi 2018-12-06 490 } else { /* 0.5 <= Scaling factor <= 1.0 */
e11110a5b74487 Yong Zhi 2018-12-06 491 reso.chunk_width = IMGU_OSYS_BLOCK_WIDTH / 2;
e11110a5b74487 Yong Zhi 2018-12-06 492 reso.block_width = IMGU_OSYS_BLOCK_WIDTH;
e11110a5b74487 Yong Zhi 2018-12-06 493 }
e11110a5b74487 Yong Zhi 2018-12-06 494
e11110a5b74487 Yong Zhi 2018-12-06 495 if (output_width <= reso.input_width * 7 / 8) {
e11110a5b74487 Yong Zhi 2018-12-06 496 /* Scaling factor <= 0.875 */
e11110a5b74487 Yong Zhi 2018-12-06 497 reso.chunk_height = IMGU_OSYS_BLOCK_HEIGHT;
e11110a5b74487 Yong Zhi 2018-12-06 498 reso.block_height = IMGU_OSYS_BLOCK_HEIGHT;
e11110a5b74487 Yong Zhi 2018-12-06 499 } else { /* 1.0 <= Scaling factor <= 1.75 */
e11110a5b74487 Yong Zhi 2018-12-06 500 reso.chunk_height = IMGU_OSYS_BLOCK_HEIGHT / 2;
e11110a5b74487 Yong Zhi 2018-12-06 501 reso.block_height = IMGU_OSYS_BLOCK_HEIGHT;
e11110a5b74487 Yong Zhi 2018-12-06 502 }
e11110a5b74487 Yong Zhi 2018-12-06 503
e11110a5b74487 Yong Zhi 2018-12-06 504 /*
e11110a5b74487 Yong Zhi 2018-12-06 505 * Calculate scaler configuration parameters based on input and output
e11110a5b74487 Yong Zhi 2018-12-06 506 * resolution.
e11110a5b74487 Yong Zhi 2018-12-06 507 */
e11110a5b74487 Yong Zhi 2018-12-06 508
e11110a5b74487 Yong Zhi 2018-12-06 509 if (frame_params[IMGU_ABI_OSYS_PIN_VF].enable) {
e11110a5b74487 Yong Zhi 2018-12-06 510 /*
e11110a5b74487 Yong Zhi 2018-12-06 511 * When aspect ratio is different between target resolution and
e11110a5b74487 Yong Zhi 2018-12-06 512 * required resolution, determine the crop factor to do
e11110a5b74487 Yong Zhi 2018-12-06 513 * symmetric cropping
e11110a5b74487 Yong Zhi 2018-12-06 514 */
e11110a5b74487 Yong Zhi 2018-12-06 515 u32 w = reso.pin_width[IMGU_ABI_OSYS_PIN_VF] -
e11110a5b74487 Yong Zhi 2018-12-06 516 frame_params[IMGU_ABI_OSYS_PIN_VF].width;
e11110a5b74487 Yong Zhi 2018-12-06 517 u32 h = reso.pin_height[IMGU_ABI_OSYS_PIN_VF] -
e11110a5b74487 Yong Zhi 2018-12-06 518 frame_params[IMGU_ABI_OSYS_PIN_VF].height;
e11110a5b74487 Yong Zhi 2018-12-06 519
e11110a5b74487 Yong Zhi 2018-12-06 520 frame_params[IMGU_ABI_OSYS_PIN_VF].crop_left =
e11110a5b74487 Yong Zhi 2018-12-06 521 roundclosest_down(w / 2, IMGU_OSYS_DMA_CROP_W_LIMIT);
e11110a5b74487 Yong Zhi 2018-12-06 522 frame_params[IMGU_ABI_OSYS_PIN_VF].crop_top =
e11110a5b74487 Yong Zhi 2018-12-06 523 roundclosest_down(h / 2, IMGU_OSYS_DMA_CROP_H_LIMIT);
e11110a5b74487 Yong Zhi 2018-12-06 524
e11110a5b74487 Yong Zhi 2018-12-06 525 if (reso.input_height % 4 || reso.input_width % 8) {
e11110a5b74487 Yong Zhi 2018-12-06 526 dev_err(css->dev, "OSYS input width is not multiple of 8 or\n");
e11110a5b74487 Yong Zhi 2018-12-06 527 dev_err(css->dev, "height is not multiple of 4\n");
e11110a5b74487 Yong Zhi 2018-12-06 528 return -EINVAL;
e11110a5b74487 Yong Zhi 2018-12-06 529 }
e11110a5b74487 Yong Zhi 2018-12-06 530 }
e11110a5b74487 Yong Zhi 2018-12-06 531
e11110a5b74487 Yong Zhi 2018-12-06 532 /* Stripe parameters */
e11110a5b74487 Yong Zhi 2018-12-06 533
e11110a5b74487 Yong Zhi 2018-12-06 534 if (frame_params[IMGU_ABI_OSYS_PIN_VF].enable) {
e11110a5b74487 Yong Zhi 2018-12-06 535 output_width = reso.pin_width[IMGU_ABI_OSYS_PIN_VF];
e11110a5b74487 Yong Zhi 2018-12-06 536 } else {
e11110a5b74487 Yong Zhi 2018-12-06 537 /*
e11110a5b74487 Yong Zhi 2018-12-06 538 * in case scaler output is not enabled
e11110a5b74487 Yong Zhi 2018-12-06 539 * take output width as input width since
e11110a5b74487 Yong Zhi 2018-12-06 540 * there is no scaling at main pin.
e11110a5b74487 Yong Zhi 2018-12-06 541 * Due to the fact that main pin can be different
e11110a5b74487 Yong Zhi 2018-12-06 542 * from input resolution to osys in the case of cropping,
e11110a5b74487 Yong Zhi 2018-12-06 543 * main pin resolution is not taken.
e11110a5b74487 Yong Zhi 2018-12-06 544 */
e11110a5b74487 Yong Zhi 2018-12-06 545 output_width = reso.input_width;
e11110a5b74487 Yong Zhi 2018-12-06 546 }
e11110a5b74487 Yong Zhi 2018-12-06 547
e11110a5b74487 Yong Zhi 2018-12-06 548 for (s = 0; s < stripes; s++) {
e11110a5b74487 Yong Zhi 2018-12-06 549 int stripe_offset_inp_y = 0;
e11110a5b74487 Yong Zhi 2018-12-06 550 int stripe_offset_inp_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 551 int stripe_offset_out_y = 0;
e11110a5b74487 Yong Zhi 2018-12-06 552 int stripe_offset_out_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 553 int stripe_phase_init_y = scaler_luma->phase_init;
e11110a5b74487 Yong Zhi 2018-12-06 554 int stripe_phase_init_uv = scaler_chroma->phase_init;
e11110a5b74487 Yong Zhi 2018-12-06 555 int stripe_offset_blk_y = 0;
e11110a5b74487 Yong Zhi 2018-12-06 556 int stripe_offset_blk_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 557 int stripe_offset_col_y = 0;
e11110a5b74487 Yong Zhi 2018-12-06 558 int stripe_offset_col_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 559 int stripe_pad_left_y = scaler_luma->pad_left;
e11110a5b74487 Yong Zhi 2018-12-06 560 int stripe_pad_left_uv = scaler_chroma->pad_left;
e11110a5b74487 Yong Zhi 2018-12-06 561 int stripe_pad_right_y = scaler_luma->pad_right;
e11110a5b74487 Yong Zhi 2018-12-06 562 int stripe_pad_right_uv = scaler_chroma->pad_right;
e11110a5b74487 Yong Zhi 2018-12-06 563 int stripe_crop_left_y = scaler_luma->crop_left;
e11110a5b74487 Yong Zhi 2018-12-06 564 int stripe_crop_left_uv = scaler_chroma->crop_left;
e11110a5b74487 Yong Zhi 2018-12-06 565 int stripe_input_width_y = reso.input_width;
e11110a5b74487 Yong Zhi 2018-12-06 566 int stripe_input_width_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 567 int stripe_output_width_y = output_width;
e11110a5b74487 Yong Zhi 2018-12-06 568 int stripe_output_width_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 569 int chunk_floor_y = 0;
e11110a5b74487 Yong Zhi 2018-12-06 570 int chunk_floor_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 571 int chunk_ceil_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 572
e11110a5b74487 Yong Zhi 2018-12-06 573 if (stripes > 1) {
e11110a5b74487 Yong Zhi 2018-12-06 574 if (s > 0) {
e11110a5b74487 Yong Zhi 2018-12-06 575 /* Calculate stripe offsets */
e11110a5b74487 Yong Zhi 2018-12-06 576 stripe_offset_out_y =
e11110a5b74487 Yong Zhi 2018-12-06 577 output_width * s / stripes;
e11110a5b74487 Yong Zhi 2018-12-06 578 stripe_offset_out_y =
e11110a5b74487 Yong Zhi 2018-12-06 579 rounddown(stripe_offset_out_y,
e11110a5b74487 Yong Zhi 2018-12-06 580 IPU3_UAPI_ISP_VEC_ELEMS);
e11110a5b74487 Yong Zhi 2018-12-06 581 stripe_offset_out_uv = stripe_offset_out_y /
e11110a5b74487 Yong Zhi 2018-12-06 582 IMGU_LUMA_TO_CHROMA_RATIO;
e11110a5b74487 Yong Zhi 2018-12-06 583 stripe_offset_inp_y =
27b795adb3c221 Yong Zhi 2019-02-07 584 imgu_css_osys_calc_stripe_offset(
e11110a5b74487 Yong Zhi 2018-12-06 585 stripe_offset_out_y,
e11110a5b74487 Yong Zhi 2018-12-06 586 IMGU_OSYS_FIR_PHASES,
e11110a5b74487 Yong Zhi 2018-12-06 587 scaler_luma->phase_init,
e11110a5b74487 Yong Zhi 2018-12-06 588 scaler_luma->phase_step,
e11110a5b74487 Yong Zhi 2018-12-06 589 scaler_luma->pad_left);
e11110a5b74487 Yong Zhi 2018-12-06 590 stripe_offset_inp_uv =
27b795adb3c221 Yong Zhi 2019-02-07 591 imgu_css_osys_calc_stripe_offset(
e11110a5b74487 Yong Zhi 2018-12-06 592 stripe_offset_out_uv,
e11110a5b74487 Yong Zhi 2018-12-06 593 IMGU_OSYS_FIR_PHASES,
e11110a5b74487 Yong Zhi 2018-12-06 594 scaler_chroma->phase_init,
e11110a5b74487 Yong Zhi 2018-12-06 595 scaler_chroma->phase_step,
e11110a5b74487 Yong Zhi 2018-12-06 596 scaler_chroma->pad_left);
e11110a5b74487 Yong Zhi 2018-12-06 597
e11110a5b74487 Yong Zhi 2018-12-06 598 /* Calculate stripe phase init */
e11110a5b74487 Yong Zhi 2018-12-06 599 stripe_phase_init_y =
27b795adb3c221 Yong Zhi 2019-02-07 600 imgu_css_osys_calc_stripe_phase_init(
e11110a5b74487 Yong Zhi 2018-12-06 601 stripe_offset_out_y,
e11110a5b74487 Yong Zhi 2018-12-06 602 IMGU_OSYS_FIR_PHASES,
e11110a5b74487 Yong Zhi 2018-12-06 603 scaler_luma->phase_init,
e11110a5b74487 Yong Zhi 2018-12-06 604 scaler_luma->phase_step,
e11110a5b74487 Yong Zhi 2018-12-06 605 scaler_luma->pad_left);
e11110a5b74487 Yong Zhi 2018-12-06 606 stripe_phase_init_uv =
27b795adb3c221 Yong Zhi 2019-02-07 607 imgu_css_osys_calc_stripe_phase_init(
e11110a5b74487 Yong Zhi 2018-12-06 608 stripe_offset_out_uv,
e11110a5b74487 Yong Zhi 2018-12-06 609 IMGU_OSYS_FIR_PHASES,
e11110a5b74487 Yong Zhi 2018-12-06 610 scaler_chroma->phase_init,
e11110a5b74487 Yong Zhi 2018-12-06 611 scaler_chroma->phase_step,
e11110a5b74487 Yong Zhi 2018-12-06 612 scaler_chroma->pad_left);
e11110a5b74487 Yong Zhi 2018-12-06 613
e11110a5b74487 Yong Zhi 2018-12-06 614 /*
e11110a5b74487 Yong Zhi 2018-12-06 615 * Chunk boundary corner case - luma and chroma
e11110a5b74487 Yong Zhi 2018-12-06 616 * start from different input chunks.
e11110a5b74487 Yong Zhi 2018-12-06 617 */
e11110a5b74487 Yong Zhi 2018-12-06 618 chunk_floor_y = rounddown(stripe_offset_inp_y,
e11110a5b74487 Yong Zhi 2018-12-06 619 reso.chunk_width);
e11110a5b74487 Yong Zhi 2018-12-06 620 chunk_floor_uv =
e11110a5b74487 Yong Zhi 2018-12-06 621 rounddown(stripe_offset_inp_uv,
e11110a5b74487 Yong Zhi 2018-12-06 622 reso.chunk_width /
e11110a5b74487 Yong Zhi 2018-12-06 623 IMGU_LUMA_TO_CHROMA_RATIO);
e11110a5b74487 Yong Zhi 2018-12-06 624
e11110a5b74487 Yong Zhi 2018-12-06 625 if (chunk_floor_y != chunk_floor_uv *
e11110a5b74487 Yong Zhi 2018-12-06 626 IMGU_LUMA_TO_CHROMA_RATIO) {
e11110a5b74487 Yong Zhi 2018-12-06 627 /*
e11110a5b74487 Yong Zhi 2018-12-06 628 * Match starting luma/chroma chunks.
e11110a5b74487 Yong Zhi 2018-12-06 629 * Decrease offset for UV and add output
e11110a5b74487 Yong Zhi 2018-12-06 630 * cropping.
e11110a5b74487 Yong Zhi 2018-12-06 631 */
e11110a5b74487 Yong Zhi 2018-12-06 632 stripe_offset_inp_uv -= 1;
e11110a5b74487 Yong Zhi 2018-12-06 633 stripe_crop_left_uv += 1;
e11110a5b74487 Yong Zhi 2018-12-06 634 stripe_phase_init_uv -=
e11110a5b74487 Yong Zhi 2018-12-06 635 scaler_luma->phase_step;
e11110a5b74487 Yong Zhi 2018-12-06 636 if (stripe_phase_init_uv < 0)
e11110a5b74487 Yong Zhi 2018-12-06 637 stripe_phase_init_uv =
e11110a5b74487 Yong Zhi 2018-12-06 638 stripe_phase_init_uv +
e11110a5b74487 Yong Zhi 2018-12-06 639 IMGU_OSYS_FIR_PHASES;
e11110a5b74487 Yong Zhi 2018-12-06 640 }
e11110a5b74487 Yong Zhi 2018-12-06 641 /*
e11110a5b74487 Yong Zhi 2018-12-06 642 * FW workaround for a HW bug: if the first
e11110a5b74487 Yong Zhi 2018-12-06 643 * chroma pixel is generated exactly at the end
e11110a5b74487 Yong Zhi 2018-12-06 644 * of chunck scaler HW may not output the pixel
e11110a5b74487 Yong Zhi 2018-12-06 645 * for downscale factors smaller than 1.5
e11110a5b74487 Yong Zhi 2018-12-06 646 * (timing issue).
e11110a5b74487 Yong Zhi 2018-12-06 647 */
e11110a5b74487 Yong Zhi 2018-12-06 648 chunk_ceil_uv =
e11110a5b74487 Yong Zhi 2018-12-06 649 roundup(stripe_offset_inp_uv,
e11110a5b74487 Yong Zhi 2018-12-06 650 reso.chunk_width /
e11110a5b74487 Yong Zhi 2018-12-06 651 IMGU_LUMA_TO_CHROMA_RATIO);
e11110a5b74487 Yong Zhi 2018-12-06 652
e11110a5b74487 Yong Zhi 2018-12-06 653 if (stripe_offset_inp_uv ==
e11110a5b74487 Yong Zhi 2018-12-06 654 chunk_ceil_uv - IMGU_OSYS_TAPS_UV) {
e11110a5b74487 Yong Zhi 2018-12-06 655 /*
e11110a5b74487 Yong Zhi 2018-12-06 656 * Decrease input offset and add
e11110a5b74487 Yong Zhi 2018-12-06 657 * output cropping
e11110a5b74487 Yong Zhi 2018-12-06 658 */
e11110a5b74487 Yong Zhi 2018-12-06 659 stripe_offset_inp_uv -= 1;
e11110a5b74487 Yong Zhi 2018-12-06 660 stripe_phase_init_uv -=
e11110a5b74487 Yong Zhi 2018-12-06 661 scaler_luma->phase_step;
e11110a5b74487 Yong Zhi 2018-12-06 662 if (stripe_phase_init_uv < 0) {
e11110a5b74487 Yong Zhi 2018-12-06 663 stripe_phase_init_uv +=
e11110a5b74487 Yong Zhi 2018-12-06 664 IMGU_OSYS_FIR_PHASES;
e11110a5b74487 Yong Zhi 2018-12-06 665 stripe_crop_left_uv += 1;
e11110a5b74487 Yong Zhi 2018-12-06 666 }
e11110a5b74487 Yong Zhi 2018-12-06 667 }
e11110a5b74487 Yong Zhi 2018-12-06 668
e11110a5b74487 Yong Zhi 2018-12-06 669 /*
e11110a5b74487 Yong Zhi 2018-12-06 670 * Calculate block and column offsets for the
e11110a5b74487 Yong Zhi 2018-12-06 671 * input stripe
e11110a5b74487 Yong Zhi 2018-12-06 672 */
e11110a5b74487 Yong Zhi 2018-12-06 673 stripe_offset_blk_y =
e11110a5b74487 Yong Zhi 2018-12-06 674 rounddown(stripe_offset_inp_y,
e11110a5b74487 Yong Zhi 2018-12-06 675 IMGU_INPUT_BLOCK_WIDTH);
e11110a5b74487 Yong Zhi 2018-12-06 676 stripe_offset_blk_uv =
e11110a5b74487 Yong Zhi 2018-12-06 677 rounddown(stripe_offset_inp_uv,
e11110a5b74487 Yong Zhi 2018-12-06 678 IMGU_INPUT_BLOCK_WIDTH /
e11110a5b74487 Yong Zhi 2018-12-06 679 IMGU_LUMA_TO_CHROMA_RATIO);
e11110a5b74487 Yong Zhi 2018-12-06 680 stripe_offset_col_y = stripe_offset_inp_y -
e11110a5b74487 Yong Zhi 2018-12-06 681 stripe_offset_blk_y;
e11110a5b74487 Yong Zhi 2018-12-06 682 stripe_offset_col_uv = stripe_offset_inp_uv -
e11110a5b74487 Yong Zhi 2018-12-06 683 stripe_offset_blk_uv;
e11110a5b74487 Yong Zhi 2018-12-06 684
e11110a5b74487 Yong Zhi 2018-12-06 685 /* Left padding is only for the first stripe */
e11110a5b74487 Yong Zhi 2018-12-06 686 stripe_pad_left_y = 0;
e11110a5b74487 Yong Zhi 2018-12-06 687 stripe_pad_left_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 688 }
e11110a5b74487 Yong Zhi 2018-12-06 689
e11110a5b74487 Yong Zhi 2018-12-06 690 /* Right padding is only for the last stripe */
e11110a5b74487 Yong Zhi 2018-12-06 691 if (s < stripes - 1) {
e11110a5b74487 Yong Zhi 2018-12-06 692 int next_offset;
e11110a5b74487 Yong Zhi 2018-12-06 693
e11110a5b74487 Yong Zhi 2018-12-06 694 stripe_pad_right_y = 0;
e11110a5b74487 Yong Zhi 2018-12-06 695 stripe_pad_right_uv = 0;
e11110a5b74487 Yong Zhi 2018-12-06 696
e11110a5b74487 Yong Zhi 2018-12-06 697 next_offset = output_width * (s + 1) / stripes;
e11110a5b74487 Yong Zhi 2018-12-06 698 next_offset = rounddown(next_offset, 64);
e11110a5b74487 Yong Zhi 2018-12-06 699 stripe_output_width_y = next_offset -
e11110a5b74487 Yong Zhi 2018-12-06 700 stripe_offset_out_y;
e11110a5b74487 Yong Zhi 2018-12-06 701 } else {
e11110a5b74487 Yong Zhi 2018-12-06 702 stripe_output_width_y = output_width -
e11110a5b74487 Yong Zhi 2018-12-06 703 stripe_offset_out_y;
e11110a5b74487 Yong Zhi 2018-12-06 704 }
e11110a5b74487 Yong Zhi 2018-12-06 705
e11110a5b74487 Yong Zhi 2018-12-06 706 /* Calculate target output stripe width */
e11110a5b74487 Yong Zhi 2018-12-06 707 stripe_output_width_uv = stripe_output_width_y /
e11110a5b74487 Yong Zhi 2018-12-06 708 IMGU_LUMA_TO_CHROMA_RATIO;
e11110a5b74487 Yong Zhi 2018-12-06 709 /* Calculate input stripe width */
e11110a5b74487 Yong Zhi 2018-12-06 710 stripe_input_width_y = stripe_offset_col_y +
27b795adb3c221 Yong Zhi 2019-02-07 711 imgu_css_osys_calc_inp_stripe_width(
e11110a5b74487 Yong Zhi 2018-12-06 712 stripe_output_width_y,
e11110a5b74487 Yong Zhi 2018-12-06 713 IMGU_OSYS_FIR_PHASES,
e11110a5b74487 Yong Zhi 2018-12-06 714 stripe_phase_init_y,
e11110a5b74487 Yong Zhi 2018-12-06 715 scaler_luma->phase_step,
e11110a5b74487 Yong Zhi 2018-12-06 716 IMGU_OSYS_TAPS_Y,
e11110a5b74487 Yong Zhi 2018-12-06 717 stripe_pad_left_y,
e11110a5b74487 Yong Zhi 2018-12-06 718 stripe_pad_right_y);
e11110a5b74487 Yong Zhi 2018-12-06 719
e11110a5b74487 Yong Zhi 2018-12-06 720 stripe_input_width_uv = stripe_offset_col_uv +
27b795adb3c221 Yong Zhi 2019-02-07 721 imgu_css_osys_calc_inp_stripe_width(
e11110a5b74487 Yong Zhi 2018-12-06 722 stripe_output_width_uv,
e11110a5b74487 Yong Zhi 2018-12-06 723 IMGU_OSYS_FIR_PHASES,
e11110a5b74487 Yong Zhi 2018-12-06 724 stripe_phase_init_uv,
e11110a5b74487 Yong Zhi 2018-12-06 725 scaler_chroma->phase_step,
e11110a5b74487 Yong Zhi 2018-12-06 726 IMGU_OSYS_TAPS_UV,
e11110a5b74487 Yong Zhi 2018-12-06 727 stripe_pad_left_uv,
e11110a5b74487 Yong Zhi 2018-12-06 728 stripe_pad_right_uv);
e11110a5b74487 Yong Zhi 2018-12-06 729
e11110a5b74487 Yong Zhi 2018-12-06 730 stripe_input_width_uv = max(DIV_ROUND_UP(
e11110a5b74487 Yong Zhi 2018-12-06 731 stripe_input_width_y,
e11110a5b74487 Yong Zhi 2018-12-06 732 IMGU_LUMA_TO_CHROMA_RATIO),
e11110a5b74487 Yong Zhi 2018-12-06 733 stripe_input_width_uv);
e11110a5b74487 Yong Zhi 2018-12-06 734
e11110a5b74487 Yong Zhi 2018-12-06 735 stripe_input_width_y = stripe_input_width_uv *
e11110a5b74487 Yong Zhi 2018-12-06 736 IMGU_LUMA_TO_CHROMA_RATIO;
e11110a5b74487 Yong Zhi 2018-12-06 737
e11110a5b74487 Yong Zhi 2018-12-06 738 if (s >= stripes - 1) {
e11110a5b74487 Yong Zhi 2018-12-06 739 stripe_input_width_y = reso.input_width -
e11110a5b74487 Yong Zhi 2018-12-06 740 stripe_offset_blk_y;
e11110a5b74487 Yong Zhi 2018-12-06 741 /*
e11110a5b74487 Yong Zhi 2018-12-06 742 * The scaler requires that the last stripe
e11110a5b74487 Yong Zhi 2018-12-06 743 * spans at least two input blocks.
e11110a5b74487 Yong Zhi 2018-12-06 744 */
e11110a5b74487 Yong Zhi 2018-12-06 745 }
e11110a5b74487 Yong Zhi 2018-12-06 746
e11110a5b74487 Yong Zhi 2018-12-06 747 /*
e11110a5b74487 Yong Zhi 2018-12-06 748 * Spec: input stripe width must be a multiple of 8.
e11110a5b74487 Yong Zhi 2018-12-06 749 * Increase the input width and recalculate the output
e11110a5b74487 Yong Zhi 2018-12-06 750 * width. This may produce an extra column of junk
e11110a5b74487 Yong Zhi 2018-12-06 751 * blocks which will be overwritten by the
e11110a5b74487 Yong Zhi 2018-12-06 752 * next stripe.
e11110a5b74487 Yong Zhi 2018-12-06 753 */
e11110a5b74487 Yong Zhi 2018-12-06 754 stripe_input_width_y = ALIGN(stripe_input_width_y, 8);
e11110a5b74487 Yong Zhi 2018-12-06 755 stripe_output_width_y =
27b795adb3c221 Yong Zhi 2019-02-07 756 imgu_css_osys_out_stripe_width(
e11110a5b74487 Yong Zhi 2018-12-06 757 stripe_input_width_y,
e11110a5b74487 Yong Zhi 2018-12-06 758 IMGU_OSYS_FIR_PHASES,
e11110a5b74487 Yong Zhi 2018-12-06 759 stripe_phase_init_y,
e11110a5b74487 Yong Zhi 2018-12-06 760 scaler_luma->phase_step,
e11110a5b74487 Yong Zhi 2018-12-06 761 IMGU_OSYS_TAPS_Y,
e11110a5b74487 Yong Zhi 2018-12-06 762 stripe_pad_left_y,
e11110a5b74487 Yong Zhi 2018-12-06 763 stripe_pad_right_y,
e11110a5b74487 Yong Zhi 2018-12-06 764 stripe_offset_col_y);
e11110a5b74487 Yong Zhi 2018-12-06 765
e11110a5b74487 Yong Zhi 2018-12-06 766 stripe_output_width_y =
e11110a5b74487 Yong Zhi 2018-12-06 767 rounddown(stripe_output_width_y,
e11110a5b74487 Yong Zhi 2018-12-06 768 IMGU_LUMA_TO_CHROMA_RATIO);
e11110a5b74487 Yong Zhi 2018-12-06 769 }
e11110a5b74487 Yong Zhi 2018-12-06 770 /*
e11110a5b74487 Yong Zhi 2018-12-06 771 * Following section executes and process parameters
e11110a5b74487 Yong Zhi 2018-12-06 772 * for both cases - Striping or No Striping.
e11110a5b74487 Yong Zhi 2018-12-06 773 */
e11110a5b74487 Yong Zhi 2018-12-06 774 {
e11110a5b74487 Yong Zhi 2018-12-06 775 unsigned int i;
e11110a5b74487 Yong Zhi 2018-12-06 @776 int pin_scale = 0;
e11110a5b74487 Yong Zhi 2018-12-06 777 /*Input resolution */
e11110a5b74487 Yong Zhi 2018-12-06 778
e11110a5b74487 Yong Zhi 2018-12-06 779 stripe_params[s].input_width = stripe_input_width_y;
e11110a5b74487 Yong Zhi 2018-12-06 780 stripe_params[s].input_height = reso.input_height;
e11110a5b74487 Yong Zhi 2018-12-06 781
e11110a5b74487 Yong Zhi 2018-12-06 782 for (i = 0; i < IMGU_ABI_OSYS_PINS; i++) {
e11110a5b74487 Yong Zhi 2018-12-06 783 if (frame_params[i].scaled) {
e11110a5b74487 Yong Zhi 2018-12-06 784 /*
e11110a5b74487 Yong Zhi 2018-12-06 785 * Output stripe resolution and offset
e11110a5b74487 Yong Zhi 2018-12-06 786 * as produced by the scaler; actual
e11110a5b74487 Yong Zhi 2018-12-06 787 * output resolution may be slightly
e11110a5b74487 Yong Zhi 2018-12-06 788 * smaller.
e11110a5b74487 Yong Zhi 2018-12-06 789 */
e11110a5b74487 Yong Zhi 2018-12-06 790 stripe_params[s].output_width[i] =
e11110a5b74487 Yong Zhi 2018-12-06 791 stripe_output_width_y;
e11110a5b74487 Yong Zhi 2018-12-06 792 stripe_params[s].output_height[i] =
e11110a5b74487 Yong Zhi 2018-12-06 793 reso.pin_height[i];
e11110a5b74487 Yong Zhi 2018-12-06 794 stripe_params[s].output_offset[i] =
e11110a5b74487 Yong Zhi 2018-12-06 795 stripe_offset_out_y;
e11110a5b74487 Yong Zhi 2018-12-06 796
e11110a5b74487 Yong Zhi 2018-12-06 797 pin_scale += frame_params[i].scaled;
e11110a5b74487 Yong Zhi 2018-12-06 798 } else {
e11110a5b74487 Yong Zhi 2018-12-06 799 /* Unscaled pin */
e11110a5b74487 Yong Zhi 2018-12-06 800 stripe_params[s].output_width[i] =
e11110a5b74487 Yong Zhi 2018-12-06 801 stripe_params[s].input_width;
e11110a5b74487 Yong Zhi 2018-12-06 802 stripe_params[s].output_height[i] =
e11110a5b74487 Yong Zhi 2018-12-06 803 stripe_params[s].input_height;
e11110a5b74487 Yong Zhi 2018-12-06 804 stripe_params[s].output_offset[i] =
e11110a5b74487 Yong Zhi 2018-12-06 805 stripe_offset_blk_y;
e11110a5b74487 Yong Zhi 2018-12-06 806 }
e11110a5b74487 Yong Zhi 2018-12-06 807 }
e11110a5b74487 Yong Zhi 2018-12-06 808
e11110a5b74487 Yong Zhi 2018-12-06 809 /* If no pin use scale, we use BYPASS mode */
e11110a5b74487 Yong Zhi 2018-12-06 810 stripe_params[s].processing_mode = procmode;
e11110a5b74487 Yong Zhi 2018-12-06 811 stripe_params[s].phase_step = scaler_luma->phase_step;
e11110a5b74487 Yong Zhi 2018-12-06 812 stripe_params[s].exp_shift = scaler_luma->exp_shift;
e11110a5b74487 Yong Zhi 2018-12-06 813 stripe_params[s].phase_init_left_y =
e11110a5b74487 Yong Zhi 2018-12-06 814 stripe_phase_init_y;
e11110a5b74487 Yong Zhi 2018-12-06 815 stripe_params[s].phase_init_left_uv =
e11110a5b74487 Yong Zhi 2018-12-06 816 stripe_phase_init_uv;
e11110a5b74487 Yong Zhi 2018-12-06 817 stripe_params[s].phase_init_top_y =
e11110a5b74487 Yong Zhi 2018-12-06 818 scaler_luma->phase_init;
e11110a5b74487 Yong Zhi 2018-12-06 819 stripe_params[s].phase_init_top_uv =
e11110a5b74487 Yong Zhi 2018-12-06 820 scaler_chroma->phase_init;
e11110a5b74487 Yong Zhi 2018-12-06 821 stripe_params[s].pad_left_y = stripe_pad_left_y;
e11110a5b74487 Yong Zhi 2018-12-06 822 stripe_params[s].pad_left_uv = stripe_pad_left_uv;
e11110a5b74487 Yong Zhi 2018-12-06 823 stripe_params[s].pad_right_y = stripe_pad_right_y;
e11110a5b74487 Yong Zhi 2018-12-06 824 stripe_params[s].pad_right_uv = stripe_pad_right_uv;
e11110a5b74487 Yong Zhi 2018-12-06 825 stripe_params[s].pad_top_y = scaler_luma->pad_left;
e11110a5b74487 Yong Zhi 2018-12-06 826 stripe_params[s].pad_top_uv = scaler_chroma->pad_left;
e11110a5b74487 Yong Zhi 2018-12-06 827 stripe_params[s].pad_bottom_y = scaler_luma->pad_right;
e11110a5b74487 Yong Zhi 2018-12-06 828 stripe_params[s].pad_bottom_uv =
e11110a5b74487 Yong Zhi 2018-12-06 829 scaler_chroma->pad_right;
e11110a5b74487 Yong Zhi 2018-12-06 830 stripe_params[s].crop_left_y = stripe_crop_left_y;
e11110a5b74487 Yong Zhi 2018-12-06 831 stripe_params[s].crop_top_y = scaler_luma->crop_top;
e11110a5b74487 Yong Zhi 2018-12-06 832 stripe_params[s].crop_left_uv = stripe_crop_left_uv;
e11110a5b74487 Yong Zhi 2018-12-06 833 stripe_params[s].crop_top_uv = scaler_chroma->crop_top;
e11110a5b74487 Yong Zhi 2018-12-06 834 stripe_params[s].start_column_y = stripe_offset_col_y;
e11110a5b74487 Yong Zhi 2018-12-06 835 stripe_params[s].start_column_uv = stripe_offset_col_uv;
e11110a5b74487 Yong Zhi 2018-12-06 836 stripe_params[s].chunk_width = reso.chunk_width;
e11110a5b74487 Yong Zhi 2018-12-06 837 stripe_params[s].chunk_height = reso.chunk_height;
e11110a5b74487 Yong Zhi 2018-12-06 838 stripe_params[s].block_width = reso.block_width;
e11110a5b74487 Yong Zhi 2018-12-06 839 stripe_params[s].block_height = reso.block_height;
e11110a5b74487 Yong Zhi 2018-12-06 840 }
e11110a5b74487 Yong Zhi 2018-12-06 841 }
e11110a5b74487 Yong Zhi 2018-12-06 842
e11110a5b74487 Yong Zhi 2018-12-06 843 return 0;
e11110a5b74487 Yong Zhi 2018-12-06 844 }
e11110a5b74487 Yong Zhi 2018-12-06 845

:::::: The code at line 776 was first introduced by commit
:::::: e11110a5b74487cfc99dad8a5744fe26782f5d9c media: staging/intel-ipu3: css: Compute and program ccs

:::::: TO: Yong Zhi <yong.zhi@intel.com>
:::::: CC: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[unhandled content-type:application/gzip]
\
 
 \ /
  Last update: 2021-06-27 22:42    [W:0.032 / U:0.224 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site