]> git.karo-electronics.de Git - linux-beck.git/commitdiff
[media] media-device.h: use just one u32 counter for object ID
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Wed, 16 Dec 2015 16:28:01 +0000 (14:28 -0200)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 11 Jan 2016 14:19:23 +0000 (12:19 -0200)
Instead of using one u32 counter per type for object IDs, use
just one counter. With such change, it makes sense to simplify
the debug logs too.

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

index a2d28162213eac7c9754587e351c43eea5da112f..f63be23e6ed4714c589a942bd9718485fdeda67d 100644 (file)
@@ -106,8 +106,8 @@ static void dev_dbg_obj(const char *event_name,  struct media_gobj *gobj)
        switch (media_type(gobj)) {
        case MEDIA_GRAPH_ENTITY:
                dev_dbg(gobj->mdev->dev,
-                       "%s: id 0x%08x entity#%d: '%s'\n",
-                       event_name, gobj->id, media_localid(gobj),
+                       "%s id %u: entity '%s'\n",
+                       event_name, media_id(gobj),
                        gobj_to_entity(gobj)->name);
                break;
        case MEDIA_GRAPH_LINK:
@@ -115,14 +115,12 @@ static void dev_dbg_obj(const char *event_name,  struct media_gobj *gobj)
                struct media_link *link = gobj_to_link(gobj);
 
                dev_dbg(gobj->mdev->dev,
-                       "%s: id 0x%08x link#%d: %s#%d ==> %s#%d\n",
-                       event_name, gobj->id, media_localid(gobj),
-
-                       gobj_type(media_type(link->gobj0)),
-                       media_localid(link->gobj0),
-
-                       gobj_type(media_type(link->gobj1)),
-                       media_localid(link->gobj1));
+                       "%s id %u: %s link id %u ==> id %u\n",
+                       event_name, media_id(gobj),
+                       media_type(link->gobj0) == MEDIA_GRAPH_PAD ?
+                               "data" : "interface",
+                       media_id(link->gobj0),
+                       media_id(link->gobj1));
                break;
        }
        case MEDIA_GRAPH_PAD:
@@ -130,11 +128,10 @@ static void dev_dbg_obj(const char *event_name,  struct media_gobj *gobj)
                struct media_pad *pad = gobj_to_pad(gobj);
 
                dev_dbg(gobj->mdev->dev,
-                       "%s: id 0x%08x %s%spad#%d: '%s':%d\n",
-                       event_name, gobj->id,
-                       pad->flags & MEDIA_PAD_FL_SINK   ? "  sink " : "",
+                       "%s id %u: %s%spad '%s':%d\n",
+                       event_name, media_id(gobj),
+                       pad->flags & MEDIA_PAD_FL_SINK   ? "sink " : "",
                        pad->flags & MEDIA_PAD_FL_SOURCE ? "source " : "",
-                       media_localid(gobj),
                        pad->entity->name, pad->index);
                break;
        }
@@ -144,8 +141,8 @@ static void dev_dbg_obj(const char *event_name,  struct media_gobj *gobj)
                struct media_intf_devnode *devnode = intf_to_devnode(intf);
 
                dev_dbg(gobj->mdev->dev,
-                       "%s: id 0x%08x intf_devnode#%d: %s - major: %d, minor: %d\n",
-                       event_name, gobj->id, media_localid(gobj),
+                       "%s id %u: intf_devnode %s - major: %d, minor: %d\n",
+                       event_name, media_id(gobj),
                        intf_type(intf),
                        devnode->major, devnode->minor);
                break;
@@ -163,21 +160,19 @@ void media_gobj_create(struct media_device *mdev,
        gobj->mdev = mdev;
 
        /* Create a per-type unique object ID */
+       gobj->id = media_gobj_gen_id(type, ++mdev->id);
+
        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);
                list_add_tail(&gobj->list, &mdev->pads);
                break;
        case MEDIA_GRAPH_LINK:
-               gobj->id = media_gobj_gen_id(type, ++mdev->link_id);
                list_add_tail(&gobj->list, &mdev->links);
                break;
        case MEDIA_GRAPH_INTF_DEVNODE:
-               gobj->id = media_gobj_gen_id(type, ++mdev->intf_devnode_id);
                list_add_tail(&gobj->list, &mdev->interfaces);
                break;
        }
index 0dc67f2c2d0a8c56c86b9b2926193df8eb08514f..d3855898c3fc6767fe7f7fb30895173845e8548f 100644 (file)
@@ -275,10 +275,7 @@ struct device;
  * @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
- * @intf_devnode_id: Unique ID used on the last interface devnode registered
+ * @id:                Unique ID used on the last registered graph object
  * @entity_internal_idx: Unique internal entity ID used by the graph traversal
  *             algorithms
  * @entity_internal_idx_max: Allocated internal entity indices
@@ -313,10 +310,7 @@ struct media_device {
 
        u32 topology_version;
 
-       u32 entity_id;
-       u32 pad_id;
-       u32 link_id;
-       u32 intf_devnode_id;
+       u32 id;
        struct ida entity_internal_idx;
        int entity_internal_idx_max;
 
index 855b47df6ed54d20550409c6934438c19b1fa0f7..54be1496d542d7a617ebea874578ffda55a5124c 100644 (file)
@@ -47,8 +47,8 @@ enum media_gobj_type {
 };
 
 #define MEDIA_BITS_PER_TYPE            8
-#define MEDIA_BITS_PER_LOCAL_ID                (32 - MEDIA_BITS_PER_TYPE)
-#define MEDIA_LOCAL_ID_MASK             GENMASK(MEDIA_BITS_PER_LOCAL_ID - 1, 0)
+#define MEDIA_BITS_PER_ID              (32 - MEDIA_BITS_PER_TYPE)
+#define MEDIA_ID_MASK                   GENMASK_ULL(MEDIA_BITS_PER_ID - 1, 0)
 
 /* Structs to represent the objects that belong to a media graph */
 
@@ -58,9 +58,8 @@ enum media_gobj_type {
  * @mdev:      Pointer to the struct media_device that owns the object
  * @id:                Non-zero object ID identifier. The ID should be unique
  *             inside a media_device, as it is composed by
- *             MEDIA_BITS_PER_TYPE to store the type plus
- *             MEDIA_BITS_PER_LOCAL_ID to store a per-type ID
- *             (called as "local ID").
+ *             %MEDIA_BITS_PER_TYPE to store the type plus
+ *             %MEDIA_BITS_PER_ID to store the ID
  * @list:      List entry stored in one of the per-type mdev object lists
  *
  * All objects on the media graph should have this struct embedded
@@ -299,20 +298,20 @@ static inline u32 media_entity_id(struct media_entity *entity)
  */
 static inline enum media_gobj_type media_type(struct media_gobj *gobj)
 {
-       return gobj->id >> MEDIA_BITS_PER_LOCAL_ID;
+       return gobj->id >> MEDIA_BITS_PER_ID;
 }
 
-static inline u32 media_localid(struct media_gobj *gobj)
+static inline u32 media_id(struct media_gobj *gobj)
 {
-       return gobj->id & MEDIA_LOCAL_ID_MASK;
+       return gobj->id & MEDIA_ID_MASK;
 }
 
-static inline u32 media_gobj_gen_id(enum media_gobj_type type, u32 local_id)
+static inline u32 media_gobj_gen_id(enum media_gobj_type type, u64 local_id)
 {
        u32 id;
 
-       id = type << MEDIA_BITS_PER_LOCAL_ID;
-       id |= local_id & MEDIA_LOCAL_ID_MASK;
+       id = type << MEDIA_BITS_PER_ID;
+       id |= local_id & MEDIA_ID_MASK;
 
        return id;
 }