Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 1 | .. -*- coding: utf-8; mode: rst -*- |
| 2 | |
Mauro Carvalho Chehab | af4a4d0 | 2016-07-01 13:42:29 -0300 | [diff] [blame] | 3 | .. _VIDIOC_DBG_G_CHIP_INFO: |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 4 | |
| 5 | **************************** |
| 6 | ioctl VIDIOC_DBG_G_CHIP_INFO |
| 7 | **************************** |
| 8 | |
| 9 | *man VIDIOC_DBG_G_CHIP_INFO(2)* |
| 10 | |
| 11 | Identify the chips on a TV card |
| 12 | |
| 13 | |
| 14 | Synopsis |
| 15 | ======== |
| 16 | |
Mauro Carvalho Chehab | b7e67f6 | 2016-07-02 09:49:16 -0300 | [diff] [blame] | 17 | .. cpp:function:: int ioctl( int fd, int request, struct v4l2_dbg_chip_info *argp ) |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 18 | |
| 19 | Arguments |
| 20 | ========= |
| 21 | |
| 22 | ``fd`` |
| 23 | File descriptor returned by :ref:`open() <func-open>`. |
| 24 | |
| 25 | ``request`` |
| 26 | VIDIOC_DBG_G_CHIP_INFO |
| 27 | |
| 28 | ``argp`` |
| 29 | |
| 30 | |
| 31 | Description |
| 32 | =========== |
| 33 | |
| 34 | **Note** |
| 35 | |
Mauro Carvalho Chehab | 7347081 | 2016-07-01 13:58:44 -0300 | [diff] [blame] | 36 | This is an :ref:`experimental` interface and may |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 37 | change in the future. |
| 38 | |
| 39 | For driver debugging purposes this ioctl allows test applications to |
| 40 | query the driver about the chips present on the TV card. Regular |
| 41 | applications must not use it. When you found a chip specific bug, please |
| 42 | contact the linux-media mailing list |
| 43 | (`https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__) |
| 44 | so it can be fixed. |
| 45 | |
| 46 | Additionally the Linux kernel must be compiled with the |
| 47 | ``CONFIG_VIDEO_ADV_DEBUG`` option to enable this ioctl. |
| 48 | |
| 49 | To query the driver applications must initialize the ``match.type`` and |
| 50 | ``match.addr`` or ``match.name`` fields of a struct |
| 51 | :ref:`v4l2_dbg_chip_info <v4l2-dbg-chip-info>` and call |
Mauro Carvalho Chehab | 2212ff2 | 2016-07-01 14:33:56 -0300 | [diff] [blame] | 52 | :ref:`VIDIOC_DBG_G_CHIP_INFO` with a pointer to this structure. On success |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 53 | the driver stores information about the selected chip in the ``name`` |
| 54 | and ``flags`` fields. |
| 55 | |
| 56 | When ``match.type`` is ``V4L2_CHIP_MATCH_BRIDGE``, ``match.addr`` |
| 57 | selects the nth bridge 'chip' on the TV card. You can enumerate all |
| 58 | chips by starting at zero and incrementing ``match.addr`` by one until |
Mauro Carvalho Chehab | cdb4af0 | 2016-07-03 11:53:09 -0300 | [diff] [blame] | 59 | :ref:`VIDIOC_DBG_G_CHIP_INFO` fails with an ``EINVAL`` error code. The number |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 60 | zero always selects the bridge chip itself, e. g. the chip connected to |
| 61 | the PCI or USB bus. Non-zero numbers identify specific parts of the |
| 62 | bridge chip such as an AC97 register block. |
| 63 | |
| 64 | When ``match.type`` is ``V4L2_CHIP_MATCH_SUBDEV``, ``match.addr`` |
| 65 | selects the nth sub-device. This allows you to enumerate over all |
| 66 | sub-devices. |
| 67 | |
| 68 | On success, the ``name`` field will contain a chip name and the |
| 69 | ``flags`` field will contain ``V4L2_CHIP_FL_READABLE`` if the driver |
| 70 | supports reading registers from the device or ``V4L2_CHIP_FL_WRITABLE`` |
| 71 | if the driver supports writing registers to the device. |
| 72 | |
| 73 | We recommended the v4l2-dbg utility over calling this ioctl directly. It |
| 74 | is available from the LinuxTV v4l-dvb repository; see |
| 75 | `https://linuxtv.org/repo/ <https://linuxtv.org/repo/>`__ for access |
| 76 | instructions. |
| 77 | |
| 78 | |
| 79 | .. _name-v4l2-dbg-match: |
| 80 | |
| 81 | .. flat-table:: struct v4l2_dbg_match |
| 82 | :header-rows: 0 |
| 83 | :stub-columns: 0 |
| 84 | :widths: 1 1 1 2 |
| 85 | |
| 86 | |
| 87 | - .. row 1 |
| 88 | |
| 89 | - __u32 |
| 90 | |
| 91 | - ``type`` |
| 92 | |
| 93 | - See :ref:`name-chip-match-types` for a list of possible types. |
| 94 | |
| 95 | - .. row 2 |
| 96 | |
| 97 | - union |
| 98 | |
| 99 | - (anonymous) |
| 100 | |
| 101 | - .. row 3 |
| 102 | |
| 103 | - |
| 104 | - __u32 |
| 105 | |
| 106 | - ``addr`` |
| 107 | |
| 108 | - Match a chip by this number, interpreted according to the ``type`` |
| 109 | field. |
| 110 | |
| 111 | - .. row 4 |
| 112 | |
| 113 | - |
| 114 | - char |
| 115 | |
| 116 | - ``name[32]`` |
| 117 | |
| 118 | - Match a chip by this name, interpreted according to the ``type`` |
| 119 | field. Currently unused. |
| 120 | |
| 121 | |
| 122 | |
| 123 | .. _v4l2-dbg-chip-info: |
| 124 | |
| 125 | .. flat-table:: struct v4l2_dbg_chip_info |
| 126 | :header-rows: 0 |
| 127 | :stub-columns: 0 |
| 128 | :widths: 1 1 2 |
| 129 | |
| 130 | |
| 131 | - .. row 1 |
| 132 | |
| 133 | - struct v4l2_dbg_match |
| 134 | |
| 135 | - ``match`` |
| 136 | |
| 137 | - How to match the chip, see :ref:`name-v4l2-dbg-match`. |
| 138 | |
| 139 | - .. row 2 |
| 140 | |
| 141 | - char |
| 142 | |
| 143 | - ``name[32]`` |
| 144 | |
| 145 | - The name of the chip. |
| 146 | |
| 147 | - .. row 3 |
| 148 | |
| 149 | - __u32 |
| 150 | |
| 151 | - ``flags`` |
| 152 | |
| 153 | - Set by the driver. If ``V4L2_CHIP_FL_READABLE`` is set, then the |
| 154 | driver supports reading registers from the device. If |
| 155 | ``V4L2_CHIP_FL_WRITABLE`` is set, then it supports writing |
| 156 | registers. |
| 157 | |
| 158 | - .. row 4 |
| 159 | |
| 160 | - __u32 |
| 161 | |
| 162 | - ``reserved[8]`` |
| 163 | |
| 164 | - Reserved fields, both application and driver must set these to 0. |
| 165 | |
| 166 | |
| 167 | |
| 168 | .. _name-chip-match-types: |
| 169 | |
| 170 | .. flat-table:: Chip Match Types |
| 171 | :header-rows: 0 |
| 172 | :stub-columns: 0 |
| 173 | :widths: 3 1 4 |
| 174 | |
| 175 | |
| 176 | - .. row 1 |
| 177 | |
| 178 | - ``V4L2_CHIP_MATCH_BRIDGE`` |
| 179 | |
| 180 | - 0 |
| 181 | |
| 182 | - Match the nth chip on the card, zero for the bridge chip. Does not |
| 183 | match sub-devices. |
| 184 | |
| 185 | - .. row 2 |
| 186 | |
| 187 | - ``V4L2_CHIP_MATCH_SUBDEV`` |
| 188 | |
| 189 | - 4 |
| 190 | |
| 191 | - Match the nth sub-device. |
| 192 | |
| 193 | |
| 194 | |
| 195 | Return Value |
| 196 | ============ |
| 197 | |
| 198 | On success 0 is returned, on error -1 and the ``errno`` variable is set |
| 199 | appropriately. The generic error codes are described at the |
| 200 | :ref:`Generic Error Codes <gen-errors>` chapter. |
| 201 | |
| 202 | EINVAL |
| 203 | The ``match_type`` is invalid or no device could be matched. |