[media] media: add macros to check if subdev or V4L2 DMA
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 21 Aug 2015 15:17:40 +0000 (12:17 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 11 Jan 2016 14:18:49 +0000 (12:18 -0200)
As we'll be removing entity subtypes from the Kernel, we need
to provide a way for drivers and core to check if a given
entity is represented by a V4L2 subdev or if it is an V4L2
I/O entity (typically with DMA).

Drivers that create entities that don't belong to any defined subdev
category should use MEDIA_ENT_T_V4L2_SUBDEV_UNKNOWN.

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

index ca35e07..2596878 100644 (file)
@@ -220,6 +220,40 @@ static inline u32 media_gobj_gen_id(enum media_gobj_type type, u32 local_id)
        return id;
 }
 
+static inline bool is_media_entity_v4l2_io(struct media_entity *entity)
+{
+       if (!entity)
+               return false;
+
+       switch (entity->type) {
+       case MEDIA_ENT_T_V4L2_VIDEO:
+       case MEDIA_ENT_T_V4L2_VBI:
+       case MEDIA_ENT_T_V4L2_SWRADIO:
+               return true;
+       default:
+               return false;
+       }
+}
+
+static inline bool is_media_entity_v4l2_subdev(struct media_entity *entity)
+{
+       if (!entity)
+               return false;
+
+       switch (entity->type) {
+       case MEDIA_ENT_T_V4L2_SUBDEV_UNKNOWN:
+       case MEDIA_ENT_T_V4L2_SUBDEV_SENSOR:
+       case MEDIA_ENT_T_V4L2_SUBDEV_FLASH:
+       case MEDIA_ENT_T_V4L2_SUBDEV_LENS:
+       case MEDIA_ENT_T_V4L2_SUBDEV_DECODER:
+       case MEDIA_ENT_T_V4L2_SUBDEV_TUNER:
+               return true;
+
+       default:
+               return false;
+       }
+}
+
 #define MEDIA_ENTITY_ENUM_MAX_DEPTH    16
 #define MEDIA_ENTITY_ENUM_MAX_ID       64
 
index 8e98968..c931464 100644 (file)
@@ -75,6 +75,9 @@ struct media_device_info {
 #define MEDIA_ENT_T_V4L2_SWRADIO       (MEDIA_ENT_T_V4L2_BASE + 6)
 
 /* V4L2 Sub-device entities */
+
+#define MEDIA_ENT_T_V4L2_SUBDEV_UNKNOWN        MEDIA_ENT_T_V4L2_SUBDEV_BASE
+
 #define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR (MEDIA_ENT_T_V4L2_SUBDEV_BASE + 1)
 #define MEDIA_ENT_T_V4L2_SUBDEV_FLASH  (MEDIA_ENT_T_V4L2_SUBDEV_BASE + 2)
 #define MEDIA_ENT_T_V4L2_SUBDEV_LENS   (MEDIA_ENT_T_V4L2_SUBDEV_BASE + 3)