[media] media: move mdev list init to gobj
[deliverable/linux.git] / drivers / media / media-entity.c
index 5697735be433e1e91bb68a86ab16a5abda40ad74..b3875b0185c1eebe7276a8e7a0f182611509d373 100644 (file)
@@ -158,6 +158,7 @@ void media_gobj_init(struct media_device *mdev,
        switch (type) {
        case MEDIA_GRAPH_ENTITY:
                gobj->id = media_gobj_gen_id(type, ++mdev->entity_id);
+               list_add_tail(&gobj->list, &mdev->entities);
                break;
        case MEDIA_GRAPH_PAD:
                gobj->id = media_gobj_gen_id(type, ++mdev->pad_id);
@@ -166,6 +167,7 @@ void media_gobj_init(struct media_device *mdev,
                gobj->id = media_gobj_gen_id(type, ++mdev->link_id);
                break;
        case MEDIA_GRAPH_INTF_DEVNODE:
+               list_add_tail(&gobj->list, &mdev->interfaces);
                gobj->id = media_gobj_gen_id(type, ++mdev->intf_devnode_id);
                break;
        }
@@ -181,6 +183,16 @@ void media_gobj_init(struct media_device *mdev,
  */
 void media_gobj_remove(struct media_gobj *gobj)
 {
+       /* Remove the object from mdev list */
+       switch (media_type(gobj)) {
+       case MEDIA_GRAPH_ENTITY:
+       case MEDIA_GRAPH_INTF_DEVNODE:
+               list_del(&gobj->list);
+               break;
+       default:
+               break;
+       }
+
        dev_dbg_obj(__func__, gobj);
 }
 
@@ -852,8 +864,6 @@ static void media_interface_init(struct media_device *mdev,
        INIT_LIST_HEAD(&intf->links);
 
        media_gobj_init(mdev, gobj_type, &intf->graph_obj);
-
-       list_add_tail(&intf->list, &mdev->interfaces);
 }
 
 /* Functions related to the media interface via device nodes */
@@ -882,7 +892,6 @@ EXPORT_SYMBOL_GPL(media_devnode_create);
 void media_devnode_remove(struct media_intf_devnode *devnode)
 {
        media_gobj_remove(&devnode->intf.graph_obj);
-       list_del(&devnode->intf.list);
        kfree(devnode);
 }
 EXPORT_SYMBOL_GPL(media_devnode_remove);
This page took 0.032134 seconds and 5 git commands to generate.