Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: v4l: ioctl: Set bus_info in v4l_querycap()

The bus_info field is set by most drivers based on the type of the device
bus as well as the name of the device. Do this in v4l_querycap() so
drivers don't need to. This keeps compatibility with non-default and silly
bus_info.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>

authored by

Sakari Ailus and committed by
Mauro Carvalho Chehab
f2d8b691 cef69974

+4 -95
-1
drivers/media/common/saa7146/saa7146_video.c
··· 443 443 444 444 strscpy((char *)cap->driver, "saa7146 v4l2", sizeof(cap->driver)); 445 445 strscpy((char *)cap->card, dev->ext->name, sizeof(cap->card)); 446 - sprintf((char *)cap->bus_info, "PCI:%s", pci_name(dev->pci)); 447 446 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OVERLAY | 448 447 V4L2_CAP_READWRITE | V4L2_CAP_STREAMING | 449 448 V4L2_CAP_DEVICE_CAPS;
-2
drivers/media/pci/bt8xx/bttv-driver.c
··· 2435 2435 2436 2436 strscpy(cap->driver, "bttv", sizeof(cap->driver)); 2437 2437 strscpy(cap->card, btv->video_dev.name, sizeof(cap->card)); 2438 - snprintf(cap->bus_info, sizeof(cap->bus_info), 2439 - "PCI:%s", pci_name(btv->c.pci)); 2440 2438 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE | 2441 2439 V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS; 2442 2440 if (no_overlay <= 0)
-2
drivers/media/pci/cx18/cx18-ioctl.c
··· 389 389 390 390 strscpy(vcap->driver, CX18_DRIVER_NAME, sizeof(vcap->driver)); 391 391 strscpy(vcap->card, cx->card_name, sizeof(vcap->card)); 392 - snprintf(vcap->bus_info, sizeof(vcap->bus_info), 393 - "PCI:%s", pci_name(cx->pci_dev)); 394 392 vcap->capabilities = cx->v4l2_cap | V4L2_CAP_DEVICE_CAPS; 395 393 return 0; 396 394 }
-1
drivers/media/pci/cx88/cx88-blackbird.c
··· 796 796 struct cx88_core *core = dev->core; 797 797 798 798 strscpy(cap->driver, "cx88_blackbird", sizeof(cap->driver)); 799 - sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci)); 800 799 return cx88_querycap(file, core, cap); 801 800 } 802 801
-1
drivers/media/pci/cx88/cx88-video.c
··· 808 808 struct cx88_core *core = dev->core; 809 809 810 810 strscpy(cap->driver, "cx8800", sizeof(cap->driver)); 811 - sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci)); 812 811 return cx88_querycap(file, core, cap); 813 812 } 814 813
-3
drivers/media/pci/dt3155/dt3155.c
··· 292 292 static int dt3155_querycap(struct file *filp, void *p, 293 293 struct v4l2_capability *cap) 294 294 { 295 - struct dt3155_priv *pd = video_drvdata(filp); 296 - 297 295 strscpy(cap->driver, DT3155_NAME, sizeof(cap->driver)); 298 296 strscpy(cap->card, DT3155_NAME " frame grabber", sizeof(cap->card)); 299 - sprintf(cap->bus_info, "PCI:%s", pci_name(pd->pdev)); 300 297 return 0; 301 298 } 302 299
-4
drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
··· 1046 1046 static int cio2_v4l2_querycap(struct file *file, void *fh, 1047 1047 struct v4l2_capability *cap) 1048 1048 { 1049 - struct cio2_device *cio2 = video_drvdata(file); 1050 - 1051 1049 strscpy(cap->driver, CIO2_NAME, sizeof(cap->driver)); 1052 1050 strscpy(cap->card, CIO2_DEVICE_NAME, sizeof(cap->card)); 1053 - snprintf(cap->bus_info, sizeof(cap->bus_info), 1054 - "PCI:%s", pci_name(cio2->pci_dev)); 1055 1051 1056 1052 return 0; 1057 1053 }
-1
drivers/media/pci/ivtv/ivtv-ioctl.c
··· 732 732 733 733 strscpy(vcap->driver, IVTV_DRIVER_NAME, sizeof(vcap->driver)); 734 734 strscpy(vcap->card, itv->card_name, sizeof(vcap->card)); 735 - snprintf(vcap->bus_info, sizeof(vcap->bus_info), "PCI:%s", pci_name(itv->pdev)); 736 735 vcap->capabilities = itv->v4l2_cap | V4L2_CAP_DEVICE_CAPS; 737 736 return 0; 738 737 }
-1
drivers/media/pci/meye/meye.c
··· 1012 1012 { 1013 1013 strscpy(cap->driver, "meye", sizeof(cap->driver)); 1014 1014 strscpy(cap->card, "meye", sizeof(cap->card)); 1015 - sprintf(cap->bus_info, "PCI:%s", pci_name(meye.mchip_dev)); 1016 1015 return 0; 1017 1016 } 1018 1017
-1
drivers/media/pci/saa7134/saa7134-video.c
··· 1475 1475 strscpy(cap->driver, "saa7134", sizeof(cap->driver)); 1476 1476 strscpy(cap->card, saa7134_boards[dev->board].name, 1477 1477 sizeof(cap->card)); 1478 - sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci)); 1479 1478 cap->capabilities = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING | 1480 1479 V4L2_CAP_RADIO | V4L2_CAP_VIDEO_CAPTURE | 1481 1480 V4L2_CAP_VBI_CAPTURE | V4L2_CAP_DEVICE_CAPS;
-1
drivers/media/pci/saa7164/saa7164-encoder.c
··· 490 490 strscpy(cap->driver, dev->name, sizeof(cap->driver)); 491 491 strscpy(cap->card, saa7164_boards[dev->board].name, 492 492 sizeof(cap->card)); 493 - sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci)); 494 493 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE | 495 494 V4L2_CAP_TUNER | V4L2_CAP_VBI_CAPTURE | 496 495 V4L2_CAP_DEVICE_CAPS;
-1
drivers/media/pci/saa7164/saa7164-vbi.c
··· 201 201 strscpy(cap->driver, dev->name, sizeof(cap->driver)); 202 202 strscpy(cap->card, saa7164_boards[dev->board].name, 203 203 sizeof(cap->card)); 204 - sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci)); 205 204 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE | 206 205 V4L2_CAP_TUNER | V4L2_CAP_VBI_CAPTURE | 207 206 V4L2_CAP_DEVICE_CAPS;
-3
drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c
··· 764 764 struct v4l2_capability *cap) 765 765 { 766 766 struct solo_enc_dev *solo_enc = video_drvdata(file); 767 - struct solo_dev *solo_dev = solo_enc->solo_dev; 768 767 769 768 strscpy(cap->driver, SOLO6X10_NAME, sizeof(cap->driver)); 770 769 snprintf(cap->card, sizeof(cap->card), "Softlogic 6x10 Enc %d", 771 770 solo_enc->ch); 772 - snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", 773 - pci_name(solo_dev->pdev)); 774 771 return 0; 775 772 } 776 773
-4
drivers/media/pci/solo6x10/solo6x10-v4l2.c
··· 372 372 static int solo_querycap(struct file *file, void *priv, 373 373 struct v4l2_capability *cap) 374 374 { 375 - struct solo_dev *solo_dev = video_drvdata(file); 376 - 377 375 strscpy(cap->driver, SOLO6X10_NAME, sizeof(cap->driver)); 378 376 strscpy(cap->card, "Softlogic 6x10", sizeof(cap->card)); 379 - snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", 380 - pci_name(solo_dev->pdev)); 381 377 return 0; 382 378 } 383 379
-4
drivers/media/pci/sta2x11/sta2x11_vip.c
··· 401 401 static int vidioc_querycap(struct file *file, void *priv, 402 402 struct v4l2_capability *cap) 403 403 { 404 - struct sta2x11_vip *vip = video_drvdata(file); 405 - 406 404 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver)); 407 405 strscpy(cap->card, KBUILD_MODNAME, sizeof(cap->card)); 408 - snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", 409 - pci_name(vip->pdev)); 410 406 return 0; 411 407 } 412 408
-1
drivers/media/pci/tw5864/tw5864-video.c
··· 604 604 strscpy(cap->driver, "tw5864", sizeof(cap->driver)); 605 605 snprintf(cap->card, sizeof(cap->card), "TW5864 Encoder %d", 606 606 input->nr); 607 - sprintf(cap->bus_info, "PCI:%s", pci_name(input->root->pci)); 608 607 return 0; 609 608 } 610 609
-3
drivers/media/pci/tw68/tw68-video.c
··· 712 712 static int tw68_querycap(struct file *file, void *priv, 713 713 struct v4l2_capability *cap) 714 714 { 715 - struct tw68_dev *dev = video_drvdata(file); 716 - 717 715 strscpy(cap->driver, "tw68", sizeof(cap->driver)); 718 716 strscpy(cap->card, "Techwell Capture Card", 719 717 sizeof(cap->card)); 720 - sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci)); 721 718 return 0; 722 719 } 723 720
-2
drivers/media/pci/tw686x/tw686x-video.c
··· 762 762 763 763 strscpy(cap->driver, "tw686x", sizeof(cap->driver)); 764 764 strscpy(cap->card, dev->name, sizeof(cap->card)); 765 - snprintf(cap->bus_info, sizeof(cap->bus_info), 766 - "PCI:%s", pci_name(dev->pci_dev)); 767 765 return 0; 768 766 } 769 767
-5
drivers/media/platform/allegro-dvt/allegro-core.c
··· 3249 3249 static int allegro_querycap(struct file *file, void *fh, 3250 3250 struct v4l2_capability *cap) 3251 3251 { 3252 - struct video_device *vdev = video_devdata(file); 3253 - struct allegro_dev *dev = video_get_drvdata(vdev); 3254 - 3255 3252 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver)); 3256 3253 strscpy(cap->card, "Allegro DVT Video Encoder", sizeof(cap->card)); 3257 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 3258 - dev_name(&dev->plat_dev->dev)); 3259 3254 3260 3255 return 0; 3261 3256 }
-1
drivers/media/platform/marvell/cafe-driver.c
··· 497 497 mcam->plat_power_up = cafe_ctlr_power_up; 498 498 mcam->plat_power_down = cafe_ctlr_power_down; 499 499 mcam->dev = &pdev->dev; 500 - snprintf(mcam->bus_info, sizeof(mcam->bus_info), "PCI:%s", pci_name(pdev)); 501 500 /* 502 501 * Vmalloc mode for buffers is traditional with this driver. 503 502 * We *might* be able to run DMA_contig, especially on a system
-2
drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
··· 137 137 138 138 strscpy(cap->driver, jpeg->variant->dev_name, sizeof(cap->driver)); 139 139 strscpy(cap->card, jpeg->variant->dev_name, sizeof(cap->card)); 140 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 141 - dev_name(jpeg->dev)); 142 140 143 141 return 0; 144 142 }
-4
drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
··· 1569 1569 static int mxc_jpeg_querycap(struct file *file, void *priv, 1570 1570 struct v4l2_capability *cap) 1571 1571 { 1572 - struct mxc_jpeg_dev *mxc_jpeg = video_drvdata(file); 1573 - 1574 1572 strscpy(cap->driver, MXC_JPEG_NAME " codec", sizeof(cap->driver)); 1575 1573 strscpy(cap->card, MXC_JPEG_NAME " codec", sizeof(cap->card)); 1576 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 1577 - dev_name(mxc_jpeg->dev)); 1578 1574 cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE; 1579 1575 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; 1580 1576
-4
drivers/media/platform/qcom/camss/camss-video.c
··· 576 576 static int video_querycap(struct file *file, void *fh, 577 577 struct v4l2_capability *cap) 578 578 { 579 - struct camss_video *video = video_drvdata(file); 580 - 581 579 strscpy(cap->driver, "qcom-camss", sizeof(cap->driver)); 582 580 strscpy(cap->card, "Qualcomm Camera Subsystem", sizeof(cap->card)); 583 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 584 - dev_name(video->camss->dev)); 585 581 586 582 return 0; 587 583 }
-4
drivers/media/platform/renesas/rcar-vin/rcar-v4l2.c
··· 307 307 static int rvin_querycap(struct file *file, void *priv, 308 308 struct v4l2_capability *cap) 309 309 { 310 - struct rvin_dev *vin = video_drvdata(file); 311 - 312 310 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver)); 313 311 strscpy(cap->card, "R_Car_VIN", sizeof(cap->card)); 314 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 315 - dev_name(vin->dev)); 316 312 return 0; 317 313 } 318 314
-2
drivers/media/platform/renesas/rcar_jpu.c
··· 670 670 strscpy(cap->card, DRV_NAME " decoder", sizeof(cap->card)); 671 671 672 672 strscpy(cap->driver, DRV_NAME, sizeof(cap->driver)); 673 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 674 - dev_name(ctx->jpu->dev)); 675 673 memset(cap->reserved, 0, sizeof(cap->reserved)); 676 674 677 675 return 0;
-2
drivers/media/platform/renesas/vsp1/vsp1_histo.c
··· 434 434 435 435 strscpy(cap->driver, "vsp1", sizeof(cap->driver)); 436 436 strscpy(cap->card, histo->video.name, sizeof(cap->card)); 437 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 438 - dev_name(histo->entity.vsp1->dev)); 439 437 440 438 return 0; 441 439 }
-2
drivers/media/platform/renesas/vsp1/vsp1_video.c
··· 959 959 960 960 strscpy(cap->driver, "vsp1", sizeof(cap->driver)); 961 961 strscpy(cap->card, video->video.name, sizeof(cap->card)); 962 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 963 - dev_name(video->vsp1->dev)); 964 962 965 963 return 0; 966 964 }
-5
drivers/media/platform/samsung/exynos-gsc/gsc-m2m.c
··· 285 285 static int gsc_m2m_querycap(struct file *file, void *fh, 286 286 struct v4l2_capability *cap) 287 287 { 288 - struct gsc_ctx *ctx = fh_to_ctx(fh); 289 - struct gsc_dev *gsc = ctx->gsc_dev; 290 - 291 288 strscpy(cap->driver, GSC_MODULE_NAME, sizeof(cap->driver)); 292 289 strscpy(cap->card, GSC_MODULE_NAME " gscaler", sizeof(cap->card)); 293 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 294 - dev_name(&gsc->pdev->dev)); 295 290 return 0; 296 291 } 297 292
-2
drivers/media/platform/samsung/exynos4-is/common.c
··· 41 41 { 42 42 strscpy(cap->driver, dev->driver->name, sizeof(cap->driver)); 43 43 strscpy(cap->card, dev->driver->name, sizeof(cap->card)); 44 - snprintf(cap->bus_info, sizeof(cap->bus_info), 45 - "platform:%s", dev_name(dev)); 46 44 } 47 45 EXPORT_SYMBOL(__fimc_vidioc_querycap); 48 46
-4
drivers/media/platform/samsung/exynos4-is/fimc-lite.c
··· 646 646 static int fimc_lite_querycap(struct file *file, void *priv, 647 647 struct v4l2_capability *cap) 648 648 { 649 - struct fimc_lite *fimc = video_drvdata(file); 650 - 651 649 strscpy(cap->driver, FIMC_LITE_DRV_NAME, sizeof(cap->driver)); 652 650 strscpy(cap->card, FIMC_LITE_DRV_NAME, sizeof(cap->card)); 653 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 654 - dev_name(&fimc->pdev->dev)); 655 651 return 0; 656 652 } 657 653
-2
drivers/media/platform/samsung/s5p-jpeg/jpeg-core.c
··· 1257 1257 strscpy(cap->card, S5P_JPEG_M2M_NAME " decoder", 1258 1258 sizeof(cap->card)); 1259 1259 } 1260 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 1261 - dev_name(ctx->jpeg->dev)); 1262 1260 return 0; 1263 1261 } 1264 1262
-2
drivers/media/platform/samsung/s5p-mfc/s5p_mfc_dec.c
··· 288 288 289 289 strscpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver)); 290 290 strscpy(cap->card, dev->vfd_dec->name, sizeof(cap->card)); 291 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 292 - dev_name(&dev->plat_dev->dev)); 293 291 return 0; 294 292 } 295 293
-2
drivers/media/platform/samsung/s5p-mfc/s5p_mfc_enc.c
··· 1309 1309 1310 1310 strscpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver)); 1311 1311 strscpy(cap->card, dev->vfd_enc->name, sizeof(cap->card)); 1312 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 1313 - dev_name(&dev->plat_dev->dev)); 1314 1312 return 0; 1315 1313 } 1316 1314
-4
drivers/media/platform/sunxi/sun4i-csi/sun4i_v4l2.c
··· 53 53 static int sun4i_csi_querycap(struct file *file, void *priv, 54 54 struct v4l2_capability *cap) 55 55 { 56 - struct sun4i_csi *csi = video_drvdata(file); 57 - 58 56 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver)); 59 57 strscpy(cap->card, "sun4i-csi", sizeof(cap->card)); 60 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 61 - dev_name(csi->dev)); 62 58 63 59 return 0; 64 60 }
-4
drivers/media/platform/ti/cal/cal-video.c
··· 47 47 static int cal_querycap(struct file *file, void *priv, 48 48 struct v4l2_capability *cap) 49 49 { 50 - struct cal_ctx *ctx = video_drvdata(file); 51 - 52 50 strscpy(cap->driver, CAL_MODULE_NAME, sizeof(cap->driver)); 53 51 strscpy(cap->card, CAL_MODULE_NAME, sizeof(cap->card)); 54 52 55 - snprintf(cap->bus_info, sizeof(cap->bus_info), 56 - "platform:%s", dev_name(ctx->cal->dev)); 57 53 return 0; 58 54 } 59 55
-2
drivers/media/platform/ti/davinci/vpbe_display.c
··· 630 630 631 631 snprintf(cap->driver, sizeof(cap->driver), "%s", 632 632 dev_name(vpbe_dev->pdev)); 633 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 634 - dev_name(vpbe_dev->pdev)); 635 633 strscpy(cap->card, vpbe_dev->cfg->module_name, sizeof(cap->card)); 636 634 637 635 return 0;
-2
drivers/media/platform/ti/davinci/vpif_capture.c
··· 1067 1067 struct vpif_capture_config *config = vpif_dev->platform_data; 1068 1068 1069 1069 strscpy(cap->driver, VPIF_DRIVER_NAME, sizeof(cap->driver)); 1070 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 1071 - dev_name(vpif_dev)); 1072 1070 strscpy(cap->card, config->card_name, sizeof(cap->card)); 1073 1071 1074 1072 return 0;
-2
drivers/media/platform/ti/davinci/vpif_display.c
··· 585 585 struct vpif_display_config *config = vpif_dev->platform_data; 586 586 587 587 strscpy(cap->driver, VPIF_DRIVER_NAME, sizeof(cap->driver)); 588 - snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", 589 - dev_name(vpif_dev)); 590 588 strscpy(cap->card, config->card_name, sizeof(cap->card)); 591 589 592 590 return 0;
-2
drivers/media/radio/radio-maxiradio.c
··· 144 144 dev->tea.v4l2_dev = v4l2_dev; 145 145 dev->tea.radio_nr = radio_nr; 146 146 strscpy(dev->tea.card, "Maxi Radio FM2000", sizeof(dev->tea.card)); 147 - snprintf(dev->tea.bus_info, sizeof(dev->tea.bus_info), 148 - "PCI:%s", pci_name(pdev)); 149 147 150 148 retval = -ENODEV; 151 149
+4
drivers/media/v4l2-core/v4l2-ioctl.c
··· 18 18 19 19 #include <linux/videodev2.h> 20 20 21 + #include <media/media-device.h> /* for media_set_bus_info() */ 21 22 #include <media/v4l2-common.h> 22 23 #include <media/v4l2-ioctl.h> 23 24 #include <media/v4l2-ctrls.h> ··· 1052 1051 cap->version = LINUX_VERSION_CODE; 1053 1052 cap->device_caps = vfd->device_caps; 1054 1053 cap->capabilities = vfd->device_caps | V4L2_CAP_DEVICE_CAPS; 1054 + 1055 + media_set_bus_info(cap->bus_info, sizeof(cap->bus_info), 1056 + vfd->dev_parent); 1055 1057 1056 1058 ret = ops->vidioc_querycap(file, fh, cap); 1057 1059