)sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget,/translations/zh_CN/driver-api/media/rc-coremodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/zh_TW/driver-api/media/rc-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/it_IT/driver-api/media/rc-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/ja_JP/driver-api/media/rc-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/ko_KR/driver-api/media/rc-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/sp_SP/driver-api/media/rc-coremodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhF/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core.rsthKubhsection)}(hhh](htitle)}(hRemote Controller devicesh]hRemote Controller devices}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hRemote Controller coreh]hRemote Controller core}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThe remote controller core implements infrastructure to receive and send remote controller keyboard keystrokes and mouse events.h]hThe remote controller core implements infrastructure to receive and send remote controller keyboard keystrokes and mouse events.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hXEvery time a key is pressed on a remote controller, a scan code is produced. Also, on most hardware, keeping a key pressed for more than a few dozens of milliseconds produce a repeat key event. That's somewhat similar to what a normal keyboard or mouse is handled internally on Linux\ [#f1]_. So, the remote controller core is implemented on the top of the linux input/evdev interface.h](hXEvery time a key is pressed on a remote controller, a scan code is produced. Also, on most hardware, keeping a key pressed for more than a few dozens of milliseconds produce a repeat key event. That’s somewhat similar to what a normal keyboard or mouse is handled internally on Linux }(hhhhhNhNubhfootnote_reference)}(h[#f1]_h]h1}(hhhhhNhNubah}(h]id1ah ]h"]h$]h&]autoKrefidf1docnamedriver-api/media/rc-coreuh1hhhresolvedKubh^. So, the remote controller core is implemented on the top of the linux input/evdev interface.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubhfootnote)}(hX The main difference is that, on keyboard events, the keyboard controller produces one event for a key press and another one for key release. On infrared-based remote controllers, there's no key release event. Instead, an extra code is produced to indicate key repeats. h](hlabel)}(hhh]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubh)}(hX The main difference is that, on keyboard events, the keyboard controller produces one event for a key press and another one for key release. On infrared-based remote controllers, there's no key release event. Instead, an extra code is produced to indicate key repeats.h]hXThe main difference is that, on keyboard events, the keyboard controller produces one event for a key press and another one for key release. On infrared-based remote controllers, there’s no key release event. Instead, an extra code is produced to indicate key repeats.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]jah ]h"]f1ah$]h&]hajKjjuh1jhhhKhhhhubh)}(hXHowever, most of the remote controllers use infrared (IR) to transmit signals. As there are several protocols used to modulate infrared signals, one important part of the core is dedicated to adjust the driver and the core system to support the infrared protocol used by the emitter.h]hXHowever, most of the remote controllers use infrared (IR) to transmit signals. As there are several protocols used to modulate infrared signals, one important part of the core is dedicated to adjust the driver and the core system to support the infrared protocol used by the emitter.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hXThe infrared transmission is done by blinking a infrared emitter using a carrier. The carrier can be switched on or off by the IR transmitter hardware. When the carrier is switched on, it is called *PULSE*. When the carrier is switched off, it is called *SPACE*.h](hThe infrared transmission is done by blinking a infrared emitter using a carrier. The carrier can be switched on or off by the IR transmitter hardware. When the carrier is switched on, it is called }(hjKhhhNhNubhemphasis)}(h*PULSE*h]hPULSE}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjKubh1. When the carrier is switched off, it is called }(hjKhhhNhNubjT)}(h*SPACE*h]hSPACE}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jShjKubh.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hIn other words, a typical IR transmission can be viewed as a sequence of *PULSE* and *SPACE* events, each with a given duration.h](hIIn other words, a typical IR transmission can be viewed as a sequence of }(hjhhhNhNubjT)}(h*PULSE*h]hPULSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubh and }(hjhhhNhNubjT)}(h*SPACE*h]hSPACE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubh$ events, each with a given duration.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK$hhhhubh)}(hXThe carrier parameters (frequency, duty cycle) and the intervals for *PULSE* and *SPACE* events depend on the protocol. For example, the NEC protocol uses a carrier of 38kHz, and transmissions start with a 9ms *PULSE* and a 4.5ms SPACE. It then transmits 16 bits of scan code, being 8 bits for address (usually it is a fixed number for a given remote controller), followed by 8 bits of code. A bit "1" is modulated with 560µs *PULSE* followed by 1690µs *SPACE* and a bit "0" is modulated with 560µs *PULSE* followed by 560µs *SPACE*.h](hEThe carrier parameters (frequency, duty cycle) and the intervals for }(hjhhhNhNubjT)}(h*PULSE*h]hPULSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubh and }(hjhhhNhNubjT)}(h*SPACE*h]hSPACE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubhz events depend on the protocol. For example, the NEC protocol uses a carrier of 38kHz, and transmissions start with a 9ms }(hjhhhNhNubjT)}(h*PULSE*h]hPULSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubh and a 4.5ms SPACE. It then transmits 16 bits of scan code, being 8 bits for address (usually it is a fixed number for a given remote controller), followed by 8 bits of code. A bit “1” is modulated with 560µs }(hjhhhNhNubjT)}(h*PULSE*h]hPULSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubh followed by 1690µs }(hjhhhNhNubjT)}(h*SPACE*h]hSPACE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubh- and a bit “0” is modulated with 560µs }(hjhhhNhNubjT)}(h*PULSE*h]hPULSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubh followed by 560µs }(hjhhhNhNubjT)}(h*SPACE*h]hSPACE}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jShjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK'hhhhubh)}(hXAt receiver, a simple low-pass filter can be used to convert the received signal in a sequence of *PULSE/SPACE* events, filtering out the carrier frequency. Due to that, the receiver doesn't care about the carrier's actual frequency parameters: all it has to do is to measure the amount of time it receives *PULSE/SPACE* events. So, a simple IR receiver hardware will just provide a sequence of timings for those events to the Kernel. The drivers for hardware with such kind of receivers are identified by ``RC_DRIVER_IR_RAW``, as defined by :c:type:`rc_driver_type`\ [#f2]_. Other hardware come with a microcontroller that decode the *PULSE/SPACE* sequence and return scan codes to the Kernel. Such kind of receivers are identified by ``RC_DRIVER_SCANCODE``.h](hbAt receiver, a simple low-pass filter can be used to convert the received signal in a sequence of }(hj=hhhNhNubjT)}(h *PULSE/SPACE*h]h PULSE/SPACE}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jShj=ubh events, filtering out the carrier frequency. Due to that, the receiver doesn’t care about the carrier’s actual frequency parameters: all it has to do is to measure the amount of time it receives }(hj=hhhNhNubjT)}(h *PULSE/SPACE*h]h PULSE/SPACE}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jShj=ubh events. So, a simple IR receiver hardware will just provide a sequence of timings for those events to the Kernel. The drivers for hardware with such kind of receivers are identified by }(hj=hhhNhNubhliteral)}(h``RC_DRIVER_IR_RAW``h]hRC_DRIVER_IR_RAW}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj=ubh, as defined by }(hj=hhhNhNubh)}(h:c:type:`rc_driver_type`h]jj)}(hjh]hrc_driver_type}(hjhhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1jihj}ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarn reftargetrc_driver_typeuh1hhhhK0hj=ubh }(hj=hhhNhNubh)}(h[#f2]_h]h2}(hjhhhNhNubah}(h]id2ah ]h"]h$]h&]jKjf2jjuh1hhj=jKubh=. Other hardware come with a microcontroller that decode the }(hj=hhhNhNubjT)}(h *PULSE/SPACE*h]h PULSE/SPACE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jShj=ubhX sequence and return scan codes to the Kernel. Such kind of receivers are identified by }(hj=hhhNhNubjj)}(h``RC_DRIVER_SCANCODE``h]hRC_DRIVER_SCANCODE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj=ubh.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK0hhhhubj)}(hThe RC core also supports devices that have just IR emitters, without any receivers. Right now, all such devices work only in raw TX mode. Such kind of hardware is identified as ``RC_DRIVER_IR_RAW_TX``. h](j)}(hhh]h2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubh)}(hThe RC core also supports devices that have just IR emitters, without any receivers. Right now, all such devices work only in raw TX mode. Such kind of hardware is identified as ``RC_DRIVER_IR_RAW_TX``.h](hThe RC core also supports devices that have just IR emitters, without any receivers. Right now, all such devices work only in raw TX mode. Such kind of hardware is identified as }(hjhhhNhNubjj)}(h``RC_DRIVER_IR_RAW_TX``h]hRC_DRIVER_IR_RAW_TX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK?hjubeh}(h]jah ]h"]f2ah$]h&]jajKjjuh1jhhhK=hhhhubh)}(hWhen the RC core receives events produced by ``RC_DRIVER_IR_RAW`` IR receivers, it needs to decode the IR protocol, in order to obtain the corresponding scan code. The protocols supported by the RC core are defined at enum :c:type:`rc_proto`.h](h-When the RC core receives events produced by }(hjhhhNhNubjj)}(h``RC_DRIVER_IR_RAW``h]hRC_DRIVER_IR_RAW}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh IR receivers, it needs to decode the IR protocol, in order to obtain the corresponding scan code. The protocols supported by the RC core are defined at enum }(hjhhhNhNubh)}(h:c:type:`rc_proto`h]jj)}(hj5h]hrc_proto}(hj7hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jihj3ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjrc_protouh1hhhhKDhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKDhhhhubh)}(hWhen the RC code receives a scan code (either directly, by a driver of the type ``RC_DRIVER_SCANCODE``, or via its IR decoders), it needs to convert into a Linux input event code. This is done via a mapping table.h](hPWhen the RC code receives a scan code (either directly, by a driver of the type }(hj\hhhNhNubjj)}(h``RC_DRIVER_SCANCODE``h]hRC_DRIVER_SCANCODE}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj\ubho, or via its IR decoders), it needs to convert into a Linux input event code. This is done via a mapping table.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKIhhhhubh)}(hThe Kernel has support for mapping tables available on most media devices. It also supports loading a table in runtime, via some sysfs nodes. See the :ref:`RC userspace API ` for more details.h](hThe Kernel has support for mapping tables available on most media devices. It also supports loading a table in runtime, via some sysfs nodes. See the }(hj|hhhNhNubh)}(h2:ref:`RC userspace API `h]hinline)}(hjh]hRC userspace API}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnjremote_controllers_introuh1hhhhKNhj|ubh for more details.}(hj|hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKNhhhhubh)}(hhh](h)}(h/Remote controller data structures and functionsh]h/Remote controller data structures and functions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKTubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlerc_driver_type (C enum)c.rc_driver_typehNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(hrc_driver_typeh]hdesc_signature_line)}(henum rc_driver_typeh](hdesc_sig_keyword)}(henumh]henum}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh desc_name)}(hrc_driver_typeh]h desc_sig_name)}(hjh]hrc_driver_type}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1j hjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h)}(htype of the RC driver.h]htype of the RC driver.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj:hhubah}(h]h ]h"]h$]h&]uh1j8hjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]domainjobjtypejUdesctypejUnoindex noindexentrynocontentsentryuh1jhhhjhNhNubh container)}(hX(**Constants** ``RC_DRIVER_SCANCODE`` Driver or hardware generates a scancode. ``RC_DRIVER_IR_RAW`` Driver or hardware generates pulse/space sequences. It needs a Infra-Red pulse/space decoder ``RC_DRIVER_IR_RAW_TX`` Device transmitter only, driver requires pulse/space data sequence.h](h)}(h **Constants**h]hstrong)}(hjgh]h Constants}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjeubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjaubhdefinition_list)}(hhh](hdefinition_list_item)}(h@``RC_DRIVER_SCANCODE`` Driver or hardware generates a scancode. h](hterm)}(h``RC_DRIVER_SCANCODE``h]jj)}(hjh]hRC_DRIVER_SCANCODE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubh definition)}(hhh]h)}(h(Driver or hardware generates a scancode.h]h(Driver or hardware generates a scancode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hr``RC_DRIVER_IR_RAW`` Driver or hardware generates pulse/space sequences. It needs a Infra-Red pulse/space decoder h](j)}(h``RC_DRIVER_IR_RAW``h]jj)}(hjh]hRC_DRIVER_IR_RAW}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(h\Driver or hardware generates pulse/space sequences. It needs a Infra-Red pulse/space decoderh]h\Driver or hardware generates pulse/space sequences. It needs a Infra-Red pulse/space decoder}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h[``RC_DRIVER_IR_RAW_TX`` Device transmitter only, driver requires pulse/space data sequence.h](j)}(h``RC_DRIVER_IR_RAW_TX``h]jj)}(hjh]hRC_DRIVER_IR_RAW_TX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK!hjubj)}(hhh]h)}(hCDevice transmitter only, driver requires pulse/space data sequence.h]hCDevice transmitter only, driver requires pulse/space data sequence.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK!hjubeh}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_scancode_filter (C struct)c.rc_scancode_filterhNtauh1jhjhhhNhNubj)}(hhh](j)}(hrc_scancode_filterh]j)}(hstruct rc_scancode_filterh](j)}(hstructh]hstruct}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK(ubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXhhhjjhK(ubj)}(hrc_scancode_filterh]j )}(hjVh]hrc_scancode_filter}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjyubah}(h]h ](jj eh"]h$]h&]hhuh1jhjXhhhjjhK(ubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hjThhhjjhK(ubah}(h]jOah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjjhK(hjQhhubj9)}(hhh]h)}(hFilter scan codes.h]hFilter scan codes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK"hjhhubah}(h]h ]h"]h$]h&]uh1j8hjQhhhjjhK(ubeh}(h]h ](jstructeh"]h$]h&]jYjjZjj[jj\j]j^uh1jhhhjhNhNubj`)}(h**Definition**:: struct rc_scancode_filter { u32 data; u32 mask; }; **Members** ``data`` Scancode data to match. ``mask`` Mask of bits of scancode to compare.h](h)}(h**Definition**::h](jj)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK&hjubh literal_block)}(h:struct rc_scancode_filter { u32 data; u32 mask; };h]h:struct rc_scancode_filter { u32 data; u32 mask; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK(hjubh)}(h **Members**h]jj)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK-hjubj)}(hhh](j)}(h!``data`` Scancode data to match. h](j)}(h``data``h]jj)}(hjh]hdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK$hjubj)}(hhh]h)}(hScancode data to match.h]hScancode data to match.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hK$hj$ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj#hK$hjubj)}(h-``mask`` Mask of bits of scancode to compare.h](j)}(h``mask``h]jj)}(hjGh]hmask}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjEubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK$hjAubj)}(hhh]h)}(h$Mask of bits of scancode to compare.h]h$Mask of bits of scancode to compare.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK%hj]ubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhj\hK$hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_filter_type (C enum)c.rc_filter_typehNtauh1jhjhhhNhNubj)}(hhh](j)}(hrc_filter_typeh]j)}(henum rc_filter_typeh](j)}(hjh]henum}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK+ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK+ubj)}(hrc_filter_typeh]j )}(hjh]hrc_filter_type}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ](jj eh"]h$]h&]hhuh1jhjhhhjhK+ubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hjhhhjhK+ubah}(h]jah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjhK+hjhhubj9)}(hhh]h)}(hFilter type constants.h]hFilter type constants.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK,hjhhubah}(h]h ]h"]h$]h&]uh1j8hjhhhjhK+ubeh}(h]h ](jenumeh"]h$]h&]jYjjZjj[jj\j]j^uh1jhhhjhNhNubj`)}(h**Constants** ``RC_FILTER_NORMAL`` Filter for normal operation. ``RC_FILTER_WAKEUP`` Filter for waking from suspend. ``RC_FILTER_MAX`` Number of filter types.h](h)}(h **Constants**h]jj)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK0hjubj)}(hhh](j)}(h2``RC_FILTER_NORMAL`` Filter for normal operation. h](j)}(h``RC_FILTER_NORMAL``h]jj)}(hj$h]hRC_FILTER_NORMAL}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj"ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK3hjubj)}(hhh]h)}(hFilter for normal operation.h]hFilter for normal operation.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hK3hj:ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj9hK3hjubj)}(h5``RC_FILTER_WAKEUP`` Filter for waking from suspend. h](j)}(h``RC_FILTER_WAKEUP``h]jj)}(hj]h]hRC_FILTER_WAKEUP}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj[ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK6hjWubj)}(hhh]h)}(hFilter for waking from suspend.h]hFilter for waking from suspend.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhK6hjsubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjrhK6hjubj)}(h)``RC_FILTER_MAX`` Number of filter types.h](j)}(h``RC_FILTER_MAX``h]jj)}(hjh]h RC_FILTER_MAX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK8hjubj)}(hhh]h)}(hNumber of filter types.h]hNumber of filter types.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK9hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK8hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jlirc_fh (C struct) c.lirc_fhhNtauh1jhjhhhNhNubj)}(hhh](j)}(hlirc_fhh]j)}(hstruct lirc_fhh](j)}(hj^h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK?ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK?ubj)}(hlirc_fhh]j )}(hjh]hlirc_fh}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ](jj eh"]h$]h&]hhuh1jhjhhhjhK?ubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hjhhhjhK?ubah}(h]jah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjhK?hjhhubj9)}(hhh]h)}(hrepresents an open lirc fileh]hrepresents an open lirc file}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK9hj/hhubah}(h]h ]h"]h$]h&]uh1j8hjhhhjhK?ubeh}(h]h ](jstructeh"]h$]h&]jYjjZjJj[jJj\j]j^uh1jhhhjhNhNubj`)}(hX**Definition**:: struct lirc_fh { struct list_head list; struct rc_dev *rc; unsigned int *rawir; struct lirc_scancode *scancodes; wait_queue_head_t wait_poll; u32 carrier_low; u8 send_mode; u8 rec_mode; }; **Members** ``list`` list of open file handles ``rc`` rcdev for this lirc chardev ``rawir`` queue for incoming raw IR ``scancodes`` queue for incoming decoded scancodes ``wait_poll`` poll struct for lirc device ``carrier_low`` when setting the carrier range, first the low end must be set with an ioctl and then the high end with another ioctl ``send_mode`` lirc mode for sending, either LIRC_MODE_SCANCODE or LIRC_MODE_PULSE ``rec_mode`` lirc mode for receiving, either LIRC_MODE_SCANCODE or LIRC_MODE_MODE2h](h)}(h**Definition**::h](jj)}(h**Definition**h]h Definition}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjRubh:}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK=hjNubj)}(hstruct lirc_fh { struct list_head list; struct rc_dev *rc; unsigned int *rawir; struct lirc_scancode *scancodes; wait_queue_head_t wait_poll; u32 carrier_low; u8 send_mode; u8 rec_mode; };h]hstruct lirc_fh { struct list_head list; struct rc_dev *rc; unsigned int *rawir; struct lirc_scancode *scancodes; wait_queue_head_t wait_poll; u32 carrier_low; u8 send_mode; u8 rec_mode; };}hjosbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK?hjNubh)}(h **Members**h]jj)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj~ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKJhjNubj)}(hhh](j)}(h#``list`` list of open file handles h](j)}(h``list``h]jj)}(hjh]hlist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK;hjubj)}(hhh]h)}(hlist of open file handlesh]hlist of open file handles}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK;hjubj)}(h#``rc`` rcdev for this lirc chardev h](j)}(h``rc``h]jj)}(hjh]hrc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjD ubj)}(hhh]h)}(h$queue for incoming decoded scancodesh]h$queue for incoming decoded scancodes}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_ hK>hj` ubah}(h]h ]h"]h$]h&]uh1jhjD ubeh}(h]h ]h"]h$]h&]uh1jhj_ hK>hjubj)}(h*``wait_poll`` poll struct for lirc device h](j)}(h ``wait_poll``h]jj)}(hj h]h wait_poll}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK?hj} ubj)}(hhh]h)}(hpoll struct for lirc deviceh]hpoll struct for lirc device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK?hj ubah}(h]h ]h"]h$]h&]uh1jhj} ubeh}(h]h ]h"]h$]h&]uh1jhj hK?hjubj)}(h``carrier_low`` when setting the carrier range, first the low end must be set with an ioctl and then the high end with another ioctl h](j)}(h``carrier_low``h]jj)}(hj h]h carrier_low}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKAhj ubj)}(hhh]h)}(htwhen setting the carrier range, first the low end must be set with an ioctl and then the high end with another ioctlh]htwhen setting the carrier range, first the low end must be set with an ioctl and then the high end with another ioctl}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK@hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKAhjubj)}(hR``send_mode`` lirc mode for sending, either LIRC_MODE_SCANCODE or LIRC_MODE_PULSE h](j)}(h ``send_mode``h]jj)}(hj h]h send_mode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKChj ubj)}(hhh]h)}(hClirc mode for sending, either LIRC_MODE_SCANCODE or LIRC_MODE_PULSEh]hClirc mode for sending, either LIRC_MODE_SCANCODE or LIRC_MODE_PULSE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKBhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKChjubj)}(hR``rec_mode`` lirc mode for receiving, either LIRC_MODE_SCANCODE or LIRC_MODE_MODE2h](j)}(h ``rec_mode``h]jj)}(hj0 h]hrec_mode}(hj2 hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj. ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKDhj* ubj)}(hhh]h)}(hElirc mode for receiving, either LIRC_MODE_SCANCODE or LIRC_MODE_MODE2h]hElirc mode for receiving, either LIRC_MODE_SCANCODE or LIRC_MODE_MODE2}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjE hKDhjF ubah}(h]h ]h"]h$]h&]uh1jhj* ubeh}(h]h ]h"]h$]h&]uh1jhjE hKDhjubeh}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_dev (C struct)c.rc_devhNtauh1jhjhhhNhNubj)}(hhh](j)}(hrc_devh]j)}(h struct rc_devh](j)}(hj^h]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKKubj)}(hrc_devh]j )}(hj h]hrc_dev}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ](jj eh"]h$]h&]hhuh1jhj hhhj hKKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj hhhj hKKubah}(h]j| ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhj hKKhj~ hhubj9)}(hhh]h)}(h"represents a remote control deviceh]h"represents a remote control device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKRhj hhubah}(h]h ]h"]h$]h&]uh1j8hj~ hhhj hKKubeh}(h]h ](jstructeh"]h$]h&]jYjjZj j[j j\j]j^uh1jhhhjhNhNubj`)}(hX**Definition**:: struct rc_dev { struct device dev; bool managed_alloc; bool registered; bool idle; bool encode_wakeup; unsigned int minor; const struct attribute_group *sysfs_groups[5]; const char *device_name; const char *input_phys; struct input_id input_id; const char *driver_name; const char *map_name; struct rc_map rc_map; struct mutex lock; struct ir_raw_event_ctrl *raw; struct input_dev *input_dev; enum rc_driver_type driver_type; u32 users; u64 allowed_protocols; u64 enabled_protocols; u64 allowed_wakeup_protocols; enum rc_proto wakeup_protocol; struct rc_scancode_filter scancode_filter; struct rc_scancode_filter scancode_wakeup_filter; u32 scancode_mask; void *priv; spinlock_t keylock; bool keypressed; u8 last_toggle; u32 last_keycode; enum rc_proto last_protocol; u64 last_scancode; unsigned long keyup_jiffies; struct timer_list timer_keyup; struct timer_list timer_repeat; u32 timeout; u32 min_timeout; u32 max_timeout; u32 rx_resolution; #ifdef CONFIG_LIRC; struct device lirc_dev; struct cdev lirc_cdev; ktime_t gap_start; spinlock_t lirc_fh_lock; struct list_head lirc_fh; #endif; int (*change_protocol)(struct rc_dev *dev, u64 *rc_proto); int (*open)(struct rc_dev *dev); void (*close)(struct rc_dev *dev); int (*s_tx_mask)(struct rc_dev *dev, u32 mask); int (*s_tx_carrier)(struct rc_dev *dev, u32 carrier); int (*s_tx_duty_cycle)(struct rc_dev *dev, u32 duty_cycle); int (*s_rx_carrier_range)(struct rc_dev *dev, u32 min, u32 max); int (*tx_ir)(struct rc_dev *dev, unsigned *txbuf, unsigned n); void (*s_idle)(struct rc_dev *dev, bool enable); int (*s_wideband_receiver)(struct rc_dev *dev, int enable); int (*s_carrier_report) (struct rc_dev *dev, int enable); int (*s_filter)(struct rc_dev *dev, struct rc_scancode_filter *filter); int (*s_wakeup_filter)(struct rc_dev *dev, struct rc_scancode_filter *filter); int (*s_timeout)(struct rc_dev *dev, unsigned int timeout); }; **Members** ``dev`` driver model's view of this device ``managed_alloc`` devm_rc_allocate_device was used to create rc_dev ``registered`` set to true by rc_register_device(), false by rc_unregister_device ``idle`` used to keep track of RX state ``encode_wakeup`` wakeup filtering uses IR encode API, therefore the allowed wakeup protocols is the set of all raw encoders ``minor`` unique minor remote control device number ``sysfs_groups`` sysfs attribute groups ``device_name`` name of the rc child device ``input_phys`` physical path to the input child device ``input_id`` id of the input child device (struct input_id) ``driver_name`` name of the hardware driver which registered this device ``map_name`` name of the default keymap ``rc_map`` current scan/key table ``lock`` used to ensure we've filled in all protocol details before anyone can call show_protocols or store_protocols ``raw`` additional data for raw pulse/space devices ``input_dev`` the input child device used to communicate events to userspace ``driver_type`` specifies if protocol decoding is done in hardware or software ``users`` number of current users of the device ``allowed_protocols`` bitmask with the supported RC_PROTO_BIT_* protocols ``enabled_protocols`` bitmask with the enabled RC_PROTO_BIT_* protocols ``allowed_wakeup_protocols`` bitmask with the supported RC_PROTO_BIT_* wakeup protocols ``wakeup_protocol`` the enabled RC_PROTO_* wakeup protocol or RC_PROTO_UNKNOWN if disabled. ``scancode_filter`` scancode filter ``scancode_wakeup_filter`` scancode wakeup filters ``scancode_mask`` some hardware decoders are not capable of providing the full scancode to the application. As this is a hardware limit, we can't do anything with it. Yet, as the same keycode table can be used with other devices, a mask is provided to allow its usage. Drivers should generally leave this field in blank ``priv`` driver-specific data ``keylock`` protects the remaining members of the struct ``keypressed`` whether a key is currently pressed ``last_toggle`` toggle value of last command ``last_keycode`` keycode of last keypress ``last_protocol`` protocol of last keypress ``last_scancode`` scancode of last keypress ``keyup_jiffies`` time (in jiffies) when the current keypress should be released ``timer_keyup`` timer for releasing a keypress ``timer_repeat`` timer for autorepeat events. This is needed for CEC, which has non-standard repeats. ``timeout`` optional time after which device stops sending data ``min_timeout`` minimum timeout supported by device ``max_timeout`` maximum timeout supported by device ``rx_resolution`` resolution (in us) of input sampler ``lirc_dev`` lirc device ``lirc_cdev`` lirc char cdev ``gap_start`` start time for gap after timeout if non-zero ``lirc_fh_lock`` protects lirc_fh list ``lirc_fh`` list of open files ``change_protocol`` allow changing the protocol used on hardware decoders ``open`` callback to allow drivers to enable polling/irq when IR input device is opened. ``close`` callback to allow drivers to disable polling/irq when IR input device is opened. ``s_tx_mask`` set transmitter mask (for devices with multiple tx outputs) ``s_tx_carrier`` set transmit carrier frequency ``s_tx_duty_cycle`` set transmit duty cycle (0% - 100%) ``s_rx_carrier_range`` inform driver about carrier it is expected to handle ``tx_ir`` transmit IR ``s_idle`` enable/disable hardware idle mode, upon which, device doesn't interrupt host until it sees IR pulses ``s_wideband_receiver`` enable wide band receiver used for learning ``s_carrier_report`` enable carrier reports ``s_filter`` set the scancode filter ``s_wakeup_filter`` set the wakeup scancode filter. If the mask is zero then wakeup should be disabled. wakeup_protocol will be set to a valid protocol if mask is nonzero. ``s_timeout`` set hardware timeout in ush](h)}(h**Definition**::h](jj)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKVhj ubj)}(hX struct rc_dev { struct device dev; bool managed_alloc; bool registered; bool idle; bool encode_wakeup; unsigned int minor; const struct attribute_group *sysfs_groups[5]; const char *device_name; const char *input_phys; struct input_id input_id; const char *driver_name; const char *map_name; struct rc_map rc_map; struct mutex lock; struct ir_raw_event_ctrl *raw; struct input_dev *input_dev; enum rc_driver_type driver_type; u32 users; u64 allowed_protocols; u64 enabled_protocols; u64 allowed_wakeup_protocols; enum rc_proto wakeup_protocol; struct rc_scancode_filter scancode_filter; struct rc_scancode_filter scancode_wakeup_filter; u32 scancode_mask; void *priv; spinlock_t keylock; bool keypressed; u8 last_toggle; u32 last_keycode; enum rc_proto last_protocol; u64 last_scancode; unsigned long keyup_jiffies; struct timer_list timer_keyup; struct timer_list timer_repeat; u32 timeout; u32 min_timeout; u32 max_timeout; u32 rx_resolution; #ifdef CONFIG_LIRC; struct device lirc_dev; struct cdev lirc_cdev; ktime_t gap_start; spinlock_t lirc_fh_lock; struct list_head lirc_fh; #endif; int (*change_protocol)(struct rc_dev *dev, u64 *rc_proto); int (*open)(struct rc_dev *dev); void (*close)(struct rc_dev *dev); int (*s_tx_mask)(struct rc_dev *dev, u32 mask); int (*s_tx_carrier)(struct rc_dev *dev, u32 carrier); int (*s_tx_duty_cycle)(struct rc_dev *dev, u32 duty_cycle); int (*s_rx_carrier_range)(struct rc_dev *dev, u32 min, u32 max); int (*tx_ir)(struct rc_dev *dev, unsigned *txbuf, unsigned n); void (*s_idle)(struct rc_dev *dev, bool enable); int (*s_wideband_receiver)(struct rc_dev *dev, int enable); int (*s_carrier_report) (struct rc_dev *dev, int enable); int (*s_filter)(struct rc_dev *dev, struct rc_scancode_filter *filter); int (*s_wakeup_filter)(struct rc_dev *dev, struct rc_scancode_filter *filter); int (*s_timeout)(struct rc_dev *dev, unsigned int timeout); };h]hX struct rc_dev { struct device dev; bool managed_alloc; bool registered; bool idle; bool encode_wakeup; unsigned int minor; const struct attribute_group *sysfs_groups[5]; const char *device_name; const char *input_phys; struct input_id input_id; const char *driver_name; const char *map_name; struct rc_map rc_map; struct mutex lock; struct ir_raw_event_ctrl *raw; struct input_dev *input_dev; enum rc_driver_type driver_type; u32 users; u64 allowed_protocols; u64 enabled_protocols; u64 allowed_wakeup_protocols; enum rc_proto wakeup_protocol; struct rc_scancode_filter scancode_filter; struct rc_scancode_filter scancode_wakeup_filter; u32 scancode_mask; void *priv; spinlock_t keylock; bool keypressed; u8 last_toggle; u32 last_keycode; enum rc_proto last_protocol; u64 last_scancode; unsigned long keyup_jiffies; struct timer_list timer_keyup; struct timer_list timer_repeat; u32 timeout; u32 min_timeout; u32 max_timeout; u32 rx_resolution; #ifdef CONFIG_LIRC; struct device lirc_dev; struct cdev lirc_cdev; ktime_t gap_start; spinlock_t lirc_fh_lock; struct list_head lirc_fh; #endif; int (*change_protocol)(struct rc_dev *dev, u64 *rc_proto); int (*open)(struct rc_dev *dev); void (*close)(struct rc_dev *dev); int (*s_tx_mask)(struct rc_dev *dev, u32 mask); int (*s_tx_carrier)(struct rc_dev *dev, u32 carrier); int (*s_tx_duty_cycle)(struct rc_dev *dev, u32 duty_cycle); int (*s_rx_carrier_range)(struct rc_dev *dev, u32 min, u32 max); int (*tx_ir)(struct rc_dev *dev, unsigned *txbuf, unsigned n); void (*s_idle)(struct rc_dev *dev, bool enable); int (*s_wideband_receiver)(struct rc_dev *dev, int enable); int (*s_carrier_report) (struct rc_dev *dev, int enable); int (*s_filter)(struct rc_dev *dev, struct rc_scancode_filter *filter); int (*s_wakeup_filter)(struct rc_dev *dev, struct rc_scancode_filter *filter); int (*s_timeout)(struct rc_dev *dev, unsigned int timeout); };}hj sbah}(h]h ]h"]h$]h&]hhuh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKXhj ubh)}(h **Members**h]jj)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj ubj)}(hhh](j)}(h+``dev`` driver model's view of this device h](j)}(h``dev``h]jj)}(hj8 h]hdev}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj6 ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKThj2 ubj)}(hhh]h)}(h"driver model's view of this deviceh]h$driver model’s view of this device}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjM hKThjN ubah}(h]h ]h"]h$]h&]uh1jhj2 ubeh}(h]h ]h"]h$]h&]uh1jhjM hKThj/ ubj)}(hD``managed_alloc`` devm_rc_allocate_device was used to create rc_dev h](j)}(h``managed_alloc``h]jj)}(hjq h]h managed_alloc}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjo ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKUhjk ubj)}(hhh]h)}(h1devm_rc_allocate_device was used to create rc_devh]h1devm_rc_allocate_device was used to create rc_dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKUhj ubah}(h]h ]h"]h$]h&]uh1jhjk ubeh}(h]h ]h"]h$]h&]uh1jhj hKUhj/ ubj)}(hR``registered`` set to true by rc_register_device(), false by rc_unregister_device h](j)}(h``registered``h]jj)}(hj h]h registered}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKWhj ubj)}(hhh]h)}(hBset to true by rc_register_device(), false by rc_unregister_deviceh]hBset to true by rc_register_device(), false by rc_unregister_device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKVhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKWhj/ ubj)}(h(``idle`` used to keep track of RX state h](j)}(h``idle``h]jj)}(hj h]hidle}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKXhj ubj)}(hhh]h)}(hused to keep track of RX stateh]hused to keep track of RX state}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKXhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKXhj/ ubj)}(h}``encode_wakeup`` wakeup filtering uses IR encode API, therefore the allowed wakeup protocols is the set of all raw encoders h](j)}(h``encode_wakeup``h]jj)}(hj h]h encode_wakeup}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKZhj ubj)}(hhh]h)}(hjwakeup filtering uses IR encode API, therefore the allowed wakeup protocols is the set of all raw encodersh]hjwakeup filtering uses IR encode API, therefore the allowed wakeup protocols is the set of all raw encoders}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKYhj3 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj2 hKZhj/ ubj)}(h4``minor`` unique minor remote control device number h](j)}(h ``minor``h]jj)}(hjW h]hminor}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjU ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK[hjQ ubj)}(hhh]h)}(h)unique minor remote control device numberh]h)unique minor remote control device number}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjl hK[hjm ubah}(h]h ]h"]h$]h&]uh1jhjQ ubeh}(h]h ]h"]h$]h&]uh1jhjl hK[hj/ ubj)}(h(``sysfs_groups`` sysfs attribute groups h](j)}(h``sysfs_groups``h]jj)}(hj h]h sysfs_groups}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK\hj ubj)}(hhh]h)}(hsysfs attribute groupsh]hsysfs attribute groups}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK\hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hK\hj/ ubj)}(h,``device_name`` name of the rc child device h](j)}(h``device_name``h]jj)}(hj h]h device_name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK]hj ubj)}(hhh]h)}(hname of the rc child deviceh]hname of the rc child device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK]hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hK]hj/ ubj)}(h7``input_phys`` physical path to the input child device h](j)}(h``input_phys``h]jj)}(hj h]h input_phys}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK^hj ubj)}(hhh]h)}(h'physical path to the input child deviceh]h'physical path to the input child device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK^hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hK^hj/ ubj)}(h<``input_id`` id of the input child device (struct input_id) h](j)}(h ``input_id``h]jj)}(hj; h]hinput_id}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj9 ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK_hj5 ubj)}(hhh]h)}(h.id of the input child device (struct input_id)h]h.id of the input child device (struct input_id)}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP hK_hjQ ubah}(h]h ]h"]h$]h&]uh1jhj5 ubeh}(h]h ]h"]h$]h&]uh1jhjP hK_hj/ ubj)}(hI``driver_name`` name of the hardware driver which registered this device h](j)}(h``driver_name``h]jj)}(hjt h]h driver_name}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjr ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK`hjn ubj)}(hhh]h)}(h8name of the hardware driver which registered this deviceh]h8name of the hardware driver which registered this device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK`hj ubah}(h]h ]h"]h$]h&]uh1jhjn ubeh}(h]h ]h"]h$]h&]uh1jhj hK`hj/ ubj)}(h(``map_name`` name of the default keymap h](j)}(h ``map_name``h]jj)}(hj h]hmap_name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKahj ubj)}(hhh]h)}(hname of the default keymaph]hname of the default keymap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKahj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKahj/ ubj)}(h"``rc_map`` current scan/key table h](j)}(h ``rc_map``h]jj)}(hj h]hrc_map}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKbhj ubj)}(hhh]h)}(hcurrent scan/key tableh]hcurrent scan/key table}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKbhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKbhj/ ubj)}(hv``lock`` used to ensure we've filled in all protocol details before anyone can call show_protocols or store_protocols h](j)}(h``lock``h]jj)}(hjh]hlock}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKdhjubj)}(hhh]h)}(hlused to ensure we've filled in all protocol details before anyone can call show_protocols or store_protocolsh]hnused to ensure we’ve filled in all protocol details before anyone can call show_protocols or store_protocols}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKchj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hKdhj/ ubj)}(h4``raw`` additional data for raw pulse/space devices h](j)}(h``raw``h]jj)}(hjYh]hraw}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjWubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKehjSubj)}(hhh]h)}(h+additional data for raw pulse/space devicesh]h+additional data for raw pulse/space devices}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhKehjoubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jhjnhKehj/ ubj)}(hM``input_dev`` the input child device used to communicate events to userspace h](j)}(h ``input_dev``h]jj)}(hjh]h input_dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKfhjubj)}(hhh]h)}(h>the input child device used to communicate events to userspaceh]h>the input child device used to communicate events to userspace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKfhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKfhj/ ubj)}(hO``driver_type`` specifies if protocol decoding is done in hardware or software h](j)}(h``driver_type``h]jj)}(hjh]h driver_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKghjubj)}(hhh]h)}(h>specifies if protocol decoding is done in hardware or softwareh]h>specifies if protocol decoding is done in hardware or software}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKghjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKghj/ ubj)}(h0``users`` number of current users of the device h](j)}(h ``users``h]jj)}(hjh]husers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhhjubj)}(hhh]h)}(h%number of current users of the deviceh]h%number of current users of the device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhhj/ ubj)}(hJ``allowed_protocols`` bitmask with the supported RC_PROTO_BIT_* protocols h](j)}(h``allowed_protocols``h]jj)}(hj=h]hallowed_protocols}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj;ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKihj7ubj)}(hhh]h)}(h3bitmask with the supported RC_PROTO_BIT_* protocolsh]h3bitmask with the supported RC_PROTO_BIT_* protocols}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKihjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhKihj/ ubj)}(hH``enabled_protocols`` bitmask with the enabled RC_PROTO_BIT_* protocols h](j)}(h``enabled_protocols``h]jj)}(hjvh]henabled_protocols}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjtubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKjhjpubj)}(hhh]h)}(h1bitmask with the enabled RC_PROTO_BIT_* protocolsh]h1bitmask with the enabled RC_PROTO_BIT_* protocols}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKjhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhKjhj/ ubj)}(hX``allowed_wakeup_protocols`` bitmask with the supported RC_PROTO_BIT_* wakeup protocols h](j)}(h``allowed_wakeup_protocols``h]jj)}(hjh]hallowed_wakeup_protocols}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKlhjubj)}(hhh]h)}(h:bitmask with the supported RC_PROTO_BIT_* wakeup protocolsh]h:bitmask with the supported RC_PROTO_BIT_* wakeup protocols}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKkhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKlhj/ ubj)}(h\``wakeup_protocol`` the enabled RC_PROTO_* wakeup protocol or RC_PROTO_UNKNOWN if disabled. h](j)}(h``wakeup_protocol``h]jj)}(hjh]hwakeup_protocol}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKnhjubj)}(hhh]h)}(hGthe enabled RC_PROTO_* wakeup protocol or RC_PROTO_UNKNOWN if disabled.h]hGthe enabled RC_PROTO_* wakeup protocol or RC_PROTO_UNKNOWN if disabled.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKnhj/ ubj)}(h$``scancode_filter`` scancode filter h](j)}(h``scancode_filter``h]jj)}(hj#h]hscancode_filter}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj!ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKohjubj)}(hhh]h)}(hscancode filterh]hscancode filter}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKohj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj8hKohj/ ubj)}(h3``scancode_wakeup_filter`` scancode wakeup filters h](j)}(h``scancode_wakeup_filter``h]jj)}(hj\h]hscancode_wakeup_filter}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjZubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKphjVubj)}(hhh]h)}(hscancode wakeup filtersh]hscancode wakeup filters}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhKphjrubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhjqhKphj/ ubj)}(hX@``scancode_mask`` some hardware decoders are not capable of providing the full scancode to the application. As this is a hardware limit, we can't do anything with it. Yet, as the same keycode table can be used with other devices, a mask is provided to allow its usage. Drivers should generally leave this field in blank h](j)}(h``scancode_mask``h]jj)}(hjh]h scancode_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKuhjubj)}(hhh]h)}(hX-some hardware decoders are not capable of providing the full scancode to the application. As this is a hardware limit, we can't do anything with it. Yet, as the same keycode table can be used with other devices, a mask is provided to allow its usage. Drivers should generally leave this field in blankh]hX/some hardware decoders are not capable of providing the full scancode to the application. As this is a hardware limit, we can’t do anything with it. Yet, as the same keycode table can be used with other devices, a mask is provided to allow its usage. Drivers should generally leave this field in blank}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKqhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKuhj/ ubj)}(h``priv`` driver-specific data h](j)}(h``priv``h]jj)}(hjh]hpriv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKvhjubj)}(hhh]h)}(hdriver-specific datah]hdriver-specific data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKvhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKvhj/ ubj)}(h9``keylock`` protects the remaining members of the struct h](j)}(h ``keylock``h]jj)}(hjh]hkeylock}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKwhjubj)}(hhh]h)}(h,protects the remaining members of the structh]h,protects the remaining members of the struct}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKwhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKwhj/ ubj)}(h2``keypressed`` whether a key is currently pressed h](j)}(h``keypressed``h]jj)}(hjAh]h keypressed}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jihj?ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKxhj;ubj)}(hhh]h)}(h"whether a key is currently pressedh]h"whether a key is currently pressed}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKxhjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhKxhj/ ubj)}(h-``last_toggle`` toggle value of last command h](j)}(h``last_toggle``h]jj)}(hjzh]h last_toggle}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjxubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKyhjtubj)}(hhh]h)}(htoggle value of last commandh]htoggle value of last command}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKyhjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhKyhj/ ubj)}(h*``last_keycode`` keycode of last keypress h](j)}(h``last_keycode``h]jj)}(hjh]h last_keycode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKzhjubj)}(hhh]h)}(hkeycode of last keypressh]hkeycode of last keypress}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKzhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKzhj/ ubj)}(h,``last_protocol`` protocol of last keypress h](j)}(h``last_protocol``h]jj)}(hjh]h last_protocol}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK{hjubj)}(hhh]h)}(hprotocol of last keypressh]hprotocol of last keypress}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK{hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK{hj/ ubj)}(h,``last_scancode`` scancode of last keypress h](j)}(h``last_scancode``h]jj)}(hj%h]h last_scancode}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj#ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK|hjubj)}(hhh]h)}(hscancode of last keypressh]hscancode of last keypress}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hK|hj;ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj:hK|hj/ ubj)}(hQ``keyup_jiffies`` time (in jiffies) when the current keypress should be released h](j)}(h``keyup_jiffies``h]jj)}(hj^h]h keyup_jiffies}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj\ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK}hjXubj)}(hhh]h)}(h>time (in jiffies) when the current keypress should be releasedh]h>time (in jiffies) when the current keypress should be released}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshK}hjtubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhjshK}hj/ ubj)}(h/``timer_keyup`` timer for releasing a keypress h](j)}(h``timer_keyup``h]jj)}(hjh]h timer_keyup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhK~hjubj)}(hhh]h)}(htimer for releasing a keypressh]htimer for releasing a keypress}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK~hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK~hj/ ubj)}(hf``timer_repeat`` timer for autorepeat events. This is needed for CEC, which has non-standard repeats. h](j)}(h``timer_repeat``h]jj)}(hjh]h timer_repeat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(hTtimer for autorepeat events. This is needed for CEC, which has non-standard repeats.h]hTtimer for autorepeat events. This is needed for CEC, which has non-standard repeats.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h@``timeout`` optional time after which device stops sending data h](j)}(h ``timeout``h]jj)}(hj h]htimeout}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(h3optional time after which device stops sending datah]h3optional time after which device stops sending data}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h4``min_timeout`` minimum timeout supported by device h](j)}(h``min_timeout``h]jj)}(hjCh]h min_timeout}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjAubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj=ubj)}(hhh]h)}(h#minimum timeout supported by deviceh]h#minimum timeout supported by device}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhKhjYubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhKhj/ ubj)}(h4``max_timeout`` maximum timeout supported by device h](j)}(h``max_timeout``h]jj)}(hj|h]h max_timeout}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjzubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjvubj)}(hhh]h)}(h#maximum timeout supported by deviceh]h#maximum timeout supported by device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h6``rx_resolution`` resolution (in us) of input sampler h](j)}(h``rx_resolution``h]jj)}(hjh]h rx_resolution}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(h#resolution (in us) of input samplerh]h#resolution (in us) of input sampler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h``lirc_dev`` lirc device h](j)}(h ``lirc_dev``h]jj)}(hjh]hlirc_dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(h lirc deviceh]h lirc device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h``lirc_cdev`` lirc char cdev h](j)}(h ``lirc_cdev``h]jj)}(hj'h]h lirc_cdev}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj%ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj!ubj)}(hhh]h)}(hlirc char cdevh]hlirc char cdev}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKhj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hKhj/ ubj)}(h;``gap_start`` start time for gap after timeout if non-zero h](j)}(h ``gap_start``h]jj)}(hj`h]h gap_start}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj^ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjZubj)}(hhh]h)}(h,start time for gap after timeout if non-zeroh]h,start time for gap after timeout if non-zero}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhKhjvubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjuhKhj/ ubj)}(h'``lirc_fh_lock`` protects lirc_fh list h](j)}(h``lirc_fh_lock``h]jj)}(hjh]h lirc_fh_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(hprotects lirc_fh listh]hprotects lirc_fh list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h``lirc_fh`` list of open files h](j)}(h ``lirc_fh``h]jj)}(hjh]hlirc_fh}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(hlist of open filesh]hlist of open files}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(hJ``change_protocol`` allow changing the protocol used on hardware decoders h](j)}(h``change_protocol``h]jj)}(hj h]hchange_protocol}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(h5allow changing the protocol used on hardware decodersh]h5allow changing the protocol used on hardware decoders}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj!ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhj/ ubj)}(hY``open`` callback to allow drivers to enable polling/irq when IR input device is opened. h](j)}(h``open``h]jj)}(hjDh]hopen}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjBubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj>ubj)}(hhh]h)}(hOcallback to allow drivers to enable polling/irq when IR input device is opened.h]hOcallback to allow drivers to enable polling/irq when IR input device is opened.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjZubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhjYhKhj/ ubj)}(h[``close`` callback to allow drivers to disable polling/irq when IR input device is opened. h](j)}(h ``close``h]jj)}(hj~h]hclose}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj|ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjxubj)}(hhh]h)}(hPcallback to allow drivers to disable polling/irq when IR input device is opened.h]hPcallback to allow drivers to disable polling/irq when IR input device is opened.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(hJ``s_tx_mask`` set transmitter mask (for devices with multiple tx outputs) h](j)}(h ``s_tx_mask``h]jj)}(hjh]h s_tx_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(h;set transmitter mask (for devices with multiple tx outputs)h]h;set transmitter mask (for devices with multiple tx outputs)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h0``s_tx_carrier`` set transmit carrier frequency h](j)}(h``s_tx_carrier``h]jj)}(hjh]h s_tx_carrier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(hset transmit carrier frequencyh]hset transmit carrier frequency}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h8``s_tx_duty_cycle`` set transmit duty cycle (0% - 100%) h](j)}(h``s_tx_duty_cycle``h]jj)}(hj*h]hs_tx_duty_cycle}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj(ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj$ubj)}(hhh]h)}(h#set transmit duty cycle (0% - 100%)h]h#set transmit duty cycle (0% - 100%)}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hKhj@ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj?hKhj/ ubj)}(hL``s_rx_carrier_range`` inform driver about carrier it is expected to handle h](j)}(h``s_rx_carrier_range``h]jj)}(hjch]hs_rx_carrier_range}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jihjaubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj]ubj)}(hhh]h)}(h4inform driver about carrier it is expected to handleh]h4inform driver about carrier it is expected to handle}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhKhjyubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1jhjxhKhj/ ubj)}(h``tx_ir`` transmit IR h](j)}(h ``tx_ir``h]jj)}(hjh]htx_ir}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(h transmit IRh]h transmit IR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(hp``s_idle`` enable/disable hardware idle mode, upon which, device doesn't interrupt host until it sees IR pulses h](j)}(h ``s_idle``h]jj)}(hjh]hs_idle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(hdenable/disable hardware idle mode, upon which, device doesn't interrupt host until it sees IR pulsesh]hfenable/disable hardware idle mode, upon which, device doesn’t interrupt host until it sees IR pulses}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(hD``s_wideband_receiver`` enable wide band receiver used for learning h](j)}(h``s_wideband_receiver``h]jj)}(hjh]hs_wideband_receiver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj ubj)}(hhh]h)}(h+enable wide band receiver used for learningh]h+enable wide band receiver used for learning}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj%ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhj/ ubj)}(h,``s_carrier_report`` enable carrier reports h](j)}(h``s_carrier_report``h]jj)}(hjHh]hs_carrier_report}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjFubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjBubj)}(hhh]h)}(henable carrier reportsh]henable carrier reports}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hKhj^ubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhj]hKhj/ ubj)}(h%``s_filter`` set the scancode filter h](j)}(h ``s_filter``h]jj)}(hjh]hs_filter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj{ubj)}(hhh]h)}(hset the scancode filterh]hset the scancode filter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h``s_wakeup_filter`` set the wakeup scancode filter. If the mask is zero then wakeup should be disabled. wakeup_protocol will be set to a valid protocol if mask is nonzero. h](j)}(h``s_wakeup_filter``h]jj)}(hjh]hs_wakeup_filter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(hset the wakeup scancode filter. If the mask is zero then wakeup should be disabled. wakeup_protocol will be set to a valid protocol if mask is nonzero.h]hset the wakeup scancode filter. If the mask is zero then wakeup should be disabled. wakeup_protocol will be set to a valid protocol if mask is nonzero.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj/ ubj)}(h(``s_timeout`` set hardware timeout in ush](j)}(h ``s_timeout``h]jj)}(hjh]h s_timeout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(hset hardware timeout in ush]hset hardware timeout in us}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhj/ ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_allocate_device (C function)c.rc_allocate_devicehNtauh1jhjhhhNhNubj)}(hhh](j)}(h8struct rc_dev * rc_allocate_device (enum rc_driver_type)h]j)}(h6struct rc_dev *rc_allocate_device(enum rc_driver_type)h](j)}(hj^h]hstruct}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKubj)}(h h]h }(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJhhhj[hKubh)}(hhh]j )}(hrc_devh]hrc_dev}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjomodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jrc_allocate_devicesbc.rc_allocate_deviceasbuh1hhjJhhhj[hKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJhhhj[hKubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjJhhhj[hKubj)}(hrc_allocate_deviceh]j )}(hjh]hrc_allocate_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ](jj eh"]h$]h&]hhuh1jhjJhhhj[hKubhdesc_parameterlist)}(h(enum rc_driver_type)h]hdesc_parameter)}(henum rc_driver_typeh](j)}(hjh]henum}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(hrc_driver_typeh]hrc_driver_type}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.rc_allocate_deviceasbuh1hhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjJhhhj[hKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hjFhhhj[hKubah}(h]jAah ](j0j1eh"]h$]h&]j5j6)j7huh1jhj[hKhjChhubj9)}(hhh]h)}(hAllocates a RC deviceh]hAllocates a RC device}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj-hhubah}(h]h ]h"]h$]h&]uh1j8hjChhhj[hKubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZjHj[jHj\j]j^uh1jhhhjhNhNubj`)}(h**Parameters** ``enum rc_driver_type`` specifies the type of the RC output to be allocated returns a pointer to struct rc_dev.h](h)}(h**Parameters**h]jj)}(hjRh]h Parameters}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jihjPubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjLubj)}(hhh]j)}(ho``enum rc_driver_type`` specifies the type of the RC output to be allocated returns a pointer to struct rc_dev.h](j)}(h``enum rc_driver_type``h]jj)}(hjqh]henum rc_driver_type}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jihjoubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjkubj)}(hhh]h)}(hWspecifies the type of the RC output to be allocated returns a pointer to struct rc_dev.h]hWspecifies the type of the RC output to be allocated returns a pointer to struct rc_dev.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjhKhjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$devm_rc_allocate_device (C function)c.devm_rc_allocate_devicehNtauh1jhjhhhNhNubj)}(hhh](j)}(hQstruct rc_dev * devm_rc_allocate_device (struct device *dev, enum rc_driver_type)h]j)}(hOstruct rc_dev *devm_rc_allocate_device(struct device *dev, enum rc_driver_type)h](j)}(hj^h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubh)}(hhh]j )}(hrc_devh]hrc_dev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jdevm_rc_allocate_devicesbc.devm_rc_allocate_deviceasbuh1hhjhhhjhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hdevm_rc_allocate_deviceh]j )}(hjh]hdevm_rc_allocate_device}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj%ubah}(h]h ](jj eh"]h$]h&]hhuh1jhjhhhjhKubj)}(h)(struct device *dev, enum rc_driver_type)h](j)}(hstruct device *devh](j)}(hj^h]hstruct}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(h h]h }(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubh)}(hhh]j )}(hdeviceh]hdevice}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]jc.devm_rc_allocate_deviceasbuh1hhj@ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj )}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubj)}(henum rc_driver_typeh](j)}(hjh]henum}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(hrc_driver_typeh]hrc_driver_type}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.devm_rc_allocate_deviceasbuh1hhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hjhhhjhKubah}(h]jah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjhKhjhhubj9)}(hhh]h)}(hManaged RC device allocationh]hManaged RC device allocation}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj hhubah}(h]h ]h"]h$]h&]uh1j8hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZj$j[j$j\j]j^uh1jhhhjhNhNubj`)}(h**Parameters** ``struct device *dev`` pointer to struct device ``enum rc_driver_type`` specifies the type of the RC output to be allocated returns a pointer to struct rc_dev.h](h)}(h**Parameters**h]jj)}(hj.h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj,ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhj(ubj)}(hhh](j)}(h0``struct device *dev`` pointer to struct device h](j)}(h``struct device *dev``h]jj)}(hjMh]hstruct device *dev}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjKubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjGubj)}(hhh]h)}(hpointer to struct deviceh]hpointer to struct device}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhKhjcubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjbhKhjDubj)}(ho``enum rc_driver_type`` specifies the type of the RC output to be allocated returns a pointer to struct rc_dev.h](j)}(h``enum rc_driver_type``h]jj)}(hjh]henum rc_driver_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]h)}(hWspecifies the type of the RC output to be allocated returns a pointer to struct rc_dev.h]hWspecifies the type of the RC output to be allocated returns a pointer to struct rc_dev.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjDubeh}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_free_device (C function)c.rc_free_devicehNtauh1jhjhhhNhNubj)}(hhh](j)}(h(void rc_free_device (struct rc_dev *dev)h]j)}(h'void rc_free_device(struct rc_dev *dev)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hrc_free_deviceh]j )}(hrc_free_deviceh]hrc_free_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ](jj eh"]h$]h&]hhuh1jhjhhhjhKubj)}(h(struct rc_dev *dev)h]j)}(hstruct rc_dev *devh](j)}(hj^h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(hrc_devh]hrc_dev}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j)}jjsbc.rc_free_deviceasbuh1hhjubj)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hdevh]hdev}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hjhhhjhKubah}(h]jah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjhKhjhhubj9)}(hhh]h)}(hFrees a RC deviceh]hFrees a RC device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjhhubah}(h]h ]h"]h$]h&]uh1j8hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZjj[jj\j]j^uh1jhhhjhNhNubj`)}(hB**Parameters** ``struct rc_dev *dev`` pointer to struct rc_dev.h](h)}(h**Parameters**h]jj)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubj)}(hhh]j)}(h0``struct rc_dev *dev`` pointer to struct rc_dev.h](j)}(h``struct rc_dev *dev``h]jj)}(hjh]hstruct rc_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhjubj)}(hhh]h)}(hpointer to struct rc_dev.h]hpointer to struct rc_dev.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_register_device (C function)c.rc_register_devicehNtauh1jhjhhhNhNubj)}(hhh](j)}(h+int rc_register_device (struct rc_dev *dev)h]j)}(h*int rc_register_device(struct rc_dev *dev)h](j)}(hinth]hint}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMubj)}(h h]h }(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhhjKhMubj)}(hrc_register_deviceh]j )}(hrc_register_deviceh]hrc_register_device}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjZubah}(h]h ](jj eh"]h$]h&]hhuh1jhj9hhhjKhMubj)}(h(struct rc_dev *dev)h]j)}(hstruct rc_dev *devh](j)}(hj^h]hstruct}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubh)}(hhh]j )}(hrc_devh]hrc_dev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj`sbc.rc_register_deviceasbuh1hhjvubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubj )}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjvubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubah}(h]h ]h"]h$]h&]hhuh1jhj9hhhjKhMubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj5hhhjKhMubah}(h]j0ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjKhMhj2hhubj9)}(hhh]h)}(hRegisters a RC deviceh]hRegisters a RC device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j8hj2hhhjKhMubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZjj[jj\j]j^uh1jhhhjhNhNubj`)}(hB**Parameters** ``struct rc_dev *dev`` pointer to struct rc_dev.h](h)}(h**Parameters**h]jj)}(hjh]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhjubj)}(hhh]j)}(h0``struct rc_dev *dev`` pointer to struct rc_dev.h](j)}(h``struct rc_dev *dev``h]jj)}(hj>h]hstruct rc_dev *dev}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj<ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhj8ubj)}(hhh]h)}(hpointer to struct rc_dev.h]hpointer to struct rc_dev.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhjTubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhjShMhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$devm_rc_register_device (C function)c.devm_rc_register_devicehNtauh1jhjhhhNhNubj)}(hhh](j)}(hGint devm_rc_register_device (struct device *parent, struct rc_dev *dev)h]j)}(hFint devm_rc_register_device(struct device *parent, struct rc_dev *dev)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhM ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM ubj)}(hdevm_rc_register_deviceh]j )}(hdevm_rc_register_deviceh]hdevm_rc_register_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ](jj eh"]h$]h&]hhuh1jhjhhhjhM ubj)}(h+(struct device *parent, struct rc_dev *dev)h](j)}(hstruct device *parenth](j)}(hj^h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j )}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.devm_rc_register_deviceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hparenth]hparent}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct rc_dev *devh](j)}(hj^h]hstruct}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubh)}(hhh]j )}(hrc_devh]hrc_dev}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjbubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjgmodnameN classnameNjj)}j]jc.devm_rc_register_deviceasbuh1hhjCubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj )}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hjhhhjhM ubah}(h]jah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjhM hjhhubj9)}(hhh]h)}(h$Manageded registering of a RC deviceh]h$Manageded registering of a RC device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j8hjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZjj[jj\j]j^uh1jhhhjhNhNubj`)}(hy**Parameters** ``struct device *parent`` pointer to struct device. ``struct rc_dev *dev`` pointer to struct rc_dev.h](h)}(h**Parameters**h]jj)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhM hjubj)}(hhh](j)}(h4``struct device *parent`` pointer to struct device. h](j)}(h``struct device *parent``h]jj)}(hj h]hstruct device *parent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhM hj ubj)}(hhh]h)}(hpointer to struct device.h]hpointer to struct device.}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hM hj ubj)}(h0``struct rc_dev *dev`` pointer to struct rc_dev.h](j)}(h``struct rc_dev *dev``h]jj)}(hjB h]hstruct rc_dev *dev}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj@ ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhM hj< ubj)}(hhh]h)}(hpointer to struct rc_dev.h]hpointer to struct rc_dev.}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhM hjX ubah}(h]h ]h"]h$]h&]uh1jhj< ubeh}(h]h ]h"]h$]h&]uh1jhjW hM hj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!rc_unregister_device (C function)c.rc_unregister_devicehNtauh1jhjhhhNhNubj)}(hhh](j)}(h.void rc_unregister_device (struct rc_dev *dev)h]j)}(h-void rc_unregister_device(struct rc_dev *dev)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hMubj)}(hrc_unregister_deviceh]j )}(hrc_unregister_deviceh]hrc_unregister_device}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ](jj eh"]h$]h&]hhuh1jhj hhhj hMubj)}(h(struct rc_dev *dev)h]j)}(hstruct rc_dev *devh](j)}(hj^h]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j )}(hrc_devh]hrc_dev}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.rc_unregister_deviceasbuh1hhj ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj%!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj )}(hdevh]hdev}(hj2!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj hhhj hMubah}(h]j ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhj hMhj hhubj9)}(hhh]h)}(hUnregisters a RC deviceh]hUnregisters a RC device}(hj\!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhjY!hhubah}(h]h ]h"]h$]h&]uh1j8hj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZjt!j[jt!j\j]j^uh1jhhhjhNhNubj`)}(hB**Parameters** ``struct rc_dev *dev`` pointer to struct rc_dev.h](h)}(h**Parameters**h]jj)}(hj~!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj|!ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhjx!ubj)}(hhh]j)}(h0``struct rc_dev *dev`` pointer to struct rc_dev.h](j)}(h``struct rc_dev *dev``h]jj)}(hj!h]hstruct rc_dev *dev}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj!ubah}(h]h ]h"]h$]h&]uh1jh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhj!ubj)}(hhh]h)}(hpointer to struct rc_dev.h]hpointer to struct rc_dev.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:86: ./include/media/rc-core.hhMhj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hMhj!ubah}(h]h ]h"]h$]h&]uh1jhjx!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_map_table (C struct)c.rc_map_tablehNtauh1jhjhhhNhNubj)}(hhh](j)}(h rc_map_tableh]j)}(hstruct rc_map_tableh](j)}(hj^h]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj"hKubj)}(h rc_map_tableh]j )}(hj!h]h rc_map_table}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"ubah}(h]h ](jj eh"]h$]h&]hhuh1jhj!hhhj"hKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj!hhhj"hKubah}(h]j!ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhj"hKhj!hhubj9)}(hhh]h)}(h"represents a scancode/keycode pairh]h"represents a scancode/keycode pair}(hj9"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj6"hhubah}(h]h ]h"]h$]h&]uh1j8hj!hhhj"hKubeh}(h]h ](jstructeh"]h$]h&]jYjjZjQ"j[jQ"j\j]j^uh1jhhhjhNhNubj`)}(h**Definition**:: struct rc_map_table { u64 scancode; u32 keycode; }; **Members** ``scancode`` scan code (u64) ``keycode`` Linux input keycodeh](h)}(h**Definition**::h](jj)}(h**Definition**h]h Definition}(hj]"hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjY"ubh:}(hjY"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjU"ubj)}(h;struct rc_map_table { u64 scancode; u32 keycode; };h]h;struct rc_map_table { u64 scancode; u32 keycode; };}hjv"sbah}(h]h ]h"]h$]h&]hhuh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjU"ubh)}(h **Members**h]jj)}(hj"h]hMembers}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj"ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjU"ubj)}(hhh](j)}(h``scancode`` scan code (u64) h](j)}(h ``scancode``h]jj)}(hj"h]hscancode}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj"ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj"ubj)}(hhh]h)}(hscan code (u64)h]hscan code (u64)}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hKhj"ubj)}(h``keycode`` Linux input keycodeh](j)}(h ``keycode``h]jj)}(hj"h]hkeycode}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj"ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj"ubj)}(hhh]h)}(hLinux input keycodeh]hLinux input keycode}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hKhj"ubeh}(h]h ]h"]h$]h&]uh1jhjU"ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_map (C struct)c.rc_maphNtauh1jhjhhhNhNubj)}(hhh](j)}(hrc_maph]j)}(h struct rc_maph](j)}(hj^h]hstruct}(hj9#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5#hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKubj)}(h h]h }(hjG#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5#hhhjF#hKubj)}(hrc_maph]j )}(hj3#h]hrc_map}(hjY#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjU#ubah}(h]h ](jj eh"]h$]h&]hhuh1jhj5#hhhjF#hKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj1#hhhjF#hKubah}(h]j,#ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjF#hKhj.#hhubj9)}(hhh]h)}(hrepresents a keycode map tableh]hrepresents a keycode map table}(hj{#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjx#hhubah}(h]h ]h"]h$]h&]uh1j8hj.#hhhjF#hKubeh}(h]h ](jstructeh"]h$]h&]jYjjZj#j[j#j\j]j^uh1jhhhjhNhNubj`)}(hX**Definition**:: struct rc_map { struct rc_map_table *scan; unsigned int size; unsigned int len; unsigned int alloc; enum rc_proto rc_proto; const char *name; spinlock_t lock; }; **Members** ``scan`` pointer to struct :c:type:`rc_map_table` ``size`` Max number of entries ``len`` Number of entries that are in use ``alloc`` size of \*scan, in bytes ``rc_proto`` type of the remote controller protocol, as defined at enum :c:type:`rc_proto` ``name`` name of the key map table ``lock`` lock to protect access to this structureh](h)}(h**Definition**::h](jj)}(h**Definition**h]h Definition}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj#ubh:}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj#ubj)}(hstruct rc_map { struct rc_map_table *scan; unsigned int size; unsigned int len; unsigned int alloc; enum rc_proto rc_proto; const char *name; spinlock_t lock; };h]hstruct rc_map { struct rc_map_table *scan; unsigned int size; unsigned int len; unsigned int alloc; enum rc_proto rc_proto; const char *name; spinlock_t lock; };}hj#sbah}(h]h ]h"]h$]h&]hhuh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj#ubh)}(h **Members**h]jj)}(hj#h]hMembers}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj#ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj#ubj)}(hhh](j)}(h2``scan`` pointer to struct :c:type:`rc_map_table` h](j)}(h``scan``h]jj)}(hj#h]hscan}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj#ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj#ubj)}(hhh]h)}(h(pointer to struct :c:type:`rc_map_table`h](hpointer to struct }(hj$hhhNhNubh)}(h:c:type:`rc_map_table`h]jj)}(hj $h]h rc_map_table}(hj $hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jihj $ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]sbj rc_map_tableuh1hhj#hKhj$ubeh}(h]h ]h"]h$]h&]uh1hhj#hKhj#ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jhj#hKhj#ubj)}(h``size`` Max number of entries h](j)}(h``size``h]jj)}(hjC$h]hsize}(hjE$hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjA$ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj=$ubj)}(hhh]h)}(hMax number of entriesh]hMax number of entries}(hj\$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjX$hKhjY$ubah}(h]h ]h"]h$]h&]uh1jhj=$ubeh}(h]h ]h"]h$]h&]uh1jhjX$hKhj#ubj)}(h*``len`` Number of entries that are in use h](j)}(h``len``h]jj)}(hj|$h]hlen}(hj~$hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjz$ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjv$ubj)}(hhh]h)}(h!Number of entries that are in useh]h!Number of entries that are in use}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1jhjv$ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhj#ubj)}(h#``alloc`` size of \*scan, in bytes h](j)}(h ``alloc``h]jj)}(hj$h]halloc}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj$ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj$ubj)}(hhh]h)}(hsize of \*scan, in bytesh]hsize of *scan, in bytes}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhj#ubj)}(h[``rc_proto`` type of the remote controller protocol, as defined at enum :c:type:`rc_proto` h](j)}(h ``rc_proto``h]jj)}(hj$h]hrc_proto}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj$ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj$ubj)}(hhh]h)}(hMtype of the remote controller protocol, as defined at enum :c:type:`rc_proto`h](h;type of the remote controller protocol, as defined at enum }(hj%hhhNhNubh)}(h:c:type:`rc_proto`h]jj)}(hj%h]hrc_proto}(hj%hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jihj%ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj'$jrc_protouh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj%ubeh}(h]h ]h"]h$]h&]uh1hhj.%hKhj%ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj%hKhj#ubj)}(h#``name`` name of the key map table h](j)}(h``name``h]jj)}(hjG%h]hname}(hjI%hhhNhNubah}(Qh]h ]h"]h$]h&]uh1jihjE%ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjA%ubj)}(hhh]h)}(hname of the key map tableh]hname of the key map table}(hj`%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\%hKhj]%ubah}(h]h ]h"]h$]h&]uh1jhjA%ubeh}(h]h ]h"]h$]h&]uh1jhj\%hKhj#ubj)}(h1``lock`` lock to protect access to this structureh](j)}(h``lock``h]jj)}(hj%h]hlock}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj~%ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjz%ubj)}(hhh]h)}(h(lock to protect access to this structureh]h(lock to protect access to this structure}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj%ubah}(h]h ]h"]h$]h&]uh1jhjz%ubeh}(h]h ]h"]h$]h&]uh1jhj%hKhj#ubeh}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_map_list (C struct) c.rc_map_listhNtauh1jhjhhhNhNubj)}(hhh](j)}(h rc_map_listh]j)}(hstruct rc_map_listh](j)}(hj^h]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhj%hKubj)}(h rc_map_listh]j )}(hj%h]h rc_map_list}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj%ubah}(h]h ](jj eh"]h$]h&]hhuh1jhj%hhhj%hKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj%hhhj%hKubah}(h]j%ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhj%hKhj%hhubj9)}(hhh]h)}(h,list of the registered :c:type:`rc_map` mapsh](hlist of the registered }(hj&hhhNhNubh)}(h:c:type:`rc_map`h]jj)}(hj&&h]hrc_map}(hj(&hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jihj$&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j)}jj%sb c.rc_map_listasbjrc_mapuh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj&ubh maps}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj&hhubah}(h]h ]h"]h$]h&]uh1j8hj%hhhj%hKubeh}(h]h ](jstructeh"]h$]h&]jYjjZj_&j[j_&j\j]j^uh1jhhhjhNhNubj`)}(h**Definition**:: struct rc_map_list { struct list_head list; struct rc_map map; }; **Members** ``list`` pointer to struct :c:type:`list_head` ``map`` pointer to struct :c:type:`rc_map`h](h)}(h**Definition**::h](jj)}(h**Definition**h]h Definition}(hjk&hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjg&ubh:}(hjg&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjc&ubj)}(hQstruct rc_map_list { struct list_head list; struct rc_map map; };h]hQstruct rc_map_list { struct list_head list; struct rc_map map; };}hj&sbah}(h]h ]h"]h$]h&]hhuh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjc&ubh)}(h **Members**h]jj)}(hj&h]hMembers}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj&ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjc&ubj)}(hhh](j)}(h/``list`` pointer to struct :c:type:`list_head` h](j)}(h``list``h]jj)}(hj&h]hlist}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj&ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj&ubj)}(hhh]h)}(h%pointer to struct :c:type:`list_head`h](hpointer to struct }(hj&hhhNhNubh)}(h:c:type:`list_head`h]jj)}(hj&h]h list_head}(hj&hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jihj&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj'$j list_headuh1hhj&hKhj&ubeh}(h]h ]h"]h$]h&]uh1hhj&hKhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhj&ubj)}(h*``map`` pointer to struct :c:type:`rc_map`h](j)}(h``map``h]jj)}(hj 'h]hmap}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj 'ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj'ubj)}(hhh]h)}(h"pointer to struct :c:type:`rc_map`h](hpointer to struct }(hj%'hhhNhNubh)}(h:c:type:`rc_map`h]jj)}(hj/'h]hrc_map}(hj1'hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jihj-'ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj'$jrc_mapuh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj%'ubeh}(h]h ]h"]h$]h&]uh1hhjL'hKhj"'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj!'hKhj&ubeh}(h]h ]h"]h$]h&]uh1jhjc&ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_map_register (C function)c.rc_map_registerhNtauh1jhjhhhNhNubj)}(hhh](j)}(h-int rc_map_register (struct rc_map_list *map)h]j)}(h,int rc_map_register(struct rc_map_list *map)h](j)}(hinth]hint}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhj'hKubj)}(hrc_map_registerh]j )}(hrc_map_registerh]hrc_map_register}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj'ubah}(h]h ](jj eh"]h$]h&]hhuh1jhj'hhhj'hKubj)}(h(struct rc_map_list *map)h]j)}(hstruct rc_map_list *maph](j)}(hj^h]hstruct}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubh)}(hhh]j )}(h rc_map_listh]h rc_map_list}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]j)}jj'sbc.rc_map_registerasbuh1hhj'ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj )}(hmaph]hmap}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj'ubah}(h]h ]h"]h$]h&]hhuh1jhj'hhhj'hKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj}'hhhj'hKubah}(h]jx'ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhj'hKhjz'hhubj9)}(hhh]h)}(h*Registers a Remote Controller scancode maph]h*Registers a Remote Controller scancode map}(hjE(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhjB(hhubah}(h]h ]h"]h$]h&]uh1j8hjz'hhhj'hKubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZj](j[j](j\j]j^uh1jhhhjhNhNubj`)}(hK**Parameters** ``struct rc_map_list *map`` pointer to struct rc_map_listh](h)}(h**Parameters**h]jj)}(hjg(h]h Parameters}(hji(hhhNhNubah}(h]h ]h"]h$]h&]uh1jihje(ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhja(ubj)}(hhh]j)}(h9``struct rc_map_list *map`` pointer to struct rc_map_listh](j)}(h``struct rc_map_list *map``h]jj)}(hj(h]hstruct rc_map_list *map}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj(ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj(ubj)}(hhh]h)}(hpointer to struct rc_map_listh]hpointer to struct rc_map_list}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj(ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(hKhj}(ubah}(h]h ]h"]h$]h&]uh1jhja(ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_map_unregister (C function)c.rc_map_unregisterhNtauh1jhjhhhNhNubj)}(hhh](j)}(h0void rc_map_unregister (struct rc_map_list *map)h]j)}(h/void rc_map_unregister(struct rc_map_list *map)h](j)}(hvoidh]hvoid}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhj(hKubj)}(hrc_map_unregisterh]j )}(hrc_map_unregisterh]hrc_map_unregister}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj(ubah}(h]h ](jj eh"]h$]h&]hhuh1jhj(hhhj(hKubj)}(h(struct rc_map_list *map)h]j)}(hstruct rc_map_list *maph](j)}(hj^h]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(h h]h }(hj*)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubh)}(hhh]j )}(h rc_map_listh]h rc_map_list}(hj;)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=)modnameN classnameNjj)}j]j)}jj)sbc.rc_map_unregisterasbuh1hhj)ubj)}(h h]h }(hj[)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(hjh]h*}(hji)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj )}(hmaph]hmap}(hjv)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubah}(h]h ]h"]h$]h&]hhuh1jhj(hhhj(hKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj(hhhj(hKubah}(h]j(ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhj(hKhj(hhubj9)}(hhh]h)}(h,Unregisters a Remote Controller scancode maph]h,Unregisters a Remote Controller scancode map}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj)hhubah}(h]h ]h"]h$]h&]uh1j8hj(hhhj(hKubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZj)j[j)j\j]j^uh1jhhhjhNhNubj`)}(hK**Parameters** ``struct rc_map_list *map`` pointer to struct rc_map_listh](h)}(h**Parameters**h]jj)}(hj)h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj)ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj)ubj)}(hhh]j)}(h9``struct rc_map_list *map`` pointer to struct rc_map_listh](j)}(h``struct rc_map_list *map``h]jj)}(hj)h]hstruct rc_map_list *map}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj)ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj)ubj)}(hhh]h)}(hpointer to struct rc_map_listh]hpointer to struct rc_map_list}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hKhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrc_map_get (C function) c.rc_map_gethNtauh1jhjhhhNhNubj)}(hhh](j)}(h-struct rc_map * rc_map_get (const char *name)h]j)}(h+struct rc_map *rc_map_get(const char *name)h](j)}(hj^h]hstruct}(hj;*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7*hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKubj)}(h h]h }(hjI*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7*hhhjH*hKubh)}(hhh]j )}(hrc_maph]hrc_map}(hjZ*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjW*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\*modnameN classnameNjj)}j]j)}j rc_map_getsb c.rc_map_getasbuh1hhj7*hhhjH*hKubj)}(h h]h }(hj{*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7*hhhjH*hKubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7*hhhjH*hKubj)}(h rc_map_geth]j )}(hjx*h]h rc_map_get}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj*ubah}(h]h ](jj eh"]h$]h&]hhuh1jhj7*hhhjH*hKubj)}(h(const char *name)h]j)}(hconst char *nameh](j)}(hconsth]hconst}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(hcharh]hchar}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj )}(hnameh]hname}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubah}(h]h ]h"]h$]h&]hhuh1jhj7*hhhjH*hKubeh}(h]h ]h"]h$]h&]hhj*uh1jj+j,hj3*hhhjH*hKubah}(h]j.*ah ](j0j1eh"]h$]h&]j5j6)j7huh1jhjH*hKhj0*hhubj9)}(hhh]h)}(hgets an RC map from its nameh]hgets an RC map from its name}(hj$+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj!+hhubah}(h]h ]h"]h$]h&]uh1j8hj0*hhhjH*hKubeh}(h]h ](jfunctioneh"]h$]h&]jYjjZj<+j[j<+j\j]j^uh1jhhhjhNhNubj`)}(hB**Parameters** ``const char *name`` name of the RC scancode maph](h)}(h**Parameters**h]jj)}(hjF+h]h Parameters}(hjH+hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjD+ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj@+ubj)}(hhh]j)}(h0``const char *name`` name of the RC scancode maph](j)}(h``const char *name``h]jj)}(hje+h]hconst char *name}(hjg+hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjc+ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj_+ubj)}(hhh]h)}(hname of the RC scancode maph]hname of the RC scancode map}(hj~+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/rc-core:88: ./include/media/rc-map.hhKhj{+ubah}(h]h ]h"]h$]h&]uh1jhj_+ubeh}(h]h ]h"]h$]h&]uh1jhjz+hKhj\+ubah}(h]h ]h"]h$]h&]uh1jhj@+ubeh}(h]h ] kernelindentah"]h$]h&]uh1j_hjhhhNhNubeh}(h]/remote-controller-data-structures-and-functionsah ]h"]/remote controller data structures and functionsah$]h&]uh1hhhhhhhhKTubeh}(h]remote-controller-coreah ]h"]remote controller coreah$]h&]uh1hhhhhhhhKubeh}(h]remote-controller-devicesah ]h"]remote controller devicesah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj+error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}(f1]haf2]jaurefids}(j]haj]jaunameids}(j+j+j+j+j:jjjj+j+u nametypes}(j+j+j:jj+uh}(j+hj+hhhjjjjjjj+jjjjOjTjjjjj| j jAjFjjjjj0j5jjj j j!j!j,#j1#j%j%jx'j}'j(j(j.*j3*u footnote_refs}(j!,]haj#,]jau citation_refs} autofootnotes](jjeautofootnote_refs](hjesymbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j+KsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.