* [chrome-os:chromeos-6.1 101/104] drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c:320:15: error: cast to pointer from integer of different size
@ 2024-05-10 4:53 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-05-10 4:53 UTC (permalink / raw)
To: cros-kernel-buildreports, Guenter Roeck; +Cc: oe-kbuild-all
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-6.1
head: cb75f24663df84986d5056df93e821564be6d886
commit: 35d65c4423bf525d557b423789c0c3f3c41fa92c [101/104] CHROMIUM: media: platform: mediatek: isp: add IMGSYS driver
config: arm-allyesconfig (https://download.01.org/0day-ci/archive/20240510/202405101205.enk8iQTh-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240510/202405101205.enk8iQTh-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405101205.enk8iQTh-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c: In function 'imgsys_scp_handler':
>> drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c:320:15: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
320 | req = (struct mtk_imgsys_request *)swfrm_info->req_vaddr;
| ^
drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c: In function 'mtk_imgsys_hw_connect':
>> drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c:461:25: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
461 | info.drv_data = (u64)&imgsys_dev;
| ^
drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c: In function 'imgsys_composer_workfunc':
drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c:700:33: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
700 | ipi_param.req_addr_va = (u64)req;
| ^
cc1: all warnings being treated as errors
--
drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-v4l2.c: In function 'mtk_imgsys_vb2_meta_buf_init':
>> drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-v4l2.c:276:40: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
276 | dev_buf->va_daddr[0] = (u64)vb2_plane_vaddr(vb, 0);
| ^
cc1: all warnings being treated as errors
vim +320 drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c
267
268 static void imgsys_scp_handler(void *data, unsigned int len, void *priv)
269 {
270 int job_id;
271 struct mtk_imgsys_pipe *pipe;
272 int pipe_id;
273 struct mtk_imgsys_request *req;
274 struct mtk_imgsys_dev *imgsys_dev = (struct mtk_imgsys_dev *)priv;
275 struct img_sw_buffer *swbuf_data;
276 struct swfrm_info_t *swfrm_info;
277 int i = 0;
278 void *gce_virt;
279 int total_framenum = 0;
280
281 if (!data) {
282 WARN_ONCE(!data, "%s: failed due to NULL data\n", __func__);
283 return;
284 }
285
286 if (WARN_ONCE(len != sizeof(struct img_sw_buffer),
287 "%s: len(%d) not match img_sw_buffer\n", __func__, len))
288 return;
289
290 swbuf_data = (struct img_sw_buffer *)data;
291 gce_virt = mtk_hcp_get_gce_mem_virt(imgsys_dev->scp_pdev);
292 if (!gce_virt) {
293 pr_info("%s: invalid gce_virt(%p)\n",
294 __func__, gce_virt);
295 return;
296 }
297
298 swfrm_info = (struct swfrm_info_t *)(gce_virt + (swbuf_data->offset));
299 if ((int)swbuf_data->offset < 0 ||
300 swbuf_data->offset > mtk_hcp_get_gce_mem_size(imgsys_dev->scp_pdev)) {
301 pr_info("%s: invalid swbuf_data->offset(%d), max(%llu)\n",
302 __func__, swbuf_data->offset,
303 (u64)mtk_hcp_get_gce_mem_size(imgsys_dev->scp_pdev));
304 return;
305 }
306
307 swfrm_info->req_sbuf_goft = swbuf_data->offset;
308 swfrm_info->req_sbuf_kva = gce_virt + (swbuf_data->offset);
309
310 job_id = swfrm_info->handle;
311 pipe_id = mtk_imgsys_pipe_get_pipe_from_job_id(job_id);
312 pipe = mtk_imgsys_dev_get_pipe(imgsys_dev, pipe_id);
313 if (!pipe) {
314 dev_info(imgsys_dev->dev,
315 "%s: get invalid img_ipi_frameparam index(%d) from firmware\n",
316 __func__, job_id);
317 return;
318 }
319
> 320 req = (struct mtk_imgsys_request *)swfrm_info->req_vaddr;
321 if (!req) {
322 WARN_ONCE(!req, "%s: frame_no(%d) is lost\n", __func__, job_id);
323 return;
324 }
325
326 if (!req->working_buf) {
327 dev_dbg(imgsys_dev->dev,
328 "%s: (reqfd-%d) composing\n",
329 __func__, req->request_fd);
330 }
331
332 swfrm_info->is_sent = false;
333 swfrm_info->req = (void *)req;
334 swfrm_info->pipe = (void *)pipe;
335 swfrm_info->cb_frmcnt = 0;
336 swfrm_info->total_taskcnt = 0;
337 swfrm_info->chan_id = 0;
338 swfrm_info->hw_hang = -1;
339 total_framenum = swfrm_info->total_frmnum;
340
341 if (total_framenum < 0 || total_framenum > TMAX) {
342 dev_info(imgsys_dev->dev,
343 "%s:unexpected total_framenum (%d -> %d), batchnum(%d) MAX (%d/%d)\n",
344 __func__, swfrm_info->total_frmnum,
345 total_framenum,
346 swfrm_info->batchnum,
347 TMAX, TIME_MAX);
348 return;
349 }
350
351 for (i = 0 ; i < total_framenum ; i++) {
352 swfrm_info->user_info[i].g_swbuf = gce_virt + (swfrm_info->user_info[i].sw_goft);
353 swfrm_info->user_info[i].bw_swbuf = gce_virt + (swfrm_info->user_info[i].sw_bwoft);
354 }
355
356 req->swfrm_info = swfrm_info;
357
358 up(&imgsys_dev->sem);
359
360 INIT_WORK(&req->runner_work, imgsys_runner_func);
361 queue_work(req->imgsys_pipe->imgsys_dev->runner_wq,
362 &req->runner_work);
363 }
364
365 static int mtk_imgsys_hw_flush_pipe_jobs(struct mtk_imgsys_pipe *pipe)
366 {
367 struct mtk_imgsys_request *req;
368 struct list_head job_list = LIST_HEAD_INIT(job_list);
369 unsigned long flag;
370 int num;
371 int ret;
372
373 spin_lock_irqsave(&pipe->running_job_lock, flag);
374 list_splice_init(&pipe->pipe_job_running_list, &job_list);
375 pipe->num_jobs = 0;
376 spin_unlock_irqrestore(&pipe->running_job_lock, flag);
377
378 ret = wait_event_timeout
379 (pipe->imgsys_dev->flushing_waitq,
380 !(num = atomic_read(&pipe->imgsys_dev->num_composing)),
381 msecs_to_jiffies(1000 / 30 * IMGSYS_WORKING_BUF_NUM * 3));
382 if (!ret && num) {
383 dev_info(pipe->imgsys_dev->dev,
384 "flushing is aborted, num(%d)\n", num);
385 return -EINVAL;
386 }
387
388 list_for_each_entry(req, &job_list, list)
389 mtk_imgsys_pipe_job_finish(req, VB2_BUF_STATE_ERROR);
390
391 dev_dbg(pipe->imgsys_dev->dev,
392 "%s: wakeup num(%d)\n", __func__, num);
393 return 0;
394 }
395
396 static void module_uninit(struct kref *kref)
397 {
398 struct mtk_imgsys_dev *imgsys_dev;
399 int i;
400
401 imgsys_dev = container_of(kref, struct mtk_imgsys_dev, init_kref);
402
403 for (i = 0; i < (imgsys_dev->num_mods); i++)
404 if (imgsys_dev->modules[i].uninit)
405 imgsys_dev->modules[i].uninit(imgsys_dev);
406 }
407
408 void mtk_imgsys_mod_put(struct mtk_imgsys_dev *imgsys_dev)
409 {
410 struct kref *kref;
411
412 kref = &imgsys_dev->init_kref;
413 kref_put(kref, module_uninit);
414 }
415
416 void mtk_imgsys_mod_get(struct mtk_imgsys_dev *imgsys_dev)
417 {
418 struct kref *kref;
419
420 kref = &imgsys_dev->init_kref;
421 kref_get(kref);
422 }
423
424 static int mtk_imgsys_hw_connect(struct mtk_imgsys_dev *imgsys_dev)
425 {
426 int ret, i;
427 u32 user_cnt = 0;
428 struct img_init_info info;
429
430 user_cnt = atomic_read(&imgsys_dev->imgsys_user_cnt);
431 if (user_cnt != 0)
432 dev_info(imgsys_dev->dev,
433 "%s: [ERROR] imgsys user count is not zero(%d)\n",
434 __func__, user_cnt);
435
436 atomic_set(&imgsys_dev->imgsys_user_cnt, 0);
437
438 pm_runtime_get_sync(imgsys_dev->dev);
439 /* set default value for hw module */
440 for (i = 0; i < (imgsys_dev->num_mods); i++)
441 imgsys_dev->modules[i].init(imgsys_dev);
442 kref_init(&imgsys_dev->init_kref);
443
444 pm_runtime_put_sync(imgsys_dev->dev);
445 if (!imgsys_quick_onoff_en) {
446 pm_runtime_get_sync(imgsys_dev->dev);
447 for (i = 0; i < (imgsys_dev->num_mods); i++)
448 if (imgsys_dev->modules[i].set)
449 imgsys_dev->modules[i].set(imgsys_dev);
450 }
451
452 ret = mtk_hcp_allocate_working_buffer(imgsys_dev->scp_pdev, 0);
453 if (ret) {
454 dev_err(imgsys_dev->dev, "%s: mtk_hcp_allocate_working_buffer failed %d\n",
455 __func__, ret);
456 return -EBUSY;
457 }
458
459 /* IMGSYS HW INIT */
460 memset(&info, 0, sizeof(info));
> 461 info.drv_data = (u64)&imgsys_dev;
462 info.header_version = HEADER_VER;
463 info.frameparam_size = sizeof(struct img_ipi_frameparam);
464 info.reg_phys_addr = imgsys_dev->imgsys_resource->start;
465 info.reg_range = resource_size(imgsys_dev->imgsys_resource);
466
467 mtk_hcp_get_init_info(imgsys_dev->scp_pdev, &info);
468 info.sec_tag = imgsys_dev->imgsys_pipe[0].init_info.sec_tag;
469 info.full_wd = imgsys_dev->imgsys_pipe[0].init_info.sensor.full_wd;
470 info.full_ht = imgsys_dev->imgsys_pipe[0].init_info.sensor.full_ht;
471 info.smvr_mode = 0;
472
473 ret = imgsys_send(imgsys_dev->scp_pdev, HCP_IMGSYS_INIT_ID,
474 (void *)&info, sizeof(info), 0, 1);
475
476 if (ret) {
477 dev_err(imgsys_dev->dev, "%s: send SCP_IPI_DIP_FRAME failed %d\n",
478 __func__, ret);
479 return -EBUSY;
480 }
481
482 /* calling cmdq stream on */
483 imgsys_cmdq_streamon(imgsys_dev);
484
485 mtk_hcp_register(imgsys_dev->scp_pdev, HCP_IMGSYS_FRAME_ID,
486 imgsys_scp_handler, "imgsys_scp_handler", imgsys_dev);
487
488 return 0;
489 }
490
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-05-10 4:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-10 4:53 [chrome-os:chromeos-6.1 101/104] drivers/media/platform/mediatek/isp/isp_7x/imgsys/mtk_imgsys-sys.c:320:15: error: cast to pointer from integer of different size kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).