€•Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ=/translations/zh_CN/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/zh_TW/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/it_IT/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/ja_JP/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/ko_KR/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ=/translations/sp_SP/userspace-api/media/mediactl/media-header”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”h]”hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒW/var/lib/git/docbuild/linux/Documentation/userspace-api/media/mediactl/media-header.rst”h KubhŒtarget”“”)”}”(hŒ.. _media_header:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ media-header”uh1h´h KhhhžhhŸh³ubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒMedia Controller Header File”h]”hŒMedia Controller Header File”…””}”(hhÉhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÇhhÄhžhhŸh³h Kubh¢)”}”(hŒ -*- coding: utf-8; mode: rst -*-”h]”hŒ -*- coding: utf-8; mode: rst -*-”…””}”hh×sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1h¡hhÄhžhhŸŒ \* Sakari Ailus \ \* \* This program is free software; you can redistribute it and\/or modify \* it under the terms of the GNU General Public License version 2 as \* published by the Free Software Foundation. \* \* This program is distributed in the hope that it will be useful, \* but WITHOUT ANY WARRANTY; without even the implied warranty of \* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \* GNU General Public License for more details. \*\/ \#ifndef \_\_LINUX\_MEDIA\_H \#define \_\_LINUX\_MEDIA\_H \#include \ \#include \ struct media_device_info \{ char driver[16]; char model[32]; char serial[40]; char bus\_info[32]; \_\_u32 media\_version; \_\_u32 hw\_revision; \_\_u32 driver\_version; \_\_u32 reserved[31]; \}; \/\* \* Base number ranges for entity functions \* \* NOTE\: Userspace should not rely on these ranges to identify a group \* of function types, as newer functions can be added with any name within \* the full u32 range. \* \* Some older functions use the MEDIA\_ENT\_F\_OLD\_\*\_BASE range. Do not \* change this, this is for backwards compatibility. When adding new \* functions always use MEDIA\_ENT\_F\_BASE. \*\/ \#define MEDIA\_ENT\_F\_BASE 0x00000000 \#define MEDIA\_ENT\_F\_OLD\_BASE 0x00010000 \#define MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE 0x00020000 \/\* \* Initial value to be used when a new entity is created \* Drivers should change it to something useful. \*\/ \#define \ :ref:`MEDIA_ENT_F_UNKNOWN ` MEDIA\_ENT\_F\_BASE \/\* \* Subdevs are initialized with \ :ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN ` in order \* to preserve backward compatibility. Drivers must change to the proper \* subdev type before registering the entity. \*\/ \#define \ :ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN ` MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE \/\* \* DVB entity functions \*\/ \#define \ :ref:`MEDIA_ENT_F_DTV_DEMOD ` (MEDIA\_ENT\_F\_BASE + 0x00001) \#define \ :ref:`MEDIA_ENT_F_TS_DEMUX ` (MEDIA\_ENT\_F\_BASE + 0x00002) \#define \ :ref:`MEDIA_ENT_F_DTV_CA ` (MEDIA\_ENT\_F\_BASE + 0x00003) \#define \ :ref:`MEDIA_ENT_F_DTV_NET_DECAP ` (MEDIA\_ENT\_F\_BASE + 0x00004) \/\* \* I\/O entity functions \*\/ \#define \ :ref:`MEDIA_ENT_F_IO_V4L ` (MEDIA\_ENT\_F\_OLD\_BASE + 1) \#define \ :ref:`MEDIA_ENT_F_IO_DTV ` (MEDIA\_ENT\_F\_BASE + 0x01001) \#define \ :ref:`MEDIA_ENT_F_IO_VBI ` (MEDIA\_ENT\_F\_BASE + 0x01002) \#define \ :ref:`MEDIA_ENT_F_IO_SWRADIO ` (MEDIA\_ENT\_F\_BASE + 0x01003) \/\* \* Sensor functions \*\/ \#define \ :ref:`MEDIA_ENT_F_CAM_SENSOR ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 1) \#define \ :ref:`MEDIA_ENT_F_FLASH ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 2) \#define \ :ref:`MEDIA_ENT_F_LENS ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 3) \/\* \* Digital TV, analog TV, radio and\/or software defined radio tuner functions. \* \* It is a responsibility of the master\/bridge drivers to add connectors \* and links for MEDIA\_ENT\_F\_TUNER. Please notice that some old tuners \* may require the usage of separate I2C chips to decode analog TV signals, \* when the master\/bridge chipset doesn't have its own TV standard decoder. \* On such cases, the IF-PLL staging is mapped via one or two entities\: \* \ :ref:`MEDIA_ENT_F_IF_VID_DECODER ` and\/or MEDIA\_ENT\_F\_IF\_AUD\_DECODER. \*\/ \#define \ :ref:`MEDIA_ENT_F_TUNER ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 5) \/\* \* Analog TV IF-PLL decoder functions \* \* It is a responsibility of the master\/bridge drivers to create links \* for \ :ref:`MEDIA_ENT_F_IF_VID_DECODER ` and MEDIA\_ENT\_F\_IF\_AUD\_DECODER. \*\/ \#define \ :ref:`MEDIA_ENT_F_IF_VID_DECODER ` (MEDIA\_ENT\_F\_BASE + 0x02001) \#define \ :ref:`MEDIA_ENT_F_IF_AUD_DECODER ` (MEDIA\_ENT\_F\_BASE + 0x02002) \/\* \* Audio entity functions \*\/ \#define \ :ref:`MEDIA_ENT_F_AUDIO_CAPTURE ` (MEDIA\_ENT\_F\_BASE + 0x03001) \#define \ :ref:`MEDIA_ENT_F_AUDIO_PLAYBACK ` (MEDIA\_ENT\_F\_BASE + 0x03002) \#define \ :ref:`MEDIA_ENT_F_AUDIO_MIXER ` (MEDIA\_ENT\_F\_BASE + 0x03003) \/\* \* Processing entity functions \*\/ \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_COMPOSER ` (MEDIA\_ENT\_F\_BASE + 0x4001) \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER ` (MEDIA\_ENT\_F\_BASE + 0x4002) \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV ` (MEDIA\_ENT\_F\_BASE + 0x4003) \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_LUT ` (MEDIA\_ENT\_F\_BASE + 0x4004) \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_SCALER ` (MEDIA\_ENT\_F\_BASE + 0x4005) \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_STATISTICS ` (MEDIA\_ENT\_F\_BASE + 0x4006) \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_ENCODER ` (MEDIA\_ENT\_F\_BASE + 0x4007) \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_DECODER ` (MEDIA\_ENT\_F\_BASE + 0x4008) \#define \ :ref:`MEDIA_ENT_F_PROC_VIDEO_ISP ` (MEDIA\_ENT\_F\_BASE + 0x4009) \/\* \* Switch and bridge entity functions \*\/ \#define \ :ref:`MEDIA_ENT_F_VID_MUX ` (MEDIA\_ENT\_F\_BASE + 0x5001) \#define \ :ref:`MEDIA_ENT_F_VID_IF_BRIDGE ` (MEDIA\_ENT\_F\_BASE + 0x5002) \/\* \* Video decoder\/encoder functions \*\/ \#define \ :ref:`MEDIA_ENT_F_ATV_DECODER ` (MEDIA\_ENT\_F\_OLD\_SUBDEV\_BASE + 4) \#define \ :ref:`MEDIA_ENT_F_DV_DECODER ` (MEDIA\_ENT\_F\_BASE + 0x6001) \#define \ :ref:`MEDIA_ENT_F_DV_ENCODER ` (MEDIA\_ENT\_F\_BASE + 0x6002) \/\* Entity flags \*\/ \#define \ :ref:`MEDIA_ENT_FL_DEFAULT ` (1U \<\< 0) \#define \ :ref:`MEDIA_ENT_FL_CONNECTOR ` (1U \<\< 1) \/\* OR with the entity id value to find the next entity \*\/ \#define \ :ref:`MEDIA_ENT_ID_FLAG_NEXT ` (1U \<\< 31) struct media_entity_desc \{ \_\_u32 id; char name[32]; \_\_u32 type; \_\_u32 revision; \_\_u32 flags; \_\_u32 group\_id; \_\_u16 pads; \_\_u16 links; \_\_u32 reserved[4]; union \{ \/\* Node specifications \*\/ struct \{ \_\_u32 major; \_\_u32 minor; \} dev; \#if !defined(\_\_KERNEL\_\_) \/\* \* TODO\: this shouldn't have been added without \* actual drivers that use this. When the first real driver \* appears that sets this information, special attention \* should be given whether this information is 1) enough, and \* 2) can deal with udev rules that rename devices. The struct \* dev would not be sufficient for this since that does not \* contain the subdevice information. In addition, struct dev \* can only refer to a single device, and not to multiple (e.g. \* pcm and mixer devices). \*\/ struct \{ \_\_u32 card; \_\_u32 device; \_\_u32 subdevice; \} alsa; \/\* \* **DEPRECATED**\: previous node specifications. Kept just to \* avoid breaking compilation. Use media\_entity\_desc.dev \* instead. \*\/ struct \{ \_\_u32 major; \_\_u32 minor; \} v4l; struct \{ \_\_u32 major; \_\_u32 minor; \} fb; int dvb; \#endif \/\* Sub-device specifications \*\/ \/\* Nothing needed yet \*\/ \_\_u8 raw[184]; \}; \}; \#define \ :ref:`MEDIA_PAD_FL_SINK ` (1U \<\< 0) \#define \ :ref:`MEDIA_PAD_FL_SOURCE ` (1U \<\< 1) \#define \ :ref:`MEDIA_PAD_FL_MUST_CONNECT ` (1U \<\< 2) struct media_pad_desc \{ \_\_u32 entity; \/\* entity ID \*\/ \_\_u16 index; \/\* pad index \*\/ \_\_u32 flags; \/\* pad flags \*\/ \_\_u32 reserved[2]; \}; \#define \ :ref:`MEDIA_LNK_FL_ENABLED ` (1U \<\< 0) \#define \ :ref:`MEDIA_LNK_FL_IMMUTABLE ` (1U \<\< 1) \#define \ :ref:`MEDIA_LNK_FL_DYNAMIC ` (1U \<\< 2) \#define \ :ref:`MEDIA_LNK_FL_LINK_TYPE ` (0xf \<\< 28) \# define \ :ref:`MEDIA_LNK_FL_DATA_LINK ` (0U \<\< 28) \# define \ :ref:`MEDIA_LNK_FL_INTERFACE_LINK ` (1U \<\< 28) \# define \ :ref:`MEDIA_LNK_FL_ANCILLARY_LINK ` (2U \<\< 28) struct media_link_desc \{ struct media_pad_desc source; struct media_pad_desc sink; \_\_u32 flags; \_\_u32 reserved[2]; \}; struct media_links_enum \{ \_\_u32 entity; \/\* Should have enough room for pads elements \*\/ struct media_pad_desc \_\_user \*pads; \/\* Should have enough room for links elements \*\/ struct media_link_desc \_\_user \*links; \_\_u32 reserved[4]; \}; \/\* Interface type ranges \*\/ \#define MEDIA\_INTF\_T\_DVB\_BASE 0x00000100 \#define MEDIA\_INTF\_T\_V4L\_BASE 0x00000200 \/\* Interface types \*\/ \#define \ :ref:`MEDIA_INTF_T_DVB_FE ` (MEDIA\_INTF\_T\_DVB\_BASE) \#define \ :ref:`MEDIA_INTF_T_DVB_DEMUX ` (MEDIA\_INTF\_T\_DVB\_BASE + 1) \#define \ :ref:`MEDIA_INTF_T_DVB_DVR ` (MEDIA\_INTF\_T\_DVB\_BASE + 2) \#define \ :ref:`MEDIA_INTF_T_DVB_CA ` (MEDIA\_INTF\_T\_DVB\_BASE + 3) \#define \ :ref:`MEDIA_INTF_T_DVB_NET ` (MEDIA\_INTF\_T\_DVB\_BASE + 4) \#define \ :ref:`MEDIA_INTF_T_V4L_VIDEO ` (MEDIA\_INTF\_T\_V4L\_BASE) \#define \ :ref:`MEDIA_INTF_T_V4L_VBI ` (MEDIA\_INTF\_T\_V4L\_BASE + 1) \#define \ :ref:`MEDIA_INTF_T_V4L_RADIO ` (MEDIA\_INTF\_T\_V4L\_BASE + 2) \#define \ :ref:`MEDIA_INTF_T_V4L_SUBDEV ` (MEDIA\_INTF\_T\_V4L\_BASE + 3) \#define \ :ref:`MEDIA_INTF_T_V4L_SWRADIO ` (MEDIA\_INTF\_T\_V4L\_BASE + 4) \#define \ :ref:`MEDIA_INTF_T_V4L_TOUCH ` (MEDIA\_INTF\_T\_V4L\_BASE + 5) \#define MEDIA\_INTF\_T\_ALSA\_BASE 0x00000300 \#define \ :ref:`MEDIA_INTF_T_ALSA_PCM_CAPTURE ` (MEDIA\_INTF\_T\_ALSA\_BASE) \#define \ :ref:`MEDIA_INTF_T_ALSA_PCM_PLAYBACK ` (MEDIA\_INTF\_T\_ALSA\_BASE + 1) \#define \ :ref:`MEDIA_INTF_T_ALSA_CONTROL ` (MEDIA\_INTF\_T\_ALSA\_BASE + 2) \#if defined(\_\_KERNEL\_\_) \/\* \* Connector functions \* \* For now these should not be used in userspace, as some definitions may \* change. \* \* It is the responsibility of the entity drivers to add connectors and links. \*\/ \#define \ :ref:`MEDIA_ENT_F_CONN_RF ` (MEDIA\_ENT\_F\_BASE + 0x30001) \#define \ :ref:`MEDIA_ENT_F_CONN_SVIDEO ` (MEDIA\_ENT\_F\_BASE + 0x30002) \#define \ :ref:`MEDIA_ENT_F_CONN_COMPOSITE ` (MEDIA\_ENT\_F\_BASE + 0x30003) \#endif \/\* \* MC next gen API definitions \*\/ \/\* \* Appeared in 4.19.0. \* \* The media\_version argument comes from the media\_version field in \* struct media\_device\_info. \*\/ \#define MEDIA\_V2\_ENTITY\_HAS\_FLAGS(media\_version) \\ ((media\_version) \>= ((4U \<\< 16) \| (19U \<\< 8) \| 0U)) struct media_v2_entity \{ \_\_u32 id; char name[64]; \_\_u32 function; \/\* Main function of the entity \*\/ \_\_u32 flags; \_\_u32 reserved[5]; \} \_\_attribute\_\_ ((packed)); \/\* Should match the specific fields at media\_intf\_devnode \*\/ struct media_v2_intf_devnode \{ \_\_u32 major; \_\_u32 minor; \} \_\_attribute\_\_ ((packed)); struct media_v2_interface \{ \_\_u32 id; \_\_u32 intf\_type; \_\_u32 flags; \_\_u32 reserved[9]; union \{ struct media_v2_intf_devnode devnode; \_\_u32 raw[16]; \}; \} \_\_attribute\_\_ ((packed)); \/\* \* Appeared in 4.19.0. \* \* The media\_version argument comes from the media\_version field in \* struct media\_device\_info. \*\/ \#define MEDIA\_V2\_PAD\_HAS\_INDEX(media\_version) \\ ((media\_version) \>= ((4U \<\< 16) \| (19U \<\< 8) \| 0U)) struct media_v2_pad \{ \_\_u32 id; \_\_u32 entity\_id; \_\_u32 flags; \_\_u32 index; \_\_u32 reserved[4]; \} \_\_attribute\_\_ ((packed)); struct media_v2_link \{ \_\_u32 id; \_\_u32 source\_id; \_\_u32 sink\_id; \_\_u32 flags; \_\_u32 reserved[6]; \} \_\_attribute\_\_ ((packed)); struct media_v2_topology \{ \_\_u64 topology\_version; \_\_u32 num\_entities; \_\_u32 reserved1; \_\_u64 ptr\_entities; \_\_u32 num\_interfaces; \_\_u32 reserved2; \_\_u64 ptr\_interfaces; \_\_u32 num\_pads; \_\_u32 reserved3; \_\_u64 ptr\_pads; \_\_u32 num\_links; \_\_u32 reserved4; \_\_u64 ptr\_links; \} \_\_attribute\_\_ ((packed)); \/\* ioctls \*\/ \#define \ :ref:`MEDIA_IOC_DEVICE_INFO ` \_IOWR('\|', 0x00, struct media_device_info\ ) \#define \ :ref:`MEDIA_IOC_ENUM_ENTITIES ` \_IOWR('\|', 0x01, struct media_entity_desc\ ) \#define \ :ref:`MEDIA_IOC_ENUM_LINKS ` \_IOWR('\|', 0x02, struct media_links_enum\ ) \#define \ :ref:`MEDIA_IOC_SETUP_LINK ` \_IOWR('\|', 0x03, struct media_link_desc\ ) \#define \ :ref:`MEDIA_IOC_G_TOPOLOGY ` \_IOWR('\|', 0x04, struct media_v2_topology\ ) \#define \ :ref:`MEDIA_IOC_REQUEST_ALLOC ` \_IOR ('\|', 0x05, int) \/\* \* These ioctls are called on the request file descriptor as returned \* by MEDIA\_IOC\_REQUEST\_ALLOC. \*\/ \#define \ :ref:`MEDIA_REQUEST_IOC_QUEUE ` \_IO('\|', 0x80) \#define \ :ref:`MEDIA_REQUEST_IOC_REINIT ` \_IO('\|', 0x81) \#ifndef \_\_KERNEL\_\_ \/\* \* Legacy symbols used to avoid userspace compilation breakages. \* Do not use any of this in new applications! \* \* Those symbols map the entity function into types and should be \* used only on legacy programs for legacy hardware. Don't rely \* on those for MEDIA\_IOC\_G\_TOPOLOGY. \*\/ \#define MEDIA\_ENT\_TYPE\_SHIFT 16 \#define MEDIA\_ENT\_TYPE\_MASK 0x00ff0000 \#define MEDIA\_ENT\_SUBTYPE\_MASK 0x0000ffff \#define MEDIA\_ENT\_T\_DEVNODE\_UNKNOWN (MEDIA\_ENT\_F\_OLD\_BASE \| \\ MEDIA\_ENT\_SUBTYPE\_MASK) \#define MEDIA\_ENT\_T\_DEVNODE MEDIA\_ENT\_F\_OLD\_BASE \#define MEDIA\_ENT\_T\_DEVNODE\_V4L \ :ref:`MEDIA_ENT_F_IO_V4L ` \#define MEDIA\_ENT\_T\_DEVNODE\_FB (MEDIA\_ENT\_F\_OLD\_BASE + 2) \#define MEDIA\_ENT\_T\_DEVNODE\_ALSA (MEDIA\_ENT\_F\_OLD\_BASE + 3) \#define MEDIA\_ENT\_T\_DEVNODE\_DVB (MEDIA\_ENT\_F\_OLD\_BASE + 4) \#define MEDIA\_ENT\_T\_UNKNOWN \ :ref:`MEDIA_ENT_F_UNKNOWN ` \#define MEDIA\_ENT\_T\_V4L2\_VIDEO \ :ref:`MEDIA_ENT_F_IO_V4L ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV \ :ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_SENSOR \ :ref:`MEDIA_ENT_F_CAM_SENSOR ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_FLASH \ :ref:`MEDIA_ENT_F_FLASH ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_LENS \ :ref:`MEDIA_ENT_F_LENS ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_DECODER \ :ref:`MEDIA_ENT_F_ATV_DECODER ` \#define MEDIA\_ENT\_T\_V4L2\_SUBDEV\_TUNER \ :ref:`MEDIA_ENT_F_TUNER ` \#define MEDIA\_ENT\_F\_DTV\_DECODER \ :ref:`MEDIA_ENT_F_DV_DECODER ` \/\* \* There is still no full ALSA support in the media controller. These \* defines should not have been added and we leave them here only \* in case some application tries to use these defines. \* \* The ALSA defines that are in use have been moved into \_\_KERNEL\_\_ \* scope. As support gets added to these interface types, they should \* be moved into \_\_KERNEL\_\_ scope with the code that uses them. \*\/ \#define \ :ref:`MEDIA_INTF_T_ALSA_COMPRESS ` (MEDIA\_INTF\_T\_ALSA\_BASE + 3) \#define \ :ref:`MEDIA_INTF_T_ALSA_RAWMIDI ` (MEDIA\_INTF\_T\_ALSA\_BASE + 4) \#define \ :ref:`MEDIA_INTF_T_ALSA_HWDEP ` (MEDIA\_INTF\_T\_ALSA\_BASE + 5) \#define \ :ref:`MEDIA_INTF_T_ALSA_SEQUENCER ` (MEDIA\_INTF\_T\_ALSA\_BASE + 6) \#define \ :ref:`MEDIA_INTF_T_ALSA_TIMER ` (MEDIA\_INTF\_T\_ALSA\_BASE + 7) \/\* Obsolete symbol for media\_version, no longer used in the kernel \*\/ \#define MEDIA\_API\_VERSION ((0U \<\< 16) \| (1U \<\< 8) \| 0U) \#endif \#endif \/\* \_\_LINUX\_MEDIA\_H \*\/”h]”(hŒ¶/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Multimedia device API * * Copyright (C) 2010 Nokia Corporation * * Contacts: Laurent Pinchart <”…””}”hhùsbhŒ reference”“”)”}”(hŒ"laurent.pinchart@ideasonboard.com\”h]”hŒ"laurent.pinchart@ideasonboard.com”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ(mailto:laurent.pinchart@ideasonboard.com”uh1jhhùubhŒ> * Sakari Ailus <”…””}”hhùsbj)”}”(hŒsakari.ailus@iki.fi\”h]”hŒsakari.ailus@iki.fi”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:sakari.ailus@iki.fi”uh1jhhùubhX3> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef __LINUX_MEDIA_H #define __LINUX_MEDIA_H #include #include struct media_device_info { char driver[16]; char model[32]; char serial[40]; char bus_info[32]; __u32 media_version; __u32 hw_revision; __u32 driver_version; __u32 reserved[31]; }; /* * Base number ranges for entity functions * * NOTE: Userspace should not rely on these ranges to identify a group * of function types, as newer functions can be added with any name within * the full u32 range. * * Some older functions use the MEDIA_ENT_F_OLD_*_BASE range. Do not * change this, this is for backwards compatibility. When adding new * functions always use MEDIA_ENT_F_BASE. */ #define MEDIA_ENT_F_BASE 0x00000000 #define MEDIA_ENT_F_OLD_BASE 0x00010000 #define MEDIA_ENT_F_OLD_SUBDEV_BASE 0x00020000 /* * Initial value to be used when a new entity is created * Drivers should change it to something useful. */ #define ”…””}”hhùsbh)”}”(hŒ0:ref:`MEDIA_ENT_F_UNKNOWN `”h]”hŒinline”“”)”}”(hj-h]”hŒMEDIA_ENT_F_UNKNOWN”…””}”(hj1hžhhŸNh Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ)userspace-api/media/mediactl/media-header”Œ refdomain”j<Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œmedia-ent-f-unknown”uh1hhŸhåh KhhùubhŒR MEDIA_ENT_F_BASE /* * Subdevs are initialized with ”…””}”hhùsbh)”}”(hŒH:ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN `”h]”j0)”}”(hjVh]”hŒMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN”…””}”(hjXhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jbŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-v4l2-subdev-unknown”uh1hhŸhåh KhhùubhŒ” in order * to preserve backward compatibility. Drivers must change to the proper * subdev type before registering the entity. */ #define ”…””}”hhùsbh)”}”(hŒH:ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN `”h]”j0)”}”(hjzh]”hŒMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN”…””}”(hj|hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjxubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j†Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-v4l2-subdev-unknown”uh1hhŸhåh KhhùubhŒZ MEDIA_ENT_F_OLD_SUBDEV_BASE /* * DVB entity functions */ #define ”…””}”hhùsbh)”}”(hŒ4:ref:`MEDIA_ENT_F_DTV_DEMOD `”h]”j0)”}”(hjžh]”hŒMEDIA_ENT_F_DTV_DEMOD”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjœubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jªŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-dtv-demod”uh1hhŸhåh KhhùubhŒ> (MEDIA_ENT_F_BASE + 0x00001) #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_ENT_F_TS_DEMUX `”h]”j0)”}”(hjÂh]”hŒMEDIA_ENT_F_TS_DEMUX”…””}”(hjÄhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjÀubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÎŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-ts-demux”uh1hhŸhåh KhhùubhŒ? (MEDIA_ENT_F_BASE + 0x00002) #define ”…””}”hhùsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_DTV_CA `”h]”j0)”}”(hjæh]”hŒMEDIA_ENT_F_DTV_CA”…””}”(hjèhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjäubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jòŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-dtv-ca”uh1hhŸhåh KhhùubhŒA (MEDIA_ENT_F_BASE + 0x00003) #define ”…””}”hhùsbh)”}”(hŒ<:ref:`MEDIA_ENT_F_DTV_NET_DECAP `”h]”j0)”}”(hj h]”hŒMEDIA_ENT_F_DTV_NET_DECAP”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-dtv-net-decap”uh1hhŸhåh KhhùubhŒ` (MEDIA_ENT_F_BASE + 0x00004) /* * I/O entity functions */ #define ”…””}”hhùsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_V4L `”h]”j0)”}”(hj.h]”hŒMEDIA_ENT_F_IO_V4L”…””}”(hj0hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j:Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-io-v4l”uh1hhŸhåh KhhùubhŒ@ (MEDIA_ENT_F_OLD_BASE + 1) #define ”…””}”hhùsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_DTV `”h]”j0)”}”(hjRh]”hŒMEDIA_ENT_F_IO_DTV”…””}”(hjThžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j^Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-io-dtv”uh1hhŸhåh KhhùubhŒA (MEDIA_ENT_F_BASE + 0x01001) #define ”…””}”hhùsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_VBI `”h]”j0)”}”(hjvh]”hŒMEDIA_ENT_F_IO_VBI”…””}”(hjxhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j‚Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-io-vbi”uh1hhŸhåh KhhùubhŒA (MEDIA_ENT_F_BASE + 0x01002) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_IO_SWRADIO `”h]”j0)”}”(hjšh]”hŒMEDIA_ENT_F_IO_SWRADIO”…””}”(hjœhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j¦Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-io-swradio”uh1hhŸhåh KhhùubhŒ^ (MEDIA_ENT_F_BASE + 0x01003) /* * Sensor functions */ #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_CAM_SENSOR `”h]”j0)”}”(hj¾h]”hŒMEDIA_ENT_F_CAM_SENSOR”…””}”(hjÀhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÊŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-cam-sensor”uh1hhŸhåh KhhùubhŒD (MEDIA_ENT_F_OLD_SUBDEV_BASE + 1) #define ”…””}”hhùsbh)”}”(hŒ,:ref:`MEDIA_ENT_F_FLASH `”h]”j0)”}”(hjâh]”hŒMEDIA_ENT_F_FLASH”…””}”(hjähžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjàubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jîŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-flash”uh1hhŸhåh KhhùubhŒI (MEDIA_ENT_F_OLD_SUBDEV_BASE + 2) #define ”…””}”hhùsbh)”}”(hŒ*:ref:`MEDIA_ENT_F_LENS `”h]”j0)”}”(hjh]”hŒMEDIA_ENT_F_LENS”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-lens”uh1hhŸhåh KhhùubhX (MEDIA_ENT_F_OLD_SUBDEV_BASE + 3) /* * Digital TV, analog TV, radio and/or software defined radio tuner functions. * * It is a responsibility of the master/bridge drivers to add connectors * and links for MEDIA_ENT_F_TUNER. Please notice that some old tuners * may require the usage of separate I2C chips to decode analog TV signals, * when the master/bridge chipset doesn't have its own TV standard decoder. * On such cases, the IF-PLL staging is mapped via one or two entities: * ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_IF_VID_DECODER `”h]”j0)”}”(hj*h]”hŒMEDIA_ENT_F_IF_VID_DECODER”…””}”(hj,hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j6Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-if-vid-decoder”uh1hhŸhåh KhhùubhŒ; and/or MEDIA_ENT_F_IF_AUD_DECODER. */ #define ”…””}”hhùsbh)”}”(hŒ,:ref:`MEDIA_ENT_F_TUNER `”h]”j0)”}”(hjNh]”hŒMEDIA_ENT_F_TUNER”…””}”(hjPhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjLubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jZŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-tuner”uh1hhŸhåh KhhùubhŒÂ (MEDIA_ENT_F_OLD_SUBDEV_BASE + 5) /* * Analog TV IF-PLL decoder functions * * It is a responsibility of the master/bridge drivers to create links * for ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_IF_VID_DECODER `”h]”j0)”}”(hjrh]”hŒMEDIA_ENT_F_IF_VID_DECODER”…””}”(hjthžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjpubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j~Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-if-vid-decoder”uh1hhŸhåh KhhùubhŒ7 and MEDIA_ENT_F_IF_AUD_DECODER. */ #define ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_IF_VID_DECODER `”h]”j0)”}”(hj–h]”hŒMEDIA_ENT_F_IF_VID_DECODER”…””}”(hj˜hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j¢Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-if-vid-decoder”uh1hhŸhåh KhhùubhŒ9 (MEDIA_ENT_F_BASE + 0x02001) #define ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_IF_AUD_DECODER `”h]”j0)”}”(hjºh]”hŒMEDIA_ENT_F_IF_AUD_DECODER”…””}”(hj¼hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÆŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-if-aud-decoder”uh1hhŸhåh KhhùubhŒ` (MEDIA_ENT_F_BASE + 0x02002) /* * Audio entity functions */ #define ”…””}”hhùsbh)”}”(hŒ<:ref:`MEDIA_ENT_F_AUDIO_CAPTURE `”h]”j0)”}”(hjÞh]”hŒMEDIA_ENT_F_AUDIO_CAPTURE”…””}”(hjàhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjÜubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jêŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-audio-capture”uh1hhŸhåh KhhùubhŒ: (MEDIA_ENT_F_BASE + 0x03001) #define ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_AUDIO_PLAYBACK `”h]”j0)”}”(hjh]”hŒMEDIA_ENT_F_AUDIO_PLAYBACK”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-audio-playback”uh1hhŸhåh KhhùubhŒ9 (MEDIA_ENT_F_BASE + 0x03002) #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_ENT_F_AUDIO_MIXER `”h]”j0)”}”(hj&h]”hŒMEDIA_ENT_F_AUDIO_MIXER”…””}”(hj(hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j2Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-audio-mixer”uh1hhŸhåh KhhùubhŒh (MEDIA_ENT_F_BASE + 0x03003) /* * Processing entity functions */ #define ”…””}”hhùsbh)”}”(hŒH:ref:`MEDIA_ENT_F_PROC_VIDEO_COMPOSER `”h]”j0)”}”(hjJh]”hŒMEDIA_ENT_F_PROC_VIDEO_COMPOSER”…””}”(hjLhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjHubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jVŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-proc-video-composer”uh1hhŸhåh KhhùubhŒ3 (MEDIA_ENT_F_BASE + 0x4001) #define ”…””}”hhùsbh)”}”(hŒV:ref:`MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER `”h]”j0)”}”(hjnh]”hŒ&MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER”…””}”(hjphžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjlubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jzŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒ&media-ent-f-proc-video-pixel-formatter”uh1hhŸhåh KhhùubhŒ, (MEDIA_ENT_F_BASE + 0x4002) #define ”…””}”hhùsbh)”}”(hŒT:ref:`MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV `”h]”j0)”}”(hj’h]”hŒ%MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV”…””}”(hj”hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jžŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒ%media-ent-f-proc-video-pixel-enc-conv”uh1hhŸhåh KhhùubhŒ- (MEDIA_ENT_F_BASE + 0x4003) #define ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_PROC_VIDEO_LUT `”h]”j0)”}”(hj¶h]”hŒMEDIA_ENT_F_PROC_VIDEO_LUT”…””}”(hj¸hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj´ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÂŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-proc-video-lut”uh1hhŸhåh KhhùubhŒ8 (MEDIA_ENT_F_BASE + 0x4004) #define ”…””}”hhùsbh)”}”(hŒD:ref:`MEDIA_ENT_F_PROC_VIDEO_SCALER `”h]”j0)”}”(hjÚh]”hŒMEDIA_ENT_F_PROC_VIDEO_SCALER”…””}”(hjÜhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjØubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jæŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-proc-video-scaler”uh1hhŸhåh KhhùubhŒ5 (MEDIA_ENT_F_BASE + 0x4005) #define ”…””}”hhùsbh)”}”(hŒL:ref:`MEDIA_ENT_F_PROC_VIDEO_STATISTICS `”h]”j0)”}”(hjþh]”hŒ!MEDIA_ENT_F_PROC_VIDEO_STATISTICS”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjüubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒ!media-ent-f-proc-video-statistics”uh1hhŸhåh KhhùubhŒ1 (MEDIA_ENT_F_BASE + 0x4006) #define ”…””}”hhùsbh)”}”(hŒF:ref:`MEDIA_ENT_F_PROC_VIDEO_ENCODER `”h]”j0)”}”(hj"h]”hŒMEDIA_ENT_F_PROC_VIDEO_ENCODER”…””}”(hj$hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j.Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-proc-video-encoder”uh1hhŸhåh KhhùubhŒ4 (MEDIA_ENT_F_BASE + 0x4007) #define ”…””}”hhùsbh)”}”(hŒF:ref:`MEDIA_ENT_F_PROC_VIDEO_DECODER `”h]”j0)”}”(hjFh]”hŒMEDIA_ENT_F_PROC_VIDEO_DECODER”…””}”(hjHhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jRŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-proc-video-decoder”uh1hhŸhåh KhhùubhŒ4 (MEDIA_ENT_F_BASE + 0x4008) #define ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_PROC_VIDEO_ISP `”h]”j0)”}”(hjjh]”hŒMEDIA_ENT_F_PROC_VIDEO_ISP”…””}”(hjlhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjhubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jvŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-proc-video-isp”uh1hhŸhåh KhhùubhŒk (MEDIA_ENT_F_BASE + 0x4009) /* * Switch and bridge entity functions */ #define ”…””}”hhùsbh)”}”(hŒ0:ref:`MEDIA_ENT_F_VID_MUX `”h]”j0)”}”(hjŽh]”hŒMEDIA_ENT_F_VID_MUX”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjŒubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jšŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-vid-mux”uh1hhŸhåh KhhùubhŒ? (MEDIA_ENT_F_BASE + 0x5001) #define ”…””}”hhùsbh)”}”(hŒ<:ref:`MEDIA_ENT_F_VID_IF_BRIDGE `”h]”j0)”}”(hj²h]”hŒMEDIA_ENT_F_VID_IF_BRIDGE”…””}”(hj´hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj°ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j¾Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-vid-if-bridge”uh1hhŸhåh KhhùubhŒj (MEDIA_ENT_F_BASE + 0x5002) /* * Video decoder/encoder functions */ #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_ENT_F_ATV_DECODER `”h]”j0)”}”(hjÖh]”hŒMEDIA_ENT_F_ATV_DECODER”…””}”(hjØhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjÔubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jâŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-atv-decoder”uh1hhŸhåh KhhùubhŒC (MEDIA_ENT_F_OLD_SUBDEV_BASE + 4) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_DV_DECODER `”h]”j0)”}”(hjúh]”hŒMEDIA_ENT_F_DV_DECODER”…””}”(hjühžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjøubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-dv-decoder”uh1hhŸhåh KhhùubhŒ< (MEDIA_ENT_F_BASE + 0x6001) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_DV_ENCODER `”h]”j0)”}”(hjh]”hŒMEDIA_ENT_F_DV_ENCODER”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j*Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-dv-encoder”uh1hhŸhåh KhhùubhŒT (MEDIA_ENT_F_BASE + 0x6002) /* Entity flags */ #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_ENT_FL_DEFAULT `”h]”j0)”}”(hjBh]”hŒMEDIA_ENT_FL_DEFAULT”…””}”(hjDhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jNŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-fl-default”uh1hhŸhåh KhhùubhŒ+ (1U << 0) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_ENT_FL_CONNECTOR `”h]”j0)”}”(hjfh]”hŒMEDIA_ENT_FL_CONNECTOR”…””}”(hjhhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjdubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jrŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-fl-connector”uh1hhŸhåh KhhùubhŒh (1U << 1) /* OR with the entity id value to find the next entity */ #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_ENT_ID_FLAG_NEXT `”h]”j0)”}”(hjŠh]”hŒMEDIA_ENT_ID_FLAG_NEXT”…””}”(hjŒhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjˆubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j–Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-id-flag-next”uh1hhŸhåh KhhùubhX… (1U << 31) struct media_entity_desc { __u32 id; char name[32]; __u32 type; __u32 revision; __u32 flags; __u32 group_id; __u16 pads; __u16 links; __u32 reserved[4]; union { /* Node specifications */ struct { __u32 major; __u32 minor; } dev; #if !defined(__KERNEL__) /* * TODO: this shouldn't have been added without * actual drivers that use this. When the first real driver * appears that sets this information, special attention * should be given whether this information is 1) enough, and * 2) can deal with udev rules that rename devices. The struct * dev would not be sufficient for this since that does not * contain the subdevice information. In addition, struct dev * can only refer to a single device, and not to multiple (e.g. * pcm and mixer devices). */ struct { __u32 card; __u32 device; __u32 subdevice; } alsa; /* * ”…””}”hhùsbhŒstrong”“”)”}”(hŒ**DEPRECATED**”h]”hŒ DEPRECATED”…””}”hj®sbah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hhùubhXl: previous node specifications. Kept just to * avoid breaking compilation. Use media_entity_desc.dev * instead. */ struct { __u32 major; __u32 minor; } v4l; struct { __u32 major; __u32 minor; } fb; int dvb; #endif /* Sub-device specifications */ /* Nothing needed yet */ __u8 raw[184]; }; }; #define ”…””}”hhùsbh)”}”(hŒ,:ref:`MEDIA_PAD_FL_SINK `”h]”j0)”}”(hjÂh]”hŒMEDIA_PAD_FL_SINK”…””}”(hjÄhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjÀubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÎŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-pad-fl-sink”uh1hhŸhåh KhhùubhŒ. (1U << 0) #define ”…””}”hhùsbh)”}”(hŒ0:ref:`MEDIA_PAD_FL_SOURCE `”h]”j0)”}”(hjæh]”hŒMEDIA_PAD_FL_SOURCE”…””}”(hjèhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjäubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jòŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-pad-fl-source”uh1hhŸhåh KhhùubhŒ, (1U << 1) #define ”…””}”hhùsbh)”}”(hŒ<:ref:`MEDIA_PAD_FL_MUST_CONNECT `”h]”j0)”}”(hj h]”hŒMEDIA_PAD_FL_MUST_CONNECT”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-pad-fl-must-connect”uh1hhŸhåh KhhùubhX (1U << 2) struct media_pad_desc { __u32 entity; /* entity ID */ __u16 index; /* pad index */ __u32 flags; /* pad flags */ __u32 reserved[2]; }; #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_LNK_FL_ENABLED `”h]”j0)”}”(hj.h]”hŒMEDIA_LNK_FL_ENABLED”…””}”(hj0hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j:Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-lnk-fl-enabled”uh1hhŸhåh KhhùubhŒ+ (1U << 0) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_LNK_FL_IMMUTABLE `”h]”j0)”}”(hjRh]”hŒMEDIA_LNK_FL_IMMUTABLE”…””}”(hjThžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j^Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-lnk-fl-immutable”uh1hhŸhåh KhhùubhŒ) (1U << 1) #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_LNK_FL_DYNAMIC `”h]”j0)”}”(hjvh]”hŒMEDIA_LNK_FL_DYNAMIC”…””}”(hjxhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j‚Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-lnk-fl-dynamic”uh1hhŸhåh KhhùubhŒ, (1U << 2) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_LNK_FL_LINK_TYPE `”h]”j0)”}”(hjšh]”hŒMEDIA_LNK_FL_LINK_TYPE”…””}”(hjœhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j¦Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-lnk-fl-link-type”uh1hhŸhåh KhhùubhŒ- (0xf << 28) # define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_LNK_FL_DATA_LINK `”h]”j0)”}”(hj¾h]”hŒMEDIA_LNK_FL_DATA_LINK”…””}”(hjÀhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÊŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-lnk-fl-data-link”uh1hhŸhåh KhhùubhŒ* (0U << 28) # define ”…””}”hhùsbh)”}”(hŒ@:ref:`MEDIA_LNK_FL_INTERFACE_LINK `”h]”j0)”}”(hjâh]”hŒMEDIA_LNK_FL_INTERFACE_LINK”…””}”(hjähžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjàubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jîŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-lnk-fl-interface-link”uh1hhŸhåh KhhùubhŒ% (1U << 28) # define ”…””}”hhùsbh)”}”(hŒ@:ref:`MEDIA_LNK_FL_ANCILLARY_LINK `”h]”j0)”}”(hjh]”hŒMEDIA_LNK_FL_ANCILLARY_LINK”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-lnk-fl-ancillary-link”uh1hhŸhåh KhhùubhX¬ (2U << 28) struct media_link_desc { struct media_pad_desc source; struct media_pad_desc sink; __u32 flags; __u32 reserved[2]; }; struct media_links_enum { __u32 entity; /* Should have enough room for pads elements */ struct media_pad_desc __user *pads; /* Should have enough room for links elements */ struct media_link_desc __user *links; __u32 reserved[4]; }; /* Interface type ranges */ #define MEDIA_INTF_T_DVB_BASE 0x00000100 #define MEDIA_INTF_T_V4L_BASE 0x00000200 /* Interface types */ #define ”…””}”hhùsbh)”}”(hŒ0:ref:`MEDIA_INTF_T_DVB_FE `”h]”j0)”}”(hj*h]”hŒMEDIA_INTF_T_DVB_FE”…””}”(hj,hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j6Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-dvb-fe”uh1hhŸhåh KhhùubhŒ< (MEDIA_INTF_T_DVB_BASE) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_INTF_T_DVB_DEMUX `”h]”j0)”}”(hjNh]”hŒMEDIA_INTF_T_DVB_DEMUX”…””}”(hjPhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjLubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jZŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-dvb-demux”uh1hhŸhåh KhhùubhŒ= (MEDIA_INTF_T_DVB_BASE + 1) #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_INTF_T_DVB_DVR `”h]”j0)”}”(hjrh]”hŒMEDIA_INTF_T_DVB_DVR”…””}”(hjthžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjpubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j~Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-dvb-dvr”uh1hhŸhåh KhhùubhŒ? (MEDIA_INTF_T_DVB_BASE + 2) #define ”…””}”hhùsbh)”}”(hŒ0:ref:`MEDIA_INTF_T_DVB_CA `”h]”j0)”}”(hj–h]”hŒMEDIA_INTF_T_DVB_CA”…””}”(hj˜hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j¢Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-dvb-ca”uh1hhŸhåh KhhùubhŒ@ (MEDIA_INTF_T_DVB_BASE + 3) #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_INTF_T_DVB_NET `”h]”j0)”}”(hjºh]”hŒMEDIA_INTF_T_DVB_NET”…””}”(hj¼hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÆŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-dvb-net”uh1hhŸhåh KhhùubhŒ@ (MEDIA_INTF_T_DVB_BASE + 4) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_INTF_T_V4L_VIDEO `”h]”j0)”}”(hjÞh]”hŒMEDIA_INTF_T_V4L_VIDEO”…””}”(hjàhžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjÜubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jêŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-v4l-video”uh1hhŸhåh KhhùubhŒ9 (MEDIA_INTF_T_V4L_BASE) #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_INTF_T_V4L_VBI `”h]”j0)”}”(hj h]”hŒMEDIA_INTF_T_V4L_VBI”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-v4l-vbi”uh1hhŸhåh KhhùubhŒ? (MEDIA_INTF_T_V4L_BASE + 1) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_INTF_T_V4L_RADIO `”h]”j0)”}”(hj& h]”hŒMEDIA_INTF_T_V4L_RADIO”…””}”(hj( hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj$ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j2 Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-v4l-radio”uh1hhŸhåh KhhùubhŒ= (MEDIA_INTF_T_V4L_BASE + 2) #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_INTF_T_V4L_SUBDEV `”h]”j0)”}”(hjJ h]”hŒMEDIA_INTF_T_V4L_SUBDEV”…””}”(hjL hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjH ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jV Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-v4l-subdev”uh1hhŸhåh KhhùubhŒ< (MEDIA_INTF_T_V4L_BASE + 3) #define ”…””}”hhùsbh)”}”(hŒ::ref:`MEDIA_INTF_T_V4L_SWRADIO `”h]”j0)”}”(hjn h]”hŒMEDIA_INTF_T_V4L_SWRADIO”…””}”(hjp hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjl ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jz Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-v4l-swradio”uh1hhŸhåh KhhùubhŒ; (MEDIA_INTF_T_V4L_BASE + 4) #define ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_INTF_T_V4L_TOUCH `”h]”j0)”}”(hj’ h]”hŒMEDIA_INTF_T_V4L_TOUCH”…””}”(hj” hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jž Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-v4l-touch”uh1hhŸhåh KhhùubhŒ~ (MEDIA_INTF_T_V4L_BASE + 5) #define MEDIA_INTF_T_ALSA_BASE 0x00000300 #define ”…””}”hhùsbh)”}”(hŒD:ref:`MEDIA_INTF_T_ALSA_PCM_CAPTURE `”h]”j0)”}”(hj¶ h]”hŒMEDIA_INTF_T_ALSA_PCM_CAPTURE”…””}”(hj¸ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj´ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-alsa-pcm-capture”uh1hhŸhåh KhhùubhŒ3 (MEDIA_INTF_T_ALSA_BASE) #define ”…””}”hhùsbh)”}”(hŒF:ref:`MEDIA_INTF_T_ALSA_PCM_PLAYBACK `”h]”j0)”}”(hjÚ h]”hŒMEDIA_INTF_T_ALSA_PCM_PLAYBACK”…””}”(hjÜ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjØ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jæ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-alsa-pcm-playback”uh1hhŸhåh KhhùubhŒ6 (MEDIA_INTF_T_ALSA_BASE + 1) #define ”…””}”hhùsbh)”}”(hŒ<:ref:`MEDIA_INTF_T_ALSA_CONTROL `”h]”j0)”}”(hjþ h]”hŒMEDIA_INTF_T_ALSA_CONTROL”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjü ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-alsa-control”uh1hhŸhåh KhhùubhX, (MEDIA_INTF_T_ALSA_BASE + 2) #if defined(__KERNEL__) /* * Connector functions * * For now these should not be used in userspace, as some definitions may * change. * * It is the responsibility of the entity drivers to add connectors and links. */ #define ”…””}”hhùsbh)”}”(hŒ0:ref:`MEDIA_ENT_F_CONN_RF `”h]”j0)”}”(hj" h]”hŒMEDIA_ENT_F_CONN_RF”…””}”(hj$ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j. Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-conn-rf”uh1hhŸhåh KhhùubhŒ@ (MEDIA_ENT_F_BASE + 0x30001) #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_ENT_F_CONN_SVIDEO `”h]”j0)”}”(hjF h]”hŒMEDIA_ENT_F_CONN_SVIDEO”…””}”(hjH hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjD ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jR Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-conn-svideo”uh1hhŸhåh KhhùubhŒ< (MEDIA_ENT_F_BASE + 0x30002) #define ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_ENT_F_CONN_COMPOSITE `”h]”j0)”}”(hjj h]”hŒMEDIA_ENT_F_CONN_COMPOSITE”…””}”(hjl hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjh ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jv Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-conn-composite”uh1hhŸhåh KhhùubhXq (MEDIA_ENT_F_BASE + 0x30003) #endif /* * MC next gen API definitions */ /* * Appeared in 4.19.0. * * The media_version argument comes from the media_version field in * struct media_device_info. */ #define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) \ ((media_version) >= ((4U << 16) | (19U << 8) | 0U)) struct media_v2_entity { __u32 id; char name[64]; __u32 function; /* Main function of the entity */ __u32 flags; __u32 reserved[5]; } __attribute__ ((packed)); /* Should match the specific fields at media_intf_devnode */ struct media_v2_intf_devnode { __u32 major; __u32 minor; } __attribute__ ((packed)); struct media_v2_interface { __u32 id; __u32 intf_type; __u32 flags; __u32 reserved[9]; union { struct media_v2_intf_devnode devnode; __u32 raw[16]; }; } __attribute__ ((packed)); /* * Appeared in 4.19.0. * * The media_version argument comes from the media_version field in * struct media_device_info. */ #define MEDIA_V2_PAD_HAS_INDEX(media_version) \ ((media_version) >= ((4U << 16) | (19U << 8) | 0U)) struct media_v2_pad { __u32 id; __u32 entity_id; __u32 flags; __u32 index; __u32 reserved[4]; } __attribute__ ((packed)); struct media_v2_link { __u32 id; __u32 source_id; __u32 sink_id; __u32 flags; __u32 reserved[6]; } __attribute__ ((packed)); struct media_v2_topology { __u64 topology_version; __u32 num_entities; __u32 reserved1; __u64 ptr_entities; __u32 num_interfaces; __u32 reserved2; __u64 ptr_interfaces; __u32 num_pads; __u32 reserved3; __u64 ptr_pads; __u32 num_links; __u32 reserved4; __u64 ptr_links; } __attribute__ ((packed)); /* ioctls */ #define ”…””}”hhùsbh)”}”(hŒ4:ref:`MEDIA_IOC_DEVICE_INFO `”h]”j0)”}”(hjŽ h]”hŒMEDIA_IOC_DEVICE_INFO”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjŒ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jš Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia_ioc_device_info”uh1hhŸhåh KhhùubhŒ= _IOWR('|', 0x00, struct media_device_info ) #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_IOC_ENUM_ENTITIES `”h]”j0)”}”(hj² h]”hŒMEDIA_IOC_ENUM_ENTITIES”…””}”(hj´ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj° ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j¾ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia_ioc_enum_entities”uh1hhŸhåh KhhùubhŒ; _IOWR('|', 0x01, struct media_entity_desc ) #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_IOC_ENUM_LINKS `”h]”j0)”}”(hjÖ h]”hŒMEDIA_IOC_ENUM_LINKS”…””}”(hjØ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjÔ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jâ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia_ioc_enum_links”uh1hhŸhåh KhhùubhŒ= _IOWR('|', 0x02, struct media_links_enum ) #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_IOC_SETUP_LINK `”h]”j0)”}”(hjú h]”hŒMEDIA_IOC_SETUP_LINK”…””}”(hjü hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjø ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia_ioc_setup_link”uh1hhŸhåh KhhùubhŒ< _IOWR('|', 0x03, struct media_link_desc ) #define ”…””}”hhùsbh)”}”(hŒ2:ref:`MEDIA_IOC_G_TOPOLOGY `”h]”j0)”}”(hj h]”hŒMEDIA_IOC_G_TOPOLOGY”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j* Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia_ioc_g_topology”uh1hhŸhåh KhhùubhŒ> _IOWR('|', 0x04, struct media_v2_topology ) #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_IOC_REQUEST_ALLOC `”h]”j0)”}”(hjB h]”hŒMEDIA_IOC_REQUEST_ALLOC”…””}”(hjD hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj@ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jN Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia_ioc_request_alloc”uh1hhŸhåh KhhùubhŒš _IOR ('|', 0x05, int) /* * These ioctls are called on the request file descriptor as returned * by MEDIA_IOC_REQUEST_ALLOC. */ #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_REQUEST_IOC_QUEUE `”h]”j0)”}”(hjf h]”hŒMEDIA_REQUEST_IOC_QUEUE”…””}”(hjh hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjd ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jr Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia_request_ioc_queue”uh1hhŸhåh KhhùubhŒ& _IO('|', 0x80) #define ”…””}”hhùsbh)”}”(hŒ::ref:`MEDIA_REQUEST_IOC_REINIT `”h]”j0)”}”(hjŠ h]”hŒMEDIA_REQUEST_IOC_REINIT”…””}”(hjŒ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjˆ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j– Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia_request_ioc_reinit”uh1hhŸhåh KhhùubhX? _IO('|', 0x81) #ifndef __KERNEL__ /* * Legacy symbols used to avoid userspace compilation breakages. * Do not use any of this in new applications! * * Those symbols map the entity function into types and should be * used only on legacy programs for legacy hardware. Don't rely * on those for MEDIA_IOC_G_TOPOLOGY. */ #define MEDIA_ENT_TYPE_SHIFT 16 #define MEDIA_ENT_TYPE_MASK 0x00ff0000 #define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff #define MEDIA_ENT_T_DEVNODE_UNKNOWN (MEDIA_ENT_F_OLD_BASE | \ MEDIA_ENT_SUBTYPE_MASK) #define MEDIA_ENT_T_DEVNODE MEDIA_ENT_F_OLD_BASE #define MEDIA_ENT_T_DEVNODE_V4L ”…””}”hhùsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_V4L `”h]”j0)”}”(hj® h]”hŒMEDIA_ENT_F_IO_V4L”…””}”(hj° hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jº Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-io-v4l”uh1hhŸhåh KhhùubhX4 #define MEDIA_ENT_T_DEVNODE_FB (MEDIA_ENT_F_OLD_BASE + 2) #define MEDIA_ENT_T_DEVNODE_ALSA (MEDIA_ENT_F_OLD_BASE + 3) #define MEDIA_ENT_T_DEVNODE_DVB (MEDIA_ENT_F_OLD_BASE + 4) #define MEDIA_ENT_T_UNKNOWN ”…””}”hhùsbh)”}”(hŒ0:ref:`MEDIA_ENT_F_UNKNOWN `”h]”j0)”}”(hjÒ h]”hŒMEDIA_ENT_F_UNKNOWN”…””}”(hjÔ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjÐ ubah}”(•¿#h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÞ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-unknown”uh1hhŸhåh KhhùubhŒ8 #define MEDIA_ENT_T_V4L2_VIDEO ”…””}”hhùsbh)”}”(hŒ.:ref:`MEDIA_ENT_F_IO_V4L `”h]”j0)”}”(hjö h]”hŒMEDIA_ENT_F_IO_V4L”…””}”(hjø hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjô ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-io-v4l”uh1hhŸhåh KhhùubhŒ8 #define MEDIA_ENT_T_V4L2_SUBDEV ”…””}”hhùsbh)”}”(hŒH:ref:`MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN `”h]”j0)”}”(hj h]”hŒMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j& Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-v4l2-subdev-unknown”uh1hhŸhåh KhhùubhŒ9 #define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_CAM_SENSOR `”h]”j0)”}”(hj> h]”hŒMEDIA_ENT_F_CAM_SENSOR”…””}”(hj@ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj< ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jJ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-cam-sensor”uh1hhŸhåh KhhùubhŒ9 #define MEDIA_ENT_T_V4L2_SUBDEV_FLASH ”…””}”hhùsbh)”}”(hŒ,:ref:`MEDIA_ENT_F_FLASH `”h]”j0)”}”(hjb h]”hŒMEDIA_ENT_F_FLASH”…””}”(hjd hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj` ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jn Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-flash”uh1hhŸhåh KhhùubhŒ9 #define MEDIA_ENT_T_V4L2_SUBDEV_LENS ”…””}”hhùsbh)”}”(hŒ*:ref:`MEDIA_ENT_F_LENS `”h]”j0)”}”(hj† h]”hŒMEDIA_ENT_F_LENS”…””}”(hjˆ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj„ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j’ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-lens”uh1hhŸhåh KhhùubhŒ9 #define MEDIA_ENT_T_V4L2_SUBDEV_DECODER ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_ENT_F_ATV_DECODER `”h]”j0)”}”(hjª h]”hŒMEDIA_ENT_F_ATV_DECODER”…””}”(hj¬ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj¨ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j¶ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-atv-decoder”uh1hhŸhåh KhhùubhŒ9 #define MEDIA_ENT_T_V4L2_SUBDEV_TUNER ”…””}”hhùsbh)”}”(hŒ,:ref:`MEDIA_ENT_F_TUNER `”h]”j0)”}”(hjÎ h]”hŒMEDIA_ENT_F_TUNER”…””}”(hjÐ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjÌ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jÚ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-tuner”uh1hhŸhåh KhhùubhŒ9 #define MEDIA_ENT_F_DTV_DECODER ”…””}”hhùsbh)”}”(hŒ6:ref:`MEDIA_ENT_F_DV_DECODER `”h]”j0)”}”(hjò h]”hŒMEDIA_ENT_F_DV_DECODER”…””}”(hjô hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hjð ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jþ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-ent-f-dv-decoder”uh1hhŸhåh KhhùubhX´ /* * There is still no full ALSA support in the media controller. These * defines should not have been added and we leave them here only * in case some application tries to use these defines. * * The ALSA defines that are in use have been moved into __KERNEL__ * scope. As support gets added to these interface types, they should * be moved into __KERNEL__ scope with the code that uses them. */ #define ”…””}”hhùsbh)”}”(hŒ>:ref:`MEDIA_INTF_T_ALSA_COMPRESS `”h]”j0)”}”(hj h]”hŒMEDIA_INTF_T_ALSA_COMPRESS”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j" Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-alsa-compress”uh1hhŸhåh KhhùubhŒ9 (MEDIA_INTF_T_ALSA_BASE + 3) #define ”…””}”hhùsbh)”}”(hŒ<:ref:`MEDIA_INTF_T_ALSA_RAWMIDI `”h]”j0)”}”(hj: h]”hŒMEDIA_INTF_T_ALSA_RAWMIDI”…””}”(hj< hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj8 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jF Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-alsa-rawmidi”uh1hhŸhåh KhhùubhŒ: (MEDIA_INTF_T_ALSA_BASE + 4) #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_INTF_T_ALSA_HWDEP `”h]”j0)”}”(hj^ h]”hŒMEDIA_INTF_T_ALSA_HWDEP”…””}”(hj` hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj\ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jj Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-alsa-hwdep”uh1hhŸhåh KhhùubhŒ< (MEDIA_INTF_T_ALSA_BASE + 5) #define ”…””}”hhùsbh)”}”(hŒ@:ref:`MEDIA_INTF_T_ALSA_SEQUENCER `”h]”j0)”}”(hj‚ h]”hŒMEDIA_INTF_T_ALSA_SEQUENCER”…””}”(hj„ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj€ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”jŽ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-alsa-sequencer”uh1hhŸhåh KhhùubhŒ8 (MEDIA_INTF_T_ALSA_BASE + 6) #define ”…””}”hhùsbh)”}”(hŒ8:ref:`MEDIA_INTF_T_ALSA_TIMER `”h]”j0)”}”(hj¦ h]”hŒMEDIA_INTF_T_ALSA_TIMER”…””}”(hj¨ hžhhŸNh Nubah}”(h]”h ]”(j;Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j/hj¤ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jHŒ refdomain”j² Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjNŒmedia-intf-t-alsa-timer”uh1hhŸhåh KhhùubhX (MEDIA_INTF_T_ALSA_BASE + 7) /* Obsolete symbol for media_version, no longer used in the kernel */ #define MEDIA_API_VERSION ((0U << 16) | (1U << 8) | 0U) #endif #endif /* __LINUX_MEDIA_H */”…””}”hhùsbeh}”(h]”h ]”h"]”h$]”h&]”h±h²uh1h÷h KhhæhžhhŸŒSinternal padding after /var/lib/git/docbuild/linux/Documentation/output/media.h.rst”ubeh}”(h]”Œmedia-h”ah ]”h"]”Œmedia.h”ah$]”h&]”uh1hÂhhÄhžhhŸhåh Kubeh}”(h]”(Œmedia-controller-header-file”hÁeh ]”h"]”(Œmedia controller header file”Œ media_header”eh$]”h&]”uh1hÂhhhžhhŸh³h KŒexpect_referenced_by_name”}”jÝ h¶sŒexpect_referenced_by_id”}”hÁh¶subeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÇNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”hÁ]”h¶asŒnameids”}”(jÝ hÁjÜ jÙ jÔ jÑ uŒ nametypes”}”(jÝ ˆjÜ ‰jÔ ‰uh}”(hÁhÄjÙ hÄjÑ hæuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)”}”(hhh]”hŒ paragraph”“”)”}”(hhh]”hŒ2Hyperlink target "media-header" is not referenced.”…””}”hjssbah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjnubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”h³Œline”Kuh1jlubaŒ transformer”NŒ include_log”]”Œ decoration”Nhžhub.