Hi Xia, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linuxtv-media/master] [cannot apply to v5.3 next-20190920] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Xia-Jiang/Add-support-for-mt2701-JPEG-ENC-support/20190924-161234 base: git://linuxtv.org/media_tree.git master reproduce: # apt-get install sparse # sparse version: v0.6.1-rc1-7-g2b96cd8-dirty make ARCH=x86_64 allmodconfig make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> sparse warnings: (new ones prefixed by >>) include/linux/sched.h:609:43: sparse: sparse: bad integer constant expression include/linux/sched.h:609:73: sparse: sparse: invalid named zero-width bitfield `value' include/linux/sched.h:610:43: sparse: sparse: bad integer constant expression include/linux/sched.h:610:67: sparse: sparse: invalid named zero-width bitfield `bucket_id' >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: incompatible types in comparison expression (different signedness): >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: unsigned int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: cast from unknown type >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: incompatible types in comparison expression (different signedness): >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: unsigned int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: incompatible types in comparison expression (different signedness): >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: unsigned int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: cast from unknown type >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: incompatible types in comparison expression (different signedness): >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: unsigned int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: cast from unknown type >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: incompatible types in comparison expression (different signedness): >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: unsigned int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: int * >> drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:338:42: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:341:41: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:417:34: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: cast from unknown type drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: incompatible types in comparison expression (different signedness): drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: unsigned int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: int * drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:419:33: sparse: sparse: cast from unknown type vim +338 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c 316 317 static int mtk_jpeg_try_fmt_mplane(struct v4l2_format *f, 318 struct mtk_jpeg_fmt *fmt, 319 struct mtk_jpeg_ctx *ctx, int q_type) 320 { 321 struct v4l2_pix_format_mplane *pix_mp = &f->fmt.pix_mp; 322 struct mtk_jpeg_dev *jpeg = ctx->jpeg; 323 int i, align_w, align_h; 324 325 memset(pix_mp->reserved, 0, sizeof(pix_mp->reserved)); 326 pix_mp->field = V4L2_FIELD_NONE; 327 328 if (ctx->state != MTK_JPEG_INIT) { 329 mtk_jpeg_adjust_fmt_mplane(ctx, f); 330 goto end; 331 } 332 333 pix_mp->num_planes = fmt->colplanes; 334 pix_mp->pixelformat = fmt->fourcc; 335 336 if (q_type == MTK_JPEG_FMT_TYPE_OUTPUT) { 337 if (jpeg->mode == MTK_JPEG_ENC) { > 338 pix_mp->height = clamp(pix_mp->height, 339 MTK_JPEG_MIN_HEIGHT, 340 MTK_JPEG_MAX_HEIGHT); 341 pix_mp->width = clamp(pix_mp->width, 342 MTK_JPEG_MIN_WIDTH, 343 MTK_JPEG_MAX_WIDTH); 344 align_w = pix_mp->width; 345 align_h = pix_mp->height; 346 align_w = round_up(align_w, 2); 347 if (pix_mp->num_planes == 1U) { 348 align_w = align_w << 1; 349 mtk_jpeg_bound_align_image(&align_w, 350 MTK_JPEG_MIN_WIDTH, 351 MTK_JPEG_MAX_WIDTH, 352 5, &align_h, 353 MTK_JPEG_MIN_HEIGHT, 354 MTK_JPEG_MAX_HEIGHT, 355 3); 356 pix_mp->plane_fmt[0].bytesperline = align_w; 357 pix_mp->plane_fmt[0].sizeimage = 358 align_w * align_h; 359 } else if (pix_mp->num_planes == 2U) { 360 mtk_jpeg_bound_align_image(&align_w, 361 MTK_JPEG_MIN_WIDTH, 362 MTK_JPEG_MAX_WIDTH, 363 4, &align_h, 364 MTK_JPEG_MIN_HEIGHT, 365 MTK_JPEG_MAX_HEIGHT, 366 4); 367 pix_mp->plane_fmt[0].bytesperline = align_w; 368 pix_mp->plane_fmt[0].sizeimage = 369 align_w * align_h; 370 pix_mp->plane_fmt[1].bytesperline = align_w; 371 pix_mp->plane_fmt[1].sizeimage = 372 (align_w * align_h) / 2; 373 } else { 374 v4l2_err(&ctx->jpeg->v4l2_dev, 375 "Unsupport num planes = %d\n", 376 pix_mp->num_planes); 377 } 378 goto end; 379 } else { 380 struct v4l2_plane_pix_format *pfmt = 381 &pix_mp->plane_fmt[0]; 382 383 mtk_jpeg_bound_align_image(&pix_mp->width, 384 MTK_JPEG_MIN_WIDTH, 385 MTK_JPEG_MAX_WIDTH, 0, 386 &pix_mp->height, 387 MTK_JPEG_MIN_HEIGHT, 388 MTK_JPEG_MAX_HEIGHT, 0); 389 390 pfmt->bytesperline = 0; 391 /* Source size must be aligned to 128 */ 392 pfmt->sizeimage = mtk_jpeg_align(pfmt->sizeimage, 128); 393 if (pfmt->sizeimage == 0) 394 pfmt->sizeimage = MTK_JPEG_DEFAULT_SIZEIMAGE; 395 396 goto end; 397 } 398 } 399 400 /* type is MTK_JPEG_FMT_TYPE_CAPTURE */ 401 if (jpeg->mode == MTK_JPEG_ENC) { 402 mtk_jpeg_bound_align_image(&pix_mp->width, MTK_JPEG_MIN_WIDTH, 403 MTK_JPEG_MAX_WIDTH, 0, 404 &pix_mp->height, MTK_JPEG_MIN_HEIGHT, 405 MTK_JPEG_MAX_HEIGHT, 0); 406 407 if (fmt->fourcc == V4L2_PIX_FMT_JPEG) { 408 pix_mp->plane_fmt[0].bytesperline = 0; 409 pix_mp->plane_fmt[0].sizeimage = 410 mtk_jpeg_align(pix_mp->plane_fmt[0].sizeimage, 411 128); 412 if (pix_mp->plane_fmt[0].sizeimage == 0) 413 pix_mp->plane_fmt[0].sizeimage = 414 MTK_JPEG_DEFAULT_SIZEIMAGE; 415 } 416 } else { 417 pix_mp->height = clamp(pix_mp->height, MTK_JPEG_MIN_HEIGHT, 418 MTK_JPEG_MAX_HEIGHT); 419 pix_mp->width = clamp(pix_mp->width, MTK_JPEG_MIN_WIDTH, 420 MTK_JPEG_MAX_WIDTH); 421 mtk_jpeg_bound_align_image(&pix_mp->width, MTK_JPEG_MIN_WIDTH, 422 MTK_JPEG_MAX_WIDTH, fmt->h_align, 423 &pix_mp->height, 424 MTK_JPEG_MIN_HEIGHT, 425 MTK_JPEG_MAX_HEIGHT, fmt->v_align); 426 427 for (i = 0; i < fmt->colplanes; i++) { 428 struct v4l2_plane_pix_format *pfmt = 429 &pix_mp->plane_fmt[i]; 430 u32 stride = pix_mp->width * fmt->h_sample[i] / 4; 431 u32 h = pix_mp->height * fmt->v_sample[i] / 4; 432 433 pfmt->bytesperline = stride; 434 pfmt->sizeimage = stride * h; 435 } 436 } 437 438 for (i = 0; i < fmt->colplanes; i++) { 439 struct v4l2_plane_pix_format *pfmt = 440 &pix_mp->plane_fmt[i]; 441 memset(pfmt->reserved, 0, sizeof(pfmt->reserved)); 442 } 443 end: 444 v4l2_dbg(2, debug, &jpeg->v4l2_dev, "wxh:%ux%u\n", 445 pix_mp->width, pix_mp->height); 446 for (i = 0; i < pix_mp->num_planes; i++) { 447 v4l2_dbg(2, debug, &jpeg->v4l2_dev, 448 "plane[%d] bpl=%u, size=%u\n", 449 i, 450 pix_mp->plane_fmt[i].bytesperline, 451 pix_mp->plane_fmt[i].sizeimage); 452 } 453 return 0; 454 } 455 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation