linux-4.4.1/uvc_probe()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#c0f0fce9]
#backlinks
*説明 [#d2dad11d]
-パス: [[linux-4.4.1/drivers/media/usb/uvc/uvc_driver.c]]
-FIXME: これは何?
--説明
**引数 [#e56d5a84]
-struct usb_interface *intf
--
--[[linux-4.4.1/usb_interface]]
-const struct usb_device_id *id
--
--[[linux-4.4.1/usb_device_id]]
**返り値 [#p1fe4ba3]
-int
--
**参考 [#cb0eab22]
*実装 [#w804a66c]
static int uvc_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
struct usb_device *udev = interface_to_usbdev(in...
struct uvc_device *dev;
int ret;
-
--[[linux-4.4.1/usb_device]]
--[[linux-4.4.1/interface_to_usbdev()]]
--[[linux-4.4.1/uvc_device]]
if (id->idVendor && id->idProduct)
uvc_trace(UVC_TRACE_PROBE, "Probing know...
"(%04x:%04x)\n", udev->d...
id->idProduct);
else
uvc_trace(UVC_TRACE_PROBE, "Probing gene...
udev->devpath);
-
--[[linux-4.4.1/uvc_trace()]]
/* Allocate memory for the device and initialize...
if ((dev = kzalloc(sizeof *dev, GFP_KERNEL)) == ...
return -ENOMEM;
-
--[[linux-4.4.1/kzalloc()]]
INIT_LIST_HEAD(&dev->entities);
INIT_LIST_HEAD(&dev->chains);
INIT_LIST_HEAD(&dev->streams);
atomic_set(&dev->nstreams, 0);
atomic_set(&dev->nmappings, 0);
mutex_init(&dev->lock);
-
--[[linux-4.4.1/INIT_LIST_HEAD()]]
--[[linux-4.4.1/atomic_set()]]
--[[linux-4.4.1/mutex_init()]]
dev->udev = usb_get_dev(udev);
dev->intf = usb_get_intf(intf);
dev->intfnum = intf->cur_altsetting->desc.bInter...
dev->quirks = (uvc_quirks_param == -1)
? id->driver_info : uvc_quirks_param;
-
--[[linux-4.4.1/usb_get_dev()]]
--[[linux-4.4.1/usb_get_intf()]]
if (udev->product != NULL)
strlcpy(dev->name, udev->product, sizeof...
else
snprintf(dev->name, sizeof dev->name,
"UVC Camera (%04x:%04x)",
le16_to_cpu(udev->descriptor.idV...
le16_to_cpu(udev->descriptor.idP...
-
--[[linux-4.4.1/strlcpy()]]
--[[linux-4.4.1/snprintf()]]
--[[linux-4.4.1/le16_to_cpu()]]
/* Parse the Video Class control descriptor. */
if (uvc_parse_control(dev) < 0) {
uvc_trace(UVC_TRACE_PROBE, "Unable to pa...
"descriptors.\n");
goto error;
}
-
--[[linux-4.4.1/uvc_parse_control()]]
uvc_printk(KERN_INFO, "Found UVC %u.%02x device ...
dev->uvc_version >> 8, dev->uvc_version ...
udev->product ? udev->product : "<unname...
le16_to_cpu(udev->descriptor.idVendor),
le16_to_cpu(udev->descriptor.idProduct));
-
--[[linux-4.4.1/uvc_printk()]]
if (dev->quirks != id->driver_info) {
uvc_printk(KERN_INFO, "Forcing device qu...
"parameter for testing purpose.\...
uvc_printk(KERN_INFO, "Please report req...
"linux-uvc-devel mailing list.\n...
}
/* Register the media and V4L2 devices. */
#ifdef CONFIG_MEDIA_CONTROLLER
-
--[[linux-4.4.1/CONFIG_MEDIA_CONTROLLER]]
dev->mdev.dev = &intf->dev;
strlcpy(dev->mdev.model, dev->name, sizeof(dev->...
if (udev->serial)
strlcpy(dev->mdev.serial, udev->serial,
sizeof(dev->mdev.serial));
strcpy(dev->mdev.bus_info, udev->devpath);
dev->mdev.hw_revision = le16_to_cpu(udev->descri...
dev->mdev.driver_version = LINUX_VERSION_CODE;
if (media_device_register(&dev->mdev) < 0)
goto error;
-
--[[linux-4.4.1/media_device_register()]]
dev->vdev.mdev = &dev->mdev;
#endif
if (v4l2_device_register(&intf->dev, &dev->vdev)...
goto error;
-
--[[linux-4.4.1/v4l2_device_register()]]
/* Initialize controls. */
if (uvc_ctrl_init_device(dev) < 0)
goto error;
-
--[[linux-4.4.1/uvc_ctrl_init_device()]]
/* Scan the device for video chains. */
if (uvc_scan_device(dev) < 0)
goto error;
-
--[[linux-4.4.1/uvc_scan_device()]]
/* Register video device nodes. */
if (uvc_register_chains(dev) < 0)
goto error;
-
--[[linux-4.4.1/uvc_register_chains()]]
/* Save our data pointer in the interface data. */
usb_set_intfdata(intf, dev);
-
--[[linux-4.4.1/usb_set_intfdata()]]
/* Initialize the interrupt URB. */
if ((ret = uvc_status_init(dev)) < 0) {
uvc_printk(KERN_INFO, "Unable to initial...
"endpoint (%d), status interrupt...
"supported.\n", ret);
}
-
--[[linux-4.4.1/uvc_status_init()]]
uvc_trace(UVC_TRACE_PROBE, "UVC device initializ...
usb_enable_autosuspend(udev);
return 0;
-
--[[linux-4.4.1/usb_enable_autosuspend()]]
error:
uvc_unregister_video(dev);
-
--[[linux-4.4.1/uvc_unregister_video()]]
return -ENODEV;
}
*コメント [#r3eaed8a]
終了行:
*参照元 [#c0f0fce9]
#backlinks
*説明 [#d2dad11d]
-パス: [[linux-4.4.1/drivers/media/usb/uvc/uvc_driver.c]]
-FIXME: これは何?
--説明
**引数 [#e56d5a84]
-struct usb_interface *intf
--
--[[linux-4.4.1/usb_interface]]
-const struct usb_device_id *id
--
--[[linux-4.4.1/usb_device_id]]
**返り値 [#p1fe4ba3]
-int
--
**参考 [#cb0eab22]
*実装 [#w804a66c]
static int uvc_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
struct usb_device *udev = interface_to_usbdev(in...
struct uvc_device *dev;
int ret;
-
--[[linux-4.4.1/usb_device]]
--[[linux-4.4.1/interface_to_usbdev()]]
--[[linux-4.4.1/uvc_device]]
if (id->idVendor && id->idProduct)
uvc_trace(UVC_TRACE_PROBE, "Probing know...
"(%04x:%04x)\n", udev->d...
id->idProduct);
else
uvc_trace(UVC_TRACE_PROBE, "Probing gene...
udev->devpath);
-
--[[linux-4.4.1/uvc_trace()]]
/* Allocate memory for the device and initialize...
if ((dev = kzalloc(sizeof *dev, GFP_KERNEL)) == ...
return -ENOMEM;
-
--[[linux-4.4.1/kzalloc()]]
INIT_LIST_HEAD(&dev->entities);
INIT_LIST_HEAD(&dev->chains);
INIT_LIST_HEAD(&dev->streams);
atomic_set(&dev->nstreams, 0);
atomic_set(&dev->nmappings, 0);
mutex_init(&dev->lock);
-
--[[linux-4.4.1/INIT_LIST_HEAD()]]
--[[linux-4.4.1/atomic_set()]]
--[[linux-4.4.1/mutex_init()]]
dev->udev = usb_get_dev(udev);
dev->intf = usb_get_intf(intf);
dev->intfnum = intf->cur_altsetting->desc.bInter...
dev->quirks = (uvc_quirks_param == -1)
? id->driver_info : uvc_quirks_param;
-
--[[linux-4.4.1/usb_get_dev()]]
--[[linux-4.4.1/usb_get_intf()]]
if (udev->product != NULL)
strlcpy(dev->name, udev->product, sizeof...
else
snprintf(dev->name, sizeof dev->name,
"UVC Camera (%04x:%04x)",
le16_to_cpu(udev->descriptor.idV...
le16_to_cpu(udev->descriptor.idP...
-
--[[linux-4.4.1/strlcpy()]]
--[[linux-4.4.1/snprintf()]]
--[[linux-4.4.1/le16_to_cpu()]]
/* Parse the Video Class control descriptor. */
if (uvc_parse_control(dev) < 0) {
uvc_trace(UVC_TRACE_PROBE, "Unable to pa...
"descriptors.\n");
goto error;
}
-
--[[linux-4.4.1/uvc_parse_control()]]
uvc_printk(KERN_INFO, "Found UVC %u.%02x device ...
dev->uvc_version >> 8, dev->uvc_version ...
udev->product ? udev->product : "<unname...
le16_to_cpu(udev->descriptor.idVendor),
le16_to_cpu(udev->descriptor.idProduct));
-
--[[linux-4.4.1/uvc_printk()]]
if (dev->quirks != id->driver_info) {
uvc_printk(KERN_INFO, "Forcing device qu...
"parameter for testing purpose.\...
uvc_printk(KERN_INFO, "Please report req...
"linux-uvc-devel mailing list.\n...
}
/* Register the media and V4L2 devices. */
#ifdef CONFIG_MEDIA_CONTROLLER
-
--[[linux-4.4.1/CONFIG_MEDIA_CONTROLLER]]
dev->mdev.dev = &intf->dev;
strlcpy(dev->mdev.model, dev->name, sizeof(dev->...
if (udev->serial)
strlcpy(dev->mdev.serial, udev->serial,
sizeof(dev->mdev.serial));
strcpy(dev->mdev.bus_info, udev->devpath);
dev->mdev.hw_revision = le16_to_cpu(udev->descri...
dev->mdev.driver_version = LINUX_VERSION_CODE;
if (media_device_register(&dev->mdev) < 0)
goto error;
-
--[[linux-4.4.1/media_device_register()]]
dev->vdev.mdev = &dev->mdev;
#endif
if (v4l2_device_register(&intf->dev, &dev->vdev)...
goto error;
-
--[[linux-4.4.1/v4l2_device_register()]]
/* Initialize controls. */
if (uvc_ctrl_init_device(dev) < 0)
goto error;
-
--[[linux-4.4.1/uvc_ctrl_init_device()]]
/* Scan the device for video chains. */
if (uvc_scan_device(dev) < 0)
goto error;
-
--[[linux-4.4.1/uvc_scan_device()]]
/* Register video device nodes. */
if (uvc_register_chains(dev) < 0)
goto error;
-
--[[linux-4.4.1/uvc_register_chains()]]
/* Save our data pointer in the interface data. */
usb_set_intfdata(intf, dev);
-
--[[linux-4.4.1/usb_set_intfdata()]]
/* Initialize the interrupt URB. */
if ((ret = uvc_status_init(dev)) < 0) {
uvc_printk(KERN_INFO, "Unable to initial...
"endpoint (%d), status interrupt...
"supported.\n", ret);
}
-
--[[linux-4.4.1/uvc_status_init()]]
uvc_trace(UVC_TRACE_PROBE, "UVC device initializ...
usb_enable_autosuspend(udev);
return 0;
-
--[[linux-4.4.1/usb_enable_autosuspend()]]
error:
uvc_unregister_video(dev);
-
--[[linux-4.4.1/uvc_unregister_video()]]
return -ENODEV;
}
*コメント [#r3eaed8a]
ページ名: