aboutsummaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@s-opensource.com>2016-08-29 15:09:11 -0400
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2016-09-09 08:28:55 -0400
commit48a7c4bac94dfb367d1d64123b5182536912c03e (patch)
treef52da0344a4a9af35872a4fa06dd7a21b2470fcf /include/media
parent36aefa35f4bfab4c40f2445864e4fcb445d0d09d (diff)
[media] docs-rst: improve the kAPI documentation for the mediactl
There are several issues on the documentation: - the media.h header were not properly referenced; - verbatim expressions were not properly marked as such; - struct member references were wrong; - some notes were not using the right markup; - a comment that were moved to the kernel-doc markup were duplicated as a comment inside the struct media_entity; - some args were not pointing to the struct they're using; - macros weren't documented. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'include/media')
-rw-r--r--include/media/media-device.h115
-rw-r--r--include/media/media-devnode.h2
-rw-r--r--include/media/media-entity.h237
3 files changed, 231 insertions, 123 deletions
diff --git a/include/media/media-device.h b/include/media/media-device.h
index 28195242386c..481dd6c672cb 100644
--- a/include/media/media-device.h
+++ b/include/media/media-device.h
@@ -53,7 +53,7 @@ struct media_entity_notify {
53 * @dev: Parent device 53 * @dev: Parent device
54 * @devnode: Media device node 54 * @devnode: Media device node
55 * @driver_name: Optional device driver name. If not set, calls to 55 * @driver_name: Optional device driver name. If not set, calls to
56 * %MEDIA_IOC_DEVICE_INFO will return dev->driver->name. 56 * %MEDIA_IOC_DEVICE_INFO will return ``dev->driver->name``.
57 * This is needed for USB drivers for example, as otherwise 57 * This is needed for USB drivers for example, as otherwise
58 * they'll all appear as if the driver name was "usb". 58 * they'll all appear as if the driver name was "usb".
59 * @model: Device model name 59 * @model: Device model name
@@ -102,16 +102,18 @@ struct media_entity_notify {
102 * sink entity and deactivate the link between them. Drivers 102 * sink entity and deactivate the link between them. Drivers
103 * should call this handler to release the source. 103 * should call this handler to release the source.
104 * 104 *
105 * Note: Bridge driver is expected to implement and set the
106 * handler when media_device is registered or when
107 * bridge driver finds the media_device during probe.
108 * Bridge driver sets source_priv with information
109 * necessary to run enable/disable source handlers.
110 *
111 * Use-case: find tuner entity connected to the decoder 105 * Use-case: find tuner entity connected to the decoder
112 * entity and check if it is available, and activate the 106 * entity and check if it is available, and activate the
113 * the link between them from enable_source and deactivate 107 * the link between them from @enable_source and deactivate
114 * from disable_source. 108 * from @disable_source.
109 *
110 * .. note::
111 *
112 * Bridge driver is expected to implement and set the
113 * handler when &media_device is registered or when
114 * bridge driver finds the media_device during probe.
115 * Bridge driver sets source_priv with information
116 * necessary to run @enable_source and @disable_source handlers.
115 */ 117 */
116struct media_device { 118struct media_device {
117 /* dev->driver_data points to this struct. */ 119 /* dev->driver_data points to this struct. */
@@ -168,7 +170,7 @@ struct usb_device;
168 * @ent_enum: Entity enumeration to be initialised 170 * @ent_enum: Entity enumeration to be initialised
169 * @mdev: The related media device 171 * @mdev: The related media device
170 * 172 *
171 * Returns zero on success or a negative error code. 173 * Return: zero on success or a negative error code.
172 */ 174 */
173static inline __must_check int media_entity_enum_init( 175static inline __must_check int media_entity_enum_init(
174 struct media_entity_enum *ent_enum, struct media_device *mdev) 176 struct media_entity_enum *ent_enum, struct media_device *mdev)
@@ -211,36 +213,38 @@ void media_device_cleanup(struct media_device *mdev);
211 * 213 *
212 * Users, should, instead, call the media_device_register() macro. 214 * Users, should, instead, call the media_device_register() macro.
213 * 215 *
214 * The caller is responsible for initializing the media_device structure before 216 * The caller is responsible for initializing the &media_device structure
215 * registration. The following fields must be set: 217 * before registration. The following fields of &media_device must be set:
216 * 218 *
217 * - dev must point to the parent device (usually a &pci_dev, &usb_interface or 219 * - &media_entity.dev must point to the parent device (usually a &pci_dev,
218 * &platform_device instance). 220 * &usb_interface or &platform_device instance).
219 * 221 *
220 * - model must be filled with the device model name as a NUL-terminated UTF-8 222 * - &media_entity.model must be filled with the device model name as a
221 * string. The device/model revision must not be stored in this field. 223 * NUL-terminated UTF-8 string. The device/model revision must not be
224 * stored in this field.
222 * 225 *
223 * The following fields are optional: 226 * The following fields are optional:
224 * 227 *
225 * - serial is a unique serial number stored as a NUL-terminated ASCII string. 228 * - &media_entity.serial is a unique serial number stored as a
226 * The field is big enough to store a GUID in text form. If the hardware 229 * NUL-terminated ASCII string. The field is big enough to store a GUID
227 * doesn't provide a unique serial number this field must be left empty. 230 * in text form. If the hardware doesn't provide a unique serial number
231 * this field must be left empty.
228 * 232 *
229 * - bus_info represents the location of the device in the system as a 233 * - &media_entity.bus_info represents the location of the device in the
230 * NUL-terminated ASCII string. For PCI/PCIe devices bus_info must be set to 234 * system as a NUL-terminated ASCII string. For PCI/PCIe devices
231 * "PCI:" (or "PCIe:") followed by the value of pci_name(). For USB devices, 235 * &media_entity.bus_info must be set to "PCI:" (or "PCIe:") followed by
232 * the usb_make_path() function must be used. This field is used by 236 * the value of pci_name(). For USB devices,the usb_make_path() function
233 * applications to distinguish between otherwise identical devices that don't 237 * must be used. This field is used by applications to distinguish between
234 * provide a serial number. 238 * otherwise identical devices that don't provide a serial number.
235 * 239 *
236 * - hw_revision is the hardware device revision in a driver-specific format. 240 * - &media_entity.hw_revision is the hardware device revision in a
237 * When possible the revision should be formatted with the KERNEL_VERSION 241 * driver-specific format. When possible the revision should be formatted
238 * macro. 242 * with the KERNEL_VERSION() macro.
239 * 243 *
240 * - driver_version is formatted with the KERNEL_VERSION macro. The version 244 * - &media_entity.driver_version is formatted with the KERNEL_VERSION()
241 * minor must be incremented when new features are added to the userspace API 245 * macro. The version minor must be incremented when new features are added
242 * without breaking binary compatibility. The version major must be 246 * to the userspace API without breaking binary compatibility. The version
243 * incremented when binary compatibility is broken. 247 * major must be incremented when binary compatibility is broken.
244 * 248 *
245 * .. note:: 249 * .. note::
246 * 250 *
@@ -252,6 +256,16 @@ void media_device_cleanup(struct media_device *mdev);
252 */ 256 */
253int __must_check __media_device_register(struct media_device *mdev, 257int __must_check __media_device_register(struct media_device *mdev,
254 struct module *owner); 258 struct module *owner);
259
260
261/**
262 * media_device_register() - Registers a media device element
263 *
264 * @mdev: pointer to struct &media_device
265 *
266 * This macro calls __media_device_register() passing %THIS_MODULE as
267 * the __media_device_register() second argument (**owner**).
268 */
255#define media_device_register(mdev) __media_device_register(mdev, THIS_MODULE) 269#define media_device_register(mdev) __media_device_register(mdev, THIS_MODULE)
256 270
257/** 271/**
@@ -259,7 +273,6 @@ int __must_check __media_device_register(struct media_device *mdev,
259 * 273 *
260 * @mdev: pointer to struct &media_device 274 * @mdev: pointer to struct &media_device
261 * 275 *
262 *
263 * It is safe to call this function on an unregistered (but initialised) 276 * It is safe to call this function on an unregistered (but initialised)
264 * media device. 277 * media device.
265 */ 278 */
@@ -285,14 +298,15 @@ void media_device_unregister(struct media_device *mdev);
285 * framework. 298 * framework.
286 * 299 *
287 * If the device has pads, media_entity_pads_init() should be called before 300 * If the device has pads, media_entity_pads_init() should be called before
288 * this function. Otherwise, the &media_entity.@pad and &media_entity.@num_pads 301 * this function. Otherwise, the &media_entity.pad and &media_entity.num_pads
289 * should be zeroed before calling this function. 302 * should be zeroed before calling this function.
290 * 303 *
291 * Entities have flags that describe the entity capabilities and state: 304 * Entities have flags that describe the entity capabilities and state:
292 * 305 *
293 * %MEDIA_ENT_FL_DEFAULT indicates the default entity for a given type. 306 * %MEDIA_ENT_FL_DEFAULT
294 * This can be used to report the default audio and video devices or the 307 * indicates the default entity for a given type.
295 * default camera sensor. 308 * This can be used to report the default audio and video devices or the
309 * default camera sensor.
296 * 310 *
297 * .. note:: 311 * .. note::
298 * 312 *
@@ -331,8 +345,10 @@ void media_device_unregister_entity(struct media_entity *entity);
331 * @mdev: The media device 345 * @mdev: The media device
332 * @nptr: The media_entity_notify 346 * @nptr: The media_entity_notify
333 * 347 *
334 * Note: When a new entity is registered, all the registered 348 * .. note::
335 * media_entity_notify callbacks are invoked. 349 *
350 * When a new entity is registered, all the registered
351 * media_entity_notify callbacks are invoked.
336 */ 352 */
337 353
338int __must_check media_device_register_entity_notify(struct media_device *mdev, 354int __must_check media_device_register_entity_notify(struct media_device *mdev,
@@ -410,11 +426,13 @@ void media_device_pci_init(struct media_device *mdev,
410 * @board_name: media device name. If %NULL, the routine will use the usb 426 * @board_name: media device name. If %NULL, the routine will use the usb
411 * product name, if available. 427 * product name, if available.
412 * @driver_name: name of the driver. if %NULL, the routine will use the name 428 * @driver_name: name of the driver. if %NULL, the routine will use the name
413 * given by udev->dev->driver->name, with is usually the wrong 429 * given by ``udev->dev->driver->name``, with is usually the wrong
414 * thing to do. 430 * thing to do.
415 * 431 *
416 * NOTE: It is better to call media_device_usb_init() instead, as 432 * .. note::
417 * such macro fills driver_name with %KBUILD_MODNAME. 433 *
434 * It is better to call media_device_usb_init() instead, as
435 * such macro fills driver_name with %KBUILD_MODNAME.
418 */ 436 */
419void __media_device_usb_init(struct media_device *mdev, 437void __media_device_usb_init(struct media_device *mdev,
420 struct usb_device *udev, 438 struct usb_device *udev,
@@ -472,6 +490,19 @@ static inline void __media_device_usb_init(struct media_device *mdev,
472 490
473#endif /* CONFIG_MEDIA_CONTROLLER */ 491#endif /* CONFIG_MEDIA_CONTROLLER */
474 492
493/**
494 * media_device_usb_init() - create and initialize a
495 * struct &media_device from a PCI device.
496 *
497 * @mdev: pointer to struct &media_device
498 * @udev: pointer to struct usb_device
499 * @name: media device name. If %NULL, the routine will use the usb
500 * product name, if available.
501 *
502 * This macro calls media_device_usb_init() passing the
503 * media_device_usb_init() **driver_name** parameter filled with
504 * %KBUILD_MODNAME.
505 */
475#define media_device_usb_init(mdev, udev, name) \ 506#define media_device_usb_init(mdev, udev, name) \
476 __media_device_usb_init(mdev, udev, name, KBUILD_MODNAME) 507 __media_device_usb_init(mdev, udev, name, KBUILD_MODNAME)
477 508
diff --git a/include/media/media-devnode.h b/include/media/media-devnode.h
index 37d494805944..972168e90413 100644
--- a/include/media/media-devnode.h
+++ b/include/media/media-devnode.h
@@ -75,7 +75,7 @@ struct media_file_operations {
75 * @cdev: struct cdev pointer character device 75 * @cdev: struct cdev pointer character device
76 * @parent: parent device 76 * @parent: parent device
77 * @minor: device node minor number 77 * @minor: device node minor number
78 * @flags: flags, combination of the MEDIA_FLAG_* constants 78 * @flags: flags, combination of the ``MEDIA_FLAG_*`` constants
79 * @release: release callback called at the end of media_devnode_release() 79 * @release: release callback called at the end of media_devnode_release()
80 * 80 *
81 * This structure represents a media-related device node. 81 * This structure represents a media-related device node.
diff --git a/include/media/media-entity.h b/include/media/media-entity.h
index 7bf6885dd37f..e21958c7c5d9 100644
--- a/include/media/media-entity.h
+++ b/include/media/media-entity.h
@@ -56,7 +56,7 @@ enum media_gobj_type {
56/** 56/**
57 * struct media_gobj - Define a graph object. 57 * struct media_gobj - Define a graph object.
58 * 58 *
59 * @mdev: Pointer to the struct media_device that owns the object 59 * @mdev: Pointer to the struct &media_device that owns the object
60 * @id: Non-zero object ID identifier. The ID should be unique 60 * @id: Non-zero object ID identifier. The ID should be unique
61 * inside a media_device, as it is composed by 61 * inside a media_device, as it is composed by
62 * %MEDIA_BITS_PER_TYPE to store the type plus 62 * %MEDIA_BITS_PER_TYPE to store the type plus
@@ -162,7 +162,9 @@ struct media_link {
162 * @graph_obj: Embedded structure containing the media object common data 162 * @graph_obj: Embedded structure containing the media object common data
163 * @entity: Entity this pad belongs to 163 * @entity: Entity this pad belongs to
164 * @index: Pad index in the entity pads array, numbered from 0 to n 164 * @index: Pad index in the entity pads array, numbered from 0 to n
165 * @flags: Pad flags, as defined in uapi/media.h (MEDIA_PAD_FL_*) 165 * @flags: Pad flags, as defined in
166 * :ref:`include/uapi/linux/media.h <media_header>`
167 * (seek for ``MEDIA_PAD_FL_*``)
166 */ 168 */
167struct media_pad { 169struct media_pad {
168 struct media_gobj graph_obj; /* must be first field in struct */ 170 struct media_gobj graph_obj; /* must be first field in struct */
@@ -182,7 +184,7 @@ struct media_pad {
182 * 184 *
183 * .. note:: 185 * .. note::
184 * 186 *
185 * Those these callbacks are called with struct media_device.@graph_mutex 187 * Those these callbacks are called with struct &media_device.graph_mutex
186 * mutex held. 188 * mutex held.
187 */ 189 */
188struct media_entity_operations { 190struct media_entity_operations {
@@ -210,7 +212,7 @@ struct media_entity_operations {
210 * This allows runtime type identification of media entities and safe casting to 212 * This allows runtime type identification of media entities and safe casting to
211 * the correct object type. For instance, a media entity structure instance 213 * the correct object type. For instance, a media entity structure instance
212 * embedded in a v4l2_subdev structure instance will have the type 214 * embedded in a v4l2_subdev structure instance will have the type
213 * MEDIA_ENTITY_TYPE_V4L2_SUBDEV and can safely be cast to a v4l2_subdev 215 * %MEDIA_ENTITY_TYPE_V4L2_SUBDEV and can safely be cast to a &v4l2_subdev
214 * structure using the container_of() macro. 216 * structure using the container_of() macro.
215 */ 217 */
216enum media_entity_type { 218enum media_entity_type {
@@ -225,9 +227,12 @@ enum media_entity_type {
225 * @graph_obj: Embedded structure containing the media object common data. 227 * @graph_obj: Embedded structure containing the media object common data.
226 * @name: Entity name. 228 * @name: Entity name.
227 * @obj_type: Type of the object that implements the media_entity. 229 * @obj_type: Type of the object that implements the media_entity.
228 * @function: Entity main function, as defined in uapi/media.h 230 * @function: Entity main function, as defined in
229 * (MEDIA_ENT_F_*) 231 * :ref:`include/uapi/linux/media.h <media_header>`
230 * @flags: Entity flags, as defined in uapi/media.h (MEDIA_ENT_FL_*) 232 * (seek for ``MEDIA_ENT_F_*``)
233 * @flags: Entity flags, as defined in
234 * :ref:`include/uapi/linux/media.h <media_header>`
235 * (seek for ``MEDIA_ENT_FL_*``)
231 * @num_pads: Number of sink and source pads. 236 * @num_pads: Number of sink and source pads.
232 * @num_links: Total number of links, forward and back, enabled and disabled. 237 * @num_links: Total number of links, forward and back, enabled and disabled.
233 * @num_backlinks: Number of backlinks 238 * @num_backlinks: Number of backlinks
@@ -246,9 +251,12 @@ enum media_entity_type {
246 * @minor: Devnode minor number (zero if not applicable). Kept just 251 * @minor: Devnode minor number (zero if not applicable). Kept just
247 * for backward compatibility. 252 * for backward compatibility.
248 * 253 *
249 * NOTE: @stream_count and @use_count reference counts must never be 254 * .. note::
250 * negative, but are signed integers on purpose: a simple WARN_ON(<0) check 255 *
251 * can be used to detect reference count bugs that would make them negative. 256 * @stream_count and @use_count reference counts must never be
257 * negative, but are signed integers on purpose: a simple ``WARN_ON(<0)``
258 * check can be used to detect reference count bugs that would make them
259 * negative.
252 */ 260 */
253struct media_entity { 261struct media_entity {
254 struct media_gobj graph_obj; /* must be first field in struct */ 262 struct media_gobj graph_obj; /* must be first field in struct */
@@ -267,10 +275,6 @@ struct media_entity {
267 275
268 const struct media_entity_operations *ops; 276 const struct media_entity_operations *ops;
269 277
270 /* Reference counts must never be negative, but are signed integers on
271 * purpose: a simple WARN_ON(<0) check can be used to detect reference
272 * count bugs that would make them negative.
273 */
274 int stream_count; 278 int stream_count;
275 int use_count; 279 int use_count;
276 280
@@ -289,10 +293,16 @@ struct media_entity {
289 * 293 *
290 * @graph_obj: embedded graph object 294 * @graph_obj: embedded graph object
291 * @links: List of links pointing to graph entities 295 * @links: List of links pointing to graph entities
292 * @type: Type of the interface as defined in the 296 * @type: Type of the interface as defined in
293 * uapi/media/media.h header, e. g. 297 * :ref:`include/uapi/linux/media.h <media_header>`
294 * MEDIA_INTF_T_* 298 * (seek for ``MEDIA_INTF_T_*``)
295 * @flags: Interface flags as defined in uapi/media/media.h 299 * @flags: Interface flags as defined in
300 * :ref:`include/uapi/linux/media.h <media_header>`
301 * (seek for ``MEDIA_INTF_FL_*``)
302 *
303 * .. note::
304 *
305 * Currently, no flags for &media_interface is defined.
296 */ 306 */
297struct media_interface { 307struct media_interface {
298 struct media_gobj graph_obj; 308 struct media_gobj graph_obj;
@@ -319,7 +329,7 @@ struct media_intf_devnode {
319/** 329/**
320 * media_entity_id() - return the media entity graph object id 330 * media_entity_id() - return the media entity graph object id
321 * 331 *
322 * @entity: pointer to entity 332 * @entity: pointer to &media_entity
323 */ 333 */
324static inline u32 media_entity_id(struct media_entity *entity) 334static inline u32 media_entity_id(struct media_entity *entity)
325{ 335{
@@ -329,7 +339,7 @@ static inline u32 media_entity_id(struct media_entity *entity)
329/** 339/**
330 * media_type() - return the media object type 340 * media_type() - return the media object type
331 * 341 *
332 * @gobj: pointer to the media graph object 342 * @gobj: Pointer to the struct &media_gobj graph object
333 */ 343 */
334static inline enum media_gobj_type media_type(struct media_gobj *gobj) 344static inline enum media_gobj_type media_type(struct media_gobj *gobj)
335{ 345{
@@ -339,7 +349,7 @@ static inline enum media_gobj_type media_type(struct media_gobj *gobj)
339/** 349/**
340 * media_id() - return the media object ID 350 * media_id() - return the media object ID
341 * 351 *
342 * @gobj: pointer to the media graph object 352 * @gobj: Pointer to the struct &media_gobj graph object
343 */ 353 */
344static inline u32 media_id(struct media_gobj *gobj) 354static inline u32 media_id(struct media_gobj *gobj)
345{ 355{
@@ -350,7 +360,7 @@ static inline u32 media_id(struct media_gobj *gobj)
350 * media_gobj_gen_id() - encapsulates type and ID on at the object ID 360 * media_gobj_gen_id() - encapsulates type and ID on at the object ID
351 * 361 *
352 * @type: object type as define at enum &media_gobj_type. 362 * @type: object type as define at enum &media_gobj_type.
353 * @local_id: next ID, from struct &media_device.@id. 363 * @local_id: next ID, from struct &media_device.id.
354 */ 364 */
355static inline u32 media_gobj_gen_id(enum media_gobj_type type, u64 local_id) 365static inline u32 media_gobj_gen_id(enum media_gobj_type type, u64 local_id)
356{ 366{
@@ -366,9 +376,9 @@ static inline u32 media_gobj_gen_id(enum media_gobj_type type, u64 local_id)
366 * is_media_entity_v4l2_video_device() - Check if the entity is a video_device 376 * is_media_entity_v4l2_video_device() - Check if the entity is a video_device
367 * @entity: pointer to entity 377 * @entity: pointer to entity
368 * 378 *
369 * Return: true if the entity is an instance of a video_device object and can 379 * Return: %true if the entity is an instance of a video_device object and can
370 * safely be cast to a struct video_device using the container_of() macro, or 380 * safely be cast to a struct video_device using the container_of() macro, or
371 * false otherwise. 381 * %false otherwise.
372 */ 382 */
373static inline bool is_media_entity_v4l2_video_device(struct media_entity *entity) 383static inline bool is_media_entity_v4l2_video_device(struct media_entity *entity)
374{ 384{
@@ -379,9 +389,9 @@ static inline bool is_media_entity_v4l2_video_device(struct media_entity *entity
379 * is_media_entity_v4l2_subdev() - Check if the entity is a v4l2_subdev 389 * is_media_entity_v4l2_subdev() - Check if the entity is a v4l2_subdev
380 * @entity: pointer to entity 390 * @entity: pointer to entity
381 * 391 *
382 * Return: true if the entity is an instance of a v4l2_subdev object and can 392 * Return: %true if the entity is an instance of a &v4l2_subdev object and can
383 * safely be cast to a struct v4l2_subdev using the container_of() macro, or 393 * safely be cast to a struct &v4l2_subdev using the container_of() macro, or
384 * false otherwise. 394 * %false otherwise.
385 */ 395 */
386static inline bool is_media_entity_v4l2_subdev(struct media_entity *entity) 396static inline bool is_media_entity_v4l2_subdev(struct media_entity *entity)
387{ 397{
@@ -452,7 +462,7 @@ static inline void media_entity_enum_clear(struct media_entity_enum *ent_enum,
452 * @ent_enum: Entity enumeration 462 * @ent_enum: Entity enumeration
453 * @entity: Entity to be tested 463 * @entity: Entity to be tested
454 * 464 *
455 * Returns true if the entity was marked. 465 * Returns %true if the entity was marked.
456 */ 466 */
457static inline bool media_entity_enum_test(struct media_entity_enum *ent_enum, 467static inline bool media_entity_enum_test(struct media_entity_enum *ent_enum,
458 struct media_entity *entity) 468 struct media_entity *entity)
@@ -469,7 +479,7 @@ static inline bool media_entity_enum_test(struct media_entity_enum *ent_enum,
469 * @ent_enum: Entity enumeration 479 * @ent_enum: Entity enumeration
470 * @entity: Entity to be tested 480 * @entity: Entity to be tested
471 * 481 *
472 * Returns true if the entity was marked, and mark it before doing so. 482 * Returns %true if the entity was marked, and mark it before doing so.
473 */ 483 */
474static inline bool 484static inline bool
475media_entity_enum_test_and_set(struct media_entity_enum *ent_enum, 485media_entity_enum_test_and_set(struct media_entity_enum *ent_enum,
@@ -486,7 +496,7 @@ media_entity_enum_test_and_set(struct media_entity_enum *ent_enum,
486 * 496 *
487 * @ent_enum: Entity enumeration 497 * @ent_enum: Entity enumeration
488 * 498 *
489 * Returns true if the entity was empty. 499 * Return: %true if the entity was empty.
490 */ 500 */
491static inline bool media_entity_enum_empty(struct media_entity_enum *ent_enum) 501static inline bool media_entity_enum_empty(struct media_entity_enum *ent_enum)
492{ 502{
@@ -499,7 +509,8 @@ static inline bool media_entity_enum_empty(struct media_entity_enum *ent_enum)
499 * @ent_enum1: First entity enumeration 509 * @ent_enum1: First entity enumeration
500 * @ent_enum2: Second entity enumeration 510 * @ent_enum2: Second entity enumeration
501 * 511 *
502 * Returns true if entity enumerations e and f intersect, otherwise false. 512 * Return: %true if entity enumerations @ent_enum1 and @ent_enum2 intersect,
513 * otherwise %false.
503 */ 514 */
504static inline bool media_entity_enum_intersects( 515static inline bool media_entity_enum_intersects(
505 struct media_entity_enum *ent_enum1, 516 struct media_entity_enum *ent_enum1,
@@ -511,33 +522,63 @@ static inline bool media_entity_enum_intersects(
511 min(ent_enum1->idx_max, ent_enum2->idx_max)); 522 min(ent_enum1->idx_max, ent_enum2->idx_max));
512} 523}
513 524
525/**
526 * gobj_to_entity - returns the struct &media_entity pointer from the
527 * @gobj contained on it.
528 *
529 * @gobj: Pointer to the struct &media_gobj graph object
530 */
514#define gobj_to_entity(gobj) \ 531#define gobj_to_entity(gobj) \
515 container_of(gobj, struct media_entity, graph_obj) 532 container_of(gobj, struct media_entity, graph_obj)
516 533
534/**
535 * gobj_to_entity - returns the struct &media_pad pointer from the
536 * @gobj contained on it.
537 *
538 * @gobj: Pointer to the struct &media_gobj graph object
539 */
517#define gobj_to_pad(gobj) \ 540#define gobj_to_pad(gobj) \
518 container_of(gobj, struct media_pad, graph_obj) 541 container_of(gobj, struct media_pad, graph_obj)
519 542
543/**
544 * gobj_to_entity - returns the struct &media_link pointer from the
545 * @gobj contained on it.
546 *
547 * @gobj: Pointer to the struct &media_gobj graph object
548 */
520#define gobj_to_link(gobj) \ 549#define gobj_to_link(gobj) \
521 container_of(gobj, struct media_link, graph_obj) 550 container_of(gobj, struct media_link, graph_obj)
522 551
552/**
553 * gobj_to_entity - returns the struct &media_interface pointer from the
554 * @gobj contained on it.
555 *
556 * @gobj: Pointer to the struct &media_gobj graph object
557 */
523#define gobj_to_intf(gobj) \ 558#define gobj_to_intf(gobj) \
524 container_of(gobj, struct media_interface, graph_obj) 559 container_of(gobj, struct media_interface, graph_obj)
525 560
561/**
562 * gobj_to_entity - returns the struct media_intf_devnode pointer from the
563 * @intf contained on it.
564 *
565 * @intf: Pointer to struct &media_intf_devnode
566 */
526#define intf_to_devnode(intf) \ 567#define intf_to_devnode(intf) \
527 container_of(intf, struct media_intf_devnode, intf) 568 container_of(intf, struct media_intf_devnode, intf)
528 569
529/** 570/**
530 * media_gobj_create - Initialize a graph object 571 * media_gobj_create - Initialize a graph object
531 * 572 *
532 * @mdev: Pointer to the media_device that contains the object 573 * @mdev: Pointer to the &media_device that contains the object
533 * @type: Type of the object 574 * @type: Type of the object
534 * @gobj: Pointer to the graph object 575 * @gobj: Pointer to the struct &media_gobj graph object
535 * 576 *
536 * This routine initializes the embedded struct media_gobj inside a 577 * This routine initializes the embedded struct &media_gobj inside a
537 * media graph object. It is called automatically if media_*_create\(\) 578 * media graph object. It is called automatically if ``media_*_create``
538 * calls are used. However, if the object (entity, link, pad, interface) 579 * function calls are used. However, if the object (entity, link, pad,
539 * is embedded on some other object, this function should be called before 580 * interface) is embedded on some other object, this function should be
540 * registering the object at the media controller. 581 * called before registering the object at the media controller.
541 */ 582 */
542void media_gobj_create(struct media_device *mdev, 583void media_gobj_create(struct media_device *mdev,
543 enum media_gobj_type type, 584 enum media_gobj_type type,
@@ -546,7 +587,7 @@ void media_gobj_create(struct media_device *mdev,
546/** 587/**
547 * media_gobj_destroy - Stop using a graph object on a media device 588 * media_gobj_destroy - Stop using a graph object on a media device
548 * 589 *
549 * @gobj: Pointer to the graph object 590 * @gobj: Pointer to the struct &media_gobj graph object
550 * 591 *
551 * This should be called by all routines like media_device_unregister() 592 * This should be called by all routines like media_device_unregister()
552 * that remove/destroy media graph objects. 593 * that remove/destroy media graph objects.
@@ -561,11 +602,11 @@ void media_gobj_destroy(struct media_gobj *gobj);
561 * @pads: Array of @num_pads pads. 602 * @pads: Array of @num_pads pads.
562 * 603 *
563 * The pads array is managed by the entity driver and passed to 604 * The pads array is managed by the entity driver and passed to
564 * media_entity_pads_init() where its pointer will be stored in the entity 605 * media_entity_pads_init() where its pointer will be stored in the
565 * structure. 606 * &media_entity structure.
566 * 607 *
567 * If no pads are needed, drivers could either directly fill 608 * If no pads are needed, drivers could either directly fill
568 * &media_entity->@num_pads with 0 and &media_entity->@pads with NULL or call 609 * &media_entity->num_pads with 0 and &media_entity->pads with %NULL or call
569 * this function that will do the same. 610 * this function that will do the same.
570 * 611 *
571 * As the number of pads is known in advance, the pads array is not allocated 612 * As the number of pads is known in advance, the pads array is not allocated
@@ -595,18 +636,21 @@ static inline void media_entity_cleanup(struct media_entity *entity) {};
595 * @source_pad: number of the source pad in the pads array 636 * @source_pad: number of the source pad in the pads array
596 * @sink: pointer to &media_entity of the sink pad. 637 * @sink: pointer to &media_entity of the sink pad.
597 * @sink_pad: number of the sink pad in the pads array. 638 * @sink_pad: number of the sink pad in the pads array.
598 * @flags: Link flags, as defined in include/uapi/linux/media.h. 639 * @flags: Link flags, as defined in
640 * :ref:`include/uapi/linux/media.h <media_header>`
641 * ( seek for ``MEDIA_LNK_FL_*``)
599 * 642 *
600 * Valid values for flags: 643 * Valid values for flags:
601 * 644 *
602 * - A %MEDIA_LNK_FL_ENABLED flag indicates that the link is enabled and can 645 * %MEDIA_LNK_FL_ENABLED
603 * be used to transfer media data. When two or more links target a sink pad, 646 * Indicates that the link is enabled and can be used to transfer media data.
604 * only one of them can be enabled at a time. 647 * When two or more links target a sink pad, only one of them can be
648 * enabled at a time.
605 * 649 *
606 * - A %MEDIA_LNK_FL_IMMUTABLE flag indicates that the link enabled state can't 650 * %MEDIA_LNK_FL_IMMUTABLE
607 * be modified at runtime. If %MEDIA_LNK_FL_IMMUTABLE is set, then 651 * Indicates that the link enabled state can't be modified at runtime. If
608 * %MEDIA_LNK_FL_ENABLED must also be set since an immutable link is 652 * %MEDIA_LNK_FL_IMMUTABLE is set, then %MEDIA_LNK_FL_ENABLED must also be
609 * always enabled. 653 * set, since an immutable link is always enabled.
610 * 654 *
611 * .. note:: 655 * .. note::
612 * 656 *
@@ -624,17 +668,17 @@ __must_check int media_create_pad_link(struct media_entity *source,
624 * @source_function: Function of the source entities. Used only if @source is 668 * @source_function: Function of the source entities. Used only if @source is
625 * NULL. 669 * NULL.
626 * @source: pointer to &media_entity of the source pad. If NULL, it will use 670 * @source: pointer to &media_entity of the source pad. If NULL, it will use
627 * all entities that matches the @sink_function. 671 * all entities that matches the @sink_function.
628 * @source_pad: number of the source pad in the pads array 672 * @source_pad: number of the source pad in the pads array
629 * @sink_function: Function of the sink entities. Used only if @sink is NULL. 673 * @sink_function: Function of the sink entities. Used only if @sink is NULL.
630 * @sink: pointer to &media_entity of the sink pad. If NULL, it will use 674 * @sink: pointer to &media_entity of the sink pad. If NULL, it will use
631 * all entities that matches the @sink_function. 675 * all entities that matches the @sink_function.
632 * @sink_pad: number of the sink pad in the pads array. 676 * @sink_pad: number of the sink pad in the pads array.
633 * @flags: Link flags, as defined in include/uapi/linux/media.h. 677 * @flags: Link flags, as defined in include/uapi/linux/media.h.
634 * @allow_both_undefined: if true, then both @source and @sink can be NULL. 678 * @allow_both_undefined: if %true, then both @source and @sink can be NULL.
635 * In such case, it will create a crossbar between all entities that 679 * In such case, it will create a crossbar between all entities that
636 * matches @source_function to all entities that matches @sink_function. 680 * matches @source_function to all entities that matches @sink_function.
637 * If false, it will return 0 and won't create any link if both @source 681 * If %false, it will return 0 and won't create any link if both @source
638 * and @sink are NULL. 682 * and @sink are NULL.
639 * 683 *
640 * Valid values for flags: 684 * Valid values for flags:
@@ -654,9 +698,11 @@ __must_check int media_create_pad_link(struct media_entity *source,
654 * creates link by link, this function is meant to allow 1:n, n:1 and even 698 * creates link by link, this function is meant to allow 1:n, n:1 and even
655 * cross-bar (n:n) links. 699 * cross-bar (n:n) links.
656 * 700 *
657 * NOTE: Before calling this function, media_entity_pads_init() and 701 * .. note::
658 * media_device_register_entity() should be called previously for the entities 702 *
659 * to be linked. 703 * Before calling this function, media_entity_pads_init() and
704 * media_device_register_entity() should be called previously for the
705 * entities to be linked.
660 */ 706 */
661int media_create_pad_links(const struct media_device *mdev, 707int media_create_pad_links(const struct media_device *mdev,
662 const u32 source_function, 708 const u32 source_function,
@@ -715,7 +761,7 @@ int __media_entity_setup_link(struct media_link *link, u32 flags);
715 * flags. 761 * flags.
716 * 762 *
717 * Media device drivers can be notified of link setup operations by setting the 763 * Media device drivers can be notified of link setup operations by setting the
718 * media_device::link_notify pointer to a callback function. If provided, the 764 * &media_device.link_notify pointer to a callback function. If provided, the
719 * notification callback will be called before enabling and after disabling 765 * notification callback will be called before enabling and after disabling
720 * links. 766 * links.
721 * 767 *
@@ -725,7 +771,7 @@ int __media_entity_setup_link(struct media_link *link, u32 flags);
725 * 771 *
726 * Link configuration must not have any side effect on other links. If an 772 * Link configuration must not have any side effect on other links. If an
727 * enabled link at a sink pad prevents another link at the same pad from 773 * enabled link at a sink pad prevents another link at the same pad from
728 * being enabled, the link_setup operation must return -EBUSY and can't 774 * being enabled, the link_setup operation must return %-EBUSY and can't
729 * implicitly disable the first enabled link. 775 * implicitly disable the first enabled link.
730 * 776 *
731 * .. note:: 777 * .. note::
@@ -741,8 +787,8 @@ int media_entity_setup_link(struct media_link *link, u32 flags);
741 * @source: Source pad 787 * @source: Source pad
742 * @sink: Sink pad 788 * @sink: Sink pad
743 * 789 *
744 * Return a pointer to the link between the two entities. If no such link 790 * Return: returns a pointer to the link between the two entities. If no
745 * exists, return NULL. 791 * such link exists, return %NULL.
746 */ 792 */
747struct media_link *media_entity_find_link(struct media_pad *source, 793struct media_link *media_entity_find_link(struct media_pad *source,
748 struct media_pad *sink); 794 struct media_pad *sink);
@@ -754,8 +800,8 @@ struct media_link *media_entity_find_link(struct media_pad *source,
754 * Search for a remote pad connected to the given pad by iterating over all 800 * Search for a remote pad connected to the given pad by iterating over all
755 * links originating or terminating at that pad until an enabled link is found. 801 * links originating or terminating at that pad until an enabled link is found.
756 * 802 *
757 * Return a pointer to the pad at the remote end of the first found enabled 803 * Return: returns a pointer to the pad at the remote end of the first found
758 * link, or NULL if no enabled link has been found. 804 * enabled link, or %NULL if no enabled link has been found.
759 */ 805 */
760struct media_pad *media_entity_remote_pad(struct media_pad *pad); 806struct media_pad *media_entity_remote_pad(struct media_pad *pad);
761 807
@@ -766,12 +812,18 @@ struct media_pad *media_entity_remote_pad(struct media_pad *pad);
766 * 812 *
767 * Get a reference to the parent media device module. 813 * Get a reference to the parent media device module.
768 * 814 *
769 * The function will return immediately if @entity is NULL. 815 * The function will return immediately if @entity is %NULL.
770 * 816 *
771 * Return a pointer to the entity on success or NULL on failure. 817 * Return: returns a pointer to the entity on success or %NULL on failure.
772 */ 818 */
773struct media_entity *media_entity_get(struct media_entity *entity); 819struct media_entity *media_entity_get(struct media_entity *entity);
774 820
821/**
822 * media_entity_graph_walk_init - Allocate resources used by graph walk.
823 *
824 * @graph: Media graph structure that will be used to walk the graph
825 * @mdev: Pointer to the &media_device that contains the object
826 */
775__must_check int media_entity_graph_walk_init( 827__must_check int media_entity_graph_walk_init(
776 struct media_entity_graph *graph, struct media_device *mdev); 828 struct media_entity_graph *graph, struct media_device *mdev);
777 829
@@ -789,12 +841,14 @@ void media_entity_graph_walk_cleanup(struct media_entity_graph *graph);
789 * 841 *
790 * Release the reference count acquired by media_entity_get(). 842 * Release the reference count acquired by media_entity_get().
791 * 843 *
792 * The function will return immediately if @entity is NULL. 844 * The function will return immediately if @entity is %NULL.
793 */ 845 */
794void media_entity_put(struct media_entity *entity); 846void media_entity_put(struct media_entity *entity);
795 847
796/** 848/**
797 * media_entity_graph_walk_start - Start walking the media graph at a given entity 849 * media_entity_graph_walk_start - Start walking the media graph at a
850 * given entity
851 *
798 * @graph: Media graph structure that will be used to walk the graph 852 * @graph: Media graph structure that will be used to walk the graph
799 * @entity: Starting entity 853 * @entity: Starting entity
800 * 854 *
@@ -818,8 +872,8 @@ void media_entity_graph_walk_start(struct media_entity_graph *graph,
818 * The graph structure must have been previously initialized with a call to 872 * The graph structure must have been previously initialized with a call to
819 * media_entity_graph_walk_start(). 873 * media_entity_graph_walk_start().
820 * 874 *
821 * Return the next entity in the graph or NULL if the whole graph have been 875 * Return: returns the next entity in the graph or %NULL if the whole graph
822 * traversed. 876 * have been traversed.
823 */ 877 */
824struct media_entity * 878struct media_entity *
825media_entity_graph_walk_next(struct media_entity_graph *graph); 879media_entity_graph_walk_next(struct media_entity_graph *graph);
@@ -830,8 +884,8 @@ media_entity_graph_walk_next(struct media_entity_graph *graph);
830 * @pipe: Media pipeline to be assigned to all entities in the pipeline. 884 * @pipe: Media pipeline to be assigned to all entities in the pipeline.
831 * 885 *
832 * Mark all entities connected to a given entity through enabled links, either 886 * Mark all entities connected to a given entity through enabled links, either
833 * directly or indirectly, as streaming. The given pipeline object is assigned to 887 * directly or indirectly, as streaming. The given pipeline object is assigned
834 * every entity in the pipeline and stored in the media_entity pipe field. 888 * to every entity in the pipeline and stored in the media_entity pipe field.
835 * 889 *
836 * Calls to this function can be nested, in which case the same number of 890 * Calls to this function can be nested, in which case the same number of
837 * media_entity_pipeline_stop() calls will be required to stop streaming. The 891 * media_entity_pipeline_stop() calls will be required to stop streaming. The
@@ -857,7 +911,7 @@ __must_check int __media_entity_pipeline_start(struct media_entity *entity,
857 * 911 *
858 * Mark all entities connected to a given entity through enabled links, either 912 * Mark all entities connected to a given entity through enabled links, either
859 * directly or indirectly, as not streaming. The media_entity pipe field is 913 * directly or indirectly, as not streaming. The media_entity pipe field is
860 * reset to NULL. 914 * reset to %NULL.
861 * 915 *
862 * If multiple calls to media_entity_pipeline_start() have been made, the same 916 * If multiple calls to media_entity_pipeline_start() have been made, the same
863 * number of calls to this function are required to mark the pipeline as not 917 * number of calls to this function are required to mark the pipeline as not
@@ -878,14 +932,21 @@ void __media_entity_pipeline_stop(struct media_entity *entity);
878 * media_devnode_create() - creates and initializes a device node interface 932 * media_devnode_create() - creates and initializes a device node interface
879 * 933 *
880 * @mdev: pointer to struct &media_device 934 * @mdev: pointer to struct &media_device
881 * @type: type of the interface, as given by MEDIA_INTF_T_* macros 935 * @type: type of the interface, as given by
882 * as defined in the uapi/media/media.h header. 936 * :ref:`include/uapi/linux/media.h <media_header>`
883 * @flags: Interface flags as defined in uapi/media/media.h. 937 * ( seek for ``MEDIA_INTF_T_*``) macros.
938 * @flags: Interface flags, as defined in
939 * :ref:`include/uapi/linux/media.h <media_header>`
940 * ( seek for ``MEDIA_INTF_FL_*``)
884 * @major: Device node major number. 941 * @major: Device node major number.
885 * @minor: Device node minor number. 942 * @minor: Device node minor number.
886 * 943 *
887 * Return: if succeeded, returns a pointer to the newly allocated 944 * Return: if succeeded, returns a pointer to the newly allocated
888 * &media_intf_devnode pointer. 945 * &media_intf_devnode pointer.
946 *
947 * .. note::
948 *
949 * Currently, no flags for &media_interface is defined.
889 */ 950 */
890struct media_intf_devnode * 951struct media_intf_devnode *
891__must_check media_devnode_create(struct media_device *mdev, 952__must_check media_devnode_create(struct media_device *mdev,
@@ -907,15 +968,19 @@ struct media_link *
907 * 968 *
908 * @entity: pointer to %media_entity 969 * @entity: pointer to %media_entity
909 * @intf: pointer to %media_interface 970 * @intf: pointer to %media_interface
910 * @flags: Link flags, as defined in include/uapi/linux/media.h. 971 * @flags: Link flags, as defined in
972 * :ref:`include/uapi/linux/media.h <media_header>`
973 * ( seek for ``MEDIA_LNK_FL_*``)
911 * 974 *
912 * 975 *
913 * Valid values for flags: 976 * Valid values for flags:
914 * 977 *
915 * - The %MEDIA_LNK_FL_ENABLED flag indicates that the interface is connected to 978 * %MEDIA_LNK_FL_ENABLED
916 * the entity hardware. That's the default value for interfaces. An 979 * Indicates that the interface is connected to the entity hardware.
917 * interface may be disabled if the hardware is busy due to the usage 980 * That's the default value for interfaces. An interface may be disabled if
918 * of some other interface that it is currently controlling the hardware. 981 * the hardware is busy due to the usage of some other interface that it is
982 * currently controlling the hardware.
983 *
919 * A typical example is an hybrid TV device that handle only one type of 984 * A typical example is an hybrid TV device that handle only one type of
920 * stream on a given time. So, when the digital TV is streaming, 985 * stream on a given time. So, when the digital TV is streaming,
921 * the V4L2 interfaces won't be enabled, as such device is not able to 986 * the V4L2 interfaces won't be enabled, as such device is not able to
@@ -971,6 +1036,18 @@ void __media_remove_intf_links(struct media_interface *intf);
971 */ 1036 */
972void media_remove_intf_links(struct media_interface *intf); 1037void media_remove_intf_links(struct media_interface *intf);
973 1038
1039/**
1040 * media_entity_call - Calls a struct media_entity_operations operation on
1041 * an entity
1042 *
1043 * @entity: entity where the @operation will be called
1044 * @operation: type of the operation. Should be the name of a member of
1045 * struct &media_entity_operations.
1046 *
1047 * This helper function will check if @operation is not %NULL. On such case,
1048 * it will issue a call to @operation\(@entity, @args\).
1049 */
1050
974#define media_entity_call(entity, operation, args...) \ 1051#define media_entity_call(entity, operation, args...) \
975 (((entity)->ops && (entity)->ops->operation) ? \ 1052 (((entity)->ops && (entity)->ops->operation) ? \
976 (entity)->ops->operation((entity) , ##args) : -ENOIOCTLCMD) 1053 (entity)->ops->operation((entity) , ##args) : -ENOIOCTLCMD)