Lines Matching defs:mdev
81 static struct media_entity *find_entity(struct media_device *mdev, u32 id)
88 media_device_for_each_entity(entity, mdev) {
98 static long media_device_enum_entities(struct media_device *mdev, void *arg)
103 ent = find_entity(mdev, entd->id);
151 static long media_device_enum_links(struct media_device *mdev, void *arg)
156 entity = find_entity(mdev, links->entity);
200 static long media_device_setup_link(struct media_device *mdev, void *arg)
209 source = find_entity(mdev, linkd->source.entity);
210 sink = find_entity(mdev, linkd->sink.entity);
230 static long media_device_get_topology(struct media_device *mdev, void *arg)
244 topo->topology_version = mdev->topology_version;
249 media_device_for_each_entity(entity, mdev) {
277 media_device_for_each_intf(intf, mdev) {
313 media_device_for_each_pad(pad, mdev) {
341 media_device_for_each_link(link, mdev) {
373 static long media_device_request_alloc(struct media_device *mdev, void *arg)
378 if (!mdev->ops || !mdev->ops->req_validate || !mdev->ops->req_queue)
381 return media_request_alloc(mdev, alloc_fd);
493 static long media_device_enum_links32(struct media_device *mdev,
510 ret = media_device_enum_links(mdev, &links);
563 struct media_device *mdev = devnode->media_dev;
565 return sprintf(buf, "%.*s\n", (int)sizeof(mdev->model), mdev->model);
581 struct media_device *mdev = entity->graph_obj.mdev;
586 ida_free(&mdev->entity_internal_idx, entity->internal_idx);
589 list_for_each_entry(intf, &mdev->interfaces, graph_obj.list) {
609 int __must_check media_device_register_entity(struct media_device *mdev,
618 dev_warn(mdev->dev,
623 WARN_ON(entity->graph_obj.mdev != NULL);
624 entity->graph_obj.mdev = mdev;
629 ret = ida_alloc_min(&mdev->entity_internal_idx, 1, GFP_KERNEL);
634 mutex_lock(&mdev->graph_mutex);
635 mdev->entity_internal_idx_max =
636 max(mdev->entity_internal_idx_max, entity->internal_idx);
639 media_gobj_create(mdev, MEDIA_GRAPH_ENTITY, &entity->graph_obj);
643 media_gobj_create(mdev, MEDIA_GRAPH_PAD, &iter->graph_obj);
646 list_for_each_entry_safe(notify, next, &mdev->entity_notify, list)
649 if (mdev->entity_internal_idx_max
650 >= mdev->pm_count_walk.ent_enum.idx_max) {
658 ret = media_graph_walk_init(&new, mdev);
661 mutex_unlock(&mdev->graph_mutex);
664 media_graph_walk_cleanup(&mdev->pm_count_walk);
665 mdev->pm_count_walk = new;
667 mutex_unlock(&mdev->graph_mutex);
675 struct media_device *mdev = entity->graph_obj.mdev;
677 if (mdev == NULL)
680 mutex_lock(&mdev->graph_mutex);
682 mutex_unlock(&mdev->graph_mutex);
686 void media_device_init(struct media_device *mdev)
688 INIT_LIST_HEAD(&mdev->entities);
689 INIT_LIST_HEAD(&mdev->interfaces);
690 INIT_LIST_HEAD(&mdev->pads);
691 INIT_LIST_HEAD(&mdev->links);
692 INIT_LIST_HEAD(&mdev->entity_notify);
694 mutex_init(&mdev->req_queue_mutex);
695 mutex_init(&mdev->graph_mutex);
696 ida_init(&mdev->entity_internal_idx);
698 atomic_set(&mdev->request_id, 0);
700 if (!*mdev->bus_info)
701 media_set_bus_info(mdev->bus_info, sizeof(mdev->bus_info),
702 mdev->dev);
704 dev_dbg(mdev->dev, "Media device initialized\n");
708 void media_device_cleanup(struct media_device *mdev)
710 ida_destroy(&mdev->entity_internal_idx);
711 mdev->entity_internal_idx_max = 0;
712 media_graph_walk_cleanup(&mdev->pm_count_walk);
713 mutex_destroy(&mdev->graph_mutex);
714 mutex_destroy(&mdev->req_queue_mutex);
718 int __must_check __media_device_register(struct media_device *mdev,
729 mdev->devnode = devnode;
731 devnode->parent = mdev->dev;
735 mdev->topology_version = 0;
737 ret = media_devnode_register(mdev, devnode, owner);
740 mdev->devnode = NULL;
747 mdev->devnode = NULL;
753 dev_dbg(mdev->dev, "Media device registered\n");
759 void media_device_register_entity_notify(struct media_device *mdev,
762 mutex_lock(&mdev->graph_mutex);
763 list_add_tail(&nptr->list, &mdev->entity_notify);
764 mutex_unlock(&mdev->graph_mutex);
769 * Note: Should be called with mdev->lock held.
771 static void __media_device_unregister_entity_notify(struct media_device *mdev,
777 void media_device_unregister_entity_notify(struct media_device *mdev,
780 mutex_lock(&mdev->graph_mutex);
781 __media_device_unregister_entity_notify(mdev, nptr);
782 mutex_unlock(&mdev->graph_mutex);
786 void media_device_unregister(struct media_device *mdev)
793 if (mdev == NULL)
796 mutex_lock(&mdev->graph_mutex);
798 /* Check if mdev was ever registered at all */
799 if (!media_devnode_is_registered(mdev->devnode)) {
800 mutex_unlock(&mdev->graph_mutex);
805 media_devnode_unregister_prepare(mdev->devnode);
808 list_for_each_entry_safe(entity, next, &mdev->entities, graph_obj.list)
812 list_for_each_entry_safe(notify, nextp, &mdev->entity_notify, list)
813 __media_device_unregister_entity_notify(mdev, notify);
816 list_for_each_entry_safe(intf, tmp_intf, &mdev->interfaces,
827 mutex_unlock(&mdev->graph_mutex);
829 dev_dbg(mdev->dev, "Media device unregistered\n");
831 device_remove_file(&mdev->devnode->dev, &dev_attr_model);
832 media_devnode_unregister(mdev->devnode);
834 mdev->devnode = NULL;
839 void media_device_pci_init(struct media_device *mdev,
843 mdev->dev = &pci_dev->dev;
846 strscpy(mdev->model, name, sizeof(mdev->model));
848 strscpy(mdev->model, pci_name(pci_dev), sizeof(mdev->model));
850 sprintf(mdev->bus_info, "PCI:%s", pci_name(pci_dev));
852 mdev->hw_revision = (pci_dev->subsystem_vendor << 16)
855 media_device_init(mdev);
861 void __media_device_usb_init(struct media_device *mdev,
866 mdev->dev = &udev->dev;
869 strscpy(mdev->driver_name, driver_name,
870 sizeof(mdev->driver_name));
873 strscpy(mdev->model, board_name, sizeof(mdev->model));
875 strscpy(mdev->model, udev->product, sizeof(mdev->model));
877 strscpy(mdev->model, "unknown model", sizeof(mdev->model));
879 strscpy(mdev->serial, udev->serial, sizeof(mdev->serial));
880 usb_make_path(udev, mdev->bus_info, sizeof(mdev->bus_info));
881 mdev->hw_revision = le16_to_cpu(udev->descriptor.bcdDevice);
883 media_device_init(mdev);