Patch Detail
Show a patch.
GET /api/1.1/patches/59/?format=api
{ "id": 59, "url": "https://patchwork.libcamera.org/api/1.1/patches/59/?format=api", "web_url": "https://patchwork.libcamera.org/patch/59/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<1545212036-22541-2-git-send-email-jacopo@jmondi.org>", "date": "2018-12-19T09:33:55", "name": "[libcamera-devel,1/2] libcamera: include: Import media.h from Linux v4.19", "commit_ref": "c81bc473fd24de5a46bb995510378433d23d3098", "pull_url": null, "state": "accepted", "archived": false, "hash": "1fee50d7ca6256a3c55e7735483777f3f215613f", "submitter": { "id": 3, "url": "https://patchwork.libcamera.org/api/1.1/people/3/?format=api", "name": "Jacopo Mondi", "email": "jacopo@jmondi.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/59/mbox/", "series": [ { "id": 31, "url": "https://patchwork.libcamera.org/api/1.1/series/31/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=31", "date": "2018-12-19T09:33:54", "name": "Add headers from Linux v4.19", "version": 1, "mbox": "https://patchwork.libcamera.org/series/31/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/59/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/59/checks/", "tags": {}, "headers": { "Return-Path": "<jacopo@jmondi.org>", "Received": [ "from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net\n\t[217.70.183.199])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7C8D360B23\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Dec 2018 10:34:03 +0100 (CET)", "from w540.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay9-d.mail.gandi.net (Postfix) with ESMTPSA id EE8A2FF81B;\n\tWed, 19 Dec 2018 09:34:02 +0000 (UTC)" ], "X-Originating-IP": "2.224.242.101", "From": "Jacopo Mondi <jacopo@jmondi.org>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 19 Dec 2018 10:33:55 +0100", "Message-Id": "<1545212036-22541-2-git-send-email-jacopo@jmondi.org>", "X-Mailer": "git-send-email 2.7.4", "In-Reply-To": "<1545212036-22541-1-git-send-email-jacopo@jmondi.org>", "References": "<1545212036-22541-1-git-send-email-jacopo@jmondi.org>", "Subject": "[libcamera-devel] [PATCH 1/2] libcamera: include: Import media.h\n\tfrom Linux v4.19", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.23", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "X-List-Received-Date": "Wed, 19 Dec 2018 09:34:03 -0000" }, "content": "In order to avoid depending on system headers that may be outdated compared\nto the kernel version available at runtime, import the Linux kernel headers\nrelated to the APIs that libcamera requires a recent version of. This allows\nlibcamera to use the latest kernel APIs even when compiled on older systems.\nThe library must of course test at runtime whether those APIs are available\nand fallback to older APIs in order to support older kernels.\n\nImport media.h for the recent media controller APIs. The file is extracted\nverbatim from kernel v4.19.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n include/linux/README | 2 +\n include/linux/media.h | 406 ++++++++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 408 insertions(+)\n create mode 100644 include/linux/README\n create mode 100644 include/linux/media.h", "diff": "diff --git a/include/linux/README b/include/linux/README\nnew file mode 100644\nindex 0000000..d3892a8\n--- /dev/null\n+++ b/include/linux/README\n@@ -0,0 +1,2 @@\n+Files in this directory are imported from v4.19 of the Linux kernel. Do not\n+modify them manually.\ndiff --git a/include/linux/media.h b/include/linux/media.h\nnew file mode 100644\nindex 0000000..c756646\n--- /dev/null\n+++ b/include/linux/media.h\n@@ -0,0 +1,406 @@\n+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n+/*\n+ * Multimedia device API\n+ *\n+ * Copyright (C) 2010 Nokia Corporation\n+ *\n+ * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n+ *\t Sakari Ailus <sakari.ailus@iki.fi>\n+ *\n+ * This program is free software; you can redistribute it and/or modify\n+ * it under the terms of the GNU General Public License version 2 as\n+ * published by the Free Software Foundation.\n+ *\n+ * This program is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+ * GNU General Public License for more details.\n+ */\n+\n+#ifndef __LINUX_MEDIA_H\n+#define __LINUX_MEDIA_H\n+\n+#include <stdint.h>\n+#include <linux/ioctl.h>\n+#include <linux/types.h>\n+\n+struct media_device_info {\n+\tchar driver[16];\n+\tchar model[32];\n+\tchar serial[40];\n+\tchar bus_info[32];\n+\t__u32 media_version;\n+\t__u32 hw_revision;\n+\t__u32 driver_version;\n+\t__u32 reserved[31];\n+};\n+\n+/*\n+ * Base number ranges for entity functions\n+ *\n+ * NOTE: Userspace should not rely on these ranges to identify a group\n+ * of function types, as newer functions can be added with any name within\n+ * the full u32 range.\n+ *\n+ * Some older functions use the MEDIA_ENT_F_OLD_*_BASE range. Do not\n+ * change this, this is for backwards compatibility. When adding new\n+ * functions always use MEDIA_ENT_F_BASE.\n+ */\n+#define MEDIA_ENT_F_BASE\t\t\t0x00000000\n+#define MEDIA_ENT_F_OLD_BASE\t\t\t0x00010000\n+#define MEDIA_ENT_F_OLD_SUBDEV_BASE\t\t0x00020000\n+\n+/*\n+ * Initial value to be used when a new entity is created\n+ * Drivers should change it to something useful.\n+ */\n+#define MEDIA_ENT_F_UNKNOWN\t\t\tMEDIA_ENT_F_BASE\n+\n+/*\n+ * Subdevs are initialized with MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN in order\n+ * to preserve backward compatibility. Drivers must change to the proper\n+ * subdev type before registering the entity.\n+ */\n+#define MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN\t\tMEDIA_ENT_F_OLD_SUBDEV_BASE\n+\n+/*\n+ * DVB entity functions\n+ */\n+#define MEDIA_ENT_F_DTV_DEMOD\t\t\t(MEDIA_ENT_F_BASE + 0x00001)\n+#define MEDIA_ENT_F_TS_DEMUX\t\t\t(MEDIA_ENT_F_BASE + 0x00002)\n+#define MEDIA_ENT_F_DTV_CA\t\t\t(MEDIA_ENT_F_BASE + 0x00003)\n+#define MEDIA_ENT_F_DTV_NET_DECAP\t\t(MEDIA_ENT_F_BASE + 0x00004)\n+\n+/*\n+ * I/O entity functions\n+ */\n+#define MEDIA_ENT_F_IO_V4L\t\t\t(MEDIA_ENT_F_OLD_BASE + 1)\n+#define MEDIA_ENT_F_IO_DTV\t\t\t(MEDIA_ENT_F_BASE + 0x01001)\n+#define MEDIA_ENT_F_IO_VBI\t\t\t(MEDIA_ENT_F_BASE + 0x01002)\n+#define MEDIA_ENT_F_IO_SWRADIO\t\t\t(MEDIA_ENT_F_BASE + 0x01003)\n+\n+/*\n+ * Sensor functions\n+ */\n+#define MEDIA_ENT_F_CAM_SENSOR\t\t\t(MEDIA_ENT_F_OLD_SUBDEV_BASE + 1)\n+#define MEDIA_ENT_F_FLASH\t\t\t(MEDIA_ENT_F_OLD_SUBDEV_BASE + 2)\n+#define MEDIA_ENT_F_LENS\t\t\t(MEDIA_ENT_F_OLD_SUBDEV_BASE + 3)\n+\n+/*\n+ * Digital TV, analog TV, radio and/or software defined radio tuner functions.\n+ *\n+ * It is a responsibility of the master/bridge drivers to add connectors\n+ * and links for MEDIA_ENT_F_TUNER. Please notice that some old tuners\n+ * may require the usage of separate I2C chips to decode analog TV signals,\n+ * when the master/bridge chipset doesn't have its own TV standard decoder.\n+ * On such cases, the IF-PLL staging is mapped via one or two entities:\n+ * MEDIA_ENT_F_IF_VID_DECODER and/or MEDIA_ENT_F_IF_AUD_DECODER.\n+ */\n+#define MEDIA_ENT_F_TUNER\t\t\t(MEDIA_ENT_F_OLD_SUBDEV_BASE + 5)\n+\n+/*\n+ * Analog TV IF-PLL decoder functions\n+ *\n+ * It is a responsibility of the master/bridge drivers to create links\n+ * for MEDIA_ENT_F_IF_VID_DECODER and MEDIA_ENT_F_IF_AUD_DECODER.\n+ */\n+#define MEDIA_ENT_F_IF_VID_DECODER\t\t(MEDIA_ENT_F_BASE + 0x02001)\n+#define MEDIA_ENT_F_IF_AUD_DECODER\t\t(MEDIA_ENT_F_BASE + 0x02002)\n+\n+/*\n+ * Audio entity functions\n+ */\n+#define MEDIA_ENT_F_AUDIO_CAPTURE\t\t(MEDIA_ENT_F_BASE + 0x03001)\n+#define MEDIA_ENT_F_AUDIO_PLAYBACK\t\t(MEDIA_ENT_F_BASE + 0x03002)\n+#define MEDIA_ENT_F_AUDIO_MIXER\t\t\t(MEDIA_ENT_F_BASE + 0x03003)\n+\n+/*\n+ * Processing entity functions\n+ */\n+#define MEDIA_ENT_F_PROC_VIDEO_COMPOSER\t\t(MEDIA_ENT_F_BASE + 0x4001)\n+#define MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER\t(MEDIA_ENT_F_BASE + 0x4002)\n+#define MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV\t(MEDIA_ENT_F_BASE + 0x4003)\n+#define MEDIA_ENT_F_PROC_VIDEO_LUT\t\t(MEDIA_ENT_F_BASE + 0x4004)\n+#define MEDIA_ENT_F_PROC_VIDEO_SCALER\t\t(MEDIA_ENT_F_BASE + 0x4005)\n+#define MEDIA_ENT_F_PROC_VIDEO_STATISTICS\t(MEDIA_ENT_F_BASE + 0x4006)\n+#define MEDIA_ENT_F_PROC_VIDEO_ENCODER\t\t(MEDIA_ENT_F_BASE + 0x4007)\n+#define MEDIA_ENT_F_PROC_VIDEO_DECODER\t\t(MEDIA_ENT_F_BASE + 0x4008)\n+\n+/*\n+ * Switch and bridge entity functions\n+ */\n+#define MEDIA_ENT_F_VID_MUX\t\t\t(MEDIA_ENT_F_BASE + 0x5001)\n+#define MEDIA_ENT_F_VID_IF_BRIDGE\t\t(MEDIA_ENT_F_BASE + 0x5002)\n+\n+/*\n+ * Video decoder/encoder functions\n+ */\n+#define MEDIA_ENT_F_ATV_DECODER\t\t\t(MEDIA_ENT_F_OLD_SUBDEV_BASE + 4)\n+#define MEDIA_ENT_F_DV_DECODER\t\t\t(MEDIA_ENT_F_BASE + 0x6001)\n+#define MEDIA_ENT_F_DV_ENCODER\t\t\t(MEDIA_ENT_F_BASE + 0x6002)\n+\n+/* Entity flags */\n+#define MEDIA_ENT_FL_DEFAULT\t\t\t(1 << 0)\n+#define MEDIA_ENT_FL_CONNECTOR\t\t\t(1 << 1)\n+\n+/* OR with the entity id value to find the next entity */\n+#define MEDIA_ENT_ID_FLAG_NEXT\t\t\t(1 << 31)\n+\n+struct media_entity_desc {\n+\t__u32 id;\n+\tchar name[32];\n+\t__u32 type;\n+\t__u32 revision;\n+\t__u32 flags;\n+\t__u32 group_id;\n+\t__u16 pads;\n+\t__u16 links;\n+\n+\t__u32 reserved[4];\n+\n+\tunion {\n+\t\t/* Node specifications */\n+\t\tstruct {\n+\t\t\t__u32 major;\n+\t\t\t__u32 minor;\n+\t\t} dev;\n+\n+\t\t/*\n+\t\t * TODO: this shouldn't have been added without\n+\t\t * actual drivers that use this. When the first real driver\n+\t\t * appears that sets this information, special attention\n+\t\t * should be given whether this information is 1) enough, and\n+\t\t * 2) can deal with udev rules that rename devices. The struct\n+\t\t * dev would not be sufficient for this since that does not\n+\t\t * contain the subdevice information. In addition, struct dev\n+\t\t * can only refer to a single device, and not to multiple (e.g.\n+\t\t * pcm and mixer devices).\n+\t\t */\n+\t\tstruct {\n+\t\t\t__u32 card;\n+\t\t\t__u32 device;\n+\t\t\t__u32 subdevice;\n+\t\t} alsa;\n+\n+\t\t/*\n+\t\t * DEPRECATED: previous node specifications. Kept just to\n+\t\t * avoid breaking compilation. Use media_entity_desc.dev\n+\t\t * instead.\n+\t\t */\n+\t\tstruct {\n+\t\t\t__u32 major;\n+\t\t\t__u32 minor;\n+\t\t} v4l;\n+\t\tstruct {\n+\t\t\t__u32 major;\n+\t\t\t__u32 minor;\n+\t\t} fb;\n+\t\tint dvb;\n+\n+\t\t/* Sub-device specifications */\n+\t\t/* Nothing needed yet */\n+\t\t__u8 raw[184];\n+\t};\n+};\n+\n+#define MEDIA_PAD_FL_SINK\t\t\t(1 << 0)\n+#define MEDIA_PAD_FL_SOURCE\t\t\t(1 << 1)\n+#define MEDIA_PAD_FL_MUST_CONNECT\t\t(1 << 2)\n+\n+struct media_pad_desc {\n+\t__u32 entity;\t\t/* entity ID */\n+\t__u16 index;\t\t/* pad index */\n+\t__u32 flags;\t\t/* pad flags */\n+\t__u32 reserved[2];\n+};\n+\n+#define MEDIA_LNK_FL_ENABLED\t\t\t(1 << 0)\n+#define MEDIA_LNK_FL_IMMUTABLE\t\t\t(1 << 1)\n+#define MEDIA_LNK_FL_DYNAMIC\t\t\t(1 << 2)\n+\n+#define MEDIA_LNK_FL_LINK_TYPE\t\t\t(0xf << 28)\n+# define MEDIA_LNK_FL_DATA_LINK\t\t(0 << 28)\n+# define MEDIA_LNK_FL_INTERFACE_LINK\t\t(1 << 28)\n+\n+struct media_link_desc {\n+\tstruct media_pad_desc source;\n+\tstruct media_pad_desc sink;\n+\t__u32 flags;\n+\t__u32 reserved[2];\n+};\n+\n+struct media_links_enum {\n+\t__u32 entity;\n+\t/* Should have enough room for pads elements */\n+\tstruct media_pad_desc *pads;\n+\t/* Should have enough room for links elements */\n+\tstruct media_link_desc *links;\n+\t__u32 reserved[4];\n+};\n+\n+/* Interface type ranges */\n+\n+#define MEDIA_INTF_T_DVB_BASE\t\t\t0x00000100\n+#define MEDIA_INTF_T_V4L_BASE\t\t\t0x00000200\n+\n+/* Interface types */\n+\n+#define MEDIA_INTF_T_DVB_FE\t\t\t(MEDIA_INTF_T_DVB_BASE)\n+#define MEDIA_INTF_T_DVB_DEMUX\t\t\t(MEDIA_INTF_T_DVB_BASE + 1)\n+#define MEDIA_INTF_T_DVB_DVR\t\t\t(MEDIA_INTF_T_DVB_BASE + 2)\n+#define MEDIA_INTF_T_DVB_CA\t\t\t(MEDIA_INTF_T_DVB_BASE + 3)\n+#define MEDIA_INTF_T_DVB_NET\t\t\t(MEDIA_INTF_T_DVB_BASE + 4)\n+\n+#define MEDIA_INTF_T_V4L_VIDEO\t\t\t(MEDIA_INTF_T_V4L_BASE)\n+#define MEDIA_INTF_T_V4L_VBI\t\t\t(MEDIA_INTF_T_V4L_BASE + 1)\n+#define MEDIA_INTF_T_V4L_RADIO\t\t\t(MEDIA_INTF_T_V4L_BASE + 2)\n+#define MEDIA_INTF_T_V4L_SUBDEV\t\t\t(MEDIA_INTF_T_V4L_BASE + 3)\n+#define MEDIA_INTF_T_V4L_SWRADIO\t\t(MEDIA_INTF_T_V4L_BASE + 4)\n+#define MEDIA_INTF_T_V4L_TOUCH\t\t\t(MEDIA_INTF_T_V4L_BASE + 5)\n+\n+\n+/*\n+ * MC next gen API definitions\n+ */\n+\n+/*\n+ * Appeared in 4.19.0.\n+ *\n+ * The media_version argument comes from the media_version field in\n+ * struct media_device_info.\n+ */\n+#define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) \\\n+\t((media_version) >= ((4 << 16) | (19 << 8) | 0))\n+\n+struct media_v2_entity {\n+\t__u32 id;\n+\tchar name[64];\n+\t__u32 function;\t\t/* Main function of the entity */\n+\t__u32 flags;\n+\t__u32 reserved[5];\n+} __attribute__ ((packed));\n+\n+/* Should match the specific fields at media_intf_devnode */\n+struct media_v2_intf_devnode {\n+\t__u32 major;\n+\t__u32 minor;\n+} __attribute__ ((packed));\n+\n+struct media_v2_interface {\n+\t__u32 id;\n+\t__u32 intf_type;\n+\t__u32 flags;\n+\t__u32 reserved[9];\n+\n+\tunion {\n+\t\tstruct media_v2_intf_devnode devnode;\n+\t\t__u32 raw[16];\n+\t};\n+} __attribute__ ((packed));\n+\n+/*\n+ * Appeared in 4.19.0.\n+ *\n+ * The media_version argument comes from the media_version field in\n+ * struct media_device_info.\n+ */\n+#define MEDIA_V2_PAD_HAS_INDEX(media_version) \\\n+\t((media_version) >= ((4 << 16) | (19 << 8) | 0))\n+\n+struct media_v2_pad {\n+\t__u32 id;\n+\t__u32 entity_id;\n+\t__u32 flags;\n+\t__u32 index;\n+\t__u32 reserved[4];\n+} __attribute__ ((packed));\n+\n+struct media_v2_link {\n+\t__u32 id;\n+\t__u32 source_id;\n+\t__u32 sink_id;\n+\t__u32 flags;\n+\t__u32 reserved[6];\n+} __attribute__ ((packed));\n+\n+struct media_v2_topology {\n+\t__u64 topology_version;\n+\n+\t__u32 num_entities;\n+\t__u32 reserved1;\n+\t__u64 ptr_entities;\n+\n+\t__u32 num_interfaces;\n+\t__u32 reserved2;\n+\t__u64 ptr_interfaces;\n+\n+\t__u32 num_pads;\n+\t__u32 reserved3;\n+\t__u64 ptr_pads;\n+\n+\t__u32 num_links;\n+\t__u32 reserved4;\n+\t__u64 ptr_links;\n+} __attribute__ ((packed));\n+\n+/* ioctls */\n+\n+#define MEDIA_IOC_DEVICE_INFO\t_IOWR('|', 0x00, struct media_device_info)\n+#define MEDIA_IOC_ENUM_ENTITIES\t_IOWR('|', 0x01, struct media_entity_desc)\n+#define MEDIA_IOC_ENUM_LINKS\t_IOWR('|', 0x02, struct media_links_enum)\n+#define MEDIA_IOC_SETUP_LINK\t_IOWR('|', 0x03, struct media_link_desc)\n+#define MEDIA_IOC_G_TOPOLOGY\t_IOWR('|', 0x04, struct media_v2_topology)\n+\n+\n+/*\n+ * Legacy symbols used to avoid userspace compilation breakages.\n+ * Do not use any of this in new applications!\n+ *\n+ * Those symbols map the entity function into types and should be\n+ * used only on legacy programs for legacy hardware. Don't rely\n+ * on those for MEDIA_IOC_G_TOPOLOGY.\n+ */\n+#define MEDIA_ENT_TYPE_SHIFT\t\t\t16\n+#define MEDIA_ENT_TYPE_MASK\t\t\t0x00ff0000\n+#define MEDIA_ENT_SUBTYPE_MASK\t\t\t0x0000ffff\n+\n+#define MEDIA_ENT_T_DEVNODE_UNKNOWN\t\t(MEDIA_ENT_F_OLD_BASE | \\\n+\t\t\t\t\t\t MEDIA_ENT_SUBTYPE_MASK)\n+\n+#define MEDIA_ENT_T_DEVNODE\t\t\tMEDIA_ENT_F_OLD_BASE\n+#define MEDIA_ENT_T_DEVNODE_V4L\t\t\tMEDIA_ENT_F_IO_V4L\n+#define MEDIA_ENT_T_DEVNODE_FB\t\t\t(MEDIA_ENT_F_OLD_BASE + 2)\n+#define MEDIA_ENT_T_DEVNODE_ALSA\t\t(MEDIA_ENT_F_OLD_BASE + 3)\n+#define MEDIA_ENT_T_DEVNODE_DVB\t\t\t(MEDIA_ENT_F_OLD_BASE + 4)\n+\n+#define MEDIA_ENT_T_UNKNOWN\t\t\tMEDIA_ENT_F_UNKNOWN\n+#define MEDIA_ENT_T_V4L2_VIDEO\t\t\tMEDIA_ENT_F_IO_V4L\n+#define MEDIA_ENT_T_V4L2_SUBDEV\t\t\tMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN\n+#define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR\t\tMEDIA_ENT_F_CAM_SENSOR\n+#define MEDIA_ENT_T_V4L2_SUBDEV_FLASH\t\tMEDIA_ENT_F_FLASH\n+#define MEDIA_ENT_T_V4L2_SUBDEV_LENS\t\tMEDIA_ENT_F_LENS\n+#define MEDIA_ENT_T_V4L2_SUBDEV_DECODER\t\tMEDIA_ENT_F_ATV_DECODER\n+#define MEDIA_ENT_T_V4L2_SUBDEV_TUNER\t\tMEDIA_ENT_F_TUNER\n+\n+#define MEDIA_ENT_F_DTV_DECODER\t\t\tMEDIA_ENT_F_DV_DECODER\n+\n+/*\n+ * There is still no ALSA support in the media controller. These\n+ * defines should not have been added and we leave them here only\n+ * in case some application tries to use these defines.\n+ */\n+#define MEDIA_INTF_T_ALSA_BASE\t\t\t0x00000300\n+#define MEDIA_INTF_T_ALSA_PCM_CAPTURE\t\t(MEDIA_INTF_T_ALSA_BASE)\n+#define MEDIA_INTF_T_ALSA_PCM_PLAYBACK\t\t(MEDIA_INTF_T_ALSA_BASE + 1)\n+#define MEDIA_INTF_T_ALSA_CONTROL\t\t(MEDIA_INTF_T_ALSA_BASE + 2)\n+#define MEDIA_INTF_T_ALSA_COMPRESS\t\t(MEDIA_INTF_T_ALSA_BASE + 3)\n+#define MEDIA_INTF_T_ALSA_RAWMIDI\t\t(MEDIA_INTF_T_ALSA_BASE + 4)\n+#define MEDIA_INTF_T_ALSA_HWDEP\t\t\t(MEDIA_INTF_T_ALSA_BASE + 5)\n+#define MEDIA_INTF_T_ALSA_SEQUENCER\t\t(MEDIA_INTF_T_ALSA_BASE + 6)\n+#define MEDIA_INTF_T_ALSA_TIMER\t\t\t(MEDIA_INTF_T_ALSA_BASE + 7)\n+\n+/* Obsolete symbol for media_version, no longer used in the kernel */\n+#define MEDIA_API_VERSION\t\t\t((0 << 16) | (1 << 8) | 0)\n+\n+\n+#endif /* __LINUX_MEDIA_H */\n", "prefixes": [ "libcamera-devel", "1/2" ] }