Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux/fpc-iii.git] / Documentation / media / uapi / cec / cec-ioc-adap-g-log-addrs.rst
blob940a16d8d55ec835d869f03d10da877248e0d7c0
1 .. -*- coding: utf-8; mode: rst -*-
3 .. _CEC_ADAP_LOG_ADDRS:
4 .. _CEC_ADAP_G_LOG_ADDRS:
5 .. _CEC_ADAP_S_LOG_ADDRS:
7 ****************************************************
8 ioctls CEC_ADAP_G_LOG_ADDRS and CEC_ADAP_S_LOG_ADDRS
9 ****************************************************
11 Name
12 ====
14 CEC_ADAP_G_LOG_ADDRS, CEC_ADAP_S_LOG_ADDRS - Get or set the logical addresses
17 Synopsis
18 ========
20 .. c:function:: int ioctl( int fd, CEC_ADAP_G_LOG_ADDRS, struct cec_log_addrs *argp )
21    :name: CEC_ADAP_G_LOG_ADDRS
23 .. c:function:: int ioctl( int fd, CEC_ADAP_S_LOG_ADDRS, struct cec_log_addrs *argp )
24    :name: CEC_ADAP_S_LOG_ADDRS
26 Arguments
27 =========
29 ``fd``
30     File descriptor returned by :c:func:`open() <cec-open>`.
32 ``argp``
33     Pointer to struct :c:type:`cec_log_addrs`.
35 Description
36 ===========
38 .. note::
40    This documents the proposed CEC API. This API is not yet finalized
41    and is currently only available as a staging kernel module.
43 To query the current CEC logical addresses, applications call
44 :ref:`ioctl CEC_ADAP_G_LOG_ADDRS <CEC_ADAP_G_LOG_ADDRS>` with a pointer to a
45 struct :c:type:`cec_log_addrs` where the driver stores the logical addresses.
47 To set new logical addresses, applications fill in
48 struct :c:type:`cec_log_addrs` and call :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`
49 with a pointer to this struct. The :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`
50 is only available if ``CEC_CAP_LOG_ADDRS`` is set (the ``ENOTTY`` error code is
51 returned otherwise). The :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`
52 can only be called by a file descriptor in initiator mode (see :ref:`CEC_S_MODE`), if not
53 the ``EBUSY`` error code will be returned.
55 To clear existing logical addresses set ``num_log_addrs`` to 0. All other fields
56 will be ignored in that case. The adapter will go to the unconfigured state.
58 If the physical address is valid (see :ref:`ioctl CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>`),
59 then this ioctl will block until all requested logical
60 addresses have been claimed. If the file descriptor is in non-blocking mode then it will
61 not wait for the logical addresses to be claimed, instead it just returns 0.
63 A :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` event is sent when the
64 logical addresses are claimed or cleared.
66 Attempting to call :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` when
67 logical address types are already defined will return with error ``EBUSY``.
69 .. c:type:: cec_log_addrs
71 .. tabularcolumns:: |p{1.0cm}|p{7.5cm}|p{8.0cm}|
73 .. cssclass:: longtable
75 .. flat-table:: struct cec_log_addrs
76     :header-rows:  0
77     :stub-columns: 0
78     :widths:       1 1 16
81     -  .. row 1
83        -  __u8
85        -  ``log_addr[CEC_MAX_LOG_ADDRS]``
87        -  The actual logical addresses that were claimed. This is set by the
88           driver. If no logical address could be claimed, then it is set to
89           ``CEC_LOG_ADDR_INVALID``. If this adapter is Unregistered, then
90           ``log_addr[0]`` is set to 0xf and all others to
91           ``CEC_LOG_ADDR_INVALID``.
93     -  .. row 2
95        -  __u16
97        -  ``log_addr_mask``
99        -  The bitmask of all logical addresses this adapter has claimed. If
100           this adapter is Unregistered then ``log_addr_mask`` sets bit 15
101           and clears all other bits. If this adapter is not configured at
102           all, then ``log_addr_mask`` is set to 0. Set by the driver.
104     -  .. row 3
106        -  __u8
108        -  ``cec_version``
110        -  The CEC version that this adapter shall use. See
111           :ref:`cec-versions`. Used to implement the
112           ``CEC_MSG_CEC_VERSION`` and ``CEC_MSG_REPORT_FEATURES`` messages.
113           Note that :ref:`CEC_OP_CEC_VERSION_1_3A <CEC-OP-CEC-VERSION-1-3A>` is not allowed by the CEC
114           framework.
116     -  .. row 4
118        -  __u8
120        -  ``num_log_addrs``
122        -  Number of logical addresses to set up. Must be ≤
123           ``available_log_addrs`` as returned by
124           :ref:`CEC_ADAP_G_CAPS`. All arrays in
125           this structure are only filled up to index
126           ``available_log_addrs``-1. The remaining array elements will be
127           ignored. Note that the CEC 2.0 standard allows for a maximum of 2
128           logical addresses, although some hardware has support for more.
129           ``CEC_MAX_LOG_ADDRS`` is 4. The driver will return the actual
130           number of logical addresses it could claim, which may be less than
131           what was requested. If this field is set to 0, then the CEC
132           adapter shall clear all claimed logical addresses and all other
133           fields will be ignored.
135     -  .. row 5
137        -  __u32
139        -  ``vendor_id``
141        -  The vendor ID is a 24-bit number that identifies the specific
142           vendor or entity. Based on this ID vendor specific commands may be
143           defined. If you do not want a vendor ID then set it to
144           ``CEC_VENDOR_ID_NONE``.
146     -  .. row 6
148        -  __u32
150        -  ``flags``
152        -  Flags. See :ref:`cec-log-addrs-flags` for a list of available flags.
154     -  .. row 7
156        -  char
158        -  ``osd_name[15]``
160        -  The On-Screen Display name as is returned by the
161           ``CEC_MSG_SET_OSD_NAME`` message.
163     -  .. row 8
165        -  __u8
167        -  ``primary_device_type[CEC_MAX_LOG_ADDRS]``
169        -  Primary device type for each logical address. See
170           :ref:`cec-prim-dev-types` for possible types.
172     -  .. row 9
174        -  __u8
176        -  ``log_addr_type[CEC_MAX_LOG_ADDRS]``
178        -  Logical address types. See :ref:`cec-log-addr-types` for
179           possible types. The driver will update this with the actual
180           logical address type that it claimed (e.g. it may have to fallback
181           to :ref:`CEC_LOG_ADDR_TYPE_UNREGISTERED <CEC-LOG-ADDR-TYPE-UNREGISTERED>`).
183     -  .. row 10
185        -  __u8
187        -  ``all_device_types[CEC_MAX_LOG_ADDRS]``
189        -  CEC 2.0 specific: the bit mask of all device types. See
190           :ref:`cec-all-dev-types-flags`. It is used in the CEC 2.0
191           ``CEC_MSG_REPORT_FEATURES`` message. For CEC 1.4 you can either leave
192           this field to 0, or fill it in according to the CEC 2.0 guidelines to
193           give the CEC framework more information about the device type, even
194           though the framework won't use it directly in the CEC message.
196     -  .. row 11
198        -  __u8
200        -  ``features[CEC_MAX_LOG_ADDRS][12]``
202        -  Features for each logical address. It is used in the CEC 2.0
203           ``CEC_MSG_REPORT_FEATURES`` message. The 12 bytes include both the
204           RC Profile and the Device Features. For CEC 1.4 you can either leave
205           this field to all 0, or fill it in according to the CEC 2.0 guidelines to
206           give the CEC framework more information about the device type, even
207           though the framework won't use it directly in the CEC message.
209 .. _cec-log-addrs-flags:
211 .. flat-table:: Flags for struct cec_log_addrs
212     :header-rows:  0
213     :stub-columns: 0
214     :widths:       3 1 4
217     -  .. _`CEC-LOG-ADDRS-FL-ALLOW-UNREG-FALLBACK`:
219        -  ``CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK``
221        -  1
223        -  By default if no logical address of the requested type can be claimed, then
224           it will go back to the unconfigured state. If this flag is set, then it will
225           fallback to the Unregistered logical address. Note that if the Unregistered
226           logical address was explicitly requested, then this flag has no effect.
228 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
230 .. _cec-versions:
232 .. flat-table:: CEC Versions
233     :header-rows:  0
234     :stub-columns: 0
235     :widths:       3 1 4
238     -  .. _`CEC-OP-CEC-VERSION-1-3A`:
240        -  ``CEC_OP_CEC_VERSION_1_3A``
242        -  4
244        -  CEC version according to the HDMI 1.3a standard.
246     -  .. _`CEC-OP-CEC-VERSION-1-4B`:
248        -  ``CEC_OP_CEC_VERSION_1_4B``
250        -  5
252        -  CEC version according to the HDMI 1.4b standard.
254     -  .. _`CEC-OP-CEC-VERSION-2-0`:
256        -  ``CEC_OP_CEC_VERSION_2_0``
258        -  6
260        -  CEC version according to the HDMI 2.0 standard.
263 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
265 .. _cec-prim-dev-types:
267 .. flat-table:: CEC Primary Device Types
268     :header-rows:  0
269     :stub-columns: 0
270     :widths:       3 1 4
273     -  .. _`CEC-OP-PRIM-DEVTYPE-TV`:
275        -  ``CEC_OP_PRIM_DEVTYPE_TV``
277        -  0
279        -  Use for a TV.
281     -  .. _`CEC-OP-PRIM-DEVTYPE-RECORD`:
283        -  ``CEC_OP_PRIM_DEVTYPE_RECORD``
285        -  1
287        -  Use for a recording device.
289     -  .. _`CEC-OP-PRIM-DEVTYPE-TUNER`:
291        -  ``CEC_OP_PRIM_DEVTYPE_TUNER``
293        -  3
295        -  Use for a device with a tuner.
297     -  .. _`CEC-OP-PRIM-DEVTYPE-PLAYBACK`:
299        -  ``CEC_OP_PRIM_DEVTYPE_PLAYBACK``
301        -  4
303        -  Use for a playback device.
305     -  .. _`CEC-OP-PRIM-DEVTYPE-AUDIOSYSTEM`:
307        -  ``CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM``
309        -  5
311        -  Use for an audio system (e.g. an audio/video receiver).
313     -  .. _`CEC-OP-PRIM-DEVTYPE-SWITCH`:
315        -  ``CEC_OP_PRIM_DEVTYPE_SWITCH``
317        -  6
319        -  Use for a CEC switch.
321     -  .. _`CEC-OP-PRIM-DEVTYPE-VIDEOPROC`:
323        -  ``CEC_OP_PRIM_DEVTYPE_VIDEOPROC``
325        -  7
327        -  Use for a video processor device.
330 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
332 .. _cec-log-addr-types:
334 .. flat-table:: CEC Logical Address Types
335     :header-rows:  0
336     :stub-columns: 0
337     :widths:       3 1 16
340     -  .. _`CEC-LOG-ADDR-TYPE-TV`:
342        -  ``CEC_LOG_ADDR_TYPE_TV``
344        -  0
346        -  Use for a TV.
348     -  .. _`CEC-LOG-ADDR-TYPE-RECORD`:
350        -  ``CEC_LOG_ADDR_TYPE_RECORD``
352        -  1
354        -  Use for a recording device.
356     -  .. _`CEC-LOG-ADDR-TYPE-TUNER`:
358        -  ``CEC_LOG_ADDR_TYPE_TUNER``
360        -  2
362        -  Use for a tuner device.
364     -  .. _`CEC-LOG-ADDR-TYPE-PLAYBACK`:
366        -  ``CEC_LOG_ADDR_TYPE_PLAYBACK``
368        -  3
370        -  Use for a playback device.
372     -  .. _`CEC-LOG-ADDR-TYPE-AUDIOSYSTEM`:
374        -  ``CEC_LOG_ADDR_TYPE_AUDIOSYSTEM``
376        -  4
378        -  Use for an audio system device.
380     -  .. _`CEC-LOG-ADDR-TYPE-SPECIFIC`:
382        -  ``CEC_LOG_ADDR_TYPE_SPECIFIC``
384        -  5
386        -  Use for a second TV or for a video processor device.
388     -  .. _`CEC-LOG-ADDR-TYPE-UNREGISTERED`:
390        -  ``CEC_LOG_ADDR_TYPE_UNREGISTERED``
392        -  6
394        -  Use this if you just want to remain unregistered. Used for pure
395           CEC switches or CDC-only devices (CDC: Capability Discovery and
396           Control).
400 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
402 .. _cec-all-dev-types-flags:
404 .. flat-table:: CEC All Device Types Flags
405     :header-rows:  0
406     :stub-columns: 0
407     :widths:       3 1 4
410     -  .. _`CEC-OP-ALL-DEVTYPE-TV`:
412        -  ``CEC_OP_ALL_DEVTYPE_TV``
414        -  0x80
416        -  This supports the TV type.
418     -  .. _`CEC-OP-ALL-DEVTYPE-RECORD`:
420        -  ``CEC_OP_ALL_DEVTYPE_RECORD``
422        -  0x40
424        -  This supports the Recording type.
426     -  .. _`CEC-OP-ALL-DEVTYPE-TUNER`:
428        -  ``CEC_OP_ALL_DEVTYPE_TUNER``
430        -  0x20
432        -  This supports the Tuner type.
434     -  .. _`CEC-OP-ALL-DEVTYPE-PLAYBACK`:
436        -  ``CEC_OP_ALL_DEVTYPE_PLAYBACK``
438        -  0x10
440        -  This supports the Playback type.
442     -  .. _`CEC-OP-ALL-DEVTYPE-AUDIOSYSTEM`:
444        -  ``CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM``
446        -  0x08
448        -  This supports the Audio System type.
450     -  .. _`CEC-OP-ALL-DEVTYPE-SWITCH`:
452        -  ``CEC_OP_ALL_DEVTYPE_SWITCH``
454        -  0x04
456        -  This supports the CEC Switch or Video Processing type.
460 Return Value
461 ============
463 On success 0 is returned, on error -1 and the ``errno`` variable is set
464 appropriately. The generic error codes are described at the
465 :ref:`Generic Error Codes <gen-errors>` chapter.