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/dtv-camodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/driver-api/media/dtv-camodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/driver-api/media/dtv-camodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/driver-api/media/dtv-camodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/driver-api/media/dtv-camodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/driver-api/media/dtv-camodnameN 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:spacepreserveuh1hhhhhhE/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca.rsthKubhsection)}(hhh](htitle)}(h"Digital TV Conditional Access kABIh]h"Digital TV Conditional Access kABI}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singledvb_ca_en50221 (C struct)c.dvb_ca_en50221hNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(hdvb_ca_en50221h]hdesc_signature_line)}(hstruct dvb_ca_en50221h](hdesc_sig_keyword)}(hstructh]hstruct}(hhhhhNhNubah}(h]h ]kah"]h$]h&]uh1hhhhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKubhdesc_sig_space)}(h h]h }(hhhhhNhNubah}(h]h ]wah"]h$]h&]uh1hhhhhhhhKubh desc_name)}(hdvb_ca_en50221h]h desc_sig_name)}(hhh]hdvb_ca_en50221}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhhhhhhhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1hsphinx_line_type declaratorhhhhhhhKubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhhhKhhhhubh desc_content)}(hhh]h paragraph)}(h#Structure describing a CA interfaceh]h#Structure describing a CA interface}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK%hjBhhubah}(h]h ]h"]h$]h&]uh1j@hhhhhhhKubeh}(h]h ](cstructeh"]h$]h&]domainj_objtypej`desctypej`noindex noindexentrynocontentsentryuh1hhhhhhNhNubh container)}(hX**Definition**:: struct dvb_ca_en50221 { struct module *owner; int (*read_attribute_mem)(struct dvb_ca_en50221 *ca, int slot, int address); int (*write_attribute_mem)(struct dvb_ca_en50221 *ca, int slot, int address, u8 value); int (*read_cam_control)(struct dvb_ca_en50221 *ca, int slot, u8 address); int (*write_cam_control)(struct dvb_ca_en50221 *ca, int slot, u8 address, u8 value); int (*read_data)(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount); int (*write_data)(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount); int (*slot_reset)(struct dvb_ca_en50221 *ca, int slot); int (*slot_shutdown)(struct dvb_ca_en50221 *ca, int slot); int (*slot_ts_enable)(struct dvb_ca_en50221 *ca, int slot); int (*poll_slot_status)(struct dvb_ca_en50221 *ca, int slot, int open); void *data; void *private; }; **Members** ``owner`` the module owning this structure ``read_attribute_mem`` function for reading attribute memory on the CAM ``write_attribute_mem`` function for writing attribute memory on the CAM ``read_cam_control`` function for reading the control interface on the CAM ``write_cam_control`` function for reading the control interface on the CAM ``read_data`` function for reading data (block mode) ``write_data`` function for writing data (block mode) ``slot_reset`` function to reset the CAM slot ``slot_shutdown`` function to shutdown a CAM slot ``slot_ts_enable`` function to enable the Transport Stream on a CAM slot ``poll_slot_status`` function to poll slot status. Only necessary if DVB_CA_FLAG_EN50221_IRQ_CAMCHANGE is not set. ``data`` private data, used by caller. ``private`` Opaque data used by the dvb_ca core. Do not modify!h](jF)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjpubh:}(hjphhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK)hjlubh literal_block)}(hXUstruct dvb_ca_en50221 { struct module *owner; int (*read_attribute_mem)(struct dvb_ca_en50221 *ca, int slot, int address); int (*write_attribute_mem)(struct dvb_ca_en50221 *ca, int slot, int address, u8 value); int (*read_cam_control)(struct dvb_ca_en50221 *ca, int slot, u8 address); int (*write_cam_control)(struct dvb_ca_en50221 *ca, int slot, u8 address, u8 value); int (*read_data)(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount); int (*write_data)(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount); int (*slot_reset)(struct dvb_ca_en50221 *ca, int slot); int (*slot_shutdown)(struct dvb_ca_en50221 *ca, int slot); int (*slot_ts_enable)(struct dvb_ca_en50221 *ca, int slot); int (*poll_slot_status)(struct dvb_ca_en50221 *ca, int slot, int open); void *data; void *private; };h]hXUstruct dvb_ca_en50221 { struct module *owner; int (*read_attribute_mem)(struct dvb_ca_en50221 *ca, int slot, int address); int (*write_attribute_mem)(struct dvb_ca_en50221 *ca, int slot, int address, u8 value); int (*read_cam_control)(struct dvb_ca_en50221 *ca, int slot, u8 address); int (*write_cam_control)(struct dvb_ca_en50221 *ca, int slot, u8 address, u8 value); int (*read_data)(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount); int (*write_data)(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount); int (*slot_reset)(struct dvb_ca_en50221 *ca, int slot); int (*slot_shutdown)(struct dvb_ca_en50221 *ca, int slot); int (*slot_ts_enable)(struct dvb_ca_en50221 *ca, int slot); int (*poll_slot_status)(struct dvb_ca_en50221 *ca, int slot, int open); void *data; void *private; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK+hjlubjF)}(h **Members**h]ju)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK;hjlubhdefinition_list)}(hhh](hdefinition_list_item)}(h+``owner`` the module owning this structure h](hterm)}(h ``owner``h]hliteral)}(hjh]howner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK(hjubh definition)}(hhh]jF)}(h the module owning this structureh]h the module owning this structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK(hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjubj)}(hH``read_attribute_mem`` function for reading attribute memory on the CAM h](j)}(h``read_attribute_mem``h]j)}(hjh]hread_attribute_mem}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK)hjubj)}(hhh]jF)}(h0function for reading attribute memory on the CAMh]h0function for reading attribute memory on the CAM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK)hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK)hjubj)}(hI``write_attribute_mem`` function for writing attribute memory on the CAM h](j)}(h``write_attribute_mem``h]j)}(hj=h]hwrite_attribute_mem}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK*hj7ubj)}(hhh]jF)}(h0function for writing attribute memory on the CAMh]h0function for writing attribute memory on the CAM}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjRhK*hjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhK*hjubj)}(hK``read_cam_control`` function for reading the control interface on the CAM h](j)}(h``read_cam_control``h]j)}(hjvh]hread_cam_control}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK+hjpubj)}(hhh]jF)}(h5function for reading the control interface on the CAMh]h5function for reading the control interface on the CAM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK+hjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhK+hjubj)}(hL``write_cam_control`` function for reading the control interface on the CAM h](j)}(h``write_cam_control``h]j)}(hjh]hwrite_cam_control}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK,hjubj)}(hhh]jF)}(h5function for reading the control interface on the CAMh]h5function for reading the control interface on the CAM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK,hjubj)}(h5``read_data`` function for reading data (block mode) h](j)}(h ``read_data``h]j)}(hjh]h read_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK-hjubj)}(hhh]jF)}(h&function for reading data (block mode)h]h&function for reading data (block mode)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK-hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK-hjubj)}(h6``write_data`` function for writing data (block mode) h](j)}(h``write_data``h]j)}(hj!h]h write_data}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK.hjubj)}(hhh]jF)}(h&function for writing data (block mode)h]h&function for writing data (block mode)}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj6hK.hj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj6hK.hjubj)}(h.``slot_reset`` function to reset the CAM slot h](j)}(h``slot_reset``h]j)}(hjZh]h slot_reset}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK/hjTubj)}(hhh]jF)}(hfunction to reset the CAM sloth]hfunction to reset the CAM slot}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjohK/hjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohK/hjubj)}(h2``slot_shutdown`` function to shutdown a CAM slot h](j)}(h``slot_shutdown``h]j)}(hjh]h slot_shutdown}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK0hjubj)}(hhh]jF)}(hfunction to shutdown a CAM sloth]hfunction to shutdown a CAM slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK0hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK0hjubj)}(hI``slot_ts_enable`` function to enable the Transport Stream on a CAM slot h](j)}(h``slot_ts_enable``h]j)}(hjh]hslot_ts_enable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK1hjubj)}(hhh]jF)}(h5function to enable the Transport Stream on a CAM sloth]h5function to enable the Transport Stream on a CAM slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK1hjubj)}(hs``poll_slot_status`` function to poll slot status. Only necessary if DVB_CA_FLAG_EN50221_IRQ_CAMCHANGE is not set. h](j)}(h``poll_slot_status``h]j)}(hjh]hpoll_slot_status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK3hjubj)}(hhh]jF)}(h]function to poll slot status. Only necessary if DVB_CA_FLAG_EN50221_IRQ_CAMCHANGE is not set.h]h]function to poll slot status. Only necessary if DVB_CA_FLAG_EN50221_IRQ_CAMCHANGE is not set.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK2hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK3hjubj)}(h'``data`` private data, used by caller. h](j)}(h``data``h]j)}(hj?h]hdata}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK4hj9ubj)}(hhh]jF)}(hprivate data, used by caller.h]hprivate data, used by caller.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjThK4hjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjThK4hjubj)}(h?``private`` Opaque data used by the dvb_ca core. Do not modify!h](j)}(h ``private``h]j)}(hjxh]hprivate}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK4hjrubj)}(hhh]jF)}(h3Opaque data used by the dvb_ca core. Do not modify!h]h3Opaque data used by the dvb_ca core. Do not modify!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK5hjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhjhK4hjubeh}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubjF)}(h**NOTE**h]ju)}(hjh]hNOTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK8hhhhubjF)}(hthe read_*, write_* and poll_slot_status functions will be called for different slots concurrently and need to use locks where and if appropriate. There will be no concurrent access to one slot.h]hthe read_*, write_* and poll_slot_status functions will be called for different slots concurrently and need to use locks where and if appropriate. There will be no concurrent access to one slot.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK6hhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌)dvb_ca_en50221_camchange_irq (C function)c.dvb_ca_en50221_camchange_irqhNtauh1hhhhhhNhNubh)}(hhh](h)}(h[void dvb_ca_en50221_camchange_irq (struct dvb_ca_en50221 *pubca, int slot, int change_type)h]h)}(hZvoid dvb_ca_en50221_camchange_irq(struct dvb_ca_en50221 *pubca, int slot, int change_type)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKbubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj hKbubj)}(hdvb_ca_en50221_camchange_irqh]j)}(hdvb_ca_en50221_camchange_irqh]hdvb_ca_en50221_camchange_irq}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhj hKbubhdesc_parameterlist)}(h9(struct dvb_ca_en50221 *pubca, int slot, int change_type)h](hdesc_parameter)}(hstruct dvb_ca_en50221 *pubcah](h)}(hhh]hstruct}(hj=hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj9ubh)}(h h]h }(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj9ubh)}(hhh]j)}(hdvb_ca_en50221h]hdvb_ca_en50221}(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&] refdomainj_reftype identifier reftargetj]modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]jv ASTIdentifier)}jqjsbc.dvb_ca_en50221_camchange_irqasbuh1hhj9ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj9ubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhj9ubj)}(hpubcah]hpubca}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hj3ubj8)}(hint sloth](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hsloth]hslot}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hj3ubj8)}(hint change_typeh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h change_typeh]h change_type}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hj3ubeh}(h]h ]h"]h$]h&]hhuh1j1hjhhhj hKbubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhj hKbubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj hKbhjhhubjA)}(hhh]jF)}(hA CAMCHANGE IRQ has occurred.h]hA CAMCHANGE IRQ has occurred.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK\hj3hhubah}(h]h ]h"]h$]h&]uh1j@hjhhhj hKbubeh}(h]h ](j_functioneh"]h$]h&]jdj_jejNjfjNjgjhjiuh1hhhhhhNhNubjk)}(h**Parameters** ``struct dvb_ca_en50221 *pubca`` CA instance. ``int slot`` Slot concerned. ``int change_type`` One of the DVB_CA_CAMCHANGE_* valuesh](jF)}(h**Parameters**h]ju)}(hjXh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjVubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK`hjRubj)}(hhh](j)}(h.``struct dvb_ca_en50221 *pubca`` CA instance. h](j)}(h ``struct dvb_ca_en50221 *pubca``h]j)}(hjwh]hstruct dvb_ca_en50221 *pubca}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK^hjqubj)}(hhh]jF)}(h CA instance.h]h CA instance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK^hjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhjhK^hjnubj)}(h``int slot`` Slot concerned. h](j)}(h ``int slot``h]j)}(hjh]hint slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK_hjubj)}(hhh]jF)}(hSlot concerned.h]hSlot concerned.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK_hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK_hjnubj)}(h8``int change_type`` One of the DVB_CA_CAMCHANGE_* valuesh](j)}(h``int change_type``h]j)}(hjh]hint change_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKahjubj)}(hhh]jF)}(h$One of the DVB_CA_CAMCHANGE_* valuesh]h$One of the DVB_CA_CAMCHANGE_* values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK`hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKahjnubeh}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌(dvb_ca_en50221_camready_irq (C function)c.dvb_ca_en50221_camready_irqhNtauh1hhhhhhNhNubh)}(hhh](h)}(hIvoid dvb_ca_en50221_camready_irq (struct dvb_ca_en50221 *pubca, int slot)h]h)}(hHvoid dvb_ca_en50221_camready_irq(struct dvb_ca_en50221 *pubca, int slot)h](j)}(hvoidh]hvoid}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKkubh)}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?hhhjQhKkubj)}(hdvb_ca_en50221_camready_irqh]j)}(hdvb_ca_en50221_camready_irqh]hdvb_ca_en50221_camready_irq}(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj`ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj?hhhjQhKkubj2)}(h((struct dvb_ca_en50221 *pubca, int slot)h](j8)}(hstruct dvb_ca_en50221 *pubcah](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj|ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|ubh)}(hhh]j)}(hdvb_ca_en50221h]hdvb_ca_en50221}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypejq reftargetjmodnameN classnameNjujx)}j{]j~)}jqjfsbc.dvb_ca_en50221_camready_irqasbuh1hhj|ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(hpubcah]hpubca}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hjxubj8)}(hint sloth](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hsloth]hslot}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hjxubeh}(h]h ]h"]h$]h&]hhuh1j1hj?hhhjQhKkubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj;hhhjQhKkubah}(h]j6ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjQhKkhj8hhubjA)}(hhh]jF)}(hA CAMREADY IRQ has occurred.h]hA CAMREADY IRQ has occurred.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKfhj5hhubah}(h]h ]h"]h$]h&]uh1j@hj8hhhjQhKkubeh}(h]h ](j_functioneh"]h$]h&]jdj_jejPjfjPjgjhjiuh1hhhhhhNhNubjk)}(h_**Parameters** ``struct dvb_ca_en50221 *pubca`` CA instance. ``int slot`` Slot concerned.h](jF)}(h**Parameters**h]ju)}(hjZh]h Parameters}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jthjXubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKjhjTubj)}(hhh](j)}(h.``struct dvb_ca_en50221 *pubca`` CA instance. h](j)}(h ``struct dvb_ca_en50221 *pubca``h]j)}(hjyh]hstruct dvb_ca_en50221 *pubca}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKhhjsubj)}(hhh]jF)}(h CA instance.h]h CA instance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhKhhjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjhKhhjpubj)}(h``int slot`` Slot concerned.h](j)}(h ``int slot``h]j)}(hjh]hint slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKjhjubj)}(hhh]jF)}(hSlot concerned.h]hSlot concerned.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKihjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKjhjpubeh}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌$dvb_ca_en50221_frda_irq (C function)c.dvb_ca_en50221_frda_irqhNtauh1hhhhhhNhNubh)}(hhh](h)}(hBvoid dvb_ca_en50221_frda_irq (struct dvb_ca_en50221 *ca, int slot)h]h)}(hAvoid dvb_ca_en50221_frda_irq(struct dvb_ca_en50221 *ca, int slot)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKsubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hKsubj)}(hdvb_ca_en50221_frda_irqh]j)}(hdvb_ca_en50221_frda_irqh]hdvb_ca_en50221_frda_irq}(hj- hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj) ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj hhhj hKsubj2)}(h%(struct dvb_ca_en50221 *ca, int slot)h](j8)}(hstruct dvb_ca_en50221 *cah](h)}(hhh]hstruct}(hjI hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjE ubh)}(h h]h }(hjV hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjE ubh)}(hhh]j)}(hdvb_ca_en50221h]hdvb_ca_en50221}(hjg hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjd ubah}(h]h ]h"]h$]h&] refdomainj_reftypejq reftargetji modnameN classnameNjujx)}j{]j~)}jqj/ sbc.dvb_ca_en50221_frda_irqasbuh1hhjE ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjE ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE ubj)}(hcah]hca}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjE ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hjA ubj8)}(hint sloth](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hsloth]hslot}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hjA ubeh}(h]h ]h"]h$]h&]hhuh1j1hj hhhj hKsubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj hhhj hKsubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj hKshj hhubjA)}(hhh]jF)}(hAn FR or a DA IRQ has occurred.h]hAn FR or a DA IRQ has occurred.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKnhj hhubah}(h]h ]h"]h$]h&]uh1j@hj hhhj hKsubeh}(h]h ](j_functioneh"]h$]h&]jdj_jej jfj jgjhjiuh1hhhhhhNhNubjk)}(h\**Parameters** ``struct dvb_ca_en50221 *ca`` CA instance. ``int slot`` Slot concerned.h](jF)}(h**Parameters**h]ju)}(hj# h]h Parameters}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj! ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKrhj ubj)}(hhh](j)}(h+``struct dvb_ca_en50221 *ca`` CA instance. h](j)}(h``struct dvb_ca_en50221 *ca``h]j)}(hjB h]hstruct dvb_ca_en50221 *ca}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKphj< ubj)}(hhh]jF)}(h CA instance.h]h CA instance.}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjW hKphjX ubah}(h]h ]h"]h$]h&]uh1jhj< ubeh}(h]h ]h"]h$]h&]uh1jhjW hKphj9 ubj)}(h``int slot`` Slot concerned.h](j)}(h ``int slot``h]j)}(hj{ h]hint slot}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKrhju ubj)}(hhh]jF)}(hSlot concerned.h]hSlot concerned.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKqhj ubah}(h]h ]h"]h$]h&]uh1jhju ubeh}(h]h ]h"]h$]h&]uh1jhj hKrhj9 ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌ dvb_ca_en50221_init (C function)c.dvb_ca_en50221_inithNtauh1hhhhhhNhNubh)}(hhh](h)}(hoint dvb_ca_en50221_init (struct dvb_adapter *dvb_adapter, struct dvb_ca_en50221 *ca, int flags, int slot_count)h]h)}(hnint dvb_ca_en50221_init(struct dvb_adapter *dvb_adapter, struct dvb_ca_en50221 *ca, int flags, int slot_count)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hKubj)}(hdvb_ca_en50221_inith]j)}(hdvb_ca_en50221_inith]hdvb_ca_en50221_init}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj hhhj hKubj2)}(hW(struct dvb_adapter *dvb_adapter, struct dvb_ca_en50221 *ca, int flags, int slot_count)h](j8)}(hstruct dvb_adapter *dvb_adapterh](h)}(hhh]hstruct}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j)}(h dvb_adapterh]h dvb_adapter}(hj0 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj- ubah}(h]h ]h"]h$]h&] refdomainj_reftypejq reftargetj2 modnameN classnameNjujx)}j{]j~)}jqj sbc.dvb_ca_en50221_initasbuh1hhj ubh)}(h h]h }(hjP hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hj^ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h dvb_adapterh]h dvb_adapter}(hjk hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hj ubj8)}(hstruct dvb_ca_en50221 *cah](h)}(hhh]hstruct}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j)}(hdvb_ca_en50221h]hdvb_ca_en50221}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj_reftypejq reftargetj modnameN classnameNjujx)}j{]jL c.dvb_ca_en50221_initasbuh1hhj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hcah]hca}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hj ubj8)}(h int flagsh](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hflagsh]hflags}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hj ubj8)}(hint slot_counth](j)}(hinth]hint}(hj) hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj% ubh)}(h h]h }(hj7 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj% ubj)}(h slot_counth]h slot_count}(hjE hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj% ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hj ubeh}(h]h ]h"]h$]h&]hhuh1j1hj hhhj hKubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj hhhj hKubah}(h]j ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj hKhj hhubjA)}(hhh]jF)}(hInitialise a new DVB CA device.h]hInitialise a new DVB CA device.}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKzhjl hhubah}(h]h ]h"]h$]h&]uh1j@hj hhhj hKubeh}(h]h ](j_functioneh"]h$]h&]jdj_jej jfj jgjhjiuh1hhhhhhNhNubjk)}(hXO**Parameters** ``struct dvb_adapter *dvb_adapter`` DVB adapter to attach the new CA device to. ``struct dvb_ca_en50221 *ca`` The dvb_ca instance. ``int flags`` Flags describing the CA device (DVB_CA_EN50221_FLAG_*). ``int slot_count`` Number of slots supported. **Description** **return** 0 on success, nonzero on failureh](jF)}(h**Parameters**h]ju)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK~hj ubj)}(hhh](j)}(hP``struct dvb_adapter *dvb_adapter`` DVB adapter to attach the new CA device to. h](j)}(h#``struct dvb_adapter *dvb_adapter``h]j)}(hj h]hstruct dvb_adapter *dvb_adapter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK|hj ubj)}(hhh]jF)}(h+DVB adapter to attach the new CA device to.h]h+DVB adapter to attach the new CA device to.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj hK|hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hK|hj ubj)}(h3``struct dvb_ca_en50221 *ca`` The dvb_ca instance. h](j)}(h``struct dvb_ca_en50221 *ca``h]j)}(hj h]hstruct dvb_ca_en50221 *ca}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK}hj ubj)}(hhh]jF)}(hThe dvb_ca instance.h]hThe dvb_ca instance.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj hK}hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hK}hj ubj)}(hF``int flags`` Flags describing the CA device (DVB_CA_EN50221_FLAG_*). h](j)}(h ``int flags``h]j)}(hj" h]h int flags}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhK~hj ubj)}(hhh]jF)}(h7Flags describing the CA device (DVB_CA_EN50221_FLAG_*).h]h7Flags describing the CA device (DVB_CA_EN50221_FLAG_*).}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj7 hK~hj8 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj7 hK~hj ubj)}(h.``int slot_count`` Number of slots supported. h](j)}(h``int slot_count``h]j)}(hj[ h]hint slot_count}(hj] hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjY ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKhjU ubj)}(hhh]jF)}(hNumber of slots supported.h]hNumber of slots supported.}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjp hKhjq ubah}(h]h ]h"]h$]h&]uh1jhjU ubeh}(h]h ]h"]h$]h&]uh1jhjp hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubjF)}(h**Description**h]ju)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKhj ubjF)}(h+**return** 0 on success, nonzero on failureh](ju)}(h **return**h]hreturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubh! 0 on success, nonzero on failure}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌#dvb_ca_en50221_release (C function)c.dvb_ca_en50221_releasehNtauh1hhhhhhNhNubh)}(hhh](h)}(h7void dvb_ca_en50221_release (struct dvb_ca_en50221 *ca)h]h)}(h6void dvb_ca_en50221_release(struct dvb_ca_en50221 *ca)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hKubj)}(hdvb_ca_en50221_releaseh]j)}(hdvb_ca_en50221_releaseh]hdvb_ca_en50221_release}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj hhhj hKubj2)}(h(struct dvb_ca_en50221 *ca)h]j8)}(hstruct dvb_ca_en50221 *cah](h)}(hhh]hstruct}(hj&hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj"ubh)}(h h]h }(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"ubh)}(hhh]j)}(hdvb_ca_en50221h]hdvb_ca_en50221}(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainj_reftypejq reftargetjFmodnameN classnameNjujx)}j{]j~)}jqj sbc.dvb_ca_en50221_releaseasbuh1hhj"ubh)}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"ubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(hcah]hca}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j7hjubah}(h]h ]h"]h$]h&]hhuh1j1hj hhhj hKubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj hhhj hKubah}(h]j ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj hKhj hhubjA)}(hhh]jF)}(hRelease a DVB CA device.h]hRelease a DVB CA device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKhjhhubah}(h]h ]h"]h$]h&]uh1j@hj hhhj hKubeh}(h]h ](j_functioneh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(hO**Parameters** ``struct dvb_ca_en50221 *ca`` The associated dvb_ca instance.h](jF)}(h**Parameters**h]ju)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKhjubj)}(hhh]j)}(h=``struct dvb_ca_en50221 *ca`` The associated dvb_ca instance.h](j)}(h``struct dvb_ca_en50221 *ca``h]j)}(hjh]hstruct dvb_ca_en50221 *ca}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKhjubj)}(hhh]jF)}(hThe associated dvb_ca instance.h]hThe associated dvb_ca instance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/dtv-ca:6: ./include/media/dvb_ca_en50221.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubeh}(h]"digital-tv-conditional-access-kabiah ]h"]"digital tv conditional access kabiah$]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_handlerjVerror_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}refids}nameids}j0j-s nametypes}j0sh}(j-hhhjjj6j;jj j j j j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.