PAD embedded objects also need to be initialized. Those are
currently created via media_entity_init() and, once created,
never change.

While this will likely change in the future, for now we can
just initialize those objects once, when registering the
entity.

Signed-off-by: Mauro Carvalho Chehab <mche...@osg.samsung.com>

diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
index 960a4e30c68d..56724f7853bf 100644
--- a/drivers/media/media-device.c
+++ b/drivers/media/media-device.c
@@ -430,6 +430,8 @@ EXPORT_SYMBOL_GPL(media_device_unregister);
 int __must_check media_device_register_entity(struct media_device *mdev,
                                              struct media_entity *entity)
 {
+       int i;
+
        /* Warn if we apparently re-register an entity */
        WARN_ON(entity->parent != NULL);
        entity->parent = mdev;
@@ -438,6 +440,11 @@ int __must_check media_device_register_entity(struct 
media_device *mdev,
        /* Initialize media_graph_obj embedded at the entity */
        graph_obj_init(mdev, MEDIA_GRAPH_ENTITY, &entity->graph_obj);
 
+       /* Initialize objects at the pads */
+       for (i = 0; entity->num_pads; i++)
+               graph_obj_init(mdev, MEDIA_GRAPH_PAD,
+                              &entity->pads[i].graph_obj);
+
        /*
         * FIXME: should it use the unique object ID or would it
         * break support on the legacy MC API?
@@ -462,6 +469,7 @@ EXPORT_SYMBOL_GPL(media_device_register_entity);
  */
 void media_device_unregister_entity(struct media_entity *entity)
 {
+       int i;
        struct media_device *mdev = entity->parent;
 
        if (mdev == NULL)
@@ -469,6 +477,8 @@ void media_device_unregister_entity(struct media_entity 
*entity)
 
        spin_lock(&mdev->lock);
        graph_obj_remove(&entity->graph_obj);
+       for (i = 0; entity->num_pads; i++)
+               graph_obj_remove(&entity->pads[i].graph_obj);
        list_del(&entity->list);
        spin_unlock(&mdev->lock);
        entity->parent = NULL;
-- 
2.4.3

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to