.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/s390-driversmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/driver-api/s390-driversmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/driver-api/s390-driversmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/driver-api/s390-driversmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/driver-api/s390-driversmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/pt_BR/driver-api/s390-driversmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/driver-api/s390-driversmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h#Writing s390 channel device driversh]h#Writing s390 channel device drivers}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhE/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers.rsthKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hAuthorh]hAuthor}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(hCornelia Huck h]h paragraph)}(h Cornelia Huckh]h Cornelia Huck}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Introductionh]h Introduction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hX*This document describes the interfaces available for device drivers that drive s390 based channel attached I/O devices. This includes interfaces for interaction with the hardware and interfaces for interacting with the common driver core. Those interfaces are provided by the s390 common I/O layer.h]hX*This document describes the interfaces available for device drivers that drive s390 based channel attached I/O devices. This includes interfaces for interaction with the hardware and interfaces for interacting with the common driver core. Those interfaces are provided by the s390 common I/O layer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj hhubh)}(hThe document assumes a familarity with the technical terms associated with the s390 channel I/O architecture. For a description of this architecture, please refer to the "z/Architecture: Principles of Operation", IBM publication no. SA22-7832.h]hThe document assumes a familarity with the technical terms associated with the s390 channel I/O architecture. For a description of this architecture, please refer to the “z/Architecture: Principles of Operation”, IBM publication no. SA22-7832.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hWhile most I/O devices on a s390 system are typically driven through the channel I/O mechanism described here, there are various other methods (like the diag interface). These are out of the scope of this document.h]hWhile most I/O devices on a s390 system are typically driven through the channel I/O mechanism described here, there are various other methods (like the diag interface). These are out of the scope of this document.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hThe s390 common I/O layer also provides access to some devices that are not strictly considered I/O devices. They are considered here as well, although they are not the focus of this document.h]hThe s390 common I/O layer also provides access to some devices that are not strictly considered I/O devices. They are considered here as well, although they are not the focus of this document.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hrSome additional information can also be found in the kernel source under Documentation/arch/s390/driver-model.rst.h]hrSome additional information can also be found in the kernel source under Documentation/arch/s390/driver-model.rst.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h The css bush]h The css bus}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhhhhhK!ubh)}(h`The css bus contains the subchannels available on the system. They fall into several categories:h]h`The css bus contains the subchannels available on the system. They fall into several categories:}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjlhhubh bullet_list)}(hhh](h list_item)}(hqStandard I/O subchannels, for use by the system. They have a child device on the ccw bus and are described below.h]h)}(hqStandard I/O subchannels, for use by the system. They have a child device on the ccw bus and are described below.h]hqStandard I/O subchannels, for use by the system. They have a child device on the ccw bus and are described below.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hWI/O subchannels bound to the vfio-ccw driver. See Documentation/arch/s390/vfio-ccw.rst.h]h)}(hWI/O subchannels bound to the vfio-ccw driver. See Documentation/arch/s390/vfio-ccw.rst.h]hWI/O subchannels bound to the vfio-ccw driver. See Documentation/arch/s390/vfio-ccw.rst.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h6Message subchannels. No Linux driver currently exists.h]h)}(hjh]h6Message subchannels. No Linux driver currently exists.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hjCHSC subchannels (at most one). The chsc subchannel driver can be used to send asynchronous chsc commands.h]h)}(hjCHSC subchannels (at most one). The chsc subchannel driver can be used to send asynchronous chsc commands.h]hjCHSC subchannels (at most one). The chsc subchannel driver can be used to send asynchronous chsc commands.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hhj8hhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleccw1 (C struct)c.ccw1hNtauh1jWhj8hhhNhNubhdesc)}(hhh](hdesc_signature)}(hccw1h]hdesc_signature_line)}(h struct ccw1h](hdesc_sig_keyword)}(hstructh]hstruct}(hj{hhhNhNubah}(h]h ]kah"]h$]h&]uh1jyhjuhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjuhhhjhKubh desc_name)}(hccw1h]h desc_sig_name)}(hjqh]hccw1}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1jhjuhhhjhKubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1jssphinx_line_type declaratorhjohhhjhKubah}(h]jfah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jmhjhKhjjhhubh desc_content)}(hhh]h)}(hchannel command wordh]hchannel command word}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjjhhhjhKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhhj8hNhNubh container)}(h**Definition**:: struct ccw1 { __u8 cmd_code; __u8 flags; __u16 count; dma32_t cda; }; **Members** ``cmd_code`` command code ``flags`` flags, like IDA addressing, etc. ``count`` byte count ``cda`` data addressh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubh literal_block)}(hUstruct ccw1 { __u8 cmd_code; __u8 flags; __u16 count; dma32_t cda; };h]hUstruct ccw1 { __u8 cmd_code; __u8 flags; __u16 count; dma32_t cda; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubh)}(h **Members**h]j)}(hj0h]hMembers}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK%hjubhdefinition_list)}(hhh](hdefinition_list_item)}(h``cmd_code`` command code h](hterm)}(h ``cmd_code``h]hliteral)}(hjUh]hcmd_code}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjSubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjMubh definition)}(hhh]h)}(h command codeh]h command code}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhKhjoubah}(h]h ]h"]h$]h&]uh1jmhjMubeh}(h]h ]h"]h$]h&]uh1jKhjlhKhjHubjL)}(h+``flags`` flags, like IDA addressing, etc. h](jR)}(h ``flags``h]jX)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(h flags, like IDA addressing, etc.h]h flags, like IDA addressing, etc.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjHubjL)}(h``count`` byte count h](jR)}(h ``count``h]jX)}(hjh]hcount}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(h byte counth]h byte count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjHubjL)}(h``cda`` data addressh](jR)}(h``cda``h]jX)}(hjh]hcda}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(h data addressh]h data address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjHubeh}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubh)}(h**Description**h]j)}(hjGh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK hj8hhubh)}(hThe ccw is the basic structure to build channel programs that perform operations with the device or the control unit. Only Format-1 channel command words are supported.h]hThe ccw is the basic structure to build channel programs that perform operations with the device or the control unit. Only Format-1 channel command words are supported.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj8hhubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw0 (C struct)c.ccw0hNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hccw0h]jt)}(h struct ccw0h](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK$ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK$ubj)}(hccw0h]j)}(hjh]hccw0}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhK$ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj}hhhjhK$ubah}(h]jxah ](jjeh"]h$]h&]jj)jhuh1jmhjhK$hjzhhubj)}(hhh]h)}(hchannel command wordh]hchannel command word}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK*hjhhubah}(h]h ]h"]h$]h&]uh1jhjzhhhjhK$ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhhj8hNhNubj)}(hX3**Definition**:: struct ccw0 { __u8 cmd_code; __u32 cda : 24; __u8 flags; __u8 reserved; __u16 count; }; **Members** ``cmd_code`` command code ``cda`` data address ``flags`` flags, like IDA addressing, etc. ``reserved`` will be ignored ``count`` byte counth](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK.hjubj)}(hkstruct ccw0 { __u8 cmd_code; __u32 cda : 24; __u8 flags; __u8 reserved; __u16 count; };h]hkstruct ccw0 { __u8 cmd_code; __u32 cda : 24; __u8 flags; __u8 reserved; __u16 count; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK0hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK8hjubjG)}(hhh](jL)}(h``cmd_code`` command code h](jR)}(h ``cmd_code``h]jX)}(hj4h]hcmd_code}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj2ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK,hj.ubjn)}(hhh]h)}(h command codeh]h command code}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhK,hjJubah}(h]h ]h"]h$]h&]uh1jmhj.ubeh}(h]h ]h"]h$]h&]uh1jKhjIhK,hj+ubjL)}(h``cda`` data address h](jR)}(h``cda``h]jX)}(hjmh]hcda}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjkubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK-hjgubjn)}(hhh]h)}(h data addressh]h data address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK-hjubah}(h]h ]h"]h$]h&]uh1jmhjgubeh}(h]h ]h"]h$]h&]uh1jKhjhK-hj+ubjL)}(h+``flags`` flags, like IDA addressing, etc. h](jR)}(h ``flags``h]jX)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK.hjubjn)}(hhh]h)}(h flags, like IDA addressing, etc.h]h flags, like IDA addressing, etc.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK.hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhK.hj+ubjL)}(h``reserved`` will be ignored h](jR)}(h ``reserved``h]jX)}(hjh]hreserved}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK/hjubjn)}(hhh]h)}(hwill be ignoredh]hwill be ignored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK/hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhK/hj+ubjL)}(h``count`` byte counth](jR)}(h ``count``h]jX)}(hjh]hcount}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK/hjubjn)}(hhh]h)}(h byte counth]h byte count}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK0hj.ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj-hK/hj+ubeh}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubh)}(h**Description**h]j)}(hj[h]h Description}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK3hj8hhubh)}(hThe format-0 ccw structure.h]hThe format-0 ccw structure.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK0hj8hhubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jderw (C struct)c.erwhNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(herwh]jt)}(h struct erwh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK5ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK5ubj)}(herwh]j)}(hjh]herw}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhK5ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhK5ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhK5hjhhubj)}(hhh]h)}(hextended report wordh]hextended report word}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKShjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK5ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhhj8hNhNubj)}(hX**Definition**:: struct erw { __u32 res0 : 3; __u32 auth : 1; __u32 pvrf : 1; __u32 cpt : 1; __u32 fsavf : 1; __u32 cons : 1; __u32 scavf : 1; __u32 fsaf : 1; __u32 scnt : 6; __u32 res16 : 16; }; **Members** ``res0`` reserved ``auth`` authorization check ``pvrf`` path-verification-required flag ``cpt`` channel-path timeout ``fsavf`` failing storage address validity flag ``cons`` concurrent sense ``scavf`` secondary ccw address validity flag ``fsaf`` failing storage address format ``scnt`` sense count, if **cons** == ``1`` ``res16`` reservedh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKWhjubj)}(hstruct erw { __u32 res0 : 3; __u32 auth : 1; __u32 pvrf : 1; __u32 cpt : 1; __u32 fsavf : 1; __u32 cons : 1; __u32 scavf : 1; __u32 fsaf : 1; __u32 scnt : 6; __u32 res16 : 16; };h]hstruct erw { __u32 res0 : 3; __u32 auth : 1; __u32 pvrf : 1; __u32 cpt : 1; __u32 fsavf : 1; __u32 cons : 1; __u32 scavf : 1; __u32 fsaf : 1; __u32 scnt : 6; __u32 res16 : 16; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKYhjubh)}(h **Members**h]j)}(hj)h]hMembers}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKfhjubjG)}(hhh](jL)}(h``res0`` reserved h](jR)}(h``res0``h]jX)}(hjHh]hres0}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjFubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKUhjBubjn)}(hhh]h)}(hreservedh]hreserved}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hKUhj^ubah}(h]h ]h"]h$]h&]uh1jmhjBubeh}(h]h ]h"]h$]h&]uh1jKhj]hKUhj?ubjL)}(h``auth`` authorization check h](jR)}(h``auth``h]jX)}(hjh]hauth}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKVhj{ubjn)}(hhh]h)}(hauthorization checkh]hauthorization check}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKVhjubah}(h]h ]h"]h$]h&]uh1jmhj{ubeh}(h]h ]h"]h$]h&]uh1jKhjhKVhj?ubjL)}(h)``pvrf`` path-verification-required flag h](jR)}(h``pvrf``h]jX)}(hjh]hpvrf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKWhjubjn)}(hhh]h)}(hpath-verification-required flagh]hpath-verification-required flag}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKWhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKWhj?ubjL)}(h``cpt`` channel-path timeout h](jR)}(h``cpt``h]jX)}(hjh]hcpt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKXhjubjn)}(hhh]h)}(hchannel-path timeouth]hchannel-path timeout}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKXhj ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKXhj?ubjL)}(h0``fsavf`` failing storage address validity flag h](jR)}(h ``fsavf``h]jX)}(hj,h]hfsavf}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj*ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKYhj&ubjn)}(hhh]h)}(h%failing storage address validity flagh]h%failing storage address validity flag}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhKYhjBubah}(h]h ]h"]h$]h&]uh1jmhj&ubeh}(h]h ]h"]h$]h&]uh1jKhjAhKYhj?ubjL)}(h``cons`` concurrent sense h](jR)}(h``cons``h]jX)}(hjeh]hcons}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjcubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKZhj_ubjn)}(hhh]h)}(hconcurrent senseh]hconcurrent sense}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhKZhj{ubah}(h]h ]h"]h$]h&]uh1jmhj_ubeh}(h]h ]h"]h$]h&]uh1jKhjzhKZhj?ubjL)}(h.``scavf`` secondary ccw address validity flag h](jR)}(h ``scavf``h]jX)}(hjh]hscavf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK[hjubjn)}(hhh]h)}(h#secondary ccw address validity flagh]h#secondary ccw address validity flag}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK[hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhK[hj?ubjL)}(h(``fsaf`` failing storage address format h](jR)}(h``fsaf``h]jX)}(hjh]hfsaf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK\hjubjn)}(hhh]h)}(hfailing storage address formath]hfailing storage address format}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK\hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhK\hj?ubjL)}(h+``scnt`` sense count, if **cons** == ``1`` h](jR)}(h``scnt``h]jX)}(hj h]hscnt}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK]hj ubjn)}(hhh]h)}(h!sense count, if **cons** == ``1``h](hsense count, if }(hj) hhhNhNubj)}(h**cons**h]hcons}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj) ubh == }(hj) hhhNhNubjX)}(h``1``h]h1}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj) ubeh}(h]h ]h"]h$]h&]uh1hhj% hK]hj& ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj% hK]hj?ubjL)}(h``res16`` reservedh](jR)}(h ``res16``h]jX)}(hji h]hres16}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjg ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK]hjc ubjn)}(hhh]h)}(hreservedh]hreserved}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK^hj ubah}(h]h ]h"]h$]h&]uh1jmhjc ubeh}(h]h ]h"]h$]h&]uh1jKhj~ hK]hj?ubeh}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jderw_eadm (C struct) c.erw_eadmhNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(herw_eadmh]jt)}(hstruct erw_eadmh](jz)}(hj}h]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj hhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKdubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKdubj)}(herw_eadmh]j)}(hj h]herw_eadm}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhj hKdubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj hhhj hKdubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jmhj hKdhj hhubj)}(hhh]h)}(h$EADM Subchannel extended report wordh]h$EADM Subchannel extended report word}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKmhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKdubeh}(h]h ](jstructeh"]h$]h&]jjjj jj jjjuh1jhhhhj8hNhNubj)}(h**Definition**:: struct erw_eadm { __u32 : 16; __u32 b : 1; __u32 r : 1; __u32 : 14; }; **Members** ``b`` aob error ``r`` arsb errorh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj% ubh:}(hj% hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKqhj! ubj)}(hVstruct erw_eadm { __u32 : 16; __u32 b : 1; __u32 r : 1; __u32 : 14; };h]hVstruct erw_eadm { __u32 : 16; __u32 b : 1; __u32 r : 1; __u32 : 14; };}hjB sbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKshj! ubh)}(h **Members**h]j)}(hjS h]hMembers}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKzhj! ubjG)}(hhh](jL)}(h``b`` aob error h](jR)}(h``b``h]jX)}(hjr h]hb}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjp ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKohjl ubjn)}(hhh]h)}(h aob errorh]h aob error}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKohj ubah}(h]h ]h"]h$]h&]uh1jmhjl ubeh}(h]h ]h"]h$]h&]uh1jKhj hKohji ubjL)}(h``r`` arsb errorh](jR)}(h``r``h]jX)}(hj h]hr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKohj ubjn)}(hhh]h)}(h arsb errorh]h arsb error}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKphj ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj hKohji ubeh}(h]h ]h"]h$]h&]uh1jFhj! ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdsublog (C struct)c.subloghNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hsublogh]jt)}(h struct sublogh](jz)}(hj}h]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj hhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKvubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKvubj)}(hsublogh]j)}(hj h]hsublog}(hj% hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj! ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhj hKvubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj hhhj hKvubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jmhj hKvhj hhubj)}(hhh]h)}(hsubchannel logout areah]hsubchannel logout area}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKyhjD hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKvubeh}(h]h ](jstructeh"]h$]h&]jjjj_ jj_ jjjuh1jhhhhj8hNhNubj)}(hXw**Definition**:: struct sublog { __u32 res0 : 1; __u32 esf : 7; __u32 lpum : 8; __u32 arep : 1; __u32 fvf : 5; __u32 sacc : 2; __u32 termc : 2; __u32 devsc : 1; __u32 serr : 1; __u32 ioerr : 1; __u32 seqc : 3; }; **Members** ``res0`` reserved ``esf`` extended status flags ``lpum`` last path used mask ``arep`` ancillary report ``fvf`` field-validity flags ``sacc`` storage access code ``termc`` termination code ``devsc`` device-status check ``serr`` secondary error ``ioerr`` i/o-error alert ``seqc`` sequence codeh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjg ubh:}(hjg hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK}hjc ubj)}(hstruct sublog { __u32 res0 : 1; __u32 esf : 7; __u32 lpum : 8; __u32 arep : 1; __u32 fvf : 5; __u32 sacc : 2; __u32 termc : 2; __u32 devsc : 1; __u32 serr : 1; __u32 ioerr : 1; __u32 seqc : 3; };h]hstruct sublog { __u32 res0 : 1; __u32 esf : 7; __u32 lpum : 8; __u32 arep : 1; __u32 fvf : 5; __u32 sacc : 2; __u32 termc : 2; __u32 devsc : 1; __u32 serr : 1; __u32 ioerr : 1; __u32 seqc : 3; };}hj sbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjc ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjc ubjG)}(hhh](jL)}(h``res0`` reserved h](jR)}(h``res0``h]jX)}(hj h]hres0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK{hj ubjn)}(hhh]h)}(hreservedh]hreserved}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK{hj ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj hK{hj ubjL)}(h``esf`` extended status flags h](jR)}(h``esf``h]jX)}(hj h]hesf}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK|hj ubjn)}(hhh]h)}(hextended status flagsh]hextended status flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK|hj ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj hK|hj ubjL)}(h``lpum`` last path used mask h](jR)}(h``lpum``h]jX)}(hj& h]hlpum}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj$ ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK}hj ubjn)}(hhh]h)}(hlast path used maskh]hlast path used mask}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj; hK}hj< ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj; hK}hj ubjL)}(h``arep`` ancillary report h](jR)}(h``arep``h]jX)}(hj_ h]harep}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj] ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhK~hjY ubjn)}(hhh]h)}(hancillary reporth]hancillary report}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt hK~hju ubah}(h]h ]h"]h$]h&]uh1jmhjY ubeh}(h]h ]h"]h$]h&]uh1jKhjt hK~hj ubjL)}(h``fvf`` field-validity flags h](jR)}(h``fvf``h]jX)}(hj h]hfvf}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj ubjn)}(hhh]h)}(hfield-validity flagsh]hfield-validity flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj hKhj ubjL)}(h``sacc`` storage access code h](jR)}(h``sacc``h]jX)}(hj h]hsacc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj ubjn)}(hhh]h)}(hstorage access codeh]hstorage access code}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj hKhj ubjL)}(h``termc`` termination code h](jR)}(h ``termc``h]jX)}(hj h]htermc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj ubjn)}(hhh]h)}(htermination codeh]htermination code}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj hKhj ubjL)}(h``devsc`` device-status check h](jR)}(h ``devsc``h]jX)}(hjC h]hdevsc}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjA ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj= ubjn)}(hhh]h)}(hdevice-status checkh]hdevice-status check}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjX hKhjY ubah}(h]h ]h"]h$]h&]uh1jmhj= ubeh}(h]h ]h"]h$]h&]uh1jKhjX hKhj ubjL)}(h``serr`` secondary error h](jR)}(h``serr``h]jX)}(hj| h]hserr}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjz ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjv ubjn)}(hhh]h)}(hsecondary errorh]hsecondary error}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jmhjv ubeh}(h]h ]h"]h$]h&]uh1jKhj hKhj ubjL)}(h``ioerr`` i/o-error alert h](jR)}(h ``ioerr``h]jX)}(hj h]hioerr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj ubjn)}(hhh]h)}(hi/o-error alerth]hi/o-error alert}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj hKhj ubjL)}(h``seqc`` sequence codeh](jR)}(h``seqc``h]jX)}(hj h]hseqc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj ubjn)}(hhh]h)}(h sequence codeh]h sequence code}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhjhKhj ubeh}(h]h ]h"]h$]h&]uh1jFhjc ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdesw0 (C struct)c.esw0hNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hesw0h]jt)}(h struct esw0h](jz)}(hj}h]hstruct}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjDhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKubj)}(h h]h }(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDhhhjUhKubj)}(hesw0h]j)}(hjBh]hesw0}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubah}(h]h ](jjeh"]h$]h&]jjuh1jhjDhhhjUhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj@hhhjUhKubah}(h]j;ah ](jjeh"]h$]h&]jj)jhuh1jmhjUhKhj=hhubj)}(hhh]h)}(h#Format 0 Extended Status Word (ESW)h]h#Format 0 Extended Status Word (ESW)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhj=hhhjUhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhhj8hNhNubj)}(hX**Definition**:: struct esw0 { struct sublog sublog; struct erw erw; dma32_t faddr[2]; dma32_t saddr; }; **Members** ``sublog`` subchannel logout ``erw`` extended report word ``faddr`` failing storage address ``saddr`` secondary ccw addressh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubj)}(hgstruct esw0 { struct sublog sublog; struct erw erw; dma32_t faddr[2]; dma32_t saddr; };h]hgstruct esw0 { struct sublog sublog; struct erw erw; dma32_t faddr[2]; dma32_t saddr; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjG)}(hhh](jL)}(h``sublog`` subchannel logout h](jR)}(h ``sublog``h]jX)}(hjh]hsublog}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hsubchannel logouth]hsubchannel logout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj hKhjubjL)}(h``erw`` extended report word h](jR)}(h``erw``h]jX)}(hj0h]herw}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj.ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj*ubjn)}(hhh]h)}(hextended report wordh]hextended report word}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjFubah}(h]h ]h"]h$]h&]uh1jmhj*ubeh}(h]h ]h"]h$]h&]uh1jKhjEhKhjubjL)}(h"``faddr`` failing storage address h](jR)}(h ``faddr``h]jX)}(hjih]hfaddr}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjgubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjcubjn)}(hhh]h)}(hfailing storage addressh]hfailing storage address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hKhjubah}(h]h ]h"]h$]h&]uh1jmhjcubeh}(h]h ]h"]h$]h&]uh1jKhj~hKhjubjL)}(h``saddr`` secondary ccw addressh](jR)}(h ``saddr``h]jX)}(hjh]hsaddr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hsecondary ccw addressh]hsecondary ccw address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubeh}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdesw1 (C struct)c.esw1hNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hesw1h]jt)}(h struct esw1h](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj hKubj)}(hesw1h]j)}(hjh]hesw1}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj hKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhj hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhj hKhjhhubj)}(hhh]h)}(h#Format 1 Extended Status Word (ESW)h]h#Format 1 Extended Status Word (ESW)}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj;hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hKubeh}(h]h ](jstructeh"]h$]h&]jjjjVjjVjjjuh1jhhhhj8hNhNubj)}(hX5**Definition**:: struct esw1 { __u8 zero0; __u8 lpum; __u16 zero16; struct erw erw; __u32 zeros[3]; }; **Members** ``zero0`` reserved zeros ``lpum`` last path used mask ``zero16`` reserved zeros ``erw`` extended report word ``zeros`` three fullwords of zerosh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubh:}(hj^hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjZubj)}(histruct esw1 { __u8 zero0; __u8 lpum; __u16 zero16; struct erw erw; __u32 zeros[3]; };h]histruct esw1 { __u8 zero0; __u8 lpum; __u16 zero16; struct erw erw; __u32 zeros[3]; };}hj{sbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjZubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjZubjG)}(hhh](jL)}(h``zero0`` reserved zeros h](jR)}(h ``zero0``h]jX)}(hjh]hzero0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hreserved zerosh]hreserved zeros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubjL)}(h``lpum`` last path used mask h](jR)}(h``lpum``h]jX)}(hjh]hlpum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hlast path used maskh]hlast path used mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubjL)}(h``zero16`` reserved zeros h](jR)}(h ``zero16``h]jX)}(hjh]hzero16}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hreserved zerosh]hreserved zeros}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKhj3ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj2hKhjubjL)}(h``erw`` extended report word h](jR)}(h``erw``h]jX)}(hjVh]herw}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjTubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjPubjn)}(hhh]h)}(hextended report wordh]hextended report word}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhKhjlubah}(h]h ]h"]h$]h&]uh1jmhjPubeh}(h]h ]h"]h$]h&]uh1jKhjkhKhjubjL)}(h"``zeros`` three fullwords of zerosh](jR)}(h ``zeros``h]jX)}(hjh]hzeros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hthree fullwords of zerosh]hthree fullwords of zeros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubeh}(h]h ]h"]h$]h&]uh1jFhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdesw2 (C struct)c.esw2hNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hesw2h]jt)}(h struct esw2h](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hesw2h]j)}(hjh]hesw2}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhKhjhhubj)}(hhh]h)}(h#Format 2 Extended Status Word (ESW)h]h#Format 2 Extended Status Word (ESW)}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj(hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjCjjCjjjuh1jhhhhj8hNhNubj)}(hX?**Definition**:: struct esw2 { __u8 zero0; __u8 lpum; __u16 dcti; struct erw erw; __u32 zeros[3]; }; **Members** ``zero0`` reserved zeros ``lpum`` last path used mask ``dcti`` device-connect-time interval ``erw`` extended report word ``zeros`` three fullwords of zerosh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubh:}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjGubj)}(hgstruct esw2 { __u8 zero0; __u8 lpum; __u16 dcti; struct erw erw; __u32 zeros[3]; };h]hgstruct esw2 { __u8 zero0; __u8 lpum; __u16 dcti; struct erw erw; __u32 zeros[3]; };}hjhsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjGubh)}(h **Members**h]j)}(hjyh]hMembers}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjGubjG)}(hhh](jL)}(h``zero0`` reserved zeros h](jR)}(h ``zero0``h]jX)}(hjh]hzero0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hreserved zerosh]hreserved zeros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubjL)}(h``lpum`` last path used mask h](jR)}(h``lpum``h]jX)}(hjh]hlpum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hlast path used maskh]hlast path used mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubjL)}(h&``dcti`` device-connect-time interval h](jR)}(h``dcti``h]jX)}(hj h]hdcti}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hdevice-connect-time intervalh]hdevice-connect-time interval}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubjL)}(h``erw`` extended report word h](jR)}(h``erw``h]jX)}(hjCh]herw}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjAubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj=ubjn)}(hhh]h)}(hextended report wordh]hextended report word}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhKhjYubah}(h]h ]h"]h$]h&]uh1jmhj=ubeh}(h]h ]h"]h$]h&]uh1jKhjXhKhjubjL)}(h"``zeros`` three fullwords of zerosh](jR)}(h ``zeros``h]jX)}(hj|h]hzeros}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjzubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjvubjn)}(hhh]h)}(hthree fullwords of zerosh]hthree fullwords of zeros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubah}(h]h ]h"]h$]h&]uh1jmhjvubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubeh}(h]h ]h"]h$]h&]uh1jFhjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdesw3 (C struct)c.esw3hNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hesw3h]jt)}(h struct esw3h](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hesw3h]j)}(hjh]hesw3}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhKhjhhubj)}(hhh]h)}(h#Format 3 Extended Status Word (ESW)h]h#Format 3 Extended Status Word (ESW)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjj0jj0jjjuh1jhhhhj8hNhNubj)}(hX)**Definition**:: struct esw3 { __u8 zero0; __u8 lpum; __u16 res; struct erw erw; __u32 zeros[3]; }; **Members** ``zero0`` reserved zeros ``lpum`` last path used mask ``res`` reserved ``erw`` extended report word ``zeros`` three fullwords of zerosh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubh:}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj4ubj)}(hfstruct esw3 { __u8 zero0; __u8 lpum; __u16 res; struct erw erw; __u32 zeros[3]; };h]hfstruct esw3 { __u8 zero0; __u8 lpum; __u16 res; struct erw erw; __u32 zeros[3]; };}hjUsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj4ubh)}(h **Members**h]j)}(hjfh]hMembers}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj4ubjG)}(hhh](jL)}(h``zero0`` reserved zeros h](jR)}(h ``zero0``h]jX)}(hjh]hzero0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hreserved zerosh]hreserved zeros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhj|ubjL)}(h``lpum`` last path used mask h](jR)}(h``lpum``h]jX)}(hjh]hlpum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hlast path used maskh]hlast path used mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhj|ubjL)}(h``res`` reserved h](jR)}(h``res``h]jX)}(hjh]hres}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hreservedh]hreserved}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj hKhj|ubjL)}(h``erw`` extended report word h](jR)}(h``erw``h]jX)}(hj0h]herw}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj.ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj*ubjn)}(hhh]h)}(hextended report wordh]hextended report word}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjFubah}(h]h ]h"]h$]h&]uh1jmhj*ubeh}(h]h ]h"]h$]h&]uh1jKhjEhKhj|ubjL)}(h"``zeros`` three fullwords of zerosh](jR)}(h ``zeros``h]jX)}(hjih]hzeros}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjgubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjcubjn)}(hhh]h)}(hthree fullwords of zerosh]hthree fullwords of zeros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubah}(h]h ]h"]h$]h&]uh1jmhjcubeh}(h]h ]h"]h$]h&]uh1jKhj~hKhj|ubeh}(h]h ]h"]h$]h&]uh1jFhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdesw_eadm (C struct) c.esw_eadmhNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hesw_eadmh]jt)}(hstruct esw_eadmh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hesw_eadmh]j)}(hjh]hesw_eadm}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhKhjhhubj)}(hhh]h)}(h*EADM Subchannel Extended Status Word (ESW)h]h*EADM Subchannel Extended Status Word (ESW)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhhj8hNhNubj)}(h**Definition**:: struct esw_eadm { __u32 sublog; struct erw_eadm erw; __u32 : 32; __u32 : 32; __u32 : 32; }; **Members** ``sublog`` subchannel logout ``erw`` extended report wordh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh:}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj!ubj)}(hostruct esw_eadm { __u32 sublog; struct erw_eadm erw; __u32 : 32; __u32 : 32; __u32 : 32; };h]hostruct esw_eadm { __u32 sublog; struct erw_eadm erw; __u32 : 32; __u32 : 32; __u32 : 32; };}hjBsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj!ubh)}(h **Members**h]j)}(hjSh]hMembers}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj!ubjG)}(hhh](jL)}(h``sublog`` subchannel logout h](jR)}(h ``sublog``h]jX)}(hjrh]hsublog}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjpubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjlubjn)}(hhh]h)}(hsubchannel logouth]hsubchannel logout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjlubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjiubjL)}(h``erw`` extended report wordh](jR)}(h``erw``h]jX)}(hjh]herw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hextended report wordh]hextended report word}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjiubeh}(h]h ]h"]h$]h&]uh1jFhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdirb (C struct)c.irbhNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hirbh]jt)}(h struct irbh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hirbh]j)}(hjh]hirb}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhKhjhhubj)}(hhh]h)}(hinterruption response blockh]hinterruption response block}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjDhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjj_jj_jjjuh1jhhhhj8hNhNubj)}(hXl**Definition**:: struct irb { union scsw scsw; union { struct esw0 esw0; struct esw1 esw1; struct esw2 esw2; struct esw3 esw3; struct esw_eadm eadm; } esw; __u8 ecw[32]; }; **Members** ``scsw`` subchannel status word ``esw`` extended status word ``ecw`` extended control wordh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubh:}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjcubj)}(hstruct irb { union scsw scsw; union { struct esw0 esw0; struct esw1 esw1; struct esw2 esw2; struct esw3 esw3; struct esw_eadm eadm; } esw; __u8 ecw[32]; };h]hstruct irb { union scsw scsw; union { struct esw0 esw0; struct esw1 esw1; struct esw2 esw2; struct esw3 esw3; struct esw_eadm eadm; } esw; __u8 ecw[32]; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjcubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjcubjG)}(hhh](jL)}(h ``scsw`` subchannel status word h](jR)}(h``scsw``h]jX)}(hjh]hscsw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hsubchannel status wordh]hsubchannel status word}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubjL)}(h``esw`` extended status word h](jR)}(h``esw``h]jX)}(hjh]hesw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(hextended status wordh]hextended status word}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubjL)}(h``ecw`` extended control wordh](jR)}(h``ecw``h]jX)}(hj&h]hecw}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj$ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj ubjn)}(hhh]h)}(hextended control wordh]hextended control word}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj<ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj;hKhjubeh}(h]h ]h"]h$]h&]uh1jFhjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubh)}(h**Description**h]j)}(hjih]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj8hhubh)}(hXThe irb that is handed to the device driver when an interrupt occurs. For solicited interrupts, the common I/O layer already performs checks whether a field is valid; a field not being valid is always passed as ``0``. If a unit check occurred, **ecw** may contain sense data; this is retrieved by the common I/O layer itself if the device doesn't support concurrent sense (so that the device driver never needs to perform basic sense itself). For unsolicited interrupts, the irb is passed as-is (expect for sense data, if applicable).h](hThe irb that is handed to the device driver when an interrupt occurs. For solicited interrupts, the common I/O layer already performs checks whether a field is valid; a field not being valid is always passed as }(hjhhhNhNubjX)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubh. If a unit check occurred, }(hjhhhNhNubj)}(h**ecw**h]hecw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhX may contain sense data; this is retrieved by the common I/O layer itself if the device doesn’t support concurrent sense (so that the device driver never needs to perform basic sense itself). For unsolicited interrupts, the irb is passed as-is (expect for sense data, if applicable).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj8hhubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdciw (C struct)c.ciwhNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hciwh]jt)}(h struct ciwh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hciwh]j)}(hjh]hciw}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhKhjhhubj)}(hhh]h)}(h%command information word (CIW) layouth]h%command information word (CIW) layout}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjj%jj%jjjuh1jhhhhj8hNhNubj)}(hX6**Definition**:: struct ciw { __u32 et : 2; __u32 reserved : 2; __u32 ct : 4; __u32 cmd : 8; __u32 count : 16; }; **Members** ``et`` entry type ``reserved`` reserved bits ``ct`` command type ``cmd`` command code ``count`` command counth](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh:}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhj)ubj)}(hstruct ciw { __u32 et : 2; __u32 reserved : 2; __u32 ct : 4; __u32 cmd : 8; __u32 count : 16; };h]hstruct ciw { __u32 et : 2; __u32 reserved : 2; __u32 ct : 4; __u32 cmd : 8; __u32 count : 16; };}hjJsbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMhj)ubh)}(h **Members**h]j)}(hj[h]hMembers}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhM hj)ubjG)}(hhh](jL)}(h``et`` entry type h](jR)}(h``et``h]jX)}(hjzh]het}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjxubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjtubjn)}(hhh]h)}(h entry typeh]h entry type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjtubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjqubjL)}(h``reserved`` reserved bits h](jR)}(h ``reserved``h]jX)}(hjh]hreserved}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(h reserved bitsh]h reserved bits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjqubjL)}(h``ct`` command type h](jR)}(h``ct``h]jX)}(hjh]hct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhKhjubjn)}(hhh]h)}(h command typeh]h command type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjqubjL)}(h``cmd`` command code h](jR)}(h``cmd``h]jX)}(hj%h]hcmd}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj#ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMhjubjn)}(hhh]h)}(h command codeh]h command code}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMhj;ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj:hMhjqubjL)}(h``count`` command counth](jR)}(h ``count``h]jX)}(hj^h]hcount}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj\ubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMhjXubjn)}(hhh]h)}(h command counth]h command count}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMhjtubah}(h]h ]h"]h$]h&]uh1jmhjXubeh}(h]h ]h"]h$]h&]uh1jKhjshMhjqubeh}(h]h ]h"]h$]h&]uh1jFhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_dev_id (C struct) c.ccw_dev_idhNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(h ccw_dev_idh]jt)}(hstruct ccw_dev_idh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(h ccw_dev_idh]j)}(hjh]h ccw_dev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhMhjhhubj)}(hhh]h)}(h!unique identifier for ccw devicesh]h!unique identifier for ccw devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhM?hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhhj8hNhNubj)}(h**Definition**:: struct ccw_dev_id { u8 ssid; u16 devno; }; **Members** ``ssid`` subchannel set id ``devno`` device numberh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMChjubj)}(h2struct ccw_dev_id { u8 ssid; u16 devno; };h]h2struct ccw_dev_id { u8 ssid; u16 devno; };}hj7sbah}(h]h ]h"]h$]h&]jjuh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMEhjubh)}(h **Members**h]j)}(hjHh]hMembers}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMJhjubjG)}(hhh](jL)}(h``ssid`` subchannel set id h](jR)}(h``ssid``h]jX)}(hjgh]hssid}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjeubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMAhjaubjn)}(hhh]h)}(hsubchannel set idh]hsubchannel set id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hMAhj}ubah}(h]h ]h"]h$]h&]uh1jmhjaubeh}(h]h ]h"]h$]h&]uh1jKhj|hMAhj^ubjL)}(h``devno`` device numberh](jR)}(h ``devno``h]jX)}(hjh]hdevno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMAhjubjn)}(hhh]h)}(h device numberh]h device number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMBhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhMAhj^ubeh}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMEhj8hhubh)}(hX'This structure is not directly based on any hardware structure. The hardware identifies a device by its device number and its subchannel, which is in turn identified by its id. In order to get a unique identifier for ccw devices across subchannel sets, **struct** ccw_dev_id has been introduced.h](hThis structure is not directly based on any hardware structure. The hardware identifies a device by its device number and its subchannel, which is in turn identified by its id. In order to get a unique identifier for ccw devices across subchannel sets, }(hjhhhNhNubj)}(h **struct**h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh ccw_dev_id has been introduced.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMBhj8hhubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd ccw_dev_id_is_equal (C function)c.ccw_dev_id_is_equalhNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hPint ccw_dev_id_is_equal (struct ccw_dev_id *dev_id1, struct ccw_dev_id *dev_id2)h]jt)}(hOint ccw_dev_id_is_equal(struct ccw_dev_id *dev_id1, struct ccw_dev_id *dev_id2)h](hdesc_sig_keyword_type)}(hinth]hint}(hj5hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j3hj/hhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMOubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/hhhjDhMOubj)}(hccw_dev_id_is_equalh]j)}(hccw_dev_id_is_equalh]hccw_dev_id_is_equal}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubah}(h]h ](jjeh"]h$]h&]jjuh1jhj/hhhjDhMOubhdesc_parameterlist)}(h8(struct ccw_dev_id *dev_id1, struct ccw_dev_id *dev_id2)h](hdesc_parameter)}(hstruct ccw_dev_id *dev_id1h](jz)}(hj}h]hstruct}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjsubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubh)}(hhh]j)}(h ccw_dev_idh]h ccw_dev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jjYsbc.ccw_dev_id_is_equalasbuh1hhjsubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubhdesc_sig_punctuation)}(hjh]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjsubj)}(hdev_id1h]hdev_id1}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjmubjr)}(hstruct ccw_dev_id *dev_id2h](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h ccw_dev_idh]h ccw_dev_id}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.ccw_dev_id_is_equalasbuh1hhjubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hdev_id2h]hdev_id2}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjmubeh}(h]h ]h"]h$]h&]jjuh1jkhj/hhhjDhMOubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj+hhhjDhMOubah}(h]j&ah ](jjeh"]h$]h&]jj)jhuh1jmhjDhMOhj(hhubj)}(hhh]h)}(hcompare two ccw_dev_idsh]hcompare two ccw_dev_ids}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMOhjrhhubah}(h]h ]h"]h$]h&]uh1jhj(hhhjDhMOubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhj8hNhNubj)}(h**Parameters** ``struct ccw_dev_id *dev_id1`` a ccw_dev_id ``struct ccw_dev_id *dev_id2`` another ccw_dev_id **Return** ``1`` if the two structures are equal field-by-field, ``0`` if not. **Context** anyh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMShjubjG)}(hhh](jL)}(h,``struct ccw_dev_id *dev_id1`` a ccw_dev_id h](jR)}(h``struct ccw_dev_id *dev_id1``h]jX)}(hjh]hstruct ccw_dev_id *dev_id1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMPhjubjn)}(hhh]h)}(h a ccw_dev_idh]h a ccw_dev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMPhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhMPhjubjL)}(h2``struct ccw_dev_id *dev_id2`` another ccw_dev_id h](jR)}(h``struct ccw_dev_id *dev_id2``h]jX)}(hjh]hstruct ccw_dev_id *dev_id2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMQhjubjn)}(hhh]h)}(hanother ccw_dev_idh]hanother ccw_dev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMQhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhMQhjubeh}(h]h ]h"]h$]h&]uh1jFhjubh)}(h **Return**h]j)}(hj*h]hReturn}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMShjubh)}(hC``1`` if the two structures are equal field-by-field, ``0`` if not.h](jX)}(h``1``h]h1}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj@ubh1 if the two structures are equal field-by-field, }(hj@hhhNhNubjX)}(h``0``h]h0}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj@ubh if not.}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMRhjubh)}(h **Context**h]j)}(hjqh]hContext}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMUhjubh)}(hanyh]hany}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMUhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdpathmask_to_pos (C function)c.pathmask_to_poshNtauh1jWhj8hhhNhNubji)}(hhh](jn)}(hu8 pathmask_to_pos (u8 mask)h]jt)}(hu8 pathmask_to_pos(u8 mask)h](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpathmask_to_possbc.pathmask_to_posasbuh1hhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMbubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMbubj)}(hpathmask_to_posh]j)}(hjh]hpathmask_to_pos}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMbubjl)}(h (u8 mask)h]jr)}(hu8 maskh](h)}(hhh]j)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.pathmask_to_posasbuh1hhjubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hmaskh]hmask}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubah}(h]h ]h"]h$]h&]jjuh1jkhjhhhjhMbubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhMbubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhMbhjhhubj)}(hhh]h)}(h4find the position of the left-most bit in a pathmaskh]h4find the position of the left-most bit in a pathmask}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMbhj^hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMbubeh}(h]h ](jfunctioneh"]h$]h&]jjjjyjjyjjjuh1jhhhhj8hNhNubj)}(h@**Parameters** ``u8 mask`` pathmask with at least one bit seth](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMfhj}ubjG)}(hhh]jL)}(h.``u8 mask`` pathmask with at least one bit seth](jR)}(h ``u8 mask``h]jX)}(hjh]hu8 mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMhhjubjn)}(hhh]h)}(h"pathmask with at least one bit seth]h"pathmask with at least one bit set}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:67: ./arch/s390/include/asm/cio.hhMchjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhMhhjubah}(h]h ]h"]h$]h&]uh1jFhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubeh}(h]*i-o-functions-for-channel-attached-devicesah ]h"]*i/o functions for channel-attached devicesah$]h&]uh1hhjhhhhhK hKubj)}(h ccw_deviceh]j)}(hj+ h]h ccw_device}(hjQ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj- hhhj> hKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj) hhhj> hKubah}(h]j$ ah ](jjeh"]h$]h&]jj)jhuh1jmhj> hKhj& hhubj)}(hhh]h)}(hchannel attached deviceh]hchannel attached device}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKKhjp hhubah}(h]h ]h"]h$]h&]uh1jhj& hhhj> hKubeh}(h]h ](jstructeh"]h$]h&]jjjj jj jjjuh1jhhhhjhNhNubj)}(hX**Definition**:: struct ccw_device { spinlock_t *ccwlock; struct ccw_device_id id; struct ccw_driver *drv; struct device dev; int online; void (*handler) (struct ccw_device *, unsigned long, struct irb *); }; **Members** ``ccwlock`` pointer to device lock ``id`` id of this device ``drv`` ccw driver for this device ``dev`` embedded device structure ``online`` online status of device ``handler`` interrupt handlerh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKOhj ubj)}(hstruct ccw_device { spinlock_t *ccwlock; struct ccw_device_id id; struct ccw_driver *drv; struct device dev; int online; void (*handler) (struct ccw_device *, unsigned long, struct irb *); };h]hstruct ccw_device { spinlock_t *ccwlock; struct ccw_device_id id; struct ccw_driver *drv; struct device dev; int online; void (*handler) (struct ccw_device *, unsigned long, struct irb *); };}hj sbah}(h]h ]h"]h$]h&]jjuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKQhj ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKZhj ubjG)}(hhh](jL)}(h#``ccwlock`` pointer to device lock h](jR)}(h ``ccwlock``h]jX)}(hj h]hccwlock}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKMhj ubjn)}(hhh]h)}(hpointer to device lockh]hpointer to device lock}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKMhj ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj hKMhj ubjL)}(h``id`` id of this device h](jR)}(h``id``h]jX)}(hj!h]hid}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj!ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKNhj!ubjn)}(hhh]h)}(hid of this deviceh]hid of this device}(hj2!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.!hKNhj/!ubah}(h]h ]h"]h$]h&]uh1jmhj!ubeh}(h]h ]h"]h$]h&]uh1jKhj.!hKNhj ubjL)}(h#``drv`` ccw driver for this device h](jR)}(h``drv``h]jX)}(hjR!h]hdrv}(hjT!hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjP!ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKOhjL!ubjn)}(hhh]h)}(hccw driver for this deviceh]hccw driver for this device}(hjk!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjg!hKOhjh!ubah}(h]h ]h"]h$]h&]uh1jmhjL!ubeh}(h]h ]h"]h$]h&]uh1jKhjg!hKOhj ubjL)}(h"``dev`` embedded device structure h](jR)}(h``dev``h]jX)}(hj!h]hdev}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj!ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKPhj!ubjn)}(hhh]h)}(hembedded device structureh]hembedded device structure}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKPhj!ubah}(h]h ]h"]h$]h&]uh1jmhj!ubeh}(h]h ]h"]h$]h&]uh1jKhj!hKPhj ubjL)}(h#``online`` online status of device h](jR)}(h ``online``h]jX)}(hj!h]honline}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj!ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKQhj!ubjn)}(hhh]h)}(honline status of deviceh]honline status of device}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKQhj!ubah}(h]h ]h"]h$]h&]uh1jmhj!ubeh}(h]h ]h"]h$]h&]uh1jKhj!hKQhj ubjL)}(h``handler`` interrupt handlerh](jR)}(h ``handler``h]jX)}(hj!h]hhandler}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj!ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKQhj!ubjn)}(hhh]h)}(hinterrupt handlerh]hinterrupt handler}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKRhj"ubah}(h]h ]h"]h$]h&]uh1jmhj!ubeh}(h]h ]h"]h$]h&]uh1jKhj"hKQhj ubeh}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(h**Description**h]j)}(hj@"h]h Description}(hjB"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>"ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKUhjhhubh)}(h**handler** is a member of the device rather than the driver since a driver can have different interrupt handlers for different ccw devices (multi-subchannel drivers).h](j)}(h **handler**h]hhandler}(hjZ"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjV"ubh is a member of the device rather than the driver since a driver can have different interrupt handlers for different ccw devices (multi-subchannel drivers).}(hjV"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKRhjhhubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_driver (C struct) c.ccw_driverhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h ccw_driverh]jt)}(hstruct ccw_driverh](jz)}(hj}h]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj"hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKYubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"hhhj"hKYubj)}(h ccw_driverh]j)}(hj"h]h ccw_driver}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj"hhhj"hKYubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj"hhhj"hKYubah}(h]j"ah ](jjeh"]h$]h&]jj)jhuh1jmhj"hKYhj"hhubj)}(hhh]h)}(h*device driver for channel attached devicesh]h*device driver for channel attached devices}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKzhj"hhubah}(h]h ]h"]h$]h&]uh1jhj"hhhj"hKYubeh}(h]h ](jstructeh"]h$]h&]jjjj"jj"jjjuh1jhhhhjhNhNubj)}(hXQ**Definition**:: struct ccw_driver { struct ccw_device_id *ids; int (*probe) (struct ccw_device *); void (*remove) (struct ccw_device *); int (*set_online) (struct ccw_device *); int (*set_offline) (struct ccw_device *); int (*notify) (struct ccw_device *, int); void (*path_event) (struct ccw_device *, int *); void (*shutdown) (struct ccw_device *); enum uc_todo (*uc_handler) (struct ccw_device *, struct irb *); struct device_driver driver; enum interruption_class int_class; }; **Members** ``ids`` ids supported by this driver ``probe`` function called on probe ``remove`` function called on remove ``set_online`` called when setting device online ``set_offline`` called when setting device offline ``notify`` notify driver of device state changes ``path_event`` notify driver of channel path events ``shutdown`` called at device shutdown ``uc_handler`` callback for unit check handler ``driver`` embedded device driver structure ``int_class`` interruption class to use for accounting interruptsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubh:}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhK~hj"ubj)}(hXstruct ccw_driver { struct ccw_device_id *ids; int (*probe) (struct ccw_device *); void (*remove) (struct ccw_device *); int (*set_online) (struct ccw_device *); int (*set_offline) (struct ccw_device *); int (*notify) (struct ccw_device *, int); void (*path_event) (struct ccw_device *, int *); void (*shutdown) (struct ccw_device *); enum uc_todo (*uc_handler) (struct ccw_device *, struct irb *); struct device_driver driver; enum interruption_class int_class; };h]hXstruct ccw_driver { struct ccw_device_id *ids; int (*probe) (struct ccw_device *); void (*remove) (struct ccw_device *); int (*set_online) (struct ccw_device *); int (*set_offline) (struct ccw_device *); int (*notify) (struct ccw_device *, int); void (*path_event) (struct ccw_device *, int *); void (*shutdown) (struct ccw_device *); enum uc_todo (*uc_handler) (struct ccw_device *, struct irb *); struct device_driver driver; enum interruption_class int_class; };}hj #sbah}(h]h ]h"]h$]h&]jjuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj"ubh)}(h **Members**h]j)}(hj#h]hMembers}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj"ubjG)}(hhh](jL)}(h%``ids`` ids supported by this driver h](jR)}(h``ids``h]jX)}(hj;#h]hids}(hj=#hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj9#ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhK|hj5#ubjn)}(hhh]h)}(hids supported by this driverh]hids supported by this driver}(hjT#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP#hK|hjQ#ubah}(h]h ]h"]h$]h&]uh1jmhj5#ubeh}(h]h ]h"]h$]h&]uh1jKhjP#hK|hj2#ubjL)}(h#``probe`` function called on probe h](jR)}(h ``probe``h]jX)}(hjt#h]hprobe}(hjv#hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjr#ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhK}hjn#ubjn)}(hhh]h)}(hfunction called on probeh]hfunction called on probe}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hK}hj#ubah}(h]h ]h"]h$]h&]uh1jmhjn#ubeh}(h]h ]h"]h$]h&]uh1jKhj#hK}hj2#ubjL)}(h%``remove`` function called on remove h](jR)}(h ``remove``h]jX)}(hj#h]hremove}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj#ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhK~hj#ubjn)}(hhh]h)}(hfunction called on removeh]hfunction called on remove}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hK~hj#ubah}(h]h ]h"]h$]h&]uh1jmhj#ubeh}(h]h ]h"]h$]h&]uh1jKhj#hK~hj2#ubjL)}(h1``set_online`` called when setting device online h](jR)}(h``set_online``h]jX)}(hj#h]h set_online}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj#ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj#ubjn)}(hhh]h)}(h!called when setting device onlineh]h!called when setting device online}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hKhj#ubah}(h]h ]h"]h$]h&]uh1jmhj#ubeh}(h]h ]h"]h$]h&]uh1jKhj#hKhj2#ubjL)}(h3``set_offline`` called when setting device offline h](jR)}(h``set_offline``h]jX)}(hj$h]h set_offline}(hj!$hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj$ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj$ubjn)}(hhh]h)}(h"called when setting device offlineh]h"called when setting device offline}(hj8$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4$hKhj5$ubah}(h]h ]h"]h$]h&]uh1jmhj$ubeh}(h]h ]h"]h$]h&]uh1jKhj4$hKhj2#ubjL)}(h1``notify`` notify driver of device state changes h](jR)}(h ``notify``h]jX)}(hjX$h]hnotify}(hjZ$hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjV$ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhjR$ubjn)}(hhh]h)}(h%notify driver of device state changesh]h%notify driver of device state changes}(hjq$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjm$hKhjn$ubah}(h]h ]h"]h$]h&]uh1jmhjR$ubeh}(h]h ]h"]h$]h&]uh1jKhjm$hKhj2#ubjL)}(h4``path_event`` notify driver of channel path events h](jR)}(h``path_event``h]jX)}(hj$h]h path_event}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj$ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj$ubjn)}(hhh]h)}(h$notify driver of channel path eventsh]h$notify driver of channel path events}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1jmhj$ubeh}(h]h ]h"]h$]h&]uh1jKhj$hKhj2#ubjL)}(h'``shutdown`` called at device shutdown h](jR)}(h ``shutdown``h]jX)}(hj$h]hshutdown}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj$ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj$ubjn)}(hhh]h)}(hcalled at device shutdownh]hcalled at device shutdown}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1jmhj$ubeh}(h]h ]h"]h$]h&]uh1jKhj$hKhj2#ubjL)}(h/``uc_handler`` callback for unit check handler h](jR)}(h``uc_handler``h]jX)}(hj%h]h uc_handler}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj%ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj$ubjn)}(hhh]h)}(hcallback for unit check handlerh]hcallback for unit check handler}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKhj%ubah}(h]h ]h"]h$]h&]uh1jmhj$ubeh}(h]h ]h"]h$]h&]uh1jKhj%hKhj2#ubjL)}(h,``driver`` embedded device driver structure h](jR)}(h ``driver``h]jX)}(hj<%h]hdriver}(hj>%hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj:%ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj6%ubjn)}(hhh]h)}(h embedded device driver structureh]h embedded device driver structure}(hjU%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ%hKhjR%ubah}(h]h ]h"]h$]h&]uh1jmhj6%ubeh}(h]h ]h"]h$]h&]uh1jKhjQ%hKhj2#ubjL)}(hA``int_class`` interruption class to use for accounting interruptsh](jR)}(h ``int_class``h]jX)}(hju%h]h int_class}(hjw%hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjs%ubah}(h]h ]h"]h$]h&]uh1jQhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhjo%ubjn)}(hhh]h)}(h3interruption class to use for accounting interruptsh]h3interruption class to use for accounting interrupts}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:81: ./arch/s390/include/asm/ccwdev.hhKhj%ubah}(h]h ]h"]h$]h&]uh1jmhjo%ubeh}(h]h ]h"]h$]h&]uh1jKhj%hKhj2#ubeh}(h]h ]h"]h$]h&]uh1jFhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd#ccw_device_set_offline (C function)c.ccw_device_set_offlinehNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h4int ccw_device_set_offline (struct ccw_device *cdev)h]jt)}(h3int ccw_device_set_offline(struct ccw_device *cdev)h](j4)}(hinth]hint}(hj%hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj%hhha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhj%hMubj)}(hccw_device_set_offlineh]j)}(hccw_device_set_offlineh]hccw_device_set_offline}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj%hhhj%hMubjl)}(h(struct ccw_device *cdev)h]jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj &hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj*&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,&modnameN classnameNjj)}j]j)}jj%sbc.ccw_device_set_offlineasbuh1hhj&ubj)}(h h]h }(hjJ&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj)}(hjh]h*}(hjX&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj)}(hcdevh]hcdev}(hje&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj&ubah}(h]h ]h"]h$]h&]jjuh1jkhj%hhhj%hMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj%hhhj%hMubah}(h]j%ah ](jjeh"]h$]h&]jj)jhuh1jmhj%hMhj%hhubj)}(hhh]h)}(hdisable a ccw device for I/Oh]hdisable a ccw device for I/O}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj&hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj%hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj&jj&jjjuh1jhhhhjhNhNubj)}(hX2**Parameters** ``struct ccw_device *cdev`` target ccw device **Description** This function calls the driver's set_offline() function for **cdev**, if given, and then disables **cdev**. **Return** ``0`` on success and a negative error value on failure. **Context** enabled, ccw device lock not heldh](h)}(h**Parameters**h]j)}(hj&h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM hj&ubjG)}(hhh]jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj&h]hstruct ccw_device *cdev}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj&ubah}(h]h ]h"]h$]h&]uh1jQha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj&ubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jmhj&ubeh}(h]h ]h"]h$]h&]uh1jKhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jFhj&ubh)}(h**Description**h]j)}(hj 'h]h Description}(hj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 'ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj&ubh)}(hkThis function calls the driver's set_offline() function for **cdev**, if given, and then disables **cdev**.h](h>This function calls the driver’s set_offline() function for }(hj!'hhhNhNubj)}(h**cdev**h]hcdev}(hj)'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!'ubh, if given, and then disables }(hj!'hhhNhNubj)}(h**cdev**h]hcdev}(hj;'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!'ubh.}(hj!'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj&ubh)}(h **Return**h]j)}(hjV'h]hReturn}(hjX'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT'ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM hj&ubh)}(h7``0`` on success and a negative error value on failure.h](jX)}(h``0``h]h0}(hjp'hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjl'ubh2 on success and a negative error value on failure.}(hjl'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM hj&ubh)}(h **Context**h]j)}(hj'h]hContext}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM hj&ubh)}(h!enabled, ccw device lock not heldh]h!enabled, ccw device lock not held}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM hj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd"ccw_device_set_online (C function)c.ccw_device_set_onlinehNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h3int ccw_device_set_online (struct ccw_device *cdev)h]jt)}(h2int ccw_device_set_online(struct ccw_device *cdev)h](j4)}(hinth]hint}(hj'hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj'hhha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMQubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhj'hMQubj)}(hccw_device_set_onlineh]j)}(hccw_device_set_onlineh]hccw_device_set_online}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj'hhhj'hMQubjl)}(h(struct ccw_device *cdev)h]jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj (hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj (ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj (ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj+(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj((ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-(modnameN classnameNjj)}j]j)}jj'sbc.ccw_device_set_onlineasbuh1hhj (ubj)}(h h]h }(hjK(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj (ubj)}(hjh]h*}(hjY(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj (ubj)}(hcdevh]hcdev}(hjf(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj (ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj(ubah}(h]h ]h"]h$]h&]jjuh1jkhj'hhhj'hMQubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj'hhhj'hMQubah}(h]j'ah ](jjeh"]h$]h&]jj)jhuh1jmhj'hMQhj'hhubj)}(hhh]h)}(henable a ccw device for I/Oh]henable a ccw device for I/O}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMQhj(hhubah}(h]h ]h"]h$]h&]uh1jhj'hhhj'hMQubeh}(h]h ](jfunctioneh"]h$]h&]jjjj(jj(jjjuh1jhhhhjhNhNubj)}(hXs**Parameters** ``struct ccw_device *cdev`` target ccw device **Description** This function first enables **cdev** and then calls the driver's set_online() function for **cdev**, if given. If set_online() returns an error, **cdev** is disabled again. **Return** ``0`` on success and a negative error value on failure. **Context** enabled, ccw device lock not heldh](h)}(h**Parameters**h]j)}(hj(h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMUhj(ubjG)}(hhh]jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj(h]hstruct ccw_device *cdev}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj(ubah}(h]h ]h"]h$]h&]uh1jQha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMRhj(ubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMRhj(ubah}(h]h ]h"]h$]h&]uh1jmhj(ubeh}(h]h ]h"]h$]h&]uh1jKhj(hMRhj(ubah}(h]h ]h"]h$]h&]uh1jFhj(ubh)}(h**Description**h]j)}(hj )h]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj )ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMThj(ubh)}(hThis function first enables **cdev** and then calls the driver's set_online() function for **cdev**, if given. If set_online() returns an error, **cdev** is disabled again.h](hThis function first enables }(hj")hhhNhNubj)}(h**cdev**h]hcdev}(hj*)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj")ubh9 and then calls the driver’s set_online() function for }(hj")hhhNhNubj)}(h**cdev**h]hcdev}(hj<)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj")ubh., if given. If set_online() returns an error, }(hj")hhhNhNubj)}(h**cdev**h]hcdev}(hjN)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj")ubh is disabled again.}(hj")hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMShj(ubh)}(h **Return**h]j)}(hji)h]hReturn}(hjk)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjg)ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMWhj(ubh)}(h7``0`` on success and a negative error value on failure.h](jX)}(h``0``h]h0}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj)ubh2 on success and a negative error value on failure.}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMWhj(ubh)}(h **Context**h]j)}(hj)h]hContext}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMYhj(ubh)}(h!enabled, ccw device lock not heldh]h!enabled, ccw device lock not held}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMYhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd!get_ccwdev_by_dev_id (C function)c.get_ccwdev_by_dev_idhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hDstruct ccw_device * get_ccwdev_by_dev_id (struct ccw_dev_id *dev_id)h]jt)}(hBstruct ccw_device *get_ccwdev_by_dev_id(struct ccw_dev_id *dev_id)h](jz)}(hj}h]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj)hhha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM|ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhj)hM|ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]j)}jget_ccwdev_by_dev_idsbc.get_ccwdev_by_dev_idasbuh1hhj)hhhj)hM|ubj)}(h h]h }(hj#*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhj)hM|ubj)}(hjh]h*}(hj1*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhj)hM|ubj)}(hget_ccwdev_by_dev_idh]j)}(hj *h]hget_ccwdev_by_dev_id}(hjB*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>*ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj)hhhj)hM|ubjl)}(h(struct ccw_dev_id *dev_id)h]jr)}(hstruct ccw_dev_id *dev_idh](jz)}(hj}h]hstruct}(hj]*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjY*ubj)}(h h]h }(hjj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY*ubh)}(hhh]j)}(h ccw_dev_idh]h ccw_dev_id}(hj{*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjx*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}*modnameN classnameNjj)}j]j*c.get_ccwdev_by_dev_idasbuh1hhjY*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY*ubj)}(hdev_idh]hdev_id}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjU*ubah}(h]h ]h"]h$]h&]jjuh1jkhj)hhhj)hM|ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj)hhhj)hM|ubah}(h]j)ah ](jjeh"]h$]h&]jj)jhuh1jmhj)hM|hj)hhubj)}(hhh]h)}(h"obtain device from a ccw device idh]h"obtain device from a ccw device id}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM|hj*hhubah}(h]h ]h"]h$]h&]uh1jhj)hhhj)hM|ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj*jj*jjjuh1jhhhhjhNhNubj)}(hX***Parameters** ``struct ccw_dev_id *dev_id`` id of the device to be searched **Description** This function searches all devices attached to the ccw bus for a device matching **dev_id**. **Return** If a device is found its reference count is increased and returned; else ``NULL`` is returned.h](h)}(h**Parameters**h]j)}(hj+h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj*ubjG)}(hhh]jL)}(h>``struct ccw_dev_id *dev_id`` id of the device to be searched h](jR)}(h``struct ccw_dev_id *dev_id``h]jX)}(hj+h]hstruct ccw_dev_id *dev_id}(hj!+hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj+ubah}(h]h ]h"]h$]h&]uh1jQha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM}hj+ubjn)}(hhh]h)}(hid of the device to be searchedh]hid of the device to be searched}(hj8+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4+hM}hj5+ubah}(h]h ]h"]h$]h&]uh1jmhj+ubeh}(h]h ]h"]h$]h&]uh1jKhj4+hM}hj+ubah}(h]h ]h"]h$]h&]uh1jFhj*ubh)}(h**Description**h]j)}(hjZ+h]h Description}(hj\+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX+ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj*ubh)}(h\This function searches all devices attached to the ccw bus for a device matching **dev_id**.h](hQThis function searches all devices attached to the ccw bus for a device matching }(hjp+hhhNhNubj)}(h **dev_id**h]hdev_id}(hjx+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp+ubh.}(hjp+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM~hj*ubh)}(h **Return**h]j)}(hj+h]hReturn}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj*ubh)}(h^If a device is found its reference count is increased and returned; else ``NULL`` is returned.h](hIIf a device is found its reference count is increased and returned; else }(hj+hhhNhNubjX)}(h``NULL``h]hNULL}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj+ubh is returned.}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd get_ccwdev_by_busid (C function)c.get_ccwdev_by_busidhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hUstruct ccw_device * get_ccwdev_by_busid (struct ccw_driver *cdrv, const char *bus_id)h]jt)}(hSstruct ccw_device *get_ccwdev_by_busid(struct ccw_driver *cdrv, const char *bus_id)h](jz)}(hj}h]hstruct}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj+hhha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhhj+hMubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj ,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj ,modnameN classnameNjj)}j]j)}jget_ccwdev_by_busidsbc.get_ccwdev_by_busidasbuh1hhj+hhhj+hMubj)}(h h]h }(hj*,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhhj+hMubj)}(hjh]h*}(hj8,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhhj+hMubj)}(hget_ccwdev_by_busidh]j)}(hj',h]hget_ccwdev_by_busid}(hjI,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE,ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj+hhhj+hMubjl)}(h-(struct ccw_driver *cdrv, const char *bus_id)h](jr)}(hstruct ccw_driver *cdrvh](jz)}(hj}h]hstruct}(hjd,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj`,ubj)}(h h]h }(hjq,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`,ubh)}(hhh]j)}(h ccw_driverh]h ccw_driver}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]j%,c.get_ccwdev_by_busidasbuh1hhj`,ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`,ubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`,ubj)}(hcdrvh]hcdrv}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`,ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj\,ubjr)}(hconst char *bus_idh](jz)}(hconsth]hconst}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj,ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj4)}(hcharh]hchar}(hj,hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj,ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj)}(hjh]h*}(hj -hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj)}(hbus_idh]hbus_id}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj\,ubeh}(h]h ]h"]h$]h&]jjuh1jkhj+hhhj+hMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj+hhhj+hMubah}(h]j+ah ](jjeh"]h$]h&]jj)jhuh1jmhj+hMhj+hhubj)}(hhh]h)}(hobtain device from a bus idh]hobtain device from a bus id}(hjC-hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj@-hhubah}(h]h ]h"]h$]h&]uh1jhj+hhhj+hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj[-jj[-jjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct ccw_driver *cdrv`` driver the device is owned by ``const char *bus_id`` bus id of the device to be searched **Description** This function searches all devices owned by **cdrv** for a device with a bus id matching **bus_id**. **Return** If a match is found, its reference count of the found device is increased and it is returned; else ``NULL`` is returned.h](h)}(h**Parameters**h]j)}(hje-h]h Parameters}(hjg-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjc-ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj_-ubjG)}(hhh](jL)}(h:``struct ccw_driver *cdrv`` driver the device is owned by h](jR)}(h``struct ccw_driver *cdrv``h]jX)}(hj-h]hstruct ccw_driver *cdrv}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj-ubah}(h]h ]h"]h$]h&]uh1jQha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj~-ubjn)}(hhh]h)}(hdriver the device is owned byh]hdriver the device is owned by}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1jmhj~-ubeh}(h]h ]h"]h$]h&]uh1jKhj-hMhj{-ubjL)}(h;``const char *bus_id`` bus id of the device to be searched h](jR)}(h``const char *bus_id``h]jX)}(hj-h]hconst char *bus_id}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj-ubah}(h]h ]h"]h$]h&]uh1jQha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj-ubjn)}(hhh]h)}(h#bus id of the device to be searchedh]h#bus id of the device to be searched}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1jmhj-ubeh}(h]h ]h"]h$]h&]uh1jKhj-hMhj{-ubeh}(h]h ]h"]h$]h&]uh1jFhj_-ubh)}(h**Description**h]j)}(hj-h]h Description}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj_-ubh)}(hdThis function searches all devices owned by **cdrv** for a device with a bus id matching **bus_id**.h](h,This function searches all devices owned by }(hj.hhhNhNubj)}(h**cdrv**h]hcdrv}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh% for a device with a bus id matching }(hj.hhhNhNubj)}(h **bus_id**h]hbus_id}(hj(.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh.}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj_-ubh)}(h **Return**h]j)}(hjC.h]hReturn}(hjE.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA.ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj_-ubh)}(hxIf a match is found, its reference count of the found device is increased and it is returned; else ``NULL`` is returned.h](hcIf a match is found, its reference count of the found device is increased and it is returned; else }(hjY.hhhNhNubjX)}(h``NULL``h]hNULL}(hja.hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjY.ubh is returned.}(hjY.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj_-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd ccw_driver_register (C function)c.ccw_driver_registerhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h4int ccw_driver_register (struct ccw_driver *cdriver)h]jt)}(h3int ccw_driver_register(struct ccw_driver *cdriver)h](j4)}(hinth]hint}(hj.hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj.hhha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhhj.hMubj)}(hccw_driver_registerh]j)}(hccw_driver_registerh]hccw_driver_register}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj.hhhj.hMubjl)}(h(struct ccw_driver *cdriver)h]jr)}(hstruct ccw_driver *cdriverh](jz)}(hj}h]hstruct}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj.ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubh)}(hhh]j)}(h ccw_driverh]h ccw_driver}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]j)}jj.sbc.ccw_driver_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)}(hcdriverh]hcdriver}(hj0/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj.ubah}(h]h ]h"]h$]h&]jjuh1jkhj.hhhj.hMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj.hhhj.hMubah}(h]j.ah ](jjeh"]h$]h&]jj)jhuh1jmhj.hMhj.hhubj)}(hhh]h)}(hregister a ccw driverh]hregister a ccw driver}(hjZ/hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhjW/hhubah}(h]h ]h"]h$]h&]uh1jhj.hhhj.hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjr/jjr/jjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccw_driver *cdriver`` driver to be registered **Description** This function is mainly a wrapper around driver_register(). **Return** ``0`` on success and a negative error value on failure.h](h)}(h**Parameters**h]j)}(hj|/h]h Parameters}(hj~/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz/ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhjv/ubjG)}(hhh]jL)}(h7``struct ccw_driver *cdriver`` driver to be registered h](jR)}(h``struct ccw_driver *cdriver``h]jX)}(hj/h]hstruct ccw_driver *cdriver}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj/ubah}(h]h ]h"]h$]h&]uh1jQha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj/ubjn)}(hhh]h)}(hdriver to be registeredh]hdriver to be registered}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1jmhj/ubeh}(h]h ]h"]h$]h&]uh1jKhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1jFhjv/ubh)}(h**Description**h]j)}(hj/h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhjv/ubh)}(h;This function is mainly a wrapper around driver_register().h]h;This function is mainly a wrapper around driver_register().}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhjv/ubh)}(h **Return**h]j)}(hj/h]hReturn}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhjv/ubh)}(h7``0`` on success and a negative error value on failure.h](jX)}(h``0``h]h0}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj0ubh2 on success and a negative error value on failure.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhjv/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd"ccw_driver_unregister (C function)c.ccw_driver_unregisterhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h7void ccw_driver_unregister (struct ccw_driver *cdriver)h]jt)}(h6void ccw_driver_unregister(struct ccw_driver *cdriver)h](j4)}(hvoidh]hvoid}(hjP0hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjL0hhha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM)ubj)}(h h]h }(hj_0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL0hhhj^0hM)ubj)}(hccw_driver_unregisterh]j)}(hccw_driver_unregisterh]hccw_driver_unregister}(hjq0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm0ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjL0hhhj^0hM)ubjl)}(h(struct ccw_driver *cdriver)h]jr)}(hstruct ccw_driver *cdriverh](jz)}(hj}h]hstruct}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubh)}(hhh]j)}(h ccw_driverh]h ccw_driver}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jjs0sbc.ccw_driver_unregisterasbuh1hhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj)}(hcdriverh]hcdriver}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj0ubah}(h]h ]h"]h$]h&]jjuh1jkhjL0hhhj^0hM)ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjH0hhhj^0hM)ubah}(h]jC0ah ](jjeh"]h$]h&]jj)jhuh1jmhj^0hM)hjE0hhubj)}(hhh]h)}(hderegister a ccw driverh]hderegister a ccw driver}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM)hj 1hhubah}(h]h ]h"]h$]h&]uh1jhjE0hhhj^0hM)ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj(1jj(1jjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccw_driver *cdriver`` driver to be deregistered **Description** This function is mainly a wrapper around driver_unregister().h](h)}(h**Parameters**h]j)}(hj21h]h Parameters}(hj41hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj01ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM-hj,1ubjG)}(hhh]jL)}(h9``struct ccw_driver *cdriver`` driver to be deregistered h](jR)}(h``struct ccw_driver *cdriver``h]jX)}(hjQ1h]hstruct ccw_driver *cdriver}(hjS1hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjO1ubah}(h]h ]h"]h$]h&]uh1jQha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM*hjK1ubjn)}(hhh]h)}(hdriver to be deregisteredh]hdriver to be deregistered}(hjj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjf1hM*hjg1ubah}(h]h ]h"]h$]h&]uh1jmhjK1ubeh}(h]h ]h"]h$]h&]uh1jKhjf1hM*hjH1ubah}(h]h ]h"]h$]h&]uh1jFhj,1ubh)}(h**Description**h]j)}(hj1h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM,hj,1ubh)}(h=This function is mainly a wrapper around driver_unregister().h]h=This function is mainly a wrapper around driver_unregister().}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM+hj,1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_device_siosl (C function)c.ccw_device_sioslhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h.int ccw_device_siosl (struct ccw_device *cdev)h]jt)}(h-int ccw_device_siosl(struct ccw_device *cdev)h](j4)}(hinth]hint}(hj1hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj1hhha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM{ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhj1hM{ubj)}(hccw_device_sioslh]j)}(hccw_device_sioslh]hccw_device_siosl}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj1hhhj1hM{ubjl)}(h(struct ccw_device *cdev)h]jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj 2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 2ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj,2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)2ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.2modnameN classnameNjj)}j]j)}jj1sbc.ccw_device_sioslasbuh1hhj 2ubj)}(h h]h }(hjL2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 2ubj)}(hjh]h*}(hjZ2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 2ubj)}(hcdevh]hcdev}(hjg2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj2ubah}(h]h ]h"]h$]h&]jjuh1jkhj1hhhj1hM{ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj1hhhj1hM{ubah}(h]j1ah ](jjeh"]h$]h&]jj)jhuh1jmhj1hM{hj1hhubj)}(hhh]h)}(hinitiate loggingh]hinitiate logging}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM{hj2hhubah}(h]h ]h"]h$]h&]uh1jhj1hhhj1hM{ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj2jj2jjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccw_device *cdev`` ccw device **Description** This function is used to invoke model-dependent logging within the channel subsystem.h](h)}(h**Parameters**h]j)}(hj2h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chMhj2ubjG)}(hhh]jL)}(h'``struct ccw_device *cdev`` ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj2h]hstruct ccw_device *cdev}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj2ubah}(h]h ]h"]h$]h&]uh1jQha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM|hj2ubjn)}(hhh]h)}(h ccw deviceh]h ccw device}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hM|hj2ubah}(h]h ]h"]h$]h&]uh1jmhj2ubeh}(h]h ]h"]h$]h&]uh1jKhj2hM|hj2ubah}(h]h ]h"]h$]h&]uh1jFhj2ubh)}(h**Description**h]j)}(hj 3h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 3ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM~hj2ubh)}(hUThis function is used to invoke model-dependent logging within the channel subsystem.h]hUThis function is used to invoke model-dependent logging within the channel subsystem.}(hj#3hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:84: ./drivers/s390/cio/device.chM}hj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd(ccw_device_set_options_mask (C function)c.ccw_device_set_options_maskhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hNint ccw_device_set_options_mask (struct ccw_device *cdev, unsigned long flags)h]jt)}(hMint ccw_device_set_options_mask(struct ccw_device *cdev, unsigned long flags)h](j4)}(hinth]hint}(hjR3hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjN3hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKubj)}(h h]h }(hja3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjN3hhhj`3hKubj)}(hccw_device_set_options_maskh]j)}(hccw_device_set_options_maskh]hccw_device_set_options_mask}(hjs3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo3ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjN3hhhj`3hKubjl)}(h.(struct ccw_device *cdev, unsigned long flags)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j)}jju3sbc.ccw_device_set_options_maskasbuh1hhj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(hcdevh]hcdev}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj3ubjr)}(hunsigned long flagsh](j4)}(hunsignedh]hunsigned}(hj4hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj3ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj4)}(hlongh]hlong}(hj4hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj3ubj)}(h h]h }(hj+4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(hflagsh]hflags}(hj94hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj3ubeh}(h]h ]h"]h$]h&]jjuh1jkhjN3hhhj`3hKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjJ3hhhj`3hKubah}(h]jE3ah ](jjeh"]h$]h&]jj)jhuh1jmhj`3hKhjG3hhubj)}(hhh]h)}(h#set some options and unset the resth]h#set some options and unset the rest}(hjc4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhj`4hhubah}(h]h ]h"]h$]h&]uh1jhjG3hhhj`3hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj{4jj{4jjjuh1jhhhhjhNhNubj)}(hX>**Parameters** ``struct ccw_device *cdev`` device for which the options are to be set ``unsigned long flags`` options to be set **Description** All flags specified in **flags** are set, all flags not specified in **flags** are cleared. **Return** ``0`` on success, -``EINVAL`` on an invalid flag combination.h](h)}(h**Parameters**h]j)}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK"hj4ubjG)}(hhh](jL)}(hG``struct ccw_device *cdev`` device for which the options are to be set h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj4h]hstruct ccw_device *cdev}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj4ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhj4ubjn)}(hhh]h)}(h*device for which the options are to be seth]h*device for which the options are to be set}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKhj4ubah}(h]h ]h"]h$]h&]uh1jmhj4ubeh}(h]h ]h"]h$]h&]uh1jKhj4hKhj4ubjL)}(h*``unsigned long flags`` options to be set h](jR)}(h``unsigned long flags``h]jX)}(hj4h]hunsigned long flags}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj4ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK hj4ubjn)}(hhh]h)}(hoptions to be seth]hoptions to be set}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hK hj4ubah}(h]h ]h"]h$]h&]uh1jmhj4ubeh}(h]h ]h"]h$]h&]uh1jKhj4hK hj4ubeh}(h]h ]h"]h$]h&]uh1jFhj4ubh)}(h**Description**h]j)}(hj5h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK"hj4ubh)}(h[All flags specified in **flags** are set, all flags not specified in **flags** are cleared.h](hAll flags specified in }(hj.5hhhNhNubj)}(h **flags**h]hflags}(hj65hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.5ubh% are set, all flags not specified in }(hj.5hhhNhNubj)}(h **flags**h]hflags}(hjH5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.5ubh are cleared.}(hj.5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK!hj4ubh)}(h **Return**h]j)}(hjc5h]hReturn}(hje5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja5ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK$hj4ubh)}(h=``0`` on success, -``EINVAL`` on an invalid flag combination.h](jX)}(h``0``h]h0}(hj}5hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjy5ubh on success, -}(hjy5hhhNhNubjX)}(h ``EINVAL``h]hEINVAL}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjy5ubh on an invalid flag combination.}(hjy5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK$hj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd#ccw_device_set_options (C function)c.ccw_device_set_optionshNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hIint ccw_device_set_options (struct ccw_device *cdev, unsigned long flags)h]jt)}(hHint ccw_device_set_options(struct ccw_device *cdev, unsigned long flags)h](j4)}(hinth]hint}(hj5hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj5hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK8ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhj5hK8ubj)}(hccw_device_set_optionsh]j)}(hccw_device_set_optionsh]hccw_device_set_options}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj5hhhj5hK8ubjl)}(h.(struct ccw_device *cdev, unsigned long flags)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj#6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%6modnameN classnameNjj)}j]j)}jj5sbc.ccw_device_set_optionsasbuh1hhj6ubj)}(h h]h }(hjC6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj)}(hjh]h*}(hjQ6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj)}(hcdevh]hcdev}(hj^6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj5ubjr)}(hunsigned long flagsh](j4)}(hunsignedh]hunsigned}(hjw6hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjs6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjs6ubj4)}(hlongh]hlong}(hj6hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjs6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjs6ubj)}(hflagsh]hflags}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjs6ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj5ubeh}(h]h ]h"]h$]h&]jjuh1jkhj5hhhj5hK8ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj5hhhj5hK8ubah}(h]j5ah ](jjeh"]h$]h&]jj)jhuh1jmhj5hK8hj5hhubj)}(hhh]h)}(hset some optionsh]hset some options}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK8hj6hhubah}(h]h ]h"]h$]h&]uh1jhj5hhhj5hK8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj6jj6jjjuh1jhhhhjhNhNubj)}(hX9**Parameters** ``struct ccw_device *cdev`` device for which the options are to be set ``unsigned long flags`` options to be set **Description** All flags specified in **flags** are set, the remainder is left untouched. **Return** ``0`` on success, -``EINVAL`` if an invalid flag combination would ensue.h](h)}(h**Parameters**h]j)}(hj6h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK:hhubj)}(hhh]h)}(h-determine if paths to this device are groupedh]h-determine if paths to this device are grouped}(hj ;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKehj;hhubah}(h]h ]h"]h$]h&]uh1jhj>:hhhjW:hKeubeh}(h]h ](jfunctioneh"]h$]h&]jjjj!;jj!;jjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccw_device *cdev`` ccw device **Description** Return non-zero if there is a path group, zero otherwise.h](h)}(h**Parameters**h]j)}(hj+;h]h Parameters}(hj-;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj);ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKihj%;ubjG)}(hhh]jL)}(h'``struct ccw_device *cdev`` ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjJ;h]hstruct ccw_device *cdev}(hjL;hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjH;ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKfhjD;ubjn)}(hhh]h)}(h ccw deviceh]h ccw device}(hjc;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_;hKfhj`;ubah}(h]h ]h"]h$]h&]uh1jmhjD;ubeh}(h]h ]h"]h$]h&]uh1jKhj_;hKfhjA;ubah}(h]h ]h"]h$]h&]uh1jFhj%;ubh)}(h**Description**h]j)}(hj;h]h Description}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhhj%;ubh)}(h9Return non-zero if there is a path group, zero otherwise.h]h9Return non-zero if there is a path group, zero otherwise.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKghj%;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd$ccw_device_is_multipath (C function)c.ccw_device_is_multipathhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h5int ccw_device_is_multipath (struct ccw_device *cdev)h]jt)}(h4int ccw_device_is_multipath(struct ccw_device *cdev)h](j4)}(hinth]hint}(hj;hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj;hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKqubj)}(h h]h }(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;hhhj;hKqubj)}(hccw_device_is_multipathh]j)}(hccw_device_is_multipathh]hccw_device_is_multipath}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj;hhhj;hKqubjl)}(h(struct ccw_device *cdev)h]jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj<ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj%<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"<ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'<modnameN classnameNjj)}j]j)}jj;sbc.ccw_device_is_multipathasbuh1hhj<ubj)}(h h]h }(hjE<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj)}(hjh]h*}(hjS<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj)}(hcdevh]hcdev}(hj`<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj;ubah}(h]h ]h"]h$]h&]jjuh1jkhj;hhhj;hKqubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj;hhhj;hKqubah}(h]j;ah ](jjeh"]h$]h&]jj)jhuh1jmhj;hKqhj;hhubj)}(hhh]h)}(h2determine if device is operating in multipath modeh]h2determine if device is operating in multipath mode}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKqhj<hhubah}(h]h ]h"]h$]h&]uh1jhj;hhhj;hKqubeh}(h]h ](jfunctioneh"]h$]h&]jjjj<jj<jjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccw_device *cdev`` ccw device **Description** Return non-zero if device is operating in multipath mode, zero otherwise.h](h)}(h**Parameters**h]j)}(hj<h]h Parameters}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKuhj<ubjG)}(hhh]jL)}(h'``struct ccw_device *cdev`` ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj<h]hstruct ccw_device *cdev}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj<ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKrhj<ubjn)}(hhh]h)}(h ccw deviceh]h ccw device}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKrhj<ubah}(h]h ]h"]h$]h&]uh1jmhj<ubeh}(h]h ]h"]h$]h&]uh1jKhj<hKrhj<ubah}(h]h ]h"]h$]h&]uh1jFhj<ubh)}(h**Description**h]j)}(hj=h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKthj<ubh)}(hIReturn non-zero if device is operating in multipath mode, zero otherwise.h]hIReturn non-zero if device is operating in multipath mode, zero otherwise.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKshj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_device_clear (C function)c.ccw_device_clearhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hEint ccw_device_clear (struct ccw_device *cdev, unsigned long intparm)h]jt)}(hDint ccw_device_clear(struct ccw_device *cdev, unsigned long intparm)h](j4)}(hinth]hint}(hjK=hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjG=hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK}ubj)}(h h]h }(hjZ=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG=hhhjY=hK}ubj)}(hccw_device_clearh]j)}(hccw_device_clearh]hccw_device_clear}(hjl=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh=ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjG=hhhjY=hK}ubjl)}(h0(struct ccw_device *cdev, unsigned long intparm)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj=ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j)}jjn=sbc.ccw_device_clearasbuh1hhj=ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(hjh]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(hcdevh]hcdev}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj=ubjr)}(hunsigned long intparmh](j4)}(hunsignedh]hunsigned}(hj=hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj=ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj4)}(hlongh]hlong}(hj>hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj=ubj)}(h h]h }(hj$>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(hintparmh]hintparm}(hj2>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj=ubeh}(h]h ]h"]h$]h&]jjuh1jkhjG=hhhjY=hK}ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjC=hhhjY=hK}ubah}(h]j>=ah ](jjeh"]h$]h&]jj)jhuh1jmhjY=hK}hj@=hhubj)}(hhh]h)}(h terminate I/O request processingh]h terminate I/O request processing}(hj\>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK}hjY>hhubah}(h]h ]h"]h$]h&]uh1jhj@=hhhjY=hK}ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjt>jjt>jjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct ccw_device *cdev`` target ccw device ``unsigned long intparm`` interruption parameter to be returned upon conclusion of csch **Description** ccw_device_clear() calls csch on **cdev**'s subchannel. **Return** ``0`` on success, -``ENODEV`` on device not operational, -``EINVAL`` on invalid device state. **Context** Interrupts disabled, ccw device lock heldh](h)}(h**Parameters**h]j)}(hj~>h]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|>ubah}(h]h ]h"]h$]h&]u)h1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjx>ubjG)}(hhh](jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj>h]hstruct ccw_device *cdev}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj>ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chK~hj>ubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hK~hj>ubah}(h]h ]h"]h$]h&]uh1jmhj>ubeh}(h]h ]h"]h$]h&]uh1jKhj>hK~hj>ubjL)}(hX``unsigned long intparm`` interruption parameter to be returned upon conclusion of csch h](jR)}(h``unsigned long intparm``h]jX)}(hj>h]hunsigned long intparm}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj>ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhj>ubjn)}(hhh]h)}(h=interruption parameter to be returned upon conclusion of cschh]h=interruption parameter to be returned upon conclusion of csch}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj>ubah}(h]h ]h"]h$]h&]uh1jmhj>ubeh}(h]h ]h"]h$]h&]uh1jKhj>hKhj>ubeh}(h]h ]h"]h$]h&]uh1jFhjx>ubh)}(h**Description**h]j)}(hj?h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjx>ubh)}(h7ccw_device_clear() calls csch on **cdev**'s subchannel.h](h!ccw_device_clear() calls csch on }(hj'?hhhNhNubj)}(h**cdev**h]hcdev}(hj/?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'?ubh’s subchannel.}(hj'?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjx>ubh)}(h **Return**h]j)}(hjJ?h]hReturn}(hjL?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH?ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjx>ubh)}(h]``0`` on success, -``ENODEV`` on device not operational, -``EINVAL`` on invalid device state.h](jX)}(h``0``h]h0}(hjd?hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj`?ubh on success, -}(hj`?hhhNhNubjX)}(h ``ENODEV``h]hENODEV}(hjv?hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj`?ubh on device not operational, -}(hj`?hhhNhNubjX)}(h ``EINVAL``h]hEINVAL}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj`?ubh on invalid device state.}(hj`?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjx>ubh)}(h **Context**h]j)}(hj?h]hContext}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjx>ubh)}(h)Interrupts disabled, ccw device lock heldh]h)Interrupts disabled, ccw device lock held}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjx>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd)ccw_device_start_timeout_key (C function)c.ccw_device_start_timeout_keyhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hint ccw_device_start_timeout_key (struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, __u8 key, unsigned long flags, int expires)h]jt)}(hint ccw_device_start_timeout_key(struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, __u8 key, unsigned long flags, int expires)h](j4)}(hinth]hint}(hj?hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj?hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhj?hKubj)}(hccw_device_start_timeout_keyh]j)}(hccw_device_start_timeout_keyh]hccw_device_start_timeout_key}(hj @hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj?hhhj?hKubjl)}(hx(struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, __u8 key, unsigned long flags, int expires)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj%@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj!@ubj)}(h h]h }(hj2@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!@ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjC@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjE@modnameN classnameNjj)}j]j)}jj @sbc.ccw_device_start_timeout_keyasbuh1hhj!@ubj)}(h h]h }(hjc@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!@ubj)}(hjh]h*}(hjq@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!@ubj)}(hcdevh]hcdev}(hj~@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!@ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj@ubjr)}(hstruct ccw1 *cpah](jz)}(hj}h]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj@ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubh)}(hhh]j)}(hccw1h]hccw1}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j_@c.ccw_device_start_timeout_keyasbuh1hhj@ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hcpah]hcpa}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj@ubjr)}(hunsigned long intparmh](j4)}(hunsignedh]hunsigned}(hjAhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj4)}(hlongh]hlong}(hj#AhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjAubj)}(h h]h }(hj1AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(hintparmh]hintparm}(hj?AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj@ubjr)}(h__u8 lpmh](h)}(hhh]j)}(h__u8h]h__u8}(hj[AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]AmodnameN classnameNjj)}j]j_@c.ccw_device_start_timeout_keyasbuh1hhjTAubj)}(h h]h }(hjyAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTAubj)}(hlpmh]hlpm}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTAubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj@ubjr)}(h__u8 keyh](h)}(hhh]j)}(h__u8h]h__u8}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]j_@c.ccw_device_start_timeout_keyasbuh1hhjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(hkeyh]hkey}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj@ubjr)}(hunsigned long flagsh](j4)}(hunsignedh]hunsigned}(hjAhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj4)}(hlongh]hlong}(hjBhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjAubj)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(hflagsh]hflags}(hj BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj@ubjr)}(h int expiresh](j4)}(hinth]hint}(hj9BhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj5Bubj)}(h h]h }(hjGBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Bubj)}(hexpiresh]hexpires}(hjUBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Bubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj@ubeh}(h]h ]h"]h$]h&]jjuh1jkhj?hhhj?hKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj?hhhj?hKubah}(h]j?ah ](jjeh"]h$]h&]jj)jhuh1jmhj?hKhj?hhubj)}(hhh]h)}(h1start a s390 channel program with timeout and keyh]h1start a s390 channel program with timeout and key}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhj|Bhhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj?hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjBjjBjjjuh1jhhhhjhNhNubj)}(hX\**Parameters** ``struct ccw_device *cdev`` target ccw device ``struct ccw1 *cpa`` logical start address of channel program ``unsigned long intparm`` user specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request. ``__u8 lpm`` defines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm. ``__u8 key`` storage key to be used for the I/O ``unsigned long flags`` additional flags; defines the action to be performed for I/O processing. ``int expires`` timeout value in jiffies **Description** Start a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). This function notifies the device driver if the channel program has not completed during the time specified by **expires**. If a timeout occurs, the channel program is terminated via xsch, hsch or csch, and the device's interrupt handler will be called with an irb containing ERR_PTR(-``ETIMEDOUT``). The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear(). **Return** ``0``, if the operation was successful; -``EBUSY``, if the device is busy, or status pending; -``EACCES``, if no path specified in **lpm** is operational; -``ENODEV``, if the device is not operational. **Context** Interrupts disabled, ccw device lock heldh](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubjG)}(hhh](jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjBh]hstruct ccw_device *cdev}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjBubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjBubah}(h]h ]h"]h$]h&]uh1jmhjBubeh}(h]h ]h"]h$]h&]uh1jKhjBhKhjBubjL)}(h>``struct ccw1 *cpa`` logical start address of channel program h](jR)}(h``struct ccw1 *cpa``h]jX)}(hjBh]hstruct ccw1 *cpa}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjBubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubjn)}(hhh]h)}(h(logical start address of channel programh]h(logical start address of channel program}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChKhjCubah}(h]h ]h"]h$]h&]uh1jmhjBubeh}(h]h ]h"]h$]h&]uh1jKhjChKhjBubjL)}(h``unsigned long intparm`` user specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request. h](jR)}(h``unsigned long intparm``h]jX)}(hj2Ch]hunsigned long intparm}(hj4ChhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj0Cubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhj,Cubjn)}(hhh]h)}(huser specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request.h](h@user specific interruption parameter; will be presented back to }(hjKChhhNhNubj)}(h**cdev**h]hcdev}(hjSChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKCubhh’s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request.}(hjKChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjHCubah}(h]h ]h"]h$]h&]uh1jmhj,Cubeh}(h]h ]h"]h$]h&]uh1jKhjGChKhjBubjL)}(hu``__u8 lpm`` defines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm. h](jR)}(h ``__u8 lpm``h]jX)}(hj~Ch]h__u8 lpm}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj|Cubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjxCubjn)}(hhh]h)}(hgdefines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm.h]hgdefines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjCubah}(h]h ]h"]h$]h&]uh1jmhjxCubeh}(h]h ]h"]h$]h&]uh1jKhjChKhjBubjL)}(h0``__u8 key`` storage key to be used for the I/O h](jR)}(h ``__u8 key``h]jX)}(hjCh]h__u8 key}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjCubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjCubjn)}(hhh]h)}(h"storage key to be used for the I/Oh]h"storage key to be used for the I/O}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChKhjCubah}(h]h ]h"]h$]h&]uh1jmhjCubeh}(h]h ]h"]h$]h&]uh1jKhjChKhjBubjL)}(ha``unsigned long flags`` additional flags; defines the action to be performed for I/O processing. h](jR)}(h``unsigned long flags``h]jX)}(hjCh]hunsigned long flags}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjCubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjCubjn)}(hhh]h)}(hHadditional flags; defines the action to be performed for I/O processing.h]hHadditional flags; defines the action to be performed for I/O processing.}(hj DhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjDubah}(h]h ]h"]h$]h&]uh1jmhjCubeh}(h]h ]h"]h$]h&]uh1jKhjDhKhjBubjL)}(h)``int expires`` timeout value in jiffies h](jR)}(h``int expires``h]jX)}(hj+Dh]h int expires}(hj-DhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj)Dubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhj%Dubjn)}(hhh]h)}(htimeout value in jiffiesh]htimeout value in jiffies}(hjDDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@DhKhjADubah}(h]h ]h"]h$]h&]uh1jmhj%Dubeh}(h]h ]h"]h$]h&]uh1jKhj@DhKhjBubeh}(h]h ]h"]h$]h&]uh1jFhjBubh)}(h**Description**h]j)}(hjfDh]h Description}(hjhDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdDubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubh)}(hXStart a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). This function notifies the device driver if the channel program has not completed during the time specified by **expires**. If a timeout occurs, the channel program is terminated via xsch, hsch or csch, and the device's interrupt handler will be called with an irb containing ERR_PTR(-``ETIMEDOUT``). The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear().h](hX,Start a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). This function notifies the device driver if the channel program has not completed during the time specified by }(hj|DhhhNhNubj)}(h **expires**h]hexpires}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Dubh. If a timeout occurs, the channel program is terminated via xsch, hsch or csch, and the device’s interrupt handler will be called with an irb containing ERR_PTR(-}(hj|DhhhNhNubjX)}(h ``ETIMEDOUT``h]h ETIMEDOUT}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj|Dubh/). The interruption handler will echo back the }(hj|DhhhNhNubj)}(h **intparm**h]hintparm}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Dubh specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear().}(hj|DhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubh)}(h **Return**h]j)}(hjDh]hReturn}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubh)}(h``0``, if the operation was successful; -``EBUSY``, if the device is busy, or status pending; -``EACCES``, if no path specified in **lpm** is operational; -``ENODEV``, if the device is not operational.h](jX)}(h``0``h]h0}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjDubh$, if the operation was successful; -}(hjDhhhNhNubjX)}(h ``EBUSY``h]hEBUSY}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjDubh-, if the device is busy, or status pending; -}(hjDhhhNhNubjX)}(h ``EACCES``h]hEACCES}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjDubh, if no path specified in }(hjDhhhNhNubj)}(h**lpm**h]hlpm}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubh is operational; -}(hjDhhhNhNubjX)}(h ``ENODEV``h]hENODEV}(hj%EhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjDubh#, if the device is not operational.}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubh)}(h **Context**h]j)}(hj@Eh]hContext}(hjBEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>Eubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubh)}(h)Interrupts disabled, ccw device lock heldh]h)Interrupts disabled, ccw device lock held}(hjVEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd!ccw_device_start_key (C function)c.ccw_device_start_keyhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hint ccw_device_start_key (struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, __u8 key, unsigned long flags)h]jt)}(hint ccw_device_start_key(struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, __u8 key, unsigned long flags)h](j4)}(hinth]hint}(hjEhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjEhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEhhhjEhKubj)}(hccw_device_start_keyh]j)}(hccw_device_start_keyh]hccw_device_start_key}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ](jjeh"]h$]h&]jjuh1jhjEhhhjEhKubjl)}(hk(struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, __u8 key, unsigned long flags)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]j)}jjEsbc.ccw_device_start_keyasbuh1hhjEubj)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(hcdevh]hcdev}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjEubjr)}(hstruct ccw1 *cpah](jz)}(hj}h]hstruct}(hj4FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj0Fubj)}(h h]h }(hjAFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Fubh)}(hhh]j)}(hccw1h]hccw1}(hjRFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOFubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTFmodnameN classnameNjj)}j]jEc.ccw_device_start_keyasbuh1hhj0Fubj)}(h h]h }(hjpFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Fubj)}(hjh]h*}(hj~FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Fubj)}(hcpah]hcpa}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Fubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjEubjr)}(hunsigned long intparmh](j4)}(hunsignedh]hunsigned}(hjFhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjFubj)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj4)}(hlongh]hlong}(hjFhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjFubj)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj)}(hintparmh]hintparm}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjEubjr)}(h__u8 lpmh](h)}(hhh]j)}(h__u8h]h__u8}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]jEc.ccw_device_start_keyasbuh1hhjFubj)}(h h]h }(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj)}(hlpmh]hlpm}(hj$GhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjEubjr)}(h__u8 keyh](h)}(hhh]j)}(h__u8h]h__u8}(hj@GhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=Gubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjBGmodnameN classnameNjj)}j]jEc.ccw_device_start_keyasbuh1hhj9Gubj)}(h h]h }(hj^GhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9Gubj)}(hkeyh]hkey}(hjlGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9Gubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjEubjr)}(hunsigned long flagsh](j4)}(hunsignedh]hunsigned}(hjGhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjGubj)}(h h]h }(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj4)}(hlongh]hlong}(hjGhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjGubj)}(h h]h }(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj)}(hflagsh]hflags}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjEubeh}(h]h ]h"]h$]h&]jjuh1jkhjEhhhjEhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj}EhhhjEhKubah}(h]jxEah ](jjeh"]h$]h&]jj)jhuh1jmhjEhKhjzEhhubj)}(hhh]h)}(h%start a s390 channel program with keyh]h%start a s390 channel program with key}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjGhhubah}(h]h ]h"]h$]h&]uh1jhjzEhhhjEhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjGjjGjjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct ccw_device *cdev`` target ccw device ``struct ccw1 *cpa`` logical start address of channel program ``unsigned long intparm`` user specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request. ``__u8 lpm`` defines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm. ``__u8 key`` storage key to be used for the I/O ``unsigned long flags`` additional flags; defines the action to be performed for I/O processing. **Description** Start a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear(). **Return** ``0``, if the operation was successful; -``EBUSY``, if the device is busy, or status pending; -``EACCES``, if no path specified in **lpm** is operational; -``ENODEV``, if the device is not operational. **Context** Interrupts disabled, ccw device lock heldh](h)}(h**Parameters**h]j)}(hj Hh]h Parameters}(hj HhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjHubjG)}(hhh](jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj(Hh]hstruct ccw_device *cdev}(hj*HhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj&Hubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhj"Hubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hjAHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=HhKhj>Hubah}(h]h ]h"]h$]h&]uh1jmhj"Hubeh}(h]h ]h"]h$]h&]uh1jKhj=HhKhjHubjL)}(h>``struct ccw1 *cpa`` logical start address of channel program h](jR)}(h``struct ccw1 *cpa``h]jX)}(hjaHh]hstruct ccw1 *cpa}(hjcHhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj_Hubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhj[Hubjn)}(hhh]h)}(h(logical start address of channel programh]h(logical start address of channel program}(hjzHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvHhKhjwHubah}(h]h ]h"]h$]h&]uh1jmhj[Hubeh}(h]h ]h"]h$]h&]uh1jKhjvHhKhjHubjL)}(h``unsigned long intparm`` user specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request. h](jR)}(h``unsigned long intparm``h]jX)}(hjHh]hunsigned long intparm}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjHubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjHubjn)}(hhh]h)}(huser specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request.h](h@user specific interruption parameter; will be presented back to }(hjHhhhNhNubj)}(h**cdev**h]hcdev}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubhh’s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request.}(hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjHubah}(h]h ]h"]h$]h&]uh1jmhjHubeh}(h]h ]h"]h$]h&]uh1jKhjHhKhjHubjL)}(hu``__u8 lpm`` defines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm. h](jR)}(h ``__u8 lpm``h]jX)}(hjHh]h__u8 lpm}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjHubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjHubjn)}(hhh]h)}(hgdefines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm.h]hgdefines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chKhjHubah}(h]h ]h"]h$]h&]uh1jmhjHubeh}(h]h ]h"]h$]h&]uh1jKhjHhMhjHubjL)}(h0``__u8 key`` storage key to be used for the I/O h](jR)}(h ``__u8 key``h]jX)}(hj Ih]h__u8 key}(hj"IhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjIubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjIubjn)}(hhh]h)}(h"storage key to be used for the I/Oh]h"storage key to be used for the I/O}(hj9IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5IhMhj6Iubah}(h]h ]h"]h$]h&]uh1jmhjIubeh}(h]h ]h"]h$]h&]uh1jKhj5IhMhjHubjL)}(ha``unsigned long flags`` additional flags; defines the action to be performed for I/O processing. h](jR)}(h``unsigned long flags``h]jX)}(hjYIh]hunsigned long flags}(hj[IhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjWIubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjSIubjn)}(hhh]h)}(hHadditional flags; defines the action to be performed for I/O processing.h]hHadditional flags; defines the action to be performed for I/O processing.}(hjrIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjoIubah}(h]h ]h"]h$]h&]uh1jmhjSIubeh}(h]h ]h"]h$]h&]uh1jKhjnIhMhjHubeh}(h]h ]h"]h$]h&]uh1jFhjHubh)}(h**Description**h]j)}(hjIh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjHubh)}(hX~Start a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear().h](hStart a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). The interruption handler will echo back the }(hjIhhhNhNubj)}(h **intparm**h]hintparm}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubh specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear().}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjHubh)}(h **Return**h]j)}(hjIh]hReturn}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM hjHubh)}(h``0``, if the operation was successful; -``EBUSY``, if the device is busy, or status pending; -``EACCES``, if no path specified in **lpm** is operational; -``ENODEV``, if the device is not operational.h](jX)}(h``0``h]h0}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjIubh$, if the operation was successful; -}(hjIhhhNhNubjX)}(h ``EBUSY``h]hEBUSY}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjIubh-, if the device is busy, or status pending; -}(hjIhhhNhNubjX)}(h ``EACCES``h]hEACCES}(hj JhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjIubh, if no path specified in }(hjIhhhNhNubj)}(h**lpm**h]hlpm}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubh is operational; -}(hjIhhhNhNubjX)}(h ``ENODEV``h]hENODEV}(hj0JhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjIubh#, if the device is not operational.}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM hjHubh)}(h **Context**h]j)}(hjKJh]hContext}(hjMJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIJubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjHubh)}(h)Interrupts disabled, ccw device lock heldh]h)Interrupts disabled, ccw device lock held}(hjaJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_device_start (C function)c.ccw_device_starthNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hvint ccw_device_start (struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, unsigned long flags)h]jt)}(huint ccw_device_start(struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, unsigned long flags)h](j4)}(hinth]hint}(hjJhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjJhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJhhhjJhMubj)}(hccw_device_starth]j)}(hccw_device_starth]hccw_device_start}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubah}(h]h ](jjeh"]h$]h&]jjuh1jhjJhhhjJhMubjl)}(ha(struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, unsigned long flags)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjJubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]j)}jjJsbc.ccw_device_startasbuh1hhjJubj)}(h h]h }(hj KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj)}(hjh]h*}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj)}(hcdevh]hcdev}(hj&KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjJubjr)}(hstruct ccw1 *cpah](jz)}(hj}h]hstruct}(hj?KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj;Kubj)}(h h]h }(hjLKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;Kubh)}(hhh]j)}(hccw1h]hccw1}(hj]KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj_KmodnameN classnameNjj)}j]jKc.ccw_device_startasbuh1hhj;Kubj)}(h h]h }(hj{KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;Kubj)}(hjh]h*}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;Kubj)}(hcpah]hcpa}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;Kubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjJubjr)}(hunsigned long intparmh](j4)}(hunsignedh]hunsigned}(hjKhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjKubj)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubj4)}(hlongh]hlong}(hjKhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjKubj)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubj)}(hintparmh]hintparm}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjJubjr)}(h__u8 lpmh](h)}(hhh]j)}(h__u8h]h__u8}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjLmodnameN classnameNjj)}j]jKc.ccw_device_startasbuh1hhjKubj)}(h h]h }(hj!LhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubj)}(hlpmh]hlpm}(hj/LhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjJubjr)}(hunsigned long flagsh](j4)}(hunsignedh]hunsigned}(hjHLhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjDLubj)}(h h]h }(hjVLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDLubj4)}(hlongh]hlong}(hjdLhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjDLubj)}(h h]h }(hjrLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDLubj)}(hflagsh]hflags}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDLubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjJubeh}(h]h ]h"]h$]h&]jjuh1jkhjJhhhjJhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjJhhhjJhMubah}(h]jJah ](jjeh"]h$]h&]jj)jhuh1jmhjJhMhjJhhubj)}(hhh]h)}(hstart a s390 channel programh]hstart a s390 channel program}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjLhhubah}(h]h ]h"]h$]h&]uh1jhjJhhhjJhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjLjjLjjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct ccw_device *cdev`` target ccw device ``struct ccw1 *cpa`` logical start address of channel program ``unsigned long intparm`` user specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request. ``__u8 lpm`` defines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm. ``unsigned long flags`` additional flags; defines the action to be performed for I/O processing. **Description** Start a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear(). **Return** ``0``, if the operation was successful; -``EBUSY``, if the device is busy, or status pending; -``EACCES``, if no path specified in **lpm** is operational; -``ENODEV``, if the device is not operational. **Context** Interrupts disabled, ccw device lock heldh](h)}(h**Parameters**h]j)}(hjLh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM hjLubjG)}(hhh](jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjLh]hstruct ccw_device *cdev}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjLubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjLubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhMhjMubah}(h]h ]h"]h$]h&]uh1jmhjLubeh}(h]h ]h"]h$]h&]uh1jKhjMhMhjLubjL)}(h>``struct ccw1 *cpa`` logical start address of channel program h](jR)}(h``struct ccw1 *cpa``h]jX)}(hj$Mh]hstruct ccw1 *cpa}(hj&MhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj"Mubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjMubjn)}(hhh]h)}(h(logical start address of channel programh]h(logical start address of channel program}(hj=MhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9MhMhj:Mubah}(h]h ]h"]h$]h&]uh1jmhjMubeh}(h]h ]h"]h$]h&]uh1jKhj9MhMhjLubjL)}(h``unsigned long intparm`` user specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request. h](jR)}(h``unsigned long intparm``h]jX)}(hj]Mh]hunsigned long intparm}(hj_MhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj[Mubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM!hjWMubjn)}(hhh]h)}(huser specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request.h](h@user specific interruption parameter; will be presented back to }(hjvMhhhNhNubj)}(h**cdev**h]hcdev}(hj~MhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvMubhh’s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request.}(hjvMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjsMubah}(h]h ]h"]h$]h&]uh1jmhjWMubeh}(h]h ]h"]h$]h&]uh1jKhjrMhM!hjLubjL)}(hu``__u8 lpm`` defines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm. h](jR)}(h ``__u8 lpm``h]jX)}(hjMh]h__u8 lpm}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjMubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM#hjMubjn)}(hhh]h)}(hgdefines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm.h]hgdefines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM"hjMubah}(h]h ]h"]h$]h&]uh1jmhjMubeh}(h]h ]h"]h$]h&]uh1jKhjMhM#hjLubjL)}(ha``unsigned long flags`` additional flags; defines the action to be performed for I/O processing. h](jR)}(h``unsigned long flags``h]jX)}(hjMh]hunsigned long flags}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjMubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM%hjMubjn)}(hhh]h)}(hHadditional flags; defines the action to be performed for I/O processing.h]hHadditional flags; defines the action to be performed for I/O processing.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM$hjMubah}(h]h ]h"]h$]h&]uh1jmhjMubeh}(h]h ]h"]h$]h&]uh1jKhjMhM%hjLubeh}(h]h ]h"]h$]h&]uh1jFhjLubh)}(h**Description**h]j)}(hjNh]h Description}(hj!NhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM'hjLubh)}(hX~Start a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear().h](hStart a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). The interruption handler will echo back the }(hj5NhhhNhNubj)}(h **intparm**h]hintparm}(hj=NhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5Nubh specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear().}(hj5NhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM&hjLubh)}(h **Return**h]j)}(hjXNh]hReturn}(hjZNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM-hjLubh)}(h``0``, if the operation was successful; -``EBUSY``, if the device is busy, or status pending; -``EACCES``, if no path specified in **lpm** is operational; -``ENODEV``, if the device is not operational.h](jX)}(h``0``h]h0}(hjrNhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjnNubh$, if the operation was successful; -}(hjnNhhhNhNubjX)}(h ``EBUSY``h]hEBUSY}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjnNubh-, if the device is busy, or status pending; -}(hjnNhhhNhNubjX)}(h ``EACCES``h]hEACCES}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjnNubh, if no path specified in }(hjnNhhhNhNubj)}(h**lpm**h]hlpm}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnNubh is operational; -}(hjnNhhhNhNubjX)}(h ``ENODEV``h]hENODEV}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjnNubh#, if the device is not operational.}(hjnNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM-hjLubh)}(h **Context**h]j)}(hjNh]hContext}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM2hjLubh)}(h)Interrupts disabled, ccw device lock heldh]h)Interrupts disabled, ccw device lock held}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM2hjLubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd%ccw_device_start_timeout (C function)c.ccw_device_start_timeouthNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hint ccw_device_start_timeout (struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, unsigned long flags, int expires)h]jt)}(hint ccw_device_start_timeout(struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, unsigned long flags, int expires)h](j4)}(hinth]hint}(hjOhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjOhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM=ubj)}(h h]h }(hj)OhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOhhhj(OhM=ubj)}(hccw_device_start_timeouth]j)}(hccw_device_start_timeouth]hccw_device_start_timeout}(hj;OhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Oubah}(h]h ](jjeh"]h$]h&]jjuh1jhjOhhhj(OhM=ubjl)}(hn(struct ccw_device *cdev, struct ccw1 *cpa, unsigned long intparm, __u8 lpm, unsigned long flags, int expires)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hjWOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjSOubj)}(h h]h }(hjdOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSOubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjuOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwOmodnameN classnameNjj)}j]j)}jj=Osbc.ccw_device_start_timeoutasbuh1hhjSOubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSOubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSOubj)}(hcdevh]hcdev}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSOubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjOOubjr)}(hstruct ccw1 *cpah](jz)}(hj}h]hstruct}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjOubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubh)}(hhh]j)}(hccw1h]hccw1}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNjj)}j]jOc.ccw_device_start_timeoutasbuh1hhjOubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj)}(hjh]h*}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj)}(hcpah]hcpa}(hj PhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjOOubjr)}(hunsigned long intparmh](j4)}(hunsignedh]hunsigned}(hj9PhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj5Pubj)}(h h]h }(hjGPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Pubj4)}(hlongh]hlong}(hjUPhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj5Pubj)}(h h]h }(hjcPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Pubj)}(hintparmh]hintparm}(hjqPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Pubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjOOubjr)}(h__u8 lpmh](h)}(hhh]j)}(h__u8h]h__u8}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]jOc.ccw_device_start_timeoutasbuh1hhjPubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj)}(hlpmh]hlpm}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjOOubjr)}(hunsigned long flagsh](j4)}(hunsignedh]hunsigned}(hjPhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjPubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj4)}(hlongh]hlong}(hjPhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjPubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj)}(hflagsh]hflags}(hj QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjOOubjr)}(h int expiresh](j4)}(hinth]hint}(hj#QhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjQubj)}(h h]h }(hj1QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubj)}(hexpiresh]hexpires}(hj?QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjOOubeh}(h]h ]h"]h$]h&]jjuh1jkhjOhhhj(OhM=ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjOhhhj(OhM=ubah}(h]j Oah ](jjeh"]h$]h&]jj)jhuh1jmhj(OhM=hjOhhubj)}(hhh]h)}(h)start a s390 channel program with timeouth]h)start a s390 channel program with timeout}(hjiQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM=hjfQhhubah}(h]h ]h"]h$]h&]uh1jhjOhhhj(OhM=ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQjjQjjjuh1jhhhhjhNhNubj)}(hX)**Parameters** ``struct ccw_device *cdev`` target ccw device ``struct ccw1 *cpa`` logical start address of channel program ``unsigned long intparm`` user specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request. ``__u8 lpm`` defines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm. ``unsigned long flags`` additional flags; defines the action to be performed for I/O processing. ``int expires`` timeout value in jiffies **Description** Start a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). This function notifies the device driver if the channel program has not completed during the time specified by **expires**. If a timeout occurs, the channel program is terminated via xsch, hsch or csch, and the device's interrupt handler will be called with an irb containing ERR_PTR(-``ETIMEDOUT``). The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear(). **Return** ``0``, if the operation was successful; -``EBUSY``, if the device is busy, or status pending; -``EACCES``, if no path specified in **lpm** is operational; -``ENODEV``, if the device is not operational. **Context** Interrupts disabled, ccw device lock heldh](h)}(h**Parameters**h]j)}(hjQh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMAhjQubjG)}(hhh](jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjQh]hstruct ccw_device *cdev}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjQubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM>hjQubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhM>hjQubah}(h]h ]h"]h$]h&]uh1jmhjQubeh}(h]h ]h"]h$]h&]uh1jKhjQhM>hjQubjL)}(h>``struct ccw1 *cpa`` logical start address of channel program h](jR)}(h``struct ccw1 *cpa``h]jX)}(hjQh]hstruct ccw1 *cpa}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjQubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM?hjQubjn)}(hhh]h)}(h(logical start address of channel programh]h(logical start address of channel program}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhM?hjQubah}(h]h ]h"]h$]h&]uh1jmhjQubeh}(h]h ]h"]h$]h&]uh1jKhjQhM?hjQubjL)}(h``unsigned long intparm`` user specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request. h](jR)}(h``unsigned long intparm``h]jX)}(hjRh]hunsigned long intparm}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjRubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMBhjRubjn)}(hhh]h)}(huser specific interruption parameter; will be presented back to **cdev**'s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request.h](h@user specific interruption parameter; will be presented back to }(hj5RhhhNhNubj)}(h**cdev**h]hcdev}(hj=RhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5Rubhh’s interrupt handler. Allows a device driver to associate the interrupt with a particular I/O request.}(hj5RhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM@hj2Rubah}(h]h ]h"]h$]h&]uh1jmhjRubeh}(h]h ]h"]h$]h&]uh1jKhj1RhMBhjQubjL)}(hu``__u8 lpm`` defines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm. h](jR)}(h ``__u8 lpm``h]jX)}(hjhRh]h__u8 lpm}(hjjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjfRubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMDhjbRubjn)}(hhh]h)}(hgdefines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm.h]hgdefines the channel path to be used for a specific I/O request. A value of 0 will make cio use the opm.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMChj~Rubah}(h]h ]h"]h$]h&]uh1jmhjbRubeh}(h]h ]h"]h$]h&]uh1jKhj}RhMDhjQubjL)}(ha``unsigned long flags`` additional flags; defines the action to be performed for I/O processing. h](jR)}(h``unsigned long flags``h]jX)}(hjRh]hunsigned long flags}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjRubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMFhjRubjn)}(hhh]h)}(hHadditional flags; defines the action to be performed for I/O processing.h]hHadditional flags; defines the action to be performed for I/O processing.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMEhjRubah}(h]h ]h"]h$]h&]uh1jmhjRubeh}(h]h ]h"]h$]h&]uh1jKhjRhMFhjQubjL)}(h)``int expires`` timeout value in jiffies h](jR)}(h``int expires``h]jX)}(hjRh]h int expires}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjRubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMGhjRubjn)}(hhh]h)}(htimeout value in jiffiesh]htimeout value in jiffies}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMGhjRubah}(h]h ]h"]h$]h&]uh1jmhjRubeh}(h]h ]h"]h$]h&]uh1jKhjRhMGhjQubeh}(h]h ]h"]h$]h&]uh1jFhjQubh)}(h**Description**h]j)}(hjSh]h Description}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMIhjQubh)}(hXStart a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). This function notifies the device driver if the channel program has not completed during the time specified by **expires**. If a timeout occurs, the channel program is terminated via xsch, hsch or csch, and the device's interrupt handler will be called with an irb containing ERR_PTR(-``ETIMEDOUT``). The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear().h](hX,Start a S/390 channel program. When the interrupt arrives, the IRQ handler is called, either immediately, delayed (dev-end missing, or sense required) or never (no IRQ handler registered). This function notifies the device driver if the channel program has not completed during the time specified by }(hj-ShhhNhNubj)}(h **expires**h]hexpires}(hj5ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-Subh. If a timeout occurs, the channel program is terminated via xsch, hsch or csch, and the device’s interrupt handler will be called with an irb containing ERR_PTR(-}(hj-ShhhNhNubjX)}(h ``ETIMEDOUT``h]h ETIMEDOUT}(hjGShhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj-Subh/). The interruption handler will echo back the }(hj-ShhhNhNubj)}(h **intparm**h]hintparm}(hjYShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-Subh specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt() or ccw_device_clear().}(hj-ShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMHhjQubh)}(h **Return**h]j)}(hjtSh]hReturn}(hjvShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrSubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMShjQubh)}(h``0``, if the operation was successful; -``EBUSY``, if the device is busy, or status pending; -``EACCES``, if no path specified in **lpm** is operational; -``ENODEV``, if the device is not operational.h](jX)}(h``0``h]h0}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjSubh$, if the operation was successful; -}(hjShhhNhNubjX)}(h ``EBUSY``h]hEBUSY}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjSubh-, if the device is busy, or status pending; -}(hjShhhNhNubjX)}(h ``EACCES``h]hEACCES}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjSubh, if no path specified in }(hjShhhNhNubj)}(h**lpm**h]hlpm}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh is operational; -}(hjShhhNhNubjX)}(h ``ENODEV``h]hENODEV}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjSubh#, if the device is not operational.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMShjQubh)}(h **Context**h]j)}(hjSh]hContext}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMXhjQubh)}(h)Interrupts disabled, ccw device lock heldh]h)Interrupts disabled, ccw device lock held}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMXhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_device_halt (C function)c.ccw_device_halthNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hDint ccw_device_halt (struct ccw_device *cdev, unsigned long intparm)h]jt)}(hCint ccw_device_halt(struct ccw_device *cdev, unsigned long intparm)h](j4)}(hinth]hint}(hj6ThhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj2Thhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMfubj)}(h h]h }(hjEThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ThhhjDThMfubj)}(hccw_device_halth]j)}(hccw_device_halth]hccw_device_halt}(hjWThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSTubah}(h]h ](jjeh"]h$]h&]jjuh1jhj2ThhhjDThMfubjl)}(h0(struct ccw_device *cdev, unsigned long intparm)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hjsThhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjoTubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoTubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]j)}jjYTsbc.ccw_device_haltasbuh1hhjoTubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoTubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoTubj)}(hcdevh]hcdev}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoTubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjkTubjr)}(hunsigned long intparmh](j4)}(hunsignedh]hunsigned}(hjThhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjTubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj4)}(hlongh]hlong}(hjUhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjTubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj)}(hintparmh]hintparm}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjkTubeh}(h]h ]h"]h$]h&]jjuh1jkhj2ThhhjDThMfubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj.ThhhjDThMfubah}(h]j)Tah ](jjeh"]h$]h&]jj)jhuh1jmhjDThMfhj+Thhubj)}(hhh]h)}(hhalt I/O request processingh]hhalt I/O request processing}(hjGUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMfhjDUhhubah}(h]h ]h"]h$]h&]uh1jhj+ThhhjDThMfubeh}(h]h ](jfunctioneh"]h$]h&]jjjj_Ujj_Ujjjuh1jhhhhjhNhNubj)}(hXc**Parameters** ``struct ccw_device *cdev`` target ccw device ``unsigned long intparm`` interruption parameter to be returned upon conclusion of hsch **Description** ccw_device_halt() calls hsch on **cdev**'s subchannel. The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_clear(). **Return** ``0`` on success, -``ENODEV`` on device not operational, -``EINVAL`` on invalid device state, -``EBUSY`` on device busy or interrupt pending. **Context** Interrupts disabled, ccw device lock heldh](h)}(h**Parameters**h]j)}(hjiUh]h Parameters}(hjkUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgUubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMjhjcUubjG)}(hhh](jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjUh]hstruct ccw_device *cdev}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjUubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMghjUubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMghjUubah}(h]h ]h"]h$]h&]uh1jmhjUubeh}(h]h ]h"]h$]h&]uh1jKhjUhMghjUubjL)}(hX``unsigned long intparm`` interruption parameter to be returned upon conclusion of hsch h](jR)}(h``unsigned long intparm``h]jX)}(hjUh]hunsigned long intparm}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjUubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhhjUubjn)}(hhh]h)}(h=interruption parameter to be returned upon conclusion of hschh]h=interruption parameter to be returned upon conclusion of hsch}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhhjUubah}(h]h ]h"]h$]h&]uh1jmhjUubeh}(h]h ]h"]h$]h&]uh1jKhjUhMhhjUubeh}(h]h ]h"]h$]h&]uh1jFhjcUubh)}(h**Description**h]j)}(hjUh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMjhjcUubh)}(hccw_device_halt() calls hsch on **cdev**'s subchannel. The interruption handler will echo back the **intparm** specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_clear().h](h ccw_device_halt() calls hsch on }(hjVhhhNhNubj)}(h**cdev**h]hcdev}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh=’s subchannel. The interruption handler will echo back the }(hjVhhhNhNubj)}(h **intparm**h]hintparm}(hj,VhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubhu specified here, unless another interruption parameter is specified by a subsequent invocation of ccw_device_clear().}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMihjcUubh)}(h **Return**h]j)}(hjGVh]hReturn}(hjIVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEVubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMnhjcUubh)}(h``0`` on success, -``ENODEV`` on device not operational, -``EINVAL`` on invalid device state, -``EBUSY`` on device busy or interrupt pending.h](jX)}(h``0``h]h0}(hjaVhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj]Vubh on success, -}(hj]VhhhNhNubjX)}(h ``ENODEV``h]hENODEV}(hjsVhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj]Vubh on device not operational, -}(hj]VhhhNhNubjX)}(h ``EINVAL``h]hEINVAL}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj]Vubh on invalid device state, -}(hj]VhhhNhNubjX)}(h ``EBUSY``h]hEBUSY}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj]Vubh% on device busy or interrupt pending.}(hj]VhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMnhjcUubh)}(h **Context**h]j)}(hjVh]hContext}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMshjcUubh)}(h)Interrupts disabled, ccw device lock heldh]h)Interrupts disabled, ccw device lock held}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMshjcUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_device_resume (C function)c.ccw_device_resumehNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h/int ccw_device_resume (struct ccw_device *cdev)h]jt)}(h.int ccw_device_resume(struct ccw_device *cdev)h](j4)}(hinth]hint}(hjVhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjVhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhhjWhMubj)}(hccw_device_resumeh]j)}(hccw_device_resumeh]hccw_device_resume}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ](jjeh"]h$]h&]jjuh1jhjVhhhjWhMubjl)}(h(struct ccw_device *cdev)h]jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj4WhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj0Wubj)}(h h]h }(hjAWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Wubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjRWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTWmodnameN classnameNjj)}j]j)}jjWsbc.ccw_device_resumeasbuh1hhj0Wubj)}(h h]h }(hjrWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Wubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Wubj)}(hcdevh]hcdev}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Wubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj,Wubah}(h]h ]h"]h$]h&]jjuh1jkhjVhhhjWhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjVhhhjWhMubah}(h]jVah ](jjeh"]h$]h&]jj)jhuh1jmhjWhMhjVhhubj)}(hhh]h)}(h resume channel program executionh]h resume channel program execution}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWhhubah}(h]h ]h"]h$]h&]uh1jhjVhhhjWhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjWjjWjjjuh1jhhhhjhNhNubj)}(hX]**Parameters** ``struct ccw_device *cdev`` target ccw device **Description** ccw_device_resume() calls rsch on **cdev**'s subchannel. **Return** ``0`` on success, -``ENODEV`` on device not operational, -``EINVAL`` on invalid device state, -``EBUSY`` on device busy or interrupt pending. **Context** Interrupts disabled, ccw device lock heldh](h)}(h**Parameters**h]j)}(hjWh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWubjG)}(hhh]jL)}(h.``struct ccw_device *cdev`` target ccw device h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjWh]hstruct ccw_device *cdev}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjWubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWubjn)}(hhh]h)}(htarget ccw deviceh]htarget ccw device}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj XhMhjXubah}(h]h ]h"]h$]h&]uh1jmhjWubeh}(h]h ]h"]h$]h&]uh1jKhj XhMhjWubah}(h]h ]h"]h$]h&]uh1jFhjWubh)}(h**Description**h]j)}(hj3Xh]h Description}(hj5XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1Xubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWubh)}(h8ccw_device_resume() calls rsch on **cdev**'s subchannel.h](h"ccw_device_resume() calls rsch on }(hjIXhhhNhNubj)}(h**cdev**h]hcdev}(hjQXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIXubh’s subchannel.}(hjIXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWubh)}(h **Return**h]j)}(hjlXh]hReturn}(hjnXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjXubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWubh)}(h``0`` on success, -``ENODEV`` on device not operational, -``EINVAL`` on invalid device state, -``EBUSY`` on device busy or interrupt pending.h](jX)}(h``0``h]h0}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjXubh on success, -}(hjXhhhNhNubjX)}(h ``ENODEV``h]hENODEV}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjXubh on device not operational, -}(hjXhhhNhNubjX)}(h ``EINVAL``h]hEINVAL}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjXubh on invalid device state, -}(hjXhhhNhNubjX)}(h ``EBUSY``h]hEBUSY}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjXubh% on device busy or interrupt pending.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWubh)}(h **Context**h]j)}(hjXh]hContext}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWubh)}(h)Interrupts disabled, ccw device lock heldh]h)Interrupts disabled, ccw device lock held}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_device_get_ciw (C function)c.ccw_device_get_ciwhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hCstruct ciw * ccw_device_get_ciw (struct ccw_device *cdev, __u32 ct)h]jt)}(hAstruct ciw *ccw_device_get_ciw(struct ccw_device *cdev, __u32 ct)h](jz)}(hj}h]hstruct}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjYhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMubj)}(h h]h }(hj*YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhhj)YhMubh)}(hhh]j)}(hciwh]hciw}(hj;YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8Yubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=YmodnameN classnameNjj)}j]j)}jccw_device_get_ciwsbc.ccw_device_get_ciwasbuh1hhjYhhhj)YhMubj)}(h h]h }(hj\YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhhj)YhMubj)}(hjh]h*}(hjjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhhj)YhMubj)}(hccw_device_get_ciwh]j)}(hjYYh]hccw_device_get_ciw}(hj{YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwYubah}(h]h ](jjeh"]h$]h&]jjuh1jhjYhhhj)YhMubjl)}(h#(struct ccw_device *cdev, __u32 ct)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjYmodnameN classnameNjj)}j]jWYc.ccw_device_get_ciwasbuh1hhjYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hcdevh]hcdev}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjYubjr)}(h__u32 cth](h)}(hhh]j)}(h__u32h]h__u32}(hj ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj ZmodnameN classnameNjj)}j]jWYc.ccw_device_get_ciwasbuh1hhjZubj)}(h h]h }(hj'ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj)}(hcth]hct}(hj5ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjYubeh}(h]h ]h"]h$]h&]jjuh1jkhjYhhhj)YhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjYhhhj)YhMubah}(h]jYah ](jjeh"]h$]h&]jj)jhuh1jmhj)YhMhjYhhubj)}(hhh]h)}(h.Search for CIW command in extended sense data.h]h.Search for CIW command in extended sense data.}(hj_ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj\Zhhubah}(h]h ]h"]h$]h&]uh1jhjYhhhj)YhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjwZjjwZjjjuh1jhhhhjhNhNubj)}(hX **Parameters** ``struct ccw_device *cdev`` ccw device to inspect ``__u32 ct`` command type to look for **Description** During SenseID, command information words (CIWs) describing special commands available to the device may have been stored in the extended sense data. This function searches for CIWs of a specified command type in the extended sense data. **Return** ``NULL`` if no extended sense data has been stored or if no CIW of the specified command type could be found, else a pointer to the CIW of the specified command type.h](h)}(h**Parameters**h]j)}(hjZh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj{ZubjG)}(hhh](jL)}(h2``struct ccw_device *cdev`` ccw device to inspect h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjZh]hstruct ccw_device *cdev}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjZubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjZubjn)}(hhh]h)}(hccw device to inspecth]hccw device to inspect}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jmhjZubeh}(h]h ]h"]h$]h&]uh1jKhjZhMhjZubjL)}(h&``__u32 ct`` command type to look for h](jR)}(h ``__u32 ct``h]jX)}(hjZh]h__u32 ct}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjZubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjZubjn)}(hhh]h)}(hcommand type to look forh]hcommand type to look for}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jmhjZubeh}(h]h ]h"]h$]h&]uh1jKhjZhMhjZubeh}(h]h ]h"]h$]h&]uh1jFhj{Zubh)}(h**Description**h]j)}(hj[h]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj{Zubh)}(hDuring SenseID, command information words (CIWs) describing special commands available to the device may have been stored in the extended sense data. This function searches for CIWs of a specified command type in the extended sense data.h]hDuring SenseID, command information words (CIWs) describing special commands available to the device may have been stored in the extended sense data. This function searches for CIWs of a specified command type in the extended sense data.}(hj*[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj{Zubh)}(h **Return**h]j)}(hj;[h]hReturn}(hj=[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9[ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj{Zubh)}(h``NULL`` if no extended sense data has been stored or if no CIW of the specified command type could be found, else a pointer to the CIW of the specified command type.h](jX)}(h``NULL``h]hNULL}(hjU[hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjQ[ubh if no extended sense data has been stored or if no CIW of the specified command type could be found, else a pointer to the CIW of the specified command type.}(hjQ[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj{Zubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd%ccw_device_get_path_mask (C function)c.ccw_device_get_path_maskhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h7__u8 ccw_device_get_path_mask (struct ccw_device *cdev)h]jt)}(h6__u8 ccw_device_get_path_mask(struct ccw_device *cdev)h](h)}(hhh]j)}(h__u8h]h__u8}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[modnameN classnameNjj)}j]j)}jccw_device_get_path_masksbc.ccw_device_get_path_maskasbuh1hhj[hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMubj)}(h h]h }(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[hhhj[hMubj)}(hccw_device_get_path_maskh]j)}(hj[h]hccw_device_get_path_mask}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj[hhhj[hMubjl)}(h(struct ccw_device *cdev)h]jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj[ubj)}(h h]h }(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j[c.ccw_device_get_path_maskasbuh1hhj[ubj)}(h h]h }(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj)}(hjh]h*}(hj*\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj)}(hcdevh]hcdev}(hj7\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj[ubah}(h]h ]h"]h$]h&]jjuh1jkhj[hhhj[hMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj[hhhj[hMubah}(h]j[ah ](jjeh"]h$]h&]jj)jhuh1jmhj[hMhj[hhubj)}(hhh]h)}(hget currently available pathsh]hget currently available paths}(hja\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj^\hhubah}(h]h ]h"]h$]h&]uh1jhj[hhhj[hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjy\jjy\jjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccw_device *cdev`` ccw device to be queried **Return** ``0`` if no subchannel for the device is available, else the mask of currently available paths for the ccw device's subchannel.h](h)}(h**Parameters**h]j)}(hj\h]h Parameters}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj}\ubjG)}(hhh]jL)}(h5``struct ccw_device *cdev`` ccw device to be queried h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj\h]hstruct ccw_device *cdev}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj\ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj\ubjn)}(hhh]h)}(hccw device to be queriedh]hccw device to be queried}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hMhj\ubah}(h]h ]h"]h$]h&]uh1jmhj\ubeh}(h]h ]h"]h$]h&]uh1jKhj\hMhj\ubah}(h]h ]h"]h$]h&]uh1jFhj}\ubh)}(h **Return**h]j)}(hj\h]hReturn}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj}\ubh)}(h``0`` if no subchannel for the device is available, else the mask of currently available paths for the ccw device's subchannel.h](jX)}(h``0``h]h0}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj\ubh| if no subchannel for the device is available, else the mask of currently available paths for the ccw device’s subchannel.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj}\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd$ccw_device_get_chp_desc (C function)c.ccw_device_get_chp_deschNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h^struct channel_path_desc_fmt0 * ccw_device_get_chp_desc (struct ccw_device *cdev, int chp_idx)h]jt)}(h\struct channel_path_desc_fmt0 *ccw_device_get_chp_desc(struct ccw_device *cdev, int chp_idx)h](jz)}(hj}h]hstruct}(hj0]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj,]hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMubj)}(h h]h }(hj>]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,]hhhj=]hMubh)}(hhh]j)}(hchannel_path_desc_fmt0h]hchannel_path_desc_fmt0}(hjO]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQ]modnameN classnameNjj)}j]j)}jccw_device_get_chp_descsbc.ccw_device_get_chp_descasbuh1hhj,]hhhj=]hMubj)}(h h]h }(hjp]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,]hhhj=]hMubj)}(hjh]h*}(hj~]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,]hhhj=]hMubj)}(hccw_device_get_chp_desch]j)}(hjm]h]hccw_device_get_chp_desc}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj,]hhhj=]hMubjl)}(h&(struct ccw_device *cdev, int chp_idx)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]jk]c.ccw_device_get_chp_descasbuh1hhj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hjh]h*}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hcdevh]hcdev}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj]ubjr)}(h int chp_idxh](j4)}(hinth]hint}(hj^hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj^ubj)}(h h]h }(hj(^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubj)}(hchp_idxh]hchp_idx}(hj6^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj]ubeh}(h]h ]h"]h$]h&]jjuh1jkhj,]hhhj=]hMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj(]hhhj=]hMubah}(h]j#]ah ](jjeh"]h$]h&]jj)jhuh1jmhj=]hMhj%]hhubj)}(hhh]h)}(h.return newly allocated channel-path descriptorh]h.return newly allocated channel-path descriptor}(hj`^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj]^hhubah}(h]h ]h"]h$]h&]uh1jhj%]hhhj=]hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjx^jjx^jjjuh1jhhhhjhNhNubj)}(hX **Parameters** ``struct ccw_device *cdev`` device to obtain the descriptor for ``int chp_idx`` index of the channel path **Description** On success return a newly allocated copy of the channel-path description data associated with the given channel path. Return ``NULL`` on error.h](h)}(h**Parameters**h]j)}(hj^h]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj|^ubjG)}(hhh](jL)}(h@``struct ccw_device *cdev`` device to obtain the descriptor for h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj^h]hstruct ccw_device *cdev}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj^ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj^ubjn)}(hhh]h)}(h#device to obtain the descriptor forh]h#device to obtain the descriptor for}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jmhj^ubeh}(h]h ]h"]h$]h&]uh1jKhj^hMhj^ubjL)}(h*``int chp_idx`` index of the channel path h](jR)}(h``int chp_idx``h]jX)}(hj^h]h int chp_idx}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj^ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj^ubjn)}(hhh]h)}(hindex of the channel pathh]hindex of the channel path}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jmhj^ubeh}(h]h ]h"]h$]h&]uh1jKhj^hMhj^ubeh}(h]h ]h"]h$]h&]uh1jFhj|^ubh)}(h**Description**h]j)}(hj_h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj|^ubh)}(hOn success return a newly allocated copy of the channel-path description data associated with the given channel path. Return ``NULL`` on error.h](h}On success return a newly allocated copy of the channel-path description data associated with the given channel path. Return }(hj+_hhhNhNubjX)}(h``NULL``h]hNULL}(hj3_hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj+_ubh on error.}(hj+_hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj|^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd$ccw_device_get_util_str (C function)c.ccw_device_get_util_strhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hCu8 * ccw_device_get_util_str (struct ccw_device *cdev, int chp_idx)h]jt)}(hAu8 *ccw_device_get_util_str(struct ccw_device *cdev, int chp_idx)h](h)}(hhh]j)}(hu8h]hu8}(hjo_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjq_modnameN classnameNjj)}j]j)}jccw_device_get_util_strsbc.ccw_device_get_util_strasbuh1hhjh_hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh_hhhj_hMubj)}(hjh]h*}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh_hhhj_hMubj)}(hccw_device_get_util_strh]j)}(hj_h]hccw_device_get_util_str}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjh_hhhj_hMubjl)}(h&(struct ccw_device *cdev, int chp_idx)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj_ubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj_modnameN classnameNjj)}j]j_c.ccw_device_get_util_strasbuh1hhj_ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubj)}(hjh]h*}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubj)}(hcdevh]hcdev}(hj"`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj_ubjr)}(h int chp_idxh](j4)}(hinth]hint}(hj;`hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj7`ubj)}(h h]h }(hjI`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7`ubj)}(hchp_idxh]hchp_idx}(hjW`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7`ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj_ubeh}(h]h ]h"]h$]h&]jjuh1jkhjh_hhhj_hMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjd_hhhj_hMubah}(h]j__ah ](jjeh"]h$]h&]jj)jhuh1jmhj_hMhja_hhubj)}(hhh]h)}(h&return newly allocated utility stringsh]h&return newly allocated utility strings}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj~`hhubah}(h]h ]h"]h$]h&]uh1jhja_hhhj_hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj`jj`jjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct ccw_device *cdev`` device to obtain the utility strings for ``int chp_idx`` index of the channel path **Description** On success return a newly allocated copy of the utility strings associated with the given channel path. Return ``NULL`` on error.h](h)}(h**Parameters**h]j)}(hj`h]h Parameters}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj`ubjG)}(hhh](jL)}(hE``struct ccw_device *cdev`` device to obtain the utility strings for h](jR)}(h``struct ccw_device *cdev``h]jX)}(hj`h]hstruct ccw_device *cdev}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj`ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj`ubjn)}(hhh]h)}(h(device to obtain the utility strings forh]h(device to obtain the utility strings for}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMhj`ubah}(h]h ]h"]h$]h&]uh1jmhj`ubeh}(h]h ]h"]h$]h&]uh1jKhj`hMhj`ubjL)}(h*``int chp_idx`` index of the channel path h](jR)}(h``int chp_idx``h]jX)}(hj`h]h int chp_idx}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj`ubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj`ubjn)}(hhh]h)}(hindex of the channel pathh]hindex of the channel path}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMhjaubah}(h]h ]h"]h$]h&]uh1jmhj`ubeh}(h]h ]h"]h$]h&]uh1jKhjahMhj`ubeh}(h]h ]h"]h$]h&]uh1jFhj`ubh)}(h**Description**h]j)}(hj6ah]h Description}(hj8ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4aubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj`ubh)}(hOn success return a newly allocated copy of the utility strings associated with the given channel path. Return ``NULL`` on error.h](hoOn success return a newly allocated copy of the utility strings associated with the given channel path. Return }(hjLahhhNhNubjX)}(h``NULL``h]hNULL}(hjTahhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjLaubh on error.}(hjLahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccw_device_get_id (C function)c.ccw_device_get_idhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hKvoid ccw_device_get_id (struct ccw_device *cdev, struct ccw_dev_id *dev_id)h]jt)}(hJvoid ccw_device_get_id(struct ccw_device *cdev, struct ccw_dev_id *dev_id)h](j4)}(hvoidh]hvoid}(hjahhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjahhhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chM ubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjahhhjahM ubj)}(hccw_device_get_idh]j)}(hccw_device_get_idh]hccw_device_get_id}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ](jjeh"]h$]h&]jjuh1jhjahhhjahM ubjl)}(h4(struct ccw_device *cdev, struct ccw_dev_id *dev_id)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjaubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j)}jjasbc.ccw_device_get_idasbuh1hhjaubj)}(h h]h }(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj)}(hcdevh]hcdev}(hj#bhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjaubjr)}(hstruct ccw_dev_id *dev_idh](jz)}(hj}h]hstruct}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubj)}(hcdevh]hcdev}(hjKhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjgubjr)}(hstruct tcw *tcwh](jz)}(hj}h]hstruct}(hjdhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj`hubj)}(h h]h }(hjqhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hubh)}(hhh]j)}(htcwh]htcw}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjhmodnameN classnameNjj)}j]j,hc.ccw_device_tm_start_keyasbuh1hhj`hubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hubj)}(htcwh]htcw}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjgubjr)}(hunsigned long intparmh](j4)}(hunsignedh]hunsigned}(hjhhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj4)}(hlongh]hlong}(hjhhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj)}(hintparmh]hintparm}(hj ihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjgubjr)}(hu8 lpmh](h)}(hhh]j)}(hu8h]hu8}(hj(ihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%iubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*imodnameN classnameNjj)}j]j,hc.ccw_device_tm_start_keyasbuh1hhj!iubj)}(h h]h }(hjFihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!iubj)}(hlpmh]hlpm}(hjTihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!iubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjgubjr)}(hu8 keyh](h)}(hhh]j)}(hu8h]hu8}(hjpihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrimodnameN classnameNjj)}j]j,hc.ccw_device_tm_start_keyasbuh1hhjiiubj)}(h h]h }(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiiubj)}(hkeyh]hkey}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiiubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjgubeh}(h]h ]h"]h$]h&]jjuh1jkhjghhhjghMJubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjghhhjghMJubah}(h]jgah ](jjeh"]h$]h&]jj)jhuh1jmhjghMJhjghhubj)}(hhh]h)}(hperform start functionh]hperform start function}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMJhjihhubah}(h]h ]h"]h$]h&]uh1jhjghhhjghMJubeh}(h]h ](jfunctioneh"]h$]h&]jjjjijjijjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct ccw_device *cdev`` ccw device on which to perform the start function ``struct tcw *tcw`` transport-command word to be started ``unsigned long intparm`` user defined parameter to be passed to the interrupt handler ``u8 lpm`` mask of paths to use ``u8 key`` storage key to use for storage access **Description** Start the tcw on the given ccw device. Return zero on success, non-zero otherwise.h](h)}(h**Parameters**h]j)}(hjih]h Parameters}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMNhjiubjG)}(hhh](jL)}(hN``struct ccw_device *cdev`` ccw device on which to perform the start function h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjjh]hstruct ccw_device *cdev}(hj jhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjjubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMKhjjubjn)}(hhh]h)}(h1ccw device on which to perform the start functionh]h1ccw device on which to perform the start function}(hj jhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhMKhjjubah}(h]h ]h"]h$]h&]uh1jmhjjubeh}(h]h ]h"]h$]h&]uh1jKhjjhMKhjiubjL)}(h9``struct tcw *tcw`` transport-command word to be started h](jR)}(h``struct tcw *tcw``h]jX)}(hj@jh]hstruct tcw *tcw}(hjBjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj>jubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMLhj:jubjn)}(hhh]h)}(h$transport-command word to be startedh]h$transport-command word to be started}(hjYjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUjhMLhjVjubah}(h]h ]h"]h$]h&]uh1jmhj:jubeh}(h]h ]h"]h$]h&]uh1jKhjUjhMLhjiubjL)}(hW``unsigned long intparm`` user defined parameter to be passed to the interrupt handler h](jR)}(h``unsigned long intparm``h]jX)}(hjyjh]hunsigned long intparm}(hj{jhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjwjubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMMhjsjubjn)}(hhh]h)}(hyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-yubh)}(hhh]j)}(hchsc_pnso_resume_tokenh]hchsc_pnso_resume_token}(hjOyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQymodnameN classnameNjj)}j]jAxc.ccw_device_pnsoasbuh1hhj-yubj)}(h h]h }(hjmyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-yubj)}(h resume_tokenh]h resume_token}(hj{yhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-yubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjwubjr)}(hint cnch](j4)}(hinth]hint}(hjyhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjyubj)}(h h]h }(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj)}(hcnch]hcnc}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjwubeh}(h]h ]h"]h$]h&]jjuh1jkhjwhhhjwhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjwhhhjwhMubah}(h]jwah ](jjeh"]h$]h&]jj)jhuh1jmhjwhMhjwhhubj)}(hhh]h)}(h$Perform Network-Subchannel Operationh]h$Perform Network-Subchannel Operation}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjyhhubah}(h]h ]h"]h$]h&]uh1jhjwhhhjwhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjyjjyjjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct ccw_device *cdev`` device on which PNSO is performed ``struct chsc_pnso_area *pnso_area`` request and response block for the operation ``u8 oc`` Operation Code ``struct chsc_pnso_resume_token resume_token`` resume token for multiblock response ``int cnc`` Boolean change-notification control **Description** pnso_area must be allocated by the caller with get_zeroed_page(GFP_KERNEL) Returns 0 on success.h](h)}(h**Parameters**h]j)}(hjyh]h Parameters}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjyubjG)}(hhh](jL)}(h>``struct ccw_device *cdev`` device on which PNSO is performed h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjzh]hstruct ccw_device *cdev}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjzubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjzubjn)}(hhh]h)}(h!device on which PNSO is performedh]h!device on which PNSO is performed}(hj4zhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0zhMhj1zubah}(h]h ]h"]h$]h&]uh1jmhjzubeh}(h]h ]h"]h$]h&]uh1jKhj0zhMhjzubjL)}(hR``struct chsc_pnso_area *pnso_area`` request and response block for the operation h](jR)}(h$``struct chsc_pnso_area *pnso_area``h]jX)}(hjTzh]h struct chsc_pnso_area *pnso_area}(hjVzhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjRzubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjNzubjn)}(hhh]h)}(h,request and response block for the operationh]h,request and response block for the operation}(hjmzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjizhMhjjzubah}(h]h ]h"]h$]h&]uh1jmhjNzubeh}(h]h ]h"]h$]h&]uh1jKhjizhMhjzubjL)}(h``u8 oc`` Operation Code h](jR)}(h ``u8 oc``h]jX)}(hjzh]hu8 oc}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjzubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjzubjn)}(hhh]h)}(hOperation Codeh]hOperation Code}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhMhjzubah}(h]h ]h"]h$]h&]uh1jmhjzubeh}(h]h ]h"]h$]h&]uh1jKhjzhMhjzubjL)}(hT``struct chsc_pnso_resume_token resume_token`` resume token for multiblock response h](jR)}(h.``struct chsc_pnso_resume_token resume_token``h]jX)}(hjzh]h*struct chsc_pnso_resume_token resume_token}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjzubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjzubjn)}(hhh]h)}(h$resume token for multiblock responseh]h$resume token for multiblock response}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhMhjzubah}(h]h ]h"]h$]h&]uh1jmhjzubeh}(h]h ]h"]h$]h&]uh1jKhjzhMhjzubjL)}(h0``int cnc`` Boolean change-notification control h](jR)}(h ``int cnc``h]jX)}(hjzh]hint cnc}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjzubah}(h]h ]h"]h$]h&]uh1jQhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjzubjn)}(hhh]h)}(h#Boolean change-notification controlh]h#Boolean change-notification control}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj{ubah}(h]h ]h"]h$]h&]uh1jmhjzubeh}(h]h ]h"]h$]h&]uh1jKhj{hMhjzubeh}(h]h ]h"]h$]h&]uh1jFhjyubh)}(h**Description**h]j)}(hj:{h]h Description}(hj<{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8{ubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjyubh)}(hJpnso_area must be allocated by the caller with get_zeroed_page(GFP_KERNEL)h]hJpnso_area must be allocated by the caller with get_zeroed_page(GFP_KERNEL)}(hjP{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjyubh)}(hReturns 0 on success.h]hReturns 0 on success.}(hj_{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:87: ./drivers/s390/cio/device_ops.chMhjyubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd!ccw_device_get_cssid (C function)c.ccw_device_get_cssidhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h=int ccw_device_get_cssid (struct ccw_device *cdev, u8 *cssid)h]jt)}(hint cmf_readall(struct ccw_device *cdev, struct cmbdata *data)h](j4)}(hinth]hint}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(h cmf_readallh]j)}(h cmf_readallh]h cmf_readall}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubjl)}(h/(struct ccw_device *cdev, struct cmbdata *data)h](jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hjɍhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjōubj)}(h h]h }(hj֍hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjōubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.cmf_readallasbuh1hhjōubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjōubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjōubj)}(hcdevh]hcdev}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjōubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubjr)}(hstruct cmbdata *datah](jz)}(hj}h]hstruct}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj7ubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubh)}(hhh]j)}(hcmbdatah]hcmbdata}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[modnameN classnameNjj)}j]j c.cmf_readallasbuh1hhj7ubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubeh}(h]h ]h"]h$]h&]jjuh1jkhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhMhjhhubj)}(hhh]h)}(h*read the current channel measurement blockh]h*read the current channel measurement block}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjԎjjԎjjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccw_device *cdev`` the channel to be read ``struct cmbdata *data`` a pointer to a data block that will be filled **Return** ``0`` on success, a negative error value otherwise. **Context** anyh](h)}(h**Parameters**h]j)}(hjގh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj܎ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMhj؎ubjG)}(hhh](jL)}(h3``struct ccw_device *cdev`` the channel to be read h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjh]hstruct ccw_device *cdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMhjubjn)}(hhh]h)}(hthe channel to be readh]hthe channel to be read}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhMhjubjL)}(hG``struct cmbdata *data`` a pointer to a data block that will be filled h](jR)}(h``struct cmbdata *data``h]jX)}(hj6h]hstruct cmbdata *data}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj4ubah}(h]h ]h"]h$]h&]uh1jQh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMhj0ubjn)}(hhh]h)}(h-a pointer to a data block that will be filledh]h-a pointer to a data block that will be filled}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhMhjLubah}(h]h ]h"]h$]h&]uh1jmhj0ubeh}(h]h ]h"]h$]h&]uh1jKhjKhMhjubeh}(h]h ]h"]h$]h&]uh1jFhj؎ubh)}(h **Return**h]j)}(hjqh]hReturn}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMhj؎ubh)}(h3``0`` on success, a negative error value otherwise.h](jX)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubh. on success, a negative error value otherwise.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMhj؎ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMhj؎ubh)}(hanyh]hany}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:100: ./drivers/s390/cio/cmf.chMhj؎ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h] the-channel-measurement-facilityah ]h"] the channel-measurement facilityah$]h&]uh1hhjhhhhhK[ubeh}(h] the-ccw-busah ]h"] the ccw busah$]h&]uh1hhhhhhhhK0ubh)}(hhh](h)}(hThe ccwgroup bush]hThe ccwgroup bus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKhubh)}(hX_The ccwgroup bus only contains artificial devices, created by the user. Many networking devices (e.g. qeth) are in fact composed of several ccw devices (like read, write and data channel for qeth). The ccwgroup bus provides a mechanism to create a meta-device which contains those ccw devices as slave devices and can be associated with the netdevice.h]hX_The ccwgroup bus only contains artificial devices, created by the user. Many networking devices (e.g. qeth) are in fact composed of several ccw devices (like read, write and data channel for qeth). The ccwgroup bus provides a mechanism to create a meta-device which contains those ccw devices as slave devices and can be associated with the netdevice.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjhhubh)}(hhh](h)}(hccw group devicesh]hccw group devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKqubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccwgroup_device (C struct)c.ccwgroup_devicehNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hccwgroup_deviceh]jt)}(hstruct ccwgroup_deviceh](jz)}(hj}h]hstruct}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj'hhhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhKubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhj8hKubj)}(hccwgroup_deviceh]j)}(hj%h]hccwgroup_device}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubah}(h]h ](jjeh"]h$]h&]jjuh1jhj'hhhj8hKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj#hhhj8hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhj8hKhj hhubj)}(hhh]h)}(hccw group deviceh]hccw group device}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK hjjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj8hKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhhjhNhNubj)}(hX**Definition**:: struct ccwgroup_device { enum { CCWGROUP_OFFLINE, CCWGROUP_ONLINE, } state; unsigned int count; struct device dev; struct work_struct ungroup_work; struct ccw_device *cdev[]; }; **Members** ``state`` online/offline state ``count`` number of attached slave devices ``dev`` embedded device structure ``ungroup_work`` used to ungroup the ccwgroup device ``cdev`` variable number of slave devices, allocated as neededh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK hjubj)}(hstruct ccwgroup_device { enum { CCWGROUP_OFFLINE, CCWGROUP_ONLINE, } state; unsigned int count; struct device dev; struct work_struct ungroup_work; struct ccw_device *cdev[]; };h]hstruct ccwgroup_device { enum { CCWGROUP_OFFLINE, CCWGROUP_ONLINE, } state; unsigned int count; struct device dev; struct work_struct ungroup_work; struct ccw_device *cdev[]; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhKhjubjG)}(hhh](jL)}(h``state`` online/offline state h](jR)}(h ``state``h]jX)}(hjڐh]hstate}(hjܐhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjؐubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK hjԐubjn)}(hhh]h)}(honline/offline stateh]honline/offline state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK hjubah}(h]h ]h"]h$]h&]uh1jmhjԐubeh}(h]h ]h"]h$]h&]uh1jKhjhK hjѐubjL)}(h+``count`` number of attached slave devices h](jR)}(h ``count``h]jX)}(hjh]hcount}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK hj ubjn)}(hhh]h)}(h number of attached slave devicesh]h number of attached slave devices}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hK hj)ubah}(h]h ]h"]h$]h&]uh1jmhj ubeh}(h]h ]h"]h$]h&]uh1jKhj(hK hjѐubjL)}(h"``dev`` embedded device structure h](jR)}(h``dev``h]jX)}(hjLh]hdev}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjJubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK hjFubjn)}(hhh]h)}(hembedded device structureh]hembedded device structure}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahK hjbubah}(h]h ]h"]h$]h&]uh1jmhjFubeh}(h]h ]h"]h$]h&]uh1jKhjahK hjѐubjL)}(h5``ungroup_work`` used to ungroup the ccwgroup device h](jR)}(h``ungroup_work``h]jX)}(hjh]h ungroup_work}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhKhjubjn)}(hhh]h)}(h#used to ungroup the ccwgroup deviceh]h#used to ungroup the ccwgroup device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjѐubjL)}(h>``cdev`` variable number of slave devices, allocated as neededh](jR)}(h``cdev``h]jX)}(hjh]hcdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK hjubjn)}(hhh]h)}(h5variable number of slave devices, allocated as neededh]h5variable number of slave devices, allocated as needed}(hjבhhhNhNubah}(h]h ]h"]h$]h&]uh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhKhjԑubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjӑhK hjѐubeh}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdccwgroup_driver (C struct)c.ccwgroup_driverhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hccwgroup_driverh]jt)}(hstruct ccwgroup_driverh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjhhhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhKubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj%hKubj)}(hccwgroup_driverh]j)}(hjh]hccwgroup_driver}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj%hKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhj%hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jmhj%hKhj hhubj)}(hhh]h)}(hdriver for ccw group devicesh]hdriver for ccw group devices}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK hjWhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj%hKubeh}(h]h ](jstructeh"]h$]h&]jjjjrjjrjjjuh1jhhhhjhNhNubj)}(hX**Definition**:: struct ccwgroup_driver { int (*setup) (struct ccwgroup_device *); void (*remove) (struct ccwgroup_device *); int (*set_online) (struct ccwgroup_device *); int (*set_offline) (struct ccwgroup_device *); void (*shutdown)(struct ccwgroup_device *); struct device_driver driver; struct ccw_driver *ccw_driver; }; **Members** ``setup`` function called during device creation to setup the device ``remove`` function called on remove ``set_online`` function called when device is set online ``set_offline`` function called when device is set offline ``shutdown`` function called when device is shut down ``driver`` embedded driver structure ``ccw_driver`` supported ccw_driver (optional)h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubh:}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK$hjvubj)}(hXPstruct ccwgroup_driver { int (*setup) (struct ccwgroup_device *); void (*remove) (struct ccwgroup_device *); int (*set_online) (struct ccwgroup_device *); int (*set_offline) (struct ccwgroup_device *); void (*shutdown)(struct ccwgroup_device *); struct device_driver driver; struct ccw_driver *ccw_driver; };h]hXPstruct ccwgroup_driver { int (*setup) (struct ccwgroup_device *); void (*remove) (struct ccwgroup_device *); int (*set_online) (struct ccwgroup_device *); int (*set_offline) (struct ccwgroup_device *); void (*shutdown)(struct ccwgroup_device *); struct device_driver driver; struct ccw_driver *ccw_driver; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK&hjvubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK0hjvubjG)}(hhh](jL)}(hE``setup`` function called during device creation to setup the device h](jR)}(h ``setup``h]jX)}(hjǒh]hsetup}(hjɒhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjŒubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK"hjubjn)}(hhh]h)}(h:function called during device creation to setup the deviceh]h:function called during device creation to setup the device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjܒhK"hjݒubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjܒhK"hjubjL)}(h%``remove`` function called on remove h](jR)}(h ``remove``h]jX)}(hjh]hremove}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK#hjubjn)}(hhh]h)}(hfunction called on removeh]hfunction called on remove}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK#hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhK#hjubjL)}(h9``set_online`` function called when device is set online h](jR)}(h``set_online``h]jX)}(hj9h]h set_online}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj7ubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK$hj3ubjn)}(hhh]h)}(h)function called when device is set onlineh]h)function called when device is set online}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhK$hjOubah}(h]h ]h"]h$]h&]uh1jmhj3ubeh}(h]h ]h"]h$]h&]uh1jKhjNhK$hjubjL)}(h;``set_offline`` function called when device is set offline h](jR)}(h``set_offline``h]jX)}(hjrh]h set_offline}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjpubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK%hjlubjn)}(hhh]h)}(h*function called when device is set offlineh]h*function called when device is set offline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK%hjubah}(h]h ]h"]h$]h&]uh1jmhjlubeh}(h]h ]h"]h$]h&]uh1jKhjhK%hjubjL)}(h6``shutdown`` function called when device is shut down h](jR)}(h ``shutdown``h]jX)}(hjh]hshutdown}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK&hjubjn)}(hhh]h)}(h(function called when device is shut downh]h(function called when device is shut down}(hjēhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK&hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhK&hjubjL)}(h%``driver`` embedded driver structure h](jR)}(h ``driver``h]jX)}(hjh]hdriver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK'hjޓubjn)}(hhh]h)}(hembedded driver structureh]hembedded driver structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK'hjubah}(h]h ]h"]h$]h&]uh1jmhjޓubeh}(h]h ]h"]h$]h&]uh1jKhjhK'hjubjL)}(h.``ccw_driver`` supported ccw_driver (optional)h](jR)}(h``ccw_driver``h]jX)}(hjh]h ccw_driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK'hjubjn)}(hhh]h)}(hsupported ccw_driver (optional)h]hsupported ccw_driver (optional)}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:115: ./arch/s390/include/asm/ccwgroup.hhK(hj3ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj2hK'hjubeh}(h]h ]h"]h$]h&]uh1jFhjvubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd ccwgroup_set_online (C function)c.ccwgroup_set_onlinehNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h6int ccwgroup_set_online (struct ccwgroup_device *gdev)h]jt)}(h5int ccwgroup_set_online(struct ccwgroup_device *gdev)h](j4)}(hinth]hint}(hjwhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjshhhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chK3ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjshhhjhK3ubj)}(hccwgroup_set_onlineh]j)}(hccwgroup_set_onlineh]hccwgroup_set_online}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjshhhjhK3ubjl)}(h(struct ccwgroup_device *gdev)h]jr)}(hstruct ccwgroup_device *gdevh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hccwgroup_deviceh]hccwgroup_device}(hjҔhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjϔubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjԔmodnameN classnameNjj)}j]j)}jjsbc.ccwgroup_set_onlineasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hgdevh]hgdev}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubah}(h]h ]h"]h$]h&]jjuh1jkhjshhhjhK3ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjohhhjhK3ubah}(h]jjah ](jjeh"]h$]h&]jj)jhuh1jmhjhK3hjlhhubj)}(hhh]h)}(henable a ccwgroup deviceh]henable a ccwgroup device}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chK3hj4hhubah}(h]h ]h"]h$]h&]uh1jhjlhhhjhK3ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjOjjOjjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccwgroup_device *gdev`` target ccwgroup device **Description** This function attempts to put the ccwgroup device into the online state. **Return** ``0`` on success and a negative error value on failure.h](h)}(h**Parameters**h]j)}(hjYh]h Parameters}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chK7hjSubjG)}(hhh]jL)}(h8``struct ccwgroup_device *gdev`` target ccwgroup device h](jR)}(h ``struct ccwgroup_device *gdev``h]jX)}(hjxh]hstruct ccwgroup_device *gdev}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjvubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chK4hjrubjn)}(hhh]h)}(htarget ccwgroup deviceh]htarget ccwgroup device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK4hjubah}(h]h ]h"]h$]h&]uh1jmhjrubeh}(h]h ]h"]h$]h&]uh1jKhjhK4hjoubah}(h]h ]h"]h$]h&]uh1jFhjSubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chK6hjSubh)}(hHThis function attempts to put the ccwgroup device into the online state.h]hHThis function attempts to put the ccwgroup device into the online state.}(hjɕhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chK5hjSubh)}(h **Return**h]j)}(hjڕh]hReturn}(hjܕhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjؕubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chK7hjSubh)}(h7``0`` on success and a negative error value on failure.h](jX)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubh2 on success and a negative error value on failure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chK7hjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd!ccwgroup_set_offline (C function)c.ccwgroup_set_offlinehNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hGint ccwgroup_set_offline (struct ccwgroup_device *gdev, bool call_gdrv)h]jt)}(hFint ccwgroup_set_offline(struct ccwgroup_device *gdev, bool call_gdrv)h](j4)}(hinth]hint}(hj-hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj)hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKPubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhj;hKPubj)}(hccwgroup_set_offlineh]j)}(hccwgroup_set_offlineh]hccwgroup_set_offline}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubah}(h]h ](jjeh"]h$]h&]jjuh1jhj)hhhj;hKPubjl)}(h.(struct ccwgroup_device *gdev, bool call_gdrv)h](jr)}(hstruct ccwgroup_device *gdevh](jz)}(hj}h]hstruct}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjfubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubh)}(hhh]j)}(hccwgroup_deviceh]hccwgroup_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjPsbc.ccwgroup_set_offlineasbuh1hhjfubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(hgdevh]hgdev}(hjÖhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjbubjr)}(hbool call_gdrvh](j4)}(hboolh]hbool}(hjܖhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjؖubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjؖubj)}(h call_gdrvh]h call_gdrv}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjؖubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjbubeh}(h]h ]h"]h$]h&]jjuh1jkhj)hhhj;hKPubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj%hhhj;hKPubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jmhj;hKPhj"hhubj)}(hhh]h)}(hdisable a ccwgroup deviceh]hdisable a ccwgroup device}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKPhjhhubah}(h]h ]h"]h$]h&]uh1jhj"hhhj;hKPubeh}(h]h ](jfunctioneh"]h$]h&]jjjj:jj:jjjuh1jhhhhjhNhNubj)}(hX.**Parameters** ``struct ccwgroup_device *gdev`` target ccwgroup device ``bool call_gdrv`` Call the registered gdrv set_offline function **Description** This function attempts to put the ccwgroup device into the offline state. **Return** ``0`` on success and a negative error value on failure.h](h)}(h**Parameters**h]j)}(hjDh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKThj>ubjG)}(hhh](jL)}(h8``struct ccwgroup_device *gdev`` target ccwgroup device h](jR)}(h ``struct ccwgroup_device *gdev``h]jX)}(hjch]hstruct ccwgroup_device *gdev}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjaubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKQhj]ubjn)}(hhh]h)}(htarget ccwgroup deviceh]htarget ccwgroup device}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhKQhjyubah}(h]h ]h"]h$]h&]uh1jmhj]ubeh}(h]h ]h"]h$]h&]uh1jKhjxhKQhjZubjL)}(hA``bool call_gdrv`` Call the registered gdrv set_offline function h](jR)}(h``bool call_gdrv``h]jX)}(hjh]hbool call_gdrv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKRhjubjn)}(hhh]h)}(h-Call the registered gdrv set_offline functionh]h-Call the registered gdrv set_offline function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKRhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKRhjZubeh}(h]h ]h"]h$]h&]uh1jFhj>ubh)}(h**Description**h]j)}(hjחh]h Description}(hjٗhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj՗ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKThj>ubh)}(hIThis function attempts to put the ccwgroup device into the offline state.h]hIThis function attempts to put the ccwgroup device into the offline state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKShj>ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKUhj>ubh)}(h7``0`` on success and a negative error value on failure.h](jX)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubh2 on success and a negative error value on failure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chKUhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd ccwgroup_create_dev (C function)c.ccwgroup_create_devhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hoint ccwgroup_create_dev (struct device *parent, struct ccwgroup_driver *gdrv, int num_devices, const char *buf)h]jt)}(hnint ccwgroup_create_dev(struct device *parent, struct ccwgroup_driver *gdrv, int num_devices, const char *buf)h](j4)}(hinth]hint}(hjQhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjMhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM.ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMhhhj_hM.ubj)}(hccwgroup_create_devh]j)}(hccwgroup_create_devh]hccwgroup_create_dev}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubah}(h]h ](jjeh"]h$]h&]jjuh1jhjMhhhj_hM.ubjl)}(hW(struct device *parent, struct ccwgroup_driver *gdrv, int num_devices, const char *buf)h](jr)}(hstruct device *parenth](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjtsbc.ccwgroup_create_devasbuh1hhjubj)}(h h]h }(hj̘hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjژhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hparenth]hparent}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubjr)}(hstruct ccwgroup_driver *gdrvh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hccwgroup_driverh]hccwgroup_driver}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jȘc.ccwgroup_create_devasbuh1hhjubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hgdrvh]hgdrv}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubjr)}(hint num_devicesh](j4)}(hinth]hint}(hjphhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjlubj)}(h h]h }(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubj)}(h num_devicesh]h num_devices}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubjr)}(hconst char *bufh](jz)}(hj,h]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(h h]h }(hjΙhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjܙhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hbufh]hbuf}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubeh}(h]h ]h"]h$]h&]jjuh1jkhjMhhhj_hM.ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjIhhhj_hM.ubah}(h]jDah ](jjeh"]h$]h&]jj)jhuh1jmhj_hM.hjFhhubj)}(hhh]h)}(h&create and register a ccw group deviceh]h&create and register a ccw group device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM.hjhhubah}(h]h ]h"]h$]h&]uh1jhjFhhhj_hM.ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj+jj+jjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct device *parent`` parent device for the new device ``struct ccwgroup_driver *gdrv`` driver for the new group device ``int num_devices`` number of slave devices ``const char *buf`` buffer containing comma separated bus ids of slave devices **Description** Create and register a new ccw group device as a child of **parent**. Slave devices are obtained from the list of bus ids given in **buf**. **Return** ``0`` on success and an error code on failure. **Context** non-atomich](h)}(h**Parameters**h]j)}(hj5h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM2hj/ubjG)}(hhh](jL)}(h;``struct device *parent`` parent device for the new device h](jR)}(h``struct device *parent``h]jX)}(hjTh]hstruct device *parent}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjRubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM/hjNubjn)}(hhh]h)}(h parent device for the new deviceh]h parent device for the new device}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihM/hjjubah}(h]h ]h"]h$]h&]uh1jmhjNubeh}(h]h ]h"]h$]h&]uh1jKhjihM/hjKubjL)}(hA``struct ccwgroup_driver *gdrv`` driver for the new group device h](jR)}(h ``struct ccwgroup_driver *gdrv``h]jX)}(hjh]hstruct ccwgroup_driver *gdrv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM0hjubjn)}(hhh]h)}(hdriver for the new group deviceh]hdriver for the new group device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM0hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhM0hjKubjL)}(h,``int num_devices`` number of slave devices h](jR)}(h``int num_devices``h]jX)}(hjƚh]hint num_devices}(hjȚhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjĚubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM1hjubjn)}(hhh]h)}(hnumber of slave devicesh]hnumber of slave devices}(hjߚhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjۚhM1hjܚubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjۚhM1hjKubjL)}(hO``const char *buf`` buffer containing comma separated bus ids of slave devices h](jR)}(h``const char *buf``h]jX)}(hjh]hconst char *buf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM2hjubjn)}(hhh]h)}(h:buffer containing comma separated bus ids of slave devicesh]h:buffer containing comma separated bus ids of slave devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM2hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhM2hjKubeh}(h]h ]h"]h$]h&]uh1jFhj/ubh)}(h**Description**h]j)}(hj:h]h Description}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM4hj/ubh)}(hCreate and register a new ccw group device as a child of **parent**. Slave devices are obtained from the list of bus ids given in **buf**.h](h9Create and register a new ccw group device as a child of }(hjPhhhNhNubj)}(h **parent**h]hparent}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubh?. Slave devices are obtained from the list of bus ids given in }(hjPhhhNhNubj)}(h**buf**h]hbuf}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubh.}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM3hj/ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM6hj/ubh)}(h.``0`` on success and an error code on failure.h](jX)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubh) on success and an error code on failure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM6hj/ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM8hj/ubh)}(h non-atomich]h non-atomic}(hjЛhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chM8hj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd%ccwgroup_driver_register (C function)c.ccwgroup_driver_registerhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h>int ccwgroup_driver_register (struct ccwgroup_driver *cdriver)h]jt)}(h=int ccwgroup_driver_register(struct ccwgroup_driver *cdriver)h](j4)}(hinth]hint}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj hMubj)}(hccwgroup_driver_registerh]j)}(hccwgroup_driver_registerh]hccwgroup_driver_register}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj hMubjl)}(h!(struct ccwgroup_driver *cdriver)h]jr)}(hstruct ccwgroup_driver *cdriverh](jz)}(hj}h]hstruct}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj8ubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubh)}(hhh]j)}(hccwgroup_driverh]hccwgroup_driver}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j)}jj"sbc.ccwgroup_driver_registerasbuh1hhj8ubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj)}(hcdriverh]hcdriver}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj4ubah}(h]h ]h"]h$]h&]jjuh1jkhjhhhj hMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhj hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhj hMhjhhubj)}(hhh]h)}(hregister a ccw group driverh]hregister a ccw group driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjלjjלjjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccwgroup_driver *cdriver`` driver to be registered **Description** This function is mainly a wrapper around driver_register().h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjߜubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjۜubjG)}(hhh]jL)}(h<``struct ccwgroup_driver *cdriver`` driver to be registered h](jR)}(h#``struct ccwgroup_driver *cdriver``h]jX)}(hjh]hstruct ccwgroup_driver *cdriver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjubjn)}(hhh]h)}(hdriver to be registeredh]hdriver to be registered}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjۜubh)}(h**Description**h]j)}(hj;h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjۜubh)}(h;This function is mainly a wrapper around driver_register().h]h;This function is mainly a wrapper around driver_register().}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjۜubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd'ccwgroup_driver_unregister (C function)c.ccwgroup_driver_unregisterhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(hAvoid ccwgroup_driver_unregister (struct ccwgroup_driver *cdriver)h]jt)}(h@void ccwgroup_driver_unregister(struct ccwgroup_driver *cdriver)h](j4)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj|hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|hhhjhMubj)}(hccwgroup_driver_unregisterh]j)}(hccwgroup_driver_unregisterh]hccwgroup_driver_unregister}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhj|hhhjhMubjl)}(h!(struct ccwgroup_driver *cdriver)h]jr)}(hstruct ccwgroup_driver *cdriverh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj)}(h h]h }(hjʝhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hccwgroup_driverh]hccwgroup_driver}(hj۝hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj؝ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjݝmodnameN classnameNjj)}j]j)}jjsbc.ccwgroup_driver_unregisterasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hcdriverh]hcdriver}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubah}(h]h ]h"]h$]h&]jjuh1jkhj|hhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjxhhhjhMubah}(h]jsah ](jjeh"]h$]h&]jj)jhuh1jmhjhMhjuhhubj)}(hhh]h)}(hderegister a ccw group driverh]hderegister a ccw group driver}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhj=hhubah}(h]h ]h"]h$]h&]uh1jhjuhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjXjjXjjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccwgroup_driver *cdriver`` driver to be deregistered **Description** This function is mainly a wrapper around driver_unregister().h](h)}(h**Parameters**h]j)}(hjbh]h Parameters}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhj\ubjG)}(hhh]jL)}(h>``struct ccwgroup_driver *cdriver`` driver to be deregistered h](jR)}(h#``struct ccwgroup_driver *cdriver``h]jX)}(hjh]hstruct ccwgroup_driver *cdriver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhj{ubjn)}(hhh]h)}(hdriver to be deregisteredh]hdriver to be deregistered}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jmhj{ubeh}(h]h ]h"]h$]h&]uh1jKhjhMhjxubah}(h]h ]h"]h$]h&]uh1jFhj\ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhj\ubh)}(h=This function is mainly a wrapper around driver_unregister().h]h=This function is mainly a wrapper around driver_unregister().}(hjҞhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd"ccwgroup_probe_ccwdev (C function)c.ccwgroup_probe_ccwdevhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h3int ccwgroup_probe_ccwdev (struct ccw_device *cdev)h]jt)}(h2int ccwgroup_probe_ccwdev(struct ccw_device *cdev)h](j4)}(hinth]hint}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hccwgroup_probe_ccwdevh]j)}(hccwgroup_probe_ccwdevh]hccwgroup_probe_ccwdev}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubjl)}(h(struct ccw_device *cdev)h]jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj:ubj)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]j)}jj$sbc.ccwgroup_probe_ccwdevasbuh1hhj:ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(hcdevh]hcdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj6ubah}(h]h ]h"]h$]h&]jjuh1jkhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhMhjhhubj)}(hhh]h)}(h probe function for slave devicesh]h probe function for slave devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjٟjjٟjjjuh1jhhhhjhNhNubj)}(h**Parameters** ``struct ccw_device *cdev`` ccw device to be probed **Description** This is a dummy probe function for ccw devices that are slave devices in a ccw group device. **Return** always ``0``h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjݟubjG)}(hhh]jL)}(h4``struct ccw_device *cdev`` ccw device to be probed h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjh]hstruct ccw_device *cdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjubjn)}(hhh]h)}(hccw device to be probedh]hccw device to be probed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjݟubh)}(h**Description**h]j)}(hj=h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjݟubh)}(h\This is a dummy probe function for ccw devices that are slave devices in a ccw group device.h]h\This is a dummy probe function for ccw devices that are slave devices in a ccw group device.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjݟubh)}(h **Return**h]j)}(hjdh]hReturn}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjݟubh)}(h always ``0``h](halways }(hjzhhhNhNubjX)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjzubeh}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjݟubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd#ccwgroup_remove_ccwdev (C function)c.ccwgroup_remove_ccwdevhNtauh1jWhjhhhNhNubji)}(hhh](jn)}(h5void ccwgroup_remove_ccwdev (struct ccw_device *cdev)h]jt)}(h4void ccwgroup_remove_ccwdev(struct ccw_device *cdev)h](j4)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMubj)}(h h]h }(hjƠhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjŠhMubj)}(hccwgroup_remove_ccwdevh]j)}(hccwgroup_remove_ccwdevh]hccwgroup_remove_ccwdev}(hjؠhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjԠubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjŠhMubjl)}(h(struct ccw_device *cdev)h]jr)}(hstruct ccw_device *cdevh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h ccw_deviceh]h ccw_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjڠsbc.ccwgroup_remove_ccwdevasbuh1hhjubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hcdevh]hcdev}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubah}(h]h ]h"]h$]h&]jjuh1jkhjhhhjŠhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjŠhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjŠhMhjhhubj)}(hhh]h)}(h!remove function for slave devicesh]h!remove function for slave devices}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjthhubah}(h]h ]h"]h$]h&]uh1jhjhhhjŠhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhjhNhNubj)}(hX**Parameters** ``struct ccw_device *cdev`` ccw device to be removed **Description** This is a remove function for ccw devices that are slave devices in a ccw group device. It sets the ccw device offline and also deregisters the embedding ccw group device.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjubjG)}(hhh]jL)}(h5``struct ccw_device *cdev`` ccw device to be removed h](jR)}(h``struct ccw_device *cdev``h]jX)}(hjh]hstruct ccw_device *cdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjubjn)}(hhh]h)}(hccw device to be removedh]hccw device to be removed}(hjѡhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj͡hMhjΡubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj͡hMhjubah}(h]h ]h"]h$]h&]uh1jFhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjubh)}(hThis is a remove function for ccw devices that are slave devices in a ccw group device. It sets the ccw device offline and also deregisters the embedding ccw group device.h]hThis is a remove function for ccw devices that are slave devices in a ccw group device. It sets the ccw device offline and also deregisters the embedding ccw group device.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:118: ./drivers/s390/cio/ccwgroup.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]ccw-group-devicesah ]h"]ccw group devicesah$]h&]uh1hhjhhhhhKqubeh}(h]the-ccwgroup-busah ]h"]the ccwgroup busah$]h&]uh1hhhhhhhhKhubh)}(hhh](h)}(hGeneric interfacesh]hGeneric interfaces}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hhhhhKzubh)}(hThe following section contains interfaces in use not only by drivers dealing with ccw devices, but drivers for various other s390 hardware as well.h]hThe following section contains interfaces in use not only by drivers dealing with ccw devices, but drivers for various other s390 hardware as well.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hj/hhubh)}(hhh](h)}(hAdapter interruptsh]hAdapter interrupts}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhhhhhKubh)}(hiThe common I/O layer provides helper functions for dealing with adapter interrupts and interrupt vectors.h]hiThe common I/O layer provides helper functions for dealing with adapter interrupts and interrupt vectors.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjNhhubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd'register_adapter_interrupt (C function)c.register_adapter_interrupthNtauh1jWhjNhhhNhNubji)}(hhh](jn)}(h9int register_adapter_interrupt (struct airq_struct *airq)h]jt)}(h8int register_adapter_interrupt(struct airq_struct *airq)h](j4)}(hinth]hint}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK$ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK$ubj)}(hregister_adapter_interrupth]j)}(hregister_adapter_interrupth]hregister_adapter_interrupt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhK$ubjl)}(h(struct airq_struct *airq)h]jr)}(hstruct airq_struct *airqh](jz)}(hj}h]hstruct}(hjâhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj)}(h h]h }(hjТhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h airq_structh]h airq_struct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޢubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.register_adapter_interruptasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hairqh]hairq}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjubah}(h]h ]h"]h$]h&]jjuh1jkhjhhhjhK$ubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj~hhhjhK$ubah}(h]jyah ](jjeh"]h$]h&]jj)jhuh1jmhjhK$hj{hhubj)}(hhh]h)}(h"register adapter interrupt handlerh]h"register adapter interrupt handler}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK$hjChhubah}(h]h ]h"]h$]h&]uh1jhj{hhhjhK$ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj^jj^jjjuh1jhhhhjNhNhNubj)}(h**Parameters** ``struct airq_struct *airq`` pointer to adapter interrupt descriptor **Description** Returns 0 on success, or -EINVAL.h](h)}(h**Parameters**h]j)}(hjhh]h Parameters}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK(hjbubjG)}(hhh]jL)}(hE``struct airq_struct *airq`` pointer to adapter interrupt descriptor h](jR)}(h``struct airq_struct *airq``h]jX)}(hjh]hstruct airq_struct *airq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK%hjubjn)}(hhh]h)}(h'pointer to adapter interrupt descriptorh]h'pointer to adapter interrupt descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK%hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhK%hj~ubah}(h]h ]h"]h$]h&]uh1jFhjbubh)}(h**Description**h]j)}(hj£h]h Description}(hjģhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK'hjbubh)}(h!Returns 0 on success, or -EINVAL.h]h!Returns 0 on success, or -EINVAL.}(hjأhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK&hjbubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjNhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jd)unregister_adapter_interrupt (C function)c.unregister_adapter_interrupthNtauh1jWhjNhhhNhNubji)}(hhh](jn)}(h``unsigned long bits`` number of bits in the interrupt vector h](jR)}(h``unsigned long bits``h]jX)}(hj.h]hunsigned long bits}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj,ubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKyhj(ubjn)}(hhh]h)}(h&number of bits in the interrupt vectorh]h&number of bits in the interrupt vector}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChKyhjDubah}(h]h ]h"]h$]h&]uh1jmhj(ubeh}(h]h ]h"]h$]h&]uh1jKhjChKyhj%ubjL)}(h)``unsigned long flags`` allocation flags h](jR)}(h``unsigned long flags``h]jX)}(hjgh]hunsigned long flags}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjeubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKzhjaubjn)}(hhh]h)}(hallocation flagsh]hallocation flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hKzhj}ubah}(h]h ]h"]h$]h&]uh1jmhjaubeh}(h]h ]h"]h$]h&]uh1jKhj|hKzhj%ubjL)}(hJ``unsigned long *vec`` pointer to pinned guest memory if AIRQ_IV_GUESTVEC h](jR)}(h``unsigned long *vec``h]jX)}(hjh]hunsigned long *vec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK{hjubjn)}(hhh]h)}(h2pointer to pinned guest memory if AIRQ_IV_GUESTVECh]h2pointer to pinned guest memory if AIRQ_IV_GUESTVEC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK{hjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhK{hj%ubeh}(h]h ]h"]h$]h&]uh1jFhj ubh)}(h**Description**h]j)}(hjۧh]h Description}(hjݧhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj٧ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK}hj ubh)}(h2Returns a pointer to an interrupt vector structureh]h2Returns a pointer to an interrupt vector structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chK|hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjNhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdairq_iv_release (C function)c.airq_iv_releasehNtauh1jWhjNhhhNhNubji)}(hhh](jn)}(h)void airq_iv_release (struct airq_iv *iv)h]jt)}(h(void airq_iv_release(struct airq_iv *iv)h](j4)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj.hKubj)}(hairq_iv_releaseh]j)}(hairq_iv_releaseh]hairq_iv_release}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj.hKubjl)}(h(struct airq_iv *iv)h]jr)}(hstruct airq_iv *ivh](jz)}(hj}h]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjYubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubh)}(hhh]j)}(hairq_ivh]hairq_iv}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]j)}jjCsbc.airq_iv_releaseasbuh1hhjYubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hivh]hiv}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjUubah}(h]h ]h"]h$]h&]jjuh1jkhjhhhj.hKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhj.hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhj.hKhjhhubj)}(hhh]h)}(hrelease an interrupt vectorh]hrelease an interrupt vectorvd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjݨhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj.hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhjNhNhNubj)}(hN**Parameters** ``struct airq_iv *iv`` pointer to interrupt vector structureh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjubjG)}(hhh]jL)}(h<``struct airq_iv *iv`` pointer to interrupt vector structureh](jR)}(h``struct airq_iv *iv``h]jX)}(hj!h]hstruct airq_iv *iv}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjubjn)}(hhh]h)}(h%pointer to interrupt vector structureh]h%pointer to interrupt vector structure}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhj7ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj6hKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjNhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdairq_iv_alloc (C function)c.airq_iv_allochNtauh1jWhjNhhhNhNubji)}(hhh](jn)}(hCunsigned long airq_iv_alloc (struct airq_iv *iv, unsigned long num)h]jt)}(hBunsigned long airq_iv_alloc(struct airq_iv *iv, unsigned long num)h](j4)}(hunsignedh]hunsigned}(hj{hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjwhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwhhhjhKubj4)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjwhhhjhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwhhhjhKubj)}(h airq_iv_alloch]j)}(h airq_iv_alloch]h airq_iv_alloc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjwhhhjhKubjl)}(h'(struct airq_iv *iv, unsigned long num)h](jr)}(hstruct airq_iv *ivh](jz)}(hj}h]hstruct}(hjԩhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjЩubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjЩubh)}(hhh]j)}(hairq_ivh]hairq_iv}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.airq_iv_allocasbuh1hhjЩubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjЩubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjЩubj)}(hivh]hiv}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjЩubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj̩ubjr)}(hunsigned long numh](j4)}(hunsignedh]hunsigned}(hjFhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjBubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj4)}(hlongh]hlong}(hjbhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjBubj)}(h h]h }(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj)}(hnumh]hnum}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj̩ubeh}(h]h ]h"]h$]h&]jjuh1jkhjwhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjshhhjhKubah}(h]jnah ](jjeh"]h$]h&]jj)jhuh1jmhjhKhjphhubj)}(hhh]h)}(h*allocate irq bits from an interrupt vectorh]h*allocate irq bits from an interrupt vector}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjphhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhjNhNhNubj)}(hX?**Parameters** ``struct airq_iv *iv`` pointer to an interrupt vector structure ``unsigned long num`` number of consecutive irq bits to allocate **Description** Returns the bit number of the first irq in the allocated block of irqs, or -1UL if no bit is available or the AIRQ_IV_ALLOC flag has not been specifiedh](h)}(h**Parameters**h]j)}(hjʪh]h Parameters}(hj̪hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjȪubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjĪubjG)}(hhh](jL)}(h@``struct airq_iv *iv`` pointer to an interrupt vector structure h](jR)}(h``struct airq_iv *iv``h]jX)}(hjh]hstruct airq_iv *iv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjubjn)}(hhh]h)}(h(pointer to an interrupt vector structureh]h(pointer to an interrupt vector structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhKhjubjL)}(hA``unsigned long num`` number of consecutive irq bits to allocate h](jR)}(h``unsigned long num``h]jX)}(hj"h]hunsigned long num}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj ubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjubjn)}(hhh]h)}(h*number of consecutive irq bits to allocateh]h*number of consecutive irq bits to allocate}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hKhj8ubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj7hKhjubeh}(h]h ]h"]h$]h&]uh1jFhjĪubh)}(h**Description**h]j)}(hj]h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjĪubh)}(hReturns the bit number of the first irq in the allocated block of irqs, or -1UL if no bit is available or the AIRQ_IV_ALLOC flag has not been specifiedh]hReturns the bit number of the first irq in the allocated block of irqs, or -1UL if no bit is available or the AIRQ_IV_ALLOC flag has not been specified}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjĪubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjNhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdairq_iv_free (C function)c.airq_iv_freehNtauh1jWhjNhhhNhNubji)}(hhh](jn)}(hLvoid airq_iv_free (struct airq_iv *iv, unsigned long bit, unsigned long num)h]jt)}(hKvoid airq_iv_free(struct airq_iv *iv, unsigned long bit, unsigned long num)h](j4)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(h airq_iv_freeh]j)}(h airq_iv_freeh]h airq_iv_free}(hjëhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubjl)}(h:(struct airq_iv *iv, unsigned long bit, unsigned long num)h](jr)}(hstruct airq_iv *ivh](jz)}(hj}h]hstruct}(hj߫hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj۫ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۫ubh)}(hhh]j)}(hairq_ivh]hairq_iv}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjūsbc.airq_iv_freeasbuh1hhj۫ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۫ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۫ubj)}(hivh]hiv}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۫ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj׫ubjr)}(hunsigned long bith](j4)}(hunsignedh]hunsigned}(hjQhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjMubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubj4)}(hlongh]hlong}(hjmhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjMubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubj)}(hbith]hbit}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj׫ubjr)}(hunsigned long numh](j4)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj4)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj)}(h h]h }(hj̬hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hnumh]hnum}(hjڬhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhj׫ubeh}(h]h ]h"]h$]h&]jjuh1jkhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhKhjhhubj)}(hhh]h)}(h$free irq bits of an interrupt vectorh]h$free irq bits of an interrupt vector}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhjNhNhNubj)}(h**Parameters** ``struct airq_iv *iv`` pointer to interrupt vector structure ``unsigned long bit`` number of the first irq bit to free ``unsigned long num`` number of consecutive irq bits to freeh](h)}(h**Parameters**h]j)}(hj&h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhj ubjG)}(hhh](jL)}(h=``struct airq_iv *iv`` pointer to interrupt vector structure h](jR)}(h``struct airq_iv *iv``h]jX)}(hjEh]hstruct airq_iv *iv}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjCubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhj?ubjn)}(hhh]h)}(h%pointer to interrupt vector structureh]h%pointer to interrupt vector structure}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhj[ubah}(h]h ]h"]h$]h&]uh1jmhj?ubeh}(h]h ]h"]h$]h&]uh1jKhjZhMhj<ubjL)}(h:``unsigned long bit`` number of the first irq bit to free h](jR)}(h``unsigned long bit``h]jX)}(hj~h]hunsigned long bit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj|ubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhjxubjn)}(hhh]h)}(h#number of the first irq bit to freeh]h#number of the first irq bit to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jmhjxubeh}(h]h ]h"]h$]h&]uh1jKhjhMhj<ubjL)}(h<``unsigned long num`` number of consecutive irq bits to freeh](jR)}(h``unsigned long num``h]jX)}(hjh]hunsigned long num}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhjubjn)}(hhh]h)}(h&number of consecutive irq bits to freeh]h&number of consecutive irq bits to free}(hjЭhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhjͭubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhj̭hMhj<ubeh}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjNhhhNhNubjX)}(hhh]h}(h]h ]h"]h$]h&]entries](jdairq_iv_scan (C function)c.airq_iv_scanhNtauh1jWhjNhhhNhNubji)}(hhh](jn)}(hWunsigned long airq_iv_scan (struct airq_iv *iv, unsigned long start, unsigned long end)h]jt)}(hVunsigned long airq_iv_scan(struct airq_iv *iv, unsigned long start, unsigned long end)h](j4)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj hhh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhMubj4)}(hlongh]hlong}(hj.hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj hhhjhMubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhMubj)}(h airq_iv_scanh]j)}(h airq_iv_scanh]h airq_iv_scan}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhjhMubjl)}(h<(struct airq_iv *iv, unsigned long start, unsigned long end)h](jr)}(hstruct airq_iv *ivh](jz)}(hj}h]hstruct}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjfubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubh)}(hhh]j)}(hairq_ivh]hairq_iv}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjPsbc.airq_iv_scanasbuh1hhjfubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(hivh]hiv}(hjîhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjbubjr)}(hunsigned long starth](j4)}(hunsignedh]hunsigned}(hjܮhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjخubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjخubj4)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjخubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjخubj)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjخubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjbubjr)}(hunsigned long endh](j4)}(hunsignedh]hunsigned}(hj-hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj)ubj)}(h h]h }(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj4)}(hlongh]hlong}(hjIhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj)ubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(hendh]hend}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphjjuh1jqhjbubeh}(h]h ]h"]h$]h&]jjuh1jkhj hhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jsjjhj hhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jmhjhMhjhhubj)}(hhh]h)}(h'scan interrupt vector for non-zero bitsh]h'scan interrupt vector for non-zero bits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhjNhNhNubj)}(hXU**Parameters** ``struct airq_iv *iv`` pointer to interrupt vector structure ``unsigned long start`` bit number to start the search ``unsigned long end`` bit number to end the search **Description** Returns the bit number of the next non-zero interrupt bit, or -1UL if the scan completed without finding any more any non-zero bits.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhjubjG)}(hhh](jL)}(h=``struct airq_iv *iv`` pointer to interrupt vector structure h](jR)}(h``struct airq_iv *iv``h]jX)}(hjЯh]hstruct airq_iv *iv}(hjүhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjίubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhjʯubjn)}(hhh]h)}(h%pointer to interrupt vector structureh]h%pointer to interrupt vector structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jmhjʯubeh}(h]h ]h"]h$]h&]uh1jKhjhMhjǯubjL)}(h7``unsigned long start`` bit number to start the search h](jR)}(h``unsigned long start``h]jX)}(hj h]hunsigned long start}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jWhjubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhjubjn)}(hhh]h)}(hbit number to start the searchh]hbit number to start the search}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jmhjubeh}(h]h ]h"]h$]h&]uh1jKhjhMhjǯubjL)}(h3``unsigned long end`` bit number to end the search h](jR)}(h``unsigned long end``h]jX)}(hjBh]hunsigned long end}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jWhj@ubah}(h]h ]h"]h$]h&]uh1jQh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhj<ubjn)}(hhh]h)}(hbit number to end the searchh]hbit number to end the search}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhMhjXubah}(h]h ]h"]h$]h&]uh1jmhj<ubeh}(h]h ]h"]h$]h&]uh1jKhjWhMhjǯubeh}(h]h ]h"]h$]h&]uh1jFhjubh)}(h**Description**h]j)}(hj}h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chM hjubh)}(hReturns the bit number of the next non-zero interrupt bit, or -1UL if the scan completed without finding any more any non-zero bits.h]hReturns the bit number of the next non-zero interrupt bit, or -1UL if the scan completed without finding any more any non-zero bits.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh`/var/lib/git/docbuild/linux/Documentation/driver-api/s390-drivers:134: ./drivers/s390/cio/airq.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjNhhhNhNubeh}(h]adapter-interruptsah ]h"]adapter interruptsah$]h&]uh1hhj/hhhhhKubeh}(h]generic-interfacesah ]h"]generic interfacesah$]h&]uh1hhhhhhhhKzubeh}(h]#writing-s390-channel-device-driversah ]h"]#writing s390 channel device driversah$]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_handlerjerror_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}(jjjijfjjjߏj܏jjjjj׏jԏj,j)j$j!jjjju nametypes}(jjijjߏjjj׏j,j$jjuh}(jhjfj jjlj܏jjj8jfjojxj}jjj j j j j;j@jjjjjjjjjjjjjjj&j+jjjjj$ j) j"j"j%j%j'j'j)j)j+j+j.j.jC0jH0j1j1jE3jJ3j5j5j8j$8j<:jA:j;j;j>=jC=j?j?jxEj}EjJjJj OjOj)Tj.TjVjVjYjYj[j[j#]j(]j__jd_jajajcjcjgjgj^kjckjnjnj6rj;rj8tj=tjujujwjwj{j{jj}jo}jSjXjjjԏjj(j.jjjjjDjIjjj)jj!jjj#j jjjjoj j%jDjIjjjsjxjjjjjj/jjNjyj~jjjUjZjjjnjsjjjj 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.