[media] media_device: add a topology version field
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Sun, 23 Aug 2015 12:40:26 +0000 (09:40 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 11 Jan 2016 14:18:54 +0000 (12:18 -0200)
Every time a graph object is added or removed, the version
of the topology changes. That's a requirement for the new
MEDIA_IOC_G_TOPOLOGY, in order to allow userspace to know
that the topology has changed after a previous call to it.

Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/media-entity.c
include/media/media-device.h

index 2f3d3aae20a7248fd52293602ca67aadc3e79a82..1b2fd724cdbfa243d5dbae7b2ac9d5aaf3f46f4d 100644 (file)
@@ -173,6 +173,9 @@ void media_gobj_init(struct media_device *mdev,
                list_add_tail(&gobj->list, &mdev->interfaces);
                break;
        }
+
+       mdev->topology_version++;
+
        dev_dbg_obj(__func__, gobj);
 }
 
@@ -187,6 +190,8 @@ void media_gobj_remove(struct media_gobj *gobj)
 {
        dev_dbg_obj(__func__, gobj);
 
+       gobj->mdev->topology_version++;
+
        /* Remove the object from mdev list */
        list_del(&gobj->list);
 }
index 0d1b9c68745446a818bcac15f76b29c13a3843ef..1b12774a9ab42c2a591ecd02bbfdcc6801543181 100644 (file)
@@ -41,6 +41,8 @@ struct device;
  * @bus_info:  Unique and stable device location identifier
  * @hw_revision: Hardware device revision
  * @driver_version: Device driver version
+ * @topology_version: Monotonic counter for storing the version of the graph
+ *             topology. Should be incremented each time the topology changes.
  * @entity_id: Unique ID used on the last entity registered
  * @pad_id:    Unique ID used on the last pad registered
  * @link_id:   Unique ID used on the last link registered
@@ -74,6 +76,8 @@ struct media_device {
        u32 hw_revision;
        u32 driver_version;
 
+       u32 topology_version;
+
        u32 entity_id;
        u32 pad_id;
        u32 link_id;