sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget4/translations/zh_CN/driver-api/i3c/device-driver-apimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/zh_TW/driver-api/i3c/device-driver-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/it_IT/driver-api/i3c/device-driver-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/ja_JP/driver-api/i3c/device-driver-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/ko_KR/driver-api/i3c/device-driver-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/sp_SP/driver-api/i3c/device-driver-apimodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhN/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api.rsthKubhsection)}(hhh](htitle)}(hI3C device driver APIh]hI3C device driver API}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlei3c_error_code (C enum)c.i3c_error_codehNtauh1hhhhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhNubhdesc)}(hhh](hdesc_signature)}(hi3c_error_codeh]hdesc_signature_line)}(henum i3c_error_codeh](hdesc_sig_keyword)}(henumh]henum}(hhhhhNhNubah}(h]h ]kah"]h$]h&]uh1hhhhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1hhhhhhhhKubh desc_name)}(hi3c_error_codeh]h desc_sig_name)}(hhh]hi3c_error_code}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhhhhhhhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1hsphinx_line_type declaratorhhhhhhhKubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhhhKhhhhubh desc_content)}(hhh]h paragraph)}(hI3C error codesh]hI3C error codes}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjChhubah}(h]h ]h"]h$]h&]uh1jAhhhhhhhKubeh}(h]h ](cenumeh"]h$]h&]domainj`objtypejadesctypejanoindex noindexentrynocontentsentryuh1hhhhhhhhNubh container)}(h**Constants** ``I3C_ERROR_UNKNOWN`` unknown error, usually means the error is not I3C related ``I3C_ERROR_M0`` M0 error ``I3C_ERROR_M1`` M1 error ``I3C_ERROR_M2`` M2 errorh](jG)}(h **Constants**h]hstrong)}(hjsh]h Constants}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjqubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjmubhdefinition_list)}(hhh](hdefinition_list_item)}(hP``I3C_ERROR_UNKNOWN`` unknown error, usually means the error is not I3C related h](hterm)}(h``I3C_ERROR_UNKNOWN``h]hliteral)}(hjh]hI3C_ERROR_UNKNOWN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjubh definition)}(hhh]jG)}(h9unknown error, usually means the error is not I3C relatedh]h9unknown error, usually means the error is not I3C related}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``I3C_ERROR_M0`` M0 error h](j)}(h``I3C_ERROR_M0``h]j)}(hjh]h I3C_ERROR_M0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjubj)}(hhh]jG)}(hM0 errorh]hM0 error}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``I3C_ERROR_M1`` M1 error h](j)}(h``I3C_ERROR_M1``h]j)}(hjh]h I3C_ERROR_M1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK!hj ubj)}(hhh]jG)}(hM1 errorh]hM1 error}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj&hK!hj'ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj&hK!hjubj)}(h``I3C_ERROR_M2`` M2 errorh](j)}(h``I3C_ERROR_M2``h]j)}(hjJh]h I3C_ERROR_M2}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK#hjDubj)}(hhh]jG)}(hM2 errorh]hM2 error}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK$hj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hK#hjubeh}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubjG)}(h**Description**h]jv)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK&hhhhubjG)}(hXHThese are the standard error codes as defined by the I3C specification. When -EIO is returned by the i3c_device_do_priv_xfers() or i3c_device_send_hdr_cmds() one can check the error code in :c:type:`struct_i3c_xfer.err ` or :c:type:`struct i3c_hdr_cmd `.err to get a better idea of what went wrong.h](hThese are the standard error codes as defined by the I3C specification. When -EIO is returned by the i3c_device_do_priv_xfers() or i3c_device_send_hdr_cmds() one can check the error code in }(hjhhhNhNubh)}(h/:c:type:`struct_i3c_xfer.err `h]j)}(hjh]hstruct_i3c_xfer.err}(hjhhhNhNubah}(h]h ](xrefj`c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdoc driver-api/i3c/device-driver-api refdomainj`reftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sb reftargetstruct_i3c_xferuh1hhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjubh or }(hjhhhNhNubh)}(h*:c:type:`struct i3c_hdr_cmd `h]j)}(hjh]hstruct i3c_hdr_cmd}(hjhhhNhNubah}(h]h ](jj`c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj`reftypetype refexplicitrefwarnjjj i3c_hdr_cmduh1hhjhKhjubh-.err to get a better idea of what went wrong.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhjhKhhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌i3c_xfer_mode (C enum)c.i3c_xfer_modehNtauh1hhhhhhhhNubh)}(hhh](h)}(h i3c_xfer_modeh]h)}(henum i3c_xfer_modeh](h)}(hhh]henum}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK#ubh)}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj)hK#ubj)}(h i3c_xfer_modeh]j)}(hjh]h i3c_xfer_mode}(hj<hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj8ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhj)hK#ubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhj)hK#ubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj)hK#hjhhubjB)}(hhh]jG)}(hI3C xfer mode idsh]hI3C xfer mode ids}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK*hj[hhubah}(h]h ]h"]h$]h&]uh1jAhjhhhj)hK#ubeh}(h]h ](j`enumeh"]h$]h&]jej`jfjvjgjvjhjijjuh1hhhhhhhhNubjl)}(h**Constants** ``I3C_HDR_DDR`` DDR mode ``I3C_HDR_TSP`` TSP mode ``I3C_HDR_TSL`` TSL mode ``I3C_SDR`` SDR mode (NOT HDR mode)h](jG)}(h **Constants**h]jv)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhj~ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK.hjzubj)}(hhh](j)}(h``I3C_HDR_DDR`` DDR mode h](j)}(h``I3C_HDR_DDR``h]j)}(hjh]h I3C_HDR_DDR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK1hjubj)}(hhh]jG)}(hDDR modeh]hDDR mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhK1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK1hjubj)}(h``I3C_HDR_TSP`` TSP mode h](j)}(h``I3C_HDR_TSP``h]j)}(hjh]h I3C_HDR_TSP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK4hjubj)}(hhh]jG)}(hTSP modeh]hTSP mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhK4hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK4hjubj)}(h``I3C_HDR_TSL`` TSL mode h](j)}(h``I3C_HDR_TSL``h]j)}(hjh]h I3C_HDR_TSL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK7hj ubj)}(hhh]jG)}(hTSL modeh]hTSL mode}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj&hK7hj'ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj&hK7hjubj)}(h#``I3C_SDR`` SDR mode (NOT HDR mode)h](j)}(h ``I3C_SDR``h]j)}(hjJh]hI3C_SDR}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK9hjDubj)}(hhh]jG)}(hSDR mode (NOT HDR mode)h]hSDR mode (NOT HDR mode)}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK:hj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hK9hjubeh}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌i3c_xfer (C struct) c.i3c_xferhNtauh1hhhhhhhhNubh)}(hhh](h)}(hi3c_xferh]h)}(hstruct i3c_xferh](h)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK?ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhK?ubj)}(hi3c_xferh]j)}(hjh]hi3c_xfer}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhK?ubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhjhK?ubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhK?hjhhubjB)}(hhh]jG)}(hI3C data transferh]hI3C data transfer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK:hjhhubah}(h]h ]h"]h$]h&]uh1jAhjhhhjhK?ubeh}(h]h ](j`structeh"]h$]h&]jej`jfjjgjjhjijjuh1hhhhhhhhNubjl)}(hX**Definition**:: struct i3c_xfer { union { u8 rnw; u8 cmd; }; u16 len; u16 actual_len; union { void *in; const void *out; } data; enum i3c_error_code err; }; **Members** ``{unnamed_union}`` anonymous ``rnw`` encodes the transfer direction. true for a read, false for a write ``cmd`` Read/Write command in HDR mode, read: 0x80 - 0xff, write: 0x00 - 0x7f ``len`` transfer length in bytes of the transfer ``actual_len`` actual length in bytes are transferred by the controller ``data`` input/output buffer ``data.in`` input buffer. Must point to a DMA-able buffer ``data.out`` output buffer. Must point to a DMA-able buffer ``err`` I3C error codeh](jG)}(h**Definition**::h](jv)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK>hjubh literal_block)}(hstruct i3c_xfer { union { u8 rnw; u8 cmd; }; u16 len; u16 actual_len; union { void *in; const void *out; } data; enum i3c_error_code err; };h]hstruct i3c_xfer { union { u8 rnw; u8 cmd; }; u16 len; u16 actual_len; union { void *in; const void *out; } data; enum i3c_error_code err; };}hj&sbah}(h]h ]h"]h$]h&]hhuh1j$hj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK@hjubjG)}(h **Members**h]jv)}(hj7h]hMembers}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj5ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKNhjubj)}(hhh](j)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j)}(hjVh]h{unnamed_union}}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjPubj)}(hhh]jG)}(h anonymoush]h anonymous}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjkhKhjlubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKhjMubj)}(hK``rnw`` encodes the transfer direction. true for a read, false for a write h](j)}(h``rnw``h]j)}(hjh]hrnw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjubj)}(hhh]jG)}(h(transfer length in bytes of the transferh]h(transfer length in bytes of the transfer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhK>hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK>hjMubj)}(hH``actual_len`` actual length in bytes are transferred by the controller h](j)}(h``actual_len``h]j)}(hj:h]h actual_len}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK?hj4ubj)}(hhh]jG)}(h8actual length in bytes are transferred by the controllerh]h8actual length in bytes are transferred by the controller}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjOhK?hjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhK?hjMubj)}(h``data`` input/output buffer h](j)}(h``data``h]j)}(hjsh]hdata}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK@hjmubj)}(hhh]jG)}(hinput/output bufferh]hinput/output buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhK@hjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjhK@hjMubj)}(h:``data.in`` input buffer. Must point to a DMA-able buffer h](j)}(h ``data.in``h]j)}(hjh]hdata.in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKAhjubj)}(hhh]jG)}(h-input buffer. Must point to a DMA-able bufferh]h-input buffer. Must point to a DMA-able buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhKAhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKAhjMubj)}(h<``data.out`` output buffer. Must point to a DMA-able buffer h](j)}(h ``data.out``h]j)}(hjh]hdata.out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKBhjubj)}(hhh]jG)}(h.output buffer. Must point to a DMA-able bufferh]h.output buffer. Must point to a DMA-able buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhKBhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKBhjMubj)}(h``err`` I3C error codeh](j)}(h``err``h]j)}(hjh]herr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKBhjubj)}(hhh]jG)}(hI3C error codeh]hI3C error code}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKChj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj3hKBhjMubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌i3c_dcr (C enum) c.i3c_dcrhNtauh1hhhhhhhhNubh)}(hhh](h)}(hi3c_dcrh]h)}(h enum i3c_dcrh](h)}(hhh]henum}(hjxhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjthhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKIubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjthhhjhKIubj)}(hi3c_dcrh]j)}(hjrh]hi3c_dcr}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjthhhjhKIubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjphhhjhKIubah}(h]jkah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhKIhjmhhubjB)}(hhh]jG)}(hI3C DCR valuesh]hI3C DCR values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKVhjhhubah}(h]h ]h"]h$]h&]uh1jAhjmhhhjhKIubeh}(h]h ](j`enumeh"]h$]h&]jej`jfjjgjjhjijjuh1hhhhhhhhNubjl)}(h>**Constants** ``I3C_DCR_GENERIC_DEVICE`` generic I3C deviceh](jG)}(h **Constants**h]jv)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKZhjubj)}(hhh]j)}(h-``I3C_DCR_GENERIC_DEVICE`` generic I3C deviceh](j)}(h``I3C_DCR_GENERIC_DEVICE``h]j)}(hjh]hI3C_DCR_GENERIC_DEVICE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK\hjubj)}(hhh]jG)}(hgeneric I3C deviceh]hgeneric I3C device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK]hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK\hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌i3c_device_info (C struct)c.i3c_device_infohNtauh1hhhhhhhhNubh)}(hhh](h)}(hi3c_device_infoh]h)}(hstruct i3c_device_infoh](h)}(hjh]hstruct}(hjUhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjQhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKbubh)}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjQhhhjbhKbubj)}(hi3c_device_infoh]j)}(hjOh]hi3c_device_info}(hjuhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjqubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjQhhhjbhKbubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjMhhhjbhKbubah}(h]jHah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjbhKbhjJhhubjB)}(hhh]jG)}(hI3C device informationh]hI3C device information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKohjhhubah}(h]h ]h"]h$]h&]uh1jAhjJhhhjbhKbubeh}(h]h ](j`structeh"]h$]h&]jej`jfjjgjjhjijjuh1hhhhhhhhNubjl)}(hXM**Definition**:: struct i3c_device_info { u64 pid; u8 bcr; u8 dcr; u8 static_addr; u8 dyn_addr; u8 hdr_cap; u8 max_read_ds; u8 max_write_ds; u8 max_ibi_len; u32 max_read_turnaround; u16 max_read_len; u16 max_write_len; }; **Members** ``pid`` Provisioned ID ``bcr`` Bus Characteristic Register ``dcr`` Device Characteristic Register ``static_addr`` static/I2C address ``dyn_addr`` dynamic address ``hdr_cap`` supported HDR modes ``max_read_ds`` max read speed information ``max_write_ds`` max write speed information ``max_ibi_len`` max IBI payload length ``max_read_turnaround`` max read turn-around time in micro-seconds ``max_read_len`` max private SDR read length in bytes ``max_write_len`` max private SDR write length in bytesh](jG)}(h**Definition**::h](jv)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKshjubj%)}(hstruct i3c_device_info { u64 pid; u8 bcr; u8 dcr; u8 static_addr; u8 dyn_addr; u8 hdr_cap; u8 max_read_ds; u8 max_write_ds; u8 max_ibi_len; u32 max_read_turnaround; u16 max_read_len; u16 max_write_len; };h]hstruct i3c_device_info { u64 pid; u8 bcr; u8 dcr; u8 static_addr; u8 dyn_addr; u8 hdr_cap; u8 max_read_ds; u8 max_write_ds; u8 max_ibi_len; u32 max_read_turnaround; u16 max_read_len; u16 max_write_len; };}hjsbah}(h]h ]h"]h$]h&]hhuh1j$hj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKuhjubjG)}(h **Members**h]jv)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjubj)}(hhh](j)}(h``pid`` Provisioned ID h](j)}(h``pid``h]j)}(hj h]hpid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKqhjubj)}(hhh]jG)}(hProvisioned IDh]hProvisioned ID}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKqhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKqhjubj)}(h$``bcr`` Bus Characteristic Register h](j)}(h``bcr``h]j)}(hj= h]hbcr}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj; ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKrhj7 ubj)}(hhh]jG)}(hBus Characteristic Registerh]hBus Characteristic Register}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjR hKrhjS ubah}(h]h ]h"]h$]h&]uh1jhj7 ubeh}(h]h ]h"]h$]h&]uh1jhjR hKrhjubj)}(h'``dcr`` Device Characteristic Register h](j)}(h``dcr``h]j)}(hjv h]hdcr}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKshjp ubj)}(hhh]jG)}(hDevice Characteristic Registerh]hDevice Characteristic Register}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKshj ubah}(h]h ]h"]h$]h&]uh1jhjp ubeh}(h]h ]h"]h$]h&]uh1jhj hKshjubj)}(h#``static_addr`` static/I2C address h](j)}(h``static_addr``h]j)}(hj h]h static_addr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKthj ubj)}(hhh]jG)}(hstatic/I2C addressh]hstatic/I2C address}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKthj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKthjubj)}(h``dyn_addr`` dynamic address h](j)}(h ``dyn_addr``h]j)}(hj h]hdyn_addr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKuhj ubj)}(hhh]jG)}(hdynamic addressh]hdynamic address}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKuhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKuhjubj)}(h ``hdr_cap`` supported HDR modes h](j)}(h ``hdr_cap``h]j)}(hj! h]hhdr_cap}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKvhj ubj)}(hhh]jG)}(hsupported HDR modesh]hsupported HDR modes}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj6 hKvhj7 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj6 hKvhjubj)}(h+``max_read_ds`` max read speed information h](j)}(h``max_read_ds``h]j)}(hjZ h]h max_read_ds}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKwhjT ubj)}(hhh]jG)}(hmax read speed informationh]hmax read speed information}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjo hKwhjp ubah}(h]h ]h"]h$]h&]uh1jhjT ubeh}(h]h ]h"]h$]h&]uh1jhjo hKwhjubj)}(h-``max_write_ds`` max write speed information h](j)}(h``max_write_ds``h]j)}(hj h]h max_write_ds}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKxhj ubj)}(hhh]jG)}(hmax write speed informationh]hmax write speed information}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKxhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKxhjubj)}(h'``max_ibi_len`` max IBI payload length h](j)}(h``max_ibi_len``h]j)}(hj h]h max_ibi_len}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKyhj ubj)}(hhh]jG)}(hmax IBI payload lengthh]hmax IBI payload length}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKyhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKyhjubj)}(hC``max_read_turnaround`` max read turn-around time in micro-seconds h](j)}(h``max_read_turnaround``h]j)}(hj h]hmax_read_turnaround}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKzhj ubj)}(hhh]jG)}(h*max read turn-around time in micro-secondsh]h*max read turn-around time in micro-seconds}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKzhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKzhjubj)}(h6``max_read_len`` max private SDR read length in bytes h](j)}(h``max_read_len``h]j)}(hj> h]h max_read_len}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj< ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK{hj8 ubj)}(hhh]jG)}(h$max private SDR read length in bytesh]h$max private SDR read length in bytes}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjS hK{hjT ubah}(h]h ]h"]h$]h&]uh1jhj8 ubeh}(h]h ]h"]h$]h&]uh1jhjS hK{hjubj)}(h7``max_write_len`` max private SDR write length in bytesh](j)}(h``max_write_len``h]j)}(hjw h]h max_write_len}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1jhju ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK{hjq ubj)}(hhh]jG)}(h%max private SDR write length in bytesh]h%max private SDR write length in bytes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK|hj ubah}(h]h ]h"]h$]h&]uh1jhjq ubeh}(h]h ]h"]h$]h&]uh1jhj hK{hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubjG)}(h**Description**h]jv)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhhhhubjG)}(hX-These are all basic information that should be advertised by an I3C device. Some of them are optional depending on the device type and device capabilities. For each I3C slave attached to a master with i3c_master_add_i3c_dev_locked(), the core will send the relevant CCC command to retrieve these data.h]hX-These are all basic information that should be advertised by an I3C device. Some of them are optional depending on the device type and device capabilities. For each I3C slave attached to a master with i3c_master_add_i3c_dev_locked(), the core will send the relevant CCC command to retrieve these data.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhK|hhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌i3c_driver (C struct) c.i3c_driverhNtauh1hhhhhhhhNubh)}(hhh](h)}(h i3c_driverh]h)}(hstruct i3c_driverh](h)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj hhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hKubj)}(h i3c_driverh]j)}(hj h]h i3c_driver}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hj hhhj hKubah}(h]j ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj hKhj hhubjB)}(hhh]jG)}(hI3C device driverh]hI3C device driver}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj7 hhubah}(h]h ]h"]h$]h&]uh1jAhj hhhj hKubeh}(h]h ](j`structeh"]h$]h&]jej`jfjR jgjR jhjijjuh1hhhhhhhhNubjl)}(hX**Definition**:: struct i3c_driver { struct device_driver driver; int (*probe)(struct i3c_device *dev); void (*remove)(struct i3c_device *dev); const struct i3c_device_id *id_table; }; **Members** ``driver`` inherit from device_driver ``probe`` I3C device probe method ``remove`` I3C device remove method ``id_table`` I3C device match table. Will be used by the framework to decide which device to bind to this driverh](jG)}(h**Definition**::h](jv)}(h**Definition**h]h Definition}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1juhjZ ubh:}(hjZ hhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjV ubj%)}(hstruct i3c_driver { struct device_driver driver; int (*probe)(struct i3c_device *dev); void (*remove)(struct i3c_device *dev); const struct i3c_device_id *id_table; };h]hstruct i3c_driver { struct device_driver driver; int (*probe)(struct i3c_device *dev); void (*remove)(struct i3c_device *dev); const struct i3c_device_id *id_table; };}hjw sbah}(h]h ]h"]h$]h&]hhuh1j$hj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjV ubjG)}(h **Members**h]jv)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjV ubj)}(hhh](j)}(h&``driver`` inherit from device_driver h](j)}(h ``driver``h]j)}(hj h]hdriver}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj ubj)}(hhh]jG)}(hinherit from device_driverh]hinherit from device_driver}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(h"``probe`` I3C device probe method h](j)}(h ``probe``h]j)}(hj h]hprobe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj ubj)}(hhh]jG)}(hI3C device probe methodh]hI3C device probe method}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(h$``remove`` I3C device remove method h](j)}(h ``remove``h]j)}(hj h]hremove}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj ubj)}(hhh]jG)}(hI3C device remove methodh]hI3C device remove method}(hj2 hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj. hKhj/ ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj. hKhj ubj)}(hp``id_table`` I3C device match table. Will be used by the framework to decide which device to bind to this driverh](j)}(h ``id_table``h]j)}(hjR h]hid_table}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjP ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjL ubj)}(hhh]jG)}(hcI3C device match table. Will be used by the framework to decide which device to bind to this driverh]hcI3C device match table. Will be used by the framework to decide which device to bind to this driver}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjg hKhjh ubah}(h]h ]h"]h$]h&]uh1jhjL ubeh}(h]h ]h"]h$]h&]uh1jhjg hKhj ubeh}(h]h ]h"]h$]h&]uh1jhjV ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌dev_to_i3cdev (C macro)c.dev_to_i3cdevhNtauh1hhhhhhhhNubh)}(hhh](h)}(h dev_to_i3cdevh]h)}(h dev_to_i3cdevh]j)}(h dev_to_i3cdevh]j)}(hj h]h dev_to_i3cdev}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj hhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKubah}(h]h ]h"]h$]h&]hhj3uh1hj4j5hj hhhj hKubah}(h]j ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj hKhj hhubjB)}(hhh]h}(h]h ]h"]h$]h&]uh1jAhj hhhj hKubeh}(h]h ](j`macroeh"]h$]h&]jej`jfj jgj jhjijjuh1hhhhhhhhNubjG)}(h``dev_to_i3cdev (__dev)``h]j)}(hj h]hdev_to_i3cdev (__dev)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhhhhubh block_quote)}(h*Returns the I3C device containing **dev** h]jG)}(h)Returns the I3C device containing **dev**h](h"Returns the I3C device containing }(hj hhhNhNubjv)}(h**dev**h]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhj ubeh}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj ubah}(h]h ]h"]h$]h&]uh1j hjhKhhhhubjl)}(hY**Parameters** ``__dev`` device object **Return** a pointer to an I3C device object.h](jG)}(h**Parameters**h]jv)}(hj&h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj$ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj ubj)}(hhh]j)}(h``__dev`` device object h](j)}(h ``__dev``h]j)}(hjEh]h__dev}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj?ubj)}(hhh]jG)}(h device objecth]h device object}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjZhKhj[ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhKhj<ubah}(h]h ]h"]h$]h&]uh1jhj ubjG)}(h **Return**h]jv)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhj~ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj ubjG)}(h"a pointer to an I3C device object.h]h"a pointer to an I3C device object.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌module_i3c_driver (C macro)c.module_i3c_driverhNtauh1hhhhhhhhNubh)}(hhh](h)}(hmodule_i3c_driverh]h)}(hmodule_i3c_driverh]j)}(hmodule_i3c_driverh]j)}(hjh]hmodule_i3c_driver}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKubah}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhjhKubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhKhjhhubjB)}(hhh]h}(h]h ]h"]h$]h&]uh1jAhjhhhjhKubeh}(h]h ](j`macroeh"]h$]h&]jej`jfjjgjjhjijjuh1hhhhhhhhNubjG)}(h``module_i3c_driver (__drv)``h]j)}(hjh]hmodule_i3c_driver (__drv)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhhhhubj )}(h*Register a module providing an I3C driver h]jG)}(h)Register a module providing an I3C driverh]h)Register a module providing an I3C driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjubah}(h]h ]h"]h$]h&]uh1j hj#hKhhhhubjl)}(h**Parameters** ``__drv`` the I3C driver to register **Description** Provide generic init/exit functions that simply register/unregister an I3C driver. Should be used by any driver that does not require extra init/cleanup steps.h](jG)}(h**Parameters**h]jv)}(hj0h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj.ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj*ubj)}(hhh]j)}(h%``__drv`` the I3C driver to register h](j)}(h ``__drv``h]j)}(hjOh]h__drv}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjIubj)}(hhh]jG)}(hthe I3C driver to registerh]hthe I3C driver to register}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjdhKhjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjdhKhjFubah}(h]h ]h"]h$]h&]uh1jhj*ubjG)}(h**Description**h]jv)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj*ubjG)}(hProvide generic init/exit functions that simply register/unregister an I3C driver. Should be used by any driver that does not require extra init/cleanup steps.h]hProvide generic init/exit functions that simply register/unregister an I3C driver. Should be used by any driver that does not require extra init/cleanup steps.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌$i3c_i2c_driver_register (C function)c.i3c_i2c_driver_registerhNtauh1hhhhhhhhNubh)}(hhh](h)}(hRint i3c_i2c_driver_register (struct i3c_driver *i3cdrv, struct i2c_driver *i2cdrv)h]h)}(hQint i3c_i2c_driver_register(struct i3c_driver *i3cdrv, struct i2c_driver *i2cdrv)h](hdesc_sig_keyword_type)}(hinth]hint}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj)}(hi3c_i2c_driver_registerh]j)}(hi3c_i2c_driver_registerh]hi3c_i2c_driver_register}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhKubhdesc_parameterlist)}(h6(struct i3c_driver *i3cdrv, struct i2c_driver *i2cdrv)h](hdesc_parameter)}(hstruct i3c_driver *i3cdrvh](h)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h i3c_driverh]h i3c_driver}(hj1hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainj`reftype identifier reftargetj3modnameN classnameNjj)}j]j ASTIdentifier)}jGjsbc.i3c_i2c_driver_registerasbuh1hhjubh)}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubhdesc_sig_punctuation)}(h*h]h*}(hjdhhhNhNubah}(h]h ]pah"]h$]h&]uh1jbhjubj)}(hi3cdrvh]hi3cdrv}(hjshhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubj)}(hstruct i2c_driver *i2cdrvh](h)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h i2c_driverh]h i2c_driver}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjmodnameN classnameNjj)}j]jPc.i3c_i2c_driver_registerasbuh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjc)}(hjfh]h*}(hjhhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjubj)}(hi2cdrvh]hi2cdrv}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhjhKubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhKhjhhubjB)}(hhh]jG)}(h!Register an i2c and an i3c driverh]h!Register an i2c and an i3c driver}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jAhjhhhjhKubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj%jgj%jhjijjuh1hhhhhhhhNubjl)}(hX**Parameters** ``struct i3c_driver *i3cdrv`` the I3C driver to register ``struct i2c_driver *i2cdrv`` the I2C driver to register **Description** This function registers both **i2cdev** and **i3cdev**, and fails if one of these registrations fails. This is mainly useful for devices that support both I2C and I3C modes. Note that when CONFIG_I3C is not enabled, this function only registers the I2C driver. **Return** 0 if both registrations succeeds, a negative error code otherwise.h](jG)}(h**Parameters**h]jv)}(hj/h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj-ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj)ubj)}(hhh](j)}(h9``struct i3c_driver *i3cdrv`` the I3C driver to register h](j)}(h``struct i3c_driver *i3cdrv``h]j)}(hjNh]hstruct i3c_driver *i3cdrv}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjHubj)}(hhh]jG)}(hthe I3C driver to registerh]hthe I3C driver to register}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjchKhjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjchKhjEubj)}(h9``struct i2c_driver *i2cdrv`` the I2C driver to register h](j)}(h``struct i2c_driver *i2cdrv``h]j)}(hjh]hstruct i2c_driver *i2cdrv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhjubj)}(hhh]jG)}(hthe I2C driver to registerh]hthe I2C driver to register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjEubeh}(h]h ]h"]h$]h&]uh1jhj)ubjG)}(h**Description**h]jv)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj)ubjG)}(hXThis function registers both **i2cdev** and **i3cdev**, and fails if one of these registrations fails. This is mainly useful for devices that support both I2C and I3C modes. Note that when CONFIG_I3C is not enabled, this function only registers the I2C driver.h](hThis function registers both }(hjhhhNhNubjv)}(h **i2cdev**h]hi2cdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubh and }(hjhhhNhNubjv)}(h **i3cdev**h]hi3cdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubh, and fails if one of these registrations fails. This is mainly useful for devices that support both I2C and I3C modes. Note that when CONFIG_I3C is not enabled, this function only registers the I2C driver.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhKhj)ubjG)}(h **Return**h]jv)}(hj h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhj ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMhj)ubjG)}(hB0 if both registrations succeeds, a negative error code otherwise.h]hB0 if both registrations succeeds, a negative error code otherwise.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌&i3c_i2c_driver_unregister (C function)c.i3c_i2c_driver_unregisterhNtauh1hhhhhhhhNubh)}(hhh](h)}(hUvoid i3c_i2c_driver_unregister (struct i3c_driver *i3cdrv, struct i2c_driver *i2cdrv)h]h)}(hTvoid i3c_i2c_driver_unregister(struct i3c_driver *i3cdrv, struct i2c_driver *i2cdrv)h](j)}(hvoidh]hvoid}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMubh)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNhhhj`hMubj)}(hi3c_i2c_driver_unregisterh]j)}(hi3c_i2c_driver_unregisterh]hi3c_i2c_driver_unregister}(hjshhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjoubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjNhhhj`hMubj)}(h6(struct i3c_driver *i3cdrv, struct i2c_driver *i2cdrv)h](j)}(hstruct i3c_driver *i3cdrvh](h)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h i3c_driverh]h i3c_driver}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjmodnameN classnameNjj)}j]jO)}jGjusbc.i3c_i2c_driver_unregisterasbuh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjc)}(hjfh]h*}(hjhhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjubj)}(hi3cdrvh]hi3cdrv}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj)}(hstruct i2c_driver *i2cdrvh](h)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h i2c_driverh]h i2c_driver}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj!modnameN classnameNjj)}j]jc.i3c_i2c_driver_unregisterasbuh1hhjubh)}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjc)}(hjfh]h*}(hjKhhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjubj)}(hi2cdrvh]hi2cdrv}(hjXhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1jhjNhhhj`hMubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjJhhhj`hMubah}(h]jEah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj`hMhjGhhubjB)}(hhh]jG)}(h#Unregister an i2c and an i3c driverh]h#Unregister an i2c and an i3c driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jAhjGhhhj`hMubeh}(h]h ](j`functioneh"]h$]h&]jej`jfjjgjjhjijjuh1hhhhhhhhNubjl)}(hX+**Parameters** ``struct i3c_driver *i3cdrv`` the I3C driver to register ``struct i2c_driver *i2cdrv`` the I2C driver to register **Description** This function unregisters both **i3cdrv** and **i2cdrv**. Note that when CONFIG_I3C is not enabled, this function only unregisters the **i2cdrv**.h](jG)}(h**Parameters**h]jv)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMhjubj)}(hhh](j)}(h9``struct i3c_driver *i3cdrv`` the I3C driver to register h](j)}(h``struct i3c_driver *i3cdrv``h]j)}(hjh]hstruct i3c_driver *i3cdrv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMhjubj)}(hhh]jG)}(hthe I3C driver to registerh]hthe I3C driver to register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h9``struct i2c_driver *i2cdrv`` the I2C driver to register h](j)}(h``struct i2c_driver *i2cdrv``h]j)}(hjh]hstruct i2c_driver *i2cdrv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMhjubj)}(hhh]jG)}(hthe I2C driver to registerh]hthe I2C driver to register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjG)}(h**Description**h]jv)}(hj7h]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj5ubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMhjubjG)}(hThis function unregisters both **i3cdrv** and **i2cdrv**. Note that when CONFIG_I3C is not enabled, this function only unregisters the **i2cdrv**.h](hThis function unregisters both }(hjMhhhNhNubjv)}(h **i3cdrv**h]hi3cdrv}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjMubh and }(hjMhhhNhNubjv)}(h **i2cdrv**h]hi2cdrv}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1juhjMubhO. Note that when CONFIG_I3C is not enabled, this function only unregisters the }(hjMhhhNhNubjv)}(h **i2cdrv**h]hi2cdrv}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjMubh.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌module_i3c_i2c_driver (C macro)c.module_i3c_i2c_driverhNtauh1hhhhhhhhNubh)}(hhh](h)}(hmodule_i3c_i2c_driverh]h)}(hmodule_i3c_i2c_driverh]j)}(hmodule_i3c_i2c_driverh]j)}(hjh]hmodule_i3c_i2c_driver}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM&ubah}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhjhM&ubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhM&hjhhubjB)}(hhh]h}(h]h ]h"]h$]h&]uh1jAhjhhhjhM&ubeh}(h]h ](j`macroeh"]h$]h&]jej`jfjjgjjhjijjuh1hhhhhhhhNubjG)}(h.``module_i3c_i2c_driver (__i3cdrv, __i2cdrv)``h]j)}(hjh]h*module_i3c_i2c_driver (__i3cdrv, __i2cdrv)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM(hhhhubj )}(h5Register a module providing an I3C and an I2C driver h]jG)}(h4Register a module providing an I3C and an I2C driverh]h4Register a module providing an I3C and an I2C driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM&hjubah}(h]h ]h"]h$]h&]uh1j hjhM&hhhhubjl)}(hX**Parameters** ``__i3cdrv`` the I3C driver to register ``__i2cdrv`` the I2C driver to register **Description** Provide generic init/exit functions that simply register/unregister an I3C and an I2C driver. This macro can be used even if CONFIG_I3C is disabled, in this case, only the I2C driver will be registered. Should be used by any driver that does not require extra init/cleanup steps.h](jG)}(h**Parameters**h]jv)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM*hjubj)}(hhh](j)}(h(``__i3cdrv`` the I3C driver to register h](j)}(h ``__i3cdrv``h]j)}(hj<h]h__i3cdrv}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM(hj6ubj)}(hhh]jG)}(hthe I3C driver to registerh]hthe I3C driver to register}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjQhM(hjRubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhjQhM(hj3ubj)}(h(``__i2cdrv`` the I2C driver to register h](j)}(h ``__i2cdrv``h]j)}(hjuh]h__i2cdrv}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM)hjoubj)}(hhh]jG)}(hthe I2C driver to registerh]hthe I2C driver to register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhM)hjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjhM)hj3ubeh}(h]h ]h"]h$]h&]uh1jhjubjG)}(h**Description**h]jv)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM+hjubjG)}(hXProvide generic init/exit functions that simply register/unregister an I3C and an I2C driver. This macro can be used even if CONFIG_I3C is disabled, in this case, only the I2C driver will be registered. Should be used by any driver that does not require extra init/cleanup steps.h]hXProvide generic init/exit functions that simply register/unregister an I3C and an I2C driver. This macro can be used even if CONFIG_I3C is disabled, in this case, only the I2C driver will be registered. Should be used by any driver that does not require extra init/cleanup steps.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM*hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌i3c_ibi_setup (C struct)c.i3c_ibi_setuphNtauh1hhhhhhhhNubh)}(hhh](h)}(h i3c_ibi_setuph]h)}(hstruct i3c_ibi_setuph](h)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhM3ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM3ubj)}(h i3c_ibi_setuph]j)}(hjh]h i3c_ibi_setup}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhM3ubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhjhM3ubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhM3hjhhubjB)}(hhh]jG)}(hIBI setup objecth]hIBI setup object}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMKhj4hhubah}(h]h ]h"]h$]h&]uh1jAhjhhhjhM3ubeh}(h]h ](j`structeh"]h$]h&]jej`jfjOjgjOjhjijjuh1hhhhhhhhNubjl)}(hXZ**Definition**:: struct i3c_ibi_setup { unsigned int max_payload_len; unsigned int num_slots; void (*handler)(struct i3c_device *dev, const struct i3c_ibi_payload *payload); }; **Members** ``max_payload_len`` maximum length of the payload associated to an IBI. If one IBI appears to have a payload that is bigger than this number, the IBI will be rejected. ``num_slots`` number of pre-allocated IBI slots. This should be chosen so that the system never runs out of IBI slots, otherwise you'll lose IBIs. ``handler`` IBI handler, every time an IBI is received. This handler is called in a workqueue context. It is allowed to sleep and send new messages on the bus, though it's recommended to keep the processing done there as fast as possible to avoid delaying processing of other queued on the same workqueue.h](jG)}(h**Definition**::h](jv)}(h**Definition**h]h Definition}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1juhjWubh:}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMOhjSubj%)}(hstruct i3c_ibi_setup { unsigned int max_payload_len; unsigned int num_slots; void (*handler)(struct i3c_device *dev, const struct i3c_ibi_payload *payload); };h]hstruct i3c_ibi_setup { unsigned int max_payload_len; unsigned int num_slots; void (*handler)(struct i3c_device *dev, const struct i3c_ibi_payload *payload); };}hjtsbah}(h]h ]h"]h$]h&]hhuh1j$hj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMQhjSubjG)}(h **Members**h]jv)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMWhjSubj)}(hhh](j)}(h``max_payload_len`` maximum length of the payload associated to an IBI. If one IBI appears to have a payload that is bigger than this number, the IBI will be rejected. h](j)}(h``max_payload_len``h]j)}(hjh]hmax_payload_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMOhjubj)}(hhh]jG)}(hmaximum length of the payload associated to an IBI. If one IBI appears to have a payload that is bigger than this number, the IBI will be rejected.h]hmaximum length of the payload associated to an IBI. If one IBI appears to have a payload that is bigger than this number, the IBI will be rejected.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMOhjubj)}(h``num_slots`` number of pre-allocated IBI slots. This should be chosen so that the system never runs out of IBI slots, otherwise you'll lose IBIs. h](j)}(h ``num_slots``h]j)}(hjh]h num_slots}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMRhjubj)}(hhh]jG)}(hnumber of pre-allocated IBI slots. This should be chosen so that the system never runs out of IBI slots, otherwise you'll lose IBIs.h]hnumber of pre-allocated IBI slots. This should be chosen so that the system never runs out of IBI slots, otherwise you’ll lose IBIs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMPhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMRhjubj)}(hX1``handler`` IBI handler, every time an IBI is received. This handler is called in a workqueue context. It is allowed to sleep and send new messages on the bus, though it's recommended to keep the processing done there as fast as possible to avoid delaying processing of other queued on the same workqueue.h](j)}(h ``handler``h]j)}(hjh]hhandler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMVhjubj)}(hhh]jG)}(hX%IBI handler, every time an IBI is received. This handler is called in a workqueue context. It is allowed to sleep and send new messages on the bus, though it's recommended to keep the processing done there as fast as possible to avoid delaying processing of other queued on the same workqueue.h]hX'IBI handler, every time an IBI is received. This handler is called in a workqueue context. It is allowed to sleep and send new messages on the bus, though it’s recommended to keep the processing done there as fast as possible to avoid delaying processing of other queued on the same workqueue.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMShj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hMVhjubeh}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhhhNubjG)}(h**Description**h]jv)}(hj[h]h Description}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1juhjYubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMZhhhhubjG)}(hTemporary structure used to pass information to i3c_device_request_ibi(). This object can be allocated on the stack since i3c_device_request_ibi() copies every bit of information and do not use it after i3c_device_request_ibi() has returned.h]hTemporary structure used to pass information to i3c_device_request_ibi(). This object can be allocated on the stack since i3c_device_request_ibi() copies every bit of information and do not use it after i3c_device_request_ibi() has returned.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:7: ./include/linux/i3c/device.hhMWhhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌ i3c_device_do_xfers (C function)c.i3c_device_do_xfershNtauh1hhhhhhNhNubh)}(hhh](h)}(hmint i3c_device_do_xfers (struct i3c_device *dev, struct i3c_xfer *xfers, int nxfers, enum i3c_xfer_mode mode)h]h)}(hlint i3c_device_do_xfers(struct i3c_device *dev, struct i3c_xfer *xfers, int nxfers, enum i3c_xfer_mode mode)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj)}(hi3c_device_do_xfersh]j)}(hi3c_device_do_xfersh]hi3c_device_do_xfers}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhKubj)}(hU(struct i3c_device *dev, struct i3c_xfer *xfers, int nxfers, enum i3c_xfer_mode mode)h](j)}(hstruct i3c_device *devh](h)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjmodnameN classnameNjj)}j]jO)}jGjsbc.i3c_device_do_xfersasbuh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjc)}(hjfh]h*}(hj"hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjubj)}(hdevh]hdev}(hj/hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj)}(hstruct i3c_xfer *xfersh](h)}(hjh]hstruct}(hjHhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjDubh)}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjDubh)}(hhh]j)}(hi3c_xferh]hi3c_xfer}(hjfhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjhmodnameN classnameNjj)}j]jc.i3c_device_do_xfersasbuh1hhjDubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjDubjc)}(hjfh]h*}(hjhhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjDubj)}(hxfersh]hxfers}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj)}(h int nxfersh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hnxfersh]hnxfers}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj)}(henum i3c_xfer_mode modeh](h)}(hhh]henum}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h i3c_xfer_modeh]h i3c_xfer_mode}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj modnameN classnameNjj)}j]jc.i3c_device_do_xfersasbuh1hhjubh)}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hmodeh]hmode}(hj7hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhjhKubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhKhjhhubjB)}(hhh]jG)}(h.do I3C transfers directed to a specific deviceh]h.do I3C transfers directed to a specific device}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj^hhubah}(h]h ]h"]h$]h&]uh1jAhjhhhjhKubeh}(h]h ](j`functioneh"]h$]h&]jej`jfjyjgjyjhjijjuh1hhhhhhNhNubjl)}(hX**Parameters** ``struct i3c_device *dev`` device with which the transfers should be done ``struct i3c_xfer *xfers`` array of transfers ``int nxfers`` number of transfers ``enum i3c_xfer_mode mode`` transfer mode **Description** Initiate one or several private SDR transfers with **dev**. This function can sleep and thus cannot be called in atomic context. **Return** * 0 in case of success, a negative error core otherwise. * -EAGAIN: controller lost address arbitration. Target (IBI, HJ or controller role request) win the bus. Client driver needs to resend the 'xfers' some time later. See I3C spec ver 1.1.1 09-Jun-2021. Section: 5.1.2.2.3.h](jG)}(h**Parameters**h]jv)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj}ubj)}(hhh](j)}(hJ``struct i3c_device *dev`` device with which the transfers should be done h](j)}(h``struct i3c_device *dev``h]j)}(hjh]hstruct i3c_device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhjubj)}(hhh]jG)}(h.device with which the transfers should be doneh]h.device with which the transfers should be done}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h.``struct i3c_xfer *xfers`` array of transfers h](j)}(h``struct i3c_xfer *xfers``h]j)}(hjh]hstruct i3c_xfer *xfers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhjubj)}(hhh]jG)}(harray of transfersh]harray of transfers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h#``int nxfers`` number of transfers h](j)}(h``int nxfers``h]j)}(hjh]h int nxfers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhjubj)}(hhh]jG)}(hnumber of transfersh]hnumber of transfers}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj)hKhj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj)hKhjubj)}(h*``enum i3c_xfer_mode mode`` transfer mode h](j)}(h``enum i3c_xfer_mode mode``h]j)}(hjMh]henum i3c_xfer_mode mode}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhjGubj)}(hhh]jG)}(h transfer modeh]h transfer mode}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjbhKhjcubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjbhKhjubeh}(h]h ]h"]h$]h&]uh1jhj}ubjG)}(h**Description**h]jv)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj}ubjG)}(h;Initiate one or several private SDR transfers with **dev**.h](h3Initiate one or several private SDR transfers with }(hjhhhNhNubjv)}(h**dev**h]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj}ubjG)}(hDThis function can sleep and thus cannot be called in atomic context.h]hDThis function can sleep and thus cannot be called in atomic context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj}ubjG)}(h **Return**h]jv)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj}ubh bullet_list)}(hhh](h list_item)}(h60 in case of success, a negative error core otherwise.h]jG)}(hjh]h60 in case of success, a negative error core otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h-EAGAIN: controller lost address arbitration. Target (IBI, HJ or controller role request) win the bus. Client driver needs to resend the 'xfers' some time later. See I3C spec ver 1.1.1 09-Jun-2021. Section: 5.1.2.2.3.h]jG)}(h-EAGAIN: controller lost address arbitration. Target (IBI, HJ or controller role request) win the bus. Client driver needs to resend the 'xfers' some time later. See I3C spec ver 1.1.1 09-Jun-2021. Section: 5.1.2.2.3.h]h-EAGAIN: controller lost address arbitration. Target (IBI, HJ or controller role request) win the bus. Client driver needs to resend the ‘xfers’ some time later. See I3C spec ver 1.1.1 09-Jun-2021. Section: 5.1.2.2.3.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bulletjfuh1jhjhKhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌"i3c_device_do_setdasa (C function)c.i3c_device_do_setdasahNtauh1hhhhhhNhNubh)}(hhh](h)}(h2int i3c_device_do_setdasa (struct i3c_device *dev)h]h)}(h1int i3c_device_do_setdasa(struct i3c_device *dev)h](j)}(hinth]hint}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK:ubh)}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjAhhhjShK:ubj)}(hi3c_device_do_setdasah]j)}(hi3c_device_do_setdasah]hi3c_device_do_setdasa}(hjfhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjbubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjAhhhjShK:ubj)}(h(struct i3c_device *dev)h]j)}(hstruct i3c_device *devh](h)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj~ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj~ubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjmodnameN classnameNjj)}j]jO)}jGjhsbc.i3c_device_do_setdasaasbuh1hhj~ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj~ubjc)}(hjfh]h*}(hjhhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj~ubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjzubah}(h]h ]h"]h$]h&]hhuh1jhjAhhhjShK:ubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hj=hhhjShK:ubah}(h]j8ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjShK:hj:hhubjB)}(hhh]jG)}(h6do I3C dynamic address assignement with static addressh]h6do I3C dynamic address assignement with static address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK:hjhhubah}(h]h ]h"]h$]h&]uh1jAhj:hhhjShK:ubeh}(h]h ](j`functioneh"]h$]h&]jej`jfjjgjjhjijjuh1hhhhhhNhNubjl)}(h**Parameters** ``struct i3c_device *dev`` device with which the DAA should be done **Return** 0 in case of success, a negative error core otherwise.h](jG)}(h**Parameters**h]jv)}(hj'h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj%ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK>hj!ubj)}(hhh]j)}(hD``struct i3c_device *dev`` device with which the DAA should be done h](j)}(h``struct i3c_device *dev``h]j)}(hjFh]hstruct i3c_device *dev}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK=hj@ubj)}(hhh]jG)}(h(device with which the DAA should be doneh]h(device with which the DAA should be done}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj[hK=hj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hK=hj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubjG)}(h **Return**h]jv)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK?hj!ubjG)}(h60 in case of success, a negative error core otherwise.h]h60 in case of success, a negative error core otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK?hj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌ i3c_device_get_info (C function)c.i3c_device_get_infohNtauh1hhhhhhNhNubh)}(hhh](h)}(hUvoid i3c_device_get_info (const struct i3c_device *dev, struct i3c_device_info *info)h]h)}(hTvoid i3c_device_get_info(const struct i3c_device *dev, struct i3c_device_info *info)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKNubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKNubj)}(hi3c_device_get_infoh]j)}(hi3c_device_get_infoh]hi3c_device_get_info}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhKNubj)}(h<(const struct i3c_device *dev, struct i3c_device_info *info)h](j)}(hconst struct i3c_device *devh](h)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hj=hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj?modnameN classnameNjj)}j]jO)}jGjsbc.i3c_device_get_infoasbuh1hhjubh)}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjc)}(hjfh]h*}(hjkhhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjubj)}(hdevh]hdev}(hjxhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj)}(hstruct i3c_device_info *infoh](h)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(hi3c_device_infoh]hi3c_device_info}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjmodnameN classnameNjj)}j]jYc.i3c_device_get_infoasbuh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjc)}(hjfh]h*}(hjhhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjubj)}(hinfoh]hinfo}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKNubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhjhKNubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhKNhjhhubjB)}(hhh]jG)}(hget I3C device informationh]hget I3C device information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKNhjhhubah}(h]h ]h"]h$]h&]uh1jAhjhhhjhKNubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj*jgj*jhjijjuh1hhhhhhNhNubjl)}(h**Parameters** ``const struct i3c_device *dev`` device we want information on ``struct i3c_device_info *info`` the information object to fill in **Description** Retrieve I3C dev info.h](jG)}(h**Parameters**h]jv)}(hj4h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj2ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKRhj.ubj)}(hhh](j)}(h?``const struct i3c_device *dev`` device we want information on h](j)}(h ``const struct i3c_device *dev``h]j)}(hjSh]hconst struct i3c_device *dev}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKPhjMubj)}(hhh]jG)}(hdevice we want information onh]hdevice we want information on}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhhKPhjiubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhjhhKPhjJubj)}(hC``struct i3c_device_info *info`` the information object to fill in h](j)}(h ``struct i3c_device_info *info``h]j)}(hjh]hstruct i3c_device_info *info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKQhjubj)}(hhh]jG)}(h!the information object to fill inh]h!the information object to fill in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjhKQhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKQhjJubeh}(h]h ]h"]h$]h&]uh1jhj.ubjG)}(h**Description**h]jv)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKShj.ubjG)}(hRetrieve I3C dev info.h]hRetrieve I3C dev info.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKRhj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌#i3c_device_disable_ibi (C function)c.i3c_device_disable_ibihNtauh1hhhhhhNhNubh)}(hhh](h)}(h3int i3c_device_disable_ibi (struct i3c_device *dev)h]h)}(h2int i3c_device_disable_ibi(struct i3c_device *dev)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKcubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKcubj)}(hi3c_device_disable_ibih]j)}(hi3c_device_disable_ibih]hi3c_device_disable_ibi}(hj-hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj)ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhKcubj)}(h(struct i3c_device *dev)h]j)}(hstruct i3c_device *devh](h)}(hjh]hstruct}(hjIhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjEubh)}(h h]h }(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hjghhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjimodnameN classnameNjj)}j]jO)}jGj/sbc.i3c_device_disable_ibiasbuh1hhjEubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubjc)}(hjfh]h*}(hjhhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjEubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjAubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKcubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjhhhjhKcubah}(h]jah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjhKchjhhubjB)}(hhh]jG)}(h*Disable IBIs coming from a specific deviceh]h*Disable IBIs coming from a specific device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKchjhhubah}(h]h ]h"]h$]h&]uh1jAhjhhhjhKcubeh}(h]h ](j`functioneh"]h$]h&]jej`jfjjgjjhjijjuh1hhhhhhNhNubjl)}(hX**Parameters** ``struct i3c_device *dev`` device on which IBIs should be disabled **Description** This function disable IBIs coming from a specific device and wait for all pending IBIs to be processed. **Return** 0 in case of success, a negative error core otherwise.h](jG)}(h**Parameters**h]jv)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKghjubj)}(hhh]j)}(hC``struct i3c_device *dev`` device on which IBIs should be disabled h](j)}(h``struct i3c_device *dev``h]j)}(hj h]hstruct i3c_device *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKdhj ubj)}(hhh]jG)}(h'device on which IBIs should be disabledh]h'device on which IBIs should be disabled}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj" hKdhj# ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj" hKdhj ubah}(h]h ]h"]h$]h&]uh1jhjubjG)}(h**Description**h]jv)}(hjH h]h Description}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1juhjF ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKfhjubjG)}(hgThis function disable IBIs coming from a specific device and wait for all pending IBIs to be processed.h]hgThis function disable IBIs coming from a specific device and wait for all pending IBIs to be processed.}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKehjubjG)}(h **Return**h]jv)}(hjo h]hReturn}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1juhjm ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhhjubjG)}(h60 in case of success, a negative error core otherwise.h]h60 in case of success, a negative error core otherwise.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKihjubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌"i3c_device_enable_ibi (C function)c.i3c_device_enable_ibihNtauh1hhhhhhNhNubh)}(hhh](h)}(h2int i3c_device_enable_ibi (struct i3c_device *dev)h]h)}(h1int i3c_device_enable_ibi(struct i3c_device *dev)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK|ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hK|ubj)}(hi3c_device_enable_ibih]j)}(hi3c_device_enable_ibih]hi3c_device_enable_ibi}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj hhhj hK|ubj)}(h(struct i3c_device *dev)h]j)}(hstruct i3c_device *devh](h)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hj!hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj !ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj!modnameN classnameNjj)}j]jO)}jGj sbc.i3c_device_enable_ibiasbuh1hhj ubh)}(h h]h }(hj/!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubjc)}(hjfh]h*}(hj=!hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj ubj)}(hdevh]hdev}(hjJ!hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hK|ubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hj hhhj hK|ubah}(h]j ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj hK|hj hhubjB)}(hhh]jG)}(h)Enable IBIs coming from a specific deviceh]h)Enable IBIs coming from a specific device}(hjt!hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK|hjq!hhubah}(h]h ]h"]h$]h&]uh1jAhj hhhj hK|ubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj!jgj!jhjijjuh1hhhhhhNhNubjl)}(hX**Parameters** ``struct i3c_device *dev`` device on which IBIs should be enabled **Description** This function enable IBIs coming from a specific device and wait for all pending IBIs to be processed. This should be called on a device where i3c_device_request_ibi() has succeeded. Note that IBIs from this device might be received before this function returns to its caller. **Return** 0 in case of success, a negative error core otherwise.h](jG)}(h**Parameters**h]jv)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj!ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj!ubj)}(hhh]j)}(hB``struct i3c_device *dev`` device on which IBIs should be enabled h](j)}(h``struct i3c_device *dev``h]j)}(hj!h]hstruct i3c_device *dev}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK}hj!ubj)}(hhh]jG)}(h&device on which IBIs should be enabledh]h&device on which IBIs should be enabled}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj!hK}hj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hK}hj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubjG)}(h**Description**h]jv)}(hj!h]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj!ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj!ubjG)}(hThis function enable IBIs coming from a specific device and wait for all pending IBIs to be processed. This should be called on a device where i3c_device_request_ibi() has succeeded.h]hThis function enable IBIs coming from a specific device and wait for all pending IBIs to be processed. This should be called on a device where i3c_device_request_ibi() has succeeded.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chK~hj!ubjG)}(h]Note that IBIs from this device might be received before this function returns to its caller.h]h]Note that IBIs from this device might be received before this function returns to its caller.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj!ubjG)}(h **Return**h]jv)}(hj&"h]hReturn}(hj("hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj$"ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj!ubjG)}(h60 in case of success, a negative error core otherwise.h]h60 in case of success, a negative error core otherwise.}(hj<"hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌#i3c_device_request_ibi (C function)c.i3c_device_request_ibihNtauh1hhhhhhNhNubh)}(hhh](h)}(hTint i3c_device_request_ibi (struct i3c_device *dev, const struct i3c_ibi_setup *req)h]h)}(hSint i3c_device_request_ibi(struct i3c_device *dev, const struct i3c_ibi_setup *req)h](j)}(hinth]hint}(hjk"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjg"hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKubh)}(h h]h }(hjz"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjg"hhhjy"hKubj)}(hi3c_device_request_ibih]j)}(hi3c_device_request_ibih]hi3c_device_request_ibi}(hj"hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj"ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjg"hhhjy"hKubj)}(h9(struct i3c_device *dev, const struct i3c_ibi_setup *req)h](j)}(hstruct i3c_device *devh](h)}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj"ubh)}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"ubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hj"hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj"modnameN classnameNjj)}j]jO)}jGj"sbc.i3c_device_request_ibiasbuh1hhj"ubh)}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"ubjc)}(hjfh]h*}(hj"hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj"ubj)}(hdevh]hdev}(hj#hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj)}(hconst struct i3c_ibi_setup *reqh](h)}(hjh]hconst}(hj#hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj#ubh)}(h h]h }(hj'#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubh)}(hjh]hstruct}(hj5#hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj#ubh)}(h h]h }(hjB#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubh)}(hhh]j)}(h i3c_ibi_setuph]h i3c_ibi_setup}(hjS#hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjP#ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjU#modnameN classnameNjj)}j]j"c.i3c_device_request_ibiasbuh1hhj#ubh)}(h h]h }(hjq#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubjc)}(hjfh]h*}(hj#hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj#ubj)}(hreqh]hreq}(hj#hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubeh}(h]h ]h"]h$]h&]hhuh1jhjg"hhhjy"hKubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjc"hhhjy"hKubah}(h]j^"ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjy"hKhj`"hhubjB)}(hhh]jG)}(hRequest an IBIh]hRequest an IBI}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj#hhubah}(h]h ]h"]h$]h&]uh1jAhj`"hhhjy"hKubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj#jgj#jhjijjuh1hhhhhhNhNubjl)}(hX**Parameters** ``struct i3c_device *dev`` device for which we should enable IBIs ``const struct i3c_ibi_setup *req`` setup requested for this IBI **Description** This function is responsible for pre-allocating all resources needed to process IBIs coming from **dev**. When this function returns, the IBI is not enabled until i3c_device_enable_ibi() is called. **Return** 0 in case of success, a negative error core otherwise.h](jG)}(h**Parameters**h]jv)}(hj#h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj#ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj#ubj)}(hhh](j)}(hB``struct i3c_device *dev`` device for which we should enable IBIs h](j)}(h``struct i3c_device *dev``h]j)}(hj#h]hstruct i3c_device *dev}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj#ubj)}(hhh]jG)}(h&device for which we should enable IBIsh]h&device for which we should enable IBIs}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj $hKhj $ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jhj $hKhj#ubj)}(hA``const struct i3c_ibi_setup *req`` setup requested for this IBI h](j)}(h#``const struct i3c_ibi_setup *req``h]j)}(hj0$h]hconst struct i3c_ibi_setup *req}(hj2$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.$ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj*$ubj)}(hhh]jG)}(hsetup requested for this IBIh]hsetup requested for this IBI}(hjI$hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjE$hKhjF$ubah}(h]h ]h"]h$]h&]uh1jhj*$ubeh}(h]h ]h"]h$]h&]uh1jhjE$hKhj#ubeh}(h]h ]h"]h$]h&]uh1jhj#ubjG)}(h**Description**h]jv)}(hjk$h]h Description}(hjm$hhhNhNubah}(h]h ]h"]h$]h&]uh1juhji$ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj#ubjG)}(hThis function is responsible for pre-allocating all resources needed to process IBIs coming from **dev**. When this function returns, the IBI is not enabled until i3c_device_enable_ibi() is called.h](haThis function is responsible for pre-allocating all resources needed to process IBIs coming from }(hj$hhhNhNubjv)}(h**dev**h]hdev}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj$ubh]. When this function returns, the IBI is not enabled until i3c_device_enable_ibi() is called.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj#ubjG)}(h **Return**h]jv)}(hj$h]hReturn}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj$ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj#ubjG)}(h60 in case of success, a negative error core otherwise.h]h60 in case of success, a negative error core otherwise.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌ i3c_device_free_ibi (C function)c.i3c_device_free_ibihNtauh1hhhhhhNhNubh)}(hhh](h)}(h1void i3c_device_free_ibi (struct i3c_device *dev)h]h)}(h0void i3c_device_free_ibi(struct i3c_device *dev)h](j)}(hvoidh]hvoid}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKubh)}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$hhhj$hKubj)}(hi3c_device_free_ibih]j)}(hi3c_device_free_ibih]hi3c_device_free_ibi}(hj %hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj%ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj$hhhj$hKubj)}(h(struct i3c_device *dev)h]j)}(hstruct i3c_device *devh](h)}(hjh]hstruct}(hj&%hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj"%ubh)}(h h]h }(hj3%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"%ubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hjD%hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjA%ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjF%modnameN classnameNjj)}j]jO)}jGj %sbc.i3c_device_free_ibiasbuh1hhj"%ubh)}(h h]h }(hjd%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"%ubjc)}(hjfh]h*}(hjr%hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj"%ubj)}(hdevh]hdev}(hj%hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj"%ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj%ubah}(h]h ]h"]h$]h&]hhuh1jhj$hhhj$hKubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hj$hhhj$hKubah}(h]j$ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj$hKhj$hhubjB)}(hhh]jG)}(h*Free all resources needed for IBI handlingh]h*Free all resources needed for IBI handling}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj%hhubah}(h]h ]h"]h$]h&]uh1jAhj$hhhj$hKubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj%jgj%jhjijjuh1hhhhhhNhNubjl)}(hX#**Parameters** ``struct i3c_device *dev`` device on which you want to release IBI resources **Description** This function is responsible for de-allocating resources previously allocated by i3c_device_request_ibi(). It should be called after disabling IBIs with i3c_device_disable_ibi().h](jG)}(h**Parameters**h]jv)}(hj%h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj%ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj%ubj)}(hhh]j)}(hM``struct i3c_device *dev`` device on which you want to release IBI resources h](j)}(h``struct i3c_device *dev``h]j)}(hj%h]hstruct i3c_device *dev}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj%ubj)}(hhh]jG)}(h1device on which you want to release IBI resourcesh]h1device on which you want to release IBI resources}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj%hKhj&ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%hKhj%ubah}(h]h ]h"]h$]h&]uh1jhj%ubjG)}(h**Description**h]jv)}(hj%&h]h Description}(hj'&hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj#&ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj%ubjG)}(hThis function is responsible for de-allocating resources previously allocated by i3c_device_request_ibi(). It should be called after disabling IBIs with i3c_device_disable_ibi().h]hThis function is responsible for de-allocating resources previously allocated by i3c_device_request_ibi(). It should be called after disabling IBIs with i3c_device_disable_ibi().}(hj;&hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌i3cdev_to_dev (C function)c.i3cdev_to_devhNtauh1hhhhhhNhNubh)}(hhh](h)}(h9struct device * i3cdev_to_dev (struct i3c_device *i3cdev)h]h)}(h7struct device *i3cdev_to_dev(struct i3c_device *i3cdev)h](h)}(hjh]hstruct}(hjj&hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjf&hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKubh)}(h h]h }(hjx&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjf&hhhjw&hKubh)}(hhh]j)}(hdeviceh]hdevice}(hj&hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj&modnameN classnameNjj)}j]jO)}jG i3cdev_to_devsbc.i3cdev_to_devasbuh1hhjf&hhhjw&hKubh)}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjf&hhhjw&hKubjc)}(hjfh]h*}(hj&hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhjf&hhhjw&hKubj)}(h i3cdev_to_devh]j)}(hj&h]h i3cdev_to_dev}(hj&hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj&ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjf&hhhjw&hKubj)}(h(struct i3c_device *i3cdev)h]j)}(hstruct i3c_device *i3cdevh](h)}(hjh]hstruct}(hj&hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj&ubh)}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hj'hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj'modnameN classnameNjj)}j]j&c.i3cdev_to_devasbuh1hhj&ubh)}(h h]h }(hj 'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubjc)}(hjfh]h*}(hj.'hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj&ubj)}(hi3cdevh]hi3cdev}(hj;'hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj&ubah}(h]h ]h"]h$]h&]hhuh1jhjf&hhhjw&hKubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hjb&hhhjw&hKubah}(h]j]&ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjw&hKhj_&hhubjB)}(hhh]jG)}(h)Returns the device embedded in **i3cdev**h](hReturns the device embedded in }(hje'hhhNhNubjv)}(h **i3cdev**h]hi3cdev}(hjm'hhhNhNubah}(h]h ]h"]h$]h&]uh1juhje'ubeh}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhjb'hhubah}(h]h ]h"]h$]h&]uh1jAhj_&hhhjw&hKubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj'jgj'jhjijjuh1hhhhhhNhNubjl)}(he**Parameters** ``struct i3c_device *i3cdev`` I3C device **Return** a pointer to a device object.h](jG)}(h**Parameters**h]jv)}(hj'h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj'ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj'ubj)}(hhh]j)}(h)``struct i3c_device *i3cdev`` I3C device h](j)}(h``struct i3c_device *i3cdev``h]j)}(hj'h]hstruct i3c_device *i3cdev}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj'ubj)}(hhh]jG)}(h I3C deviceh]h I3C device}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj'hKhj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hKhj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubjG)}(h **Return**h]jv)}(hj'h]hReturn}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj'ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj'ubjG)}(ha pointer to a device object.h]ha pointer to a device object.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌ i3c_device_match_id (C function)c.i3c_device_match_idhNtauh1hhhhhhNhNubh)}(hhh](h)}(hrconst struct i3c_device_id * i3c_device_match_id (struct i3c_device *i3cdev, const struct i3c_device_id *id_table)h]h)}(hpconst struct i3c_device_id *i3c_device_match_id(struct i3c_device *i3cdev, const struct i3c_device_id *id_table)h](h)}(hjh]hconst}(hj4(hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj0(hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKubh)}(h h]h }(hjB(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj0(hhhjA(hKubh)}(hjh]hstruct}(hjP(hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj0(hhhjA(hKubh)}(h h]h }(hj](hhh`NhNubah}(h]h ]j ah"]h$]h&]uh1hhj0(hhhjA(hKubh)}(hhh]j)}(h i3c_device_idh]h i3c_device_id}(hjn(hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjk(ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjp(modnameN classnameNjj)}j]jO)}jGi3c_device_match_idsbc.i3c_device_match_idasbuh1hhj0(hhhjA(hKubh)}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj0(hhhjA(hKubjc)}(hjfh]h*}(hj(hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj0(hhhjA(hKubj)}(hi3c_device_match_idh]j)}(hj(h]hi3c_device_match_id}(hj(hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj(ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj0(hhhjA(hKubj)}(hA(struct i3c_device *i3cdev, const struct i3c_device_id *id_table)h](j)}(hstruct i3c_device *i3cdevh](h)}(hjh]hstruct}(hj(hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj(ubh)}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj(ubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hj(hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj(modnameN classnameNjj)}j]j(c.i3c_device_match_idasbuh1hhj(ubh)}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj(ubjc)}(hjfh]h*}(hj)hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj(ubj)}(hi3cdevh]hi3cdev}(hj )hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj)}(h$const struct i3c_device_id *id_tableh](h)}(hjh]hconst}(hj9)hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj5)ubh)}(h h]h }(hjF)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj5)ubh)}(hjh]hstruct}(hjT)hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj5)ubh)}(h h]h }(hja)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj5)ubh)}(hhh]j)}(h i3c_device_idh]h i3c_device_id}(hjr)hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjo)ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjt)modnameN classnameNjj)}j]j(c.i3c_device_match_idasbuh1hhj5)ubh)}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj5)ubjc)}(hjfh]h*}(hj)hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj5)ubj)}(hid_tableh]hid_table}(hj)hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj5)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubeh}(h]h ]h"]h$]h&]hhuh1jhj0(hhhjA(hKubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hj,(hhhjA(hKubah}(h]j'(ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhjA(hKhj)(hhubjB)}(hhh]jG)}(h3Returns the i3c_device_id entry matching **i3cdev**h](h)Returns the i3c_device_id entry matching }(hj)hhhNhNubjv)}(h **i3cdev**h]hi3cdev}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj)ubeh}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj)hhubah}(h]h ]h"]h$]h&]uh1jAhj)(hhhjA(hKubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj)jgj)jhjijjuh1hhhhhhNhNubjl)}(h**Parameters** ``struct i3c_device *i3cdev`` I3C device ``const struct i3c_device_id *id_table`` I3C device match table **Return** a pointer to an i3c_device_id object or NULL if there's no match.h](jG)}(h**Parameters**h]jv)}(hj*h]h Parameters}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj*ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj)ubj)}(hhh](j)}(h)``struct i3c_device *i3cdev`` I3C device h](j)}(h``struct i3c_device *i3cdev``h]j)}(hj$*h]hstruct i3c_device *i3cdev}(hj&*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"*ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj*ubj)}(hhh]jG)}(h I3C deviceh]h I3C device}(hj=*hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj9*hKhj:*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhj9*hKhj*ubj)}(h@``const struct i3c_device_id *id_table`` I3C device match table h](j)}(h(``const struct i3c_device_id *id_table``h]j)}(hj]*h]h$const struct i3c_device_id *id_table}(hj_*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[*ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhjW*ubj)}(hhh]jG)}(hI3C device match tableh]hI3C device match table}(hjv*hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhjr*hKhjs*ubah}(h]h ]h"]h$]h&]uh1jhjW*ubeh}(h]h ]h"]h$]h&]uh1jhjr*hKhj*ubeh}(h]h ]h"]h$]h&]uh1jhj)ubjG)}(h **Return**h]jv)}(hj*h]hReturn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj*ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj)ubjG)}(hAa pointer to an i3c_device_id object or NULL if there's no match.h]hCa pointer to an i3c_device_id object or NULL if there’s no match.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chKhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌/i3c_device_get_supported_xfer_mode (C function)$c.i3c_device_get_supported_xfer_modehNtauh1hhhhhhNhNubh)}(hhh](h)}(h?u32 i3c_device_get_supported_xfer_mode (struct i3c_device *dev)h]h)}(h>u32 i3c_device_get_supported_xfer_mode(struct i3c_device *dev)h](h)}(hhh]j)}(hu32h]hu32}(hj*hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj*modnameN classnameNjj)}j]jO)}jG"i3c_device_get_supported_xfer_modesb$c.i3c_device_get_supported_xfer_modeasbuh1hhj*hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMubh)}(h h]h }(hj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj*hhhj+hMubj)}(h"i3c_device_get_supported_xfer_modeh]j)}(hj*h]h"i3c_device_get_supported_xfer_mode}(hj+hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj+ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj*hhhj+hMubj)}(h(struct i3c_device *dev)h]j)}(hstruct i3c_device *devh](h)}(hjh]hstruct}(hj/+hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj++ubh)}(h h]h }(hj<+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj++ubh)}(hhh]j)}(h i3c_deviceh]h i3c_device}(hjM+hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjJ+ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetjO+modnameN classnameNjj)}j]j*$c.i3c_device_get_supported_xfer_modeasbuh1hhj++ubh)}(h h]h }(hjk+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj++ubjc)}(hjfh]h*}(hjy+hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj++ubj)}(hdevh]hdev}(hj+hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj++ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj'+ubah}(h]h ]h"]h$]h&]hhuh1jhj*hhhj+hMubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hj*hhhj+hMubah}(h]j*ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj+hMhj*hhubjB)}(hhh]jG)}(hCReturns the supported transfer mode by connected master controller.h]hCReturns the supported transfer mode by connected master controller.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj+hhubah}(h]h ]h"]h$]h&]uh1jAhj*hhhj+hMubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj+jgj+jhjijjuh1hhhhhhNhNubjl)}(h**Parameters** ``struct i3c_device *dev`` I3C device **Return** a bit mask, which supported transfer mode, bit position is defined at enum i3c_hdr_modeh](jG)}(h**Parameters**h]jv)}(hj+h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj+ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM hj+ubj)}(hhh]j)}(h&``struct i3c_device *dev`` I3C device h](j)}(h``struct i3c_device *dev``h]j)}(hj+h]hstruct i3c_device *dev}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM hj+ubj)}(hhh]jG)}(h I3C deviceh]h I3C device}(hj ,hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj,hM hj,ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhj,hM hj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubjG)}(h **Return**h]jv)}(hj,,h]hReturn}(hj.,hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj*,ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM hj+ubjG)}(hWa bit mask, which supported transfer mode, bit position is defined at enum i3c_hdr_modeh]hWa bit mask, which supported transfer mode, bit position is defined at enum i3c_hdr_mode}(hjB,hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM hj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌+i3c_driver_register_with_owner (C function) c.i3c_driver_register_with_ownerhNtauh1hhhhhhNhNubh)}(hhh](h)}(hQint i3c_driver_register_with_owner (struct i3c_driver *drv, struct module *owner)h]h)}(hPint i3c_driver_register_with_owner(struct i3c_driver *drv, struct module *owner)h](j)}(hinth]hint}(hjq,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm,hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMubh)}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjm,hhhj,hMubj)}(hi3c_driver_register_with_ownerh]j)}(hi3c_driver_register_with_ownerh]hi3c_driver_register_with_owner}(hj,hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj,ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjm,hhhj,hMubj)}(h.(struct i3c_driver *drv, struct module *owner)h](j)}(hstruct i3c_driver *drvh](h)}(hjh]hstruct}(hj,hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj,ubh)}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj,ubh)}(hhh]j)}(h i3c_driverh]h i3c_driver}(hj,hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj,modnameN classnameNjj)}j]jO)}jGj,sb c.i3c_driver_register_with_ownerasbuh1hhj,ubh)}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj,ubjc)}(hjfh]h*}(hj,hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj,ubj)}(hdrvh]hdrv}(hj-hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,ubj)}(hstruct module *ownerh](h)}(hjh]hstruct}(hj -hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj-ubh)}(h h]h }(hj--hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-ubh)}(hhh]j)}(hmoduleh]hmodule}(hj>-hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj;-ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj@-modnameN classnameNjj)}j]j, c.i3c_driver_register_with_ownerasbuh1hhj-ubh)}(h h]h }(hj\-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-ubjc)}(hjfh]h*}(hjj-hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj-ubj)}(hownerh]howner}(hjw-hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,ubeh}(h]h ]h"]h$]h&]hhuh1jhjm,hhhj,hMubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hji,hhhj,hMubah}(h]jd,ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj,hMhjf,hhubjB)}(hhh]jG)}(hregister an I3C device driverh]hregister an I3C device driver}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj-hhubah}(h]h ]h"]h$]h&]uh1jAhjf,hhhj,hMubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj-jgj-jhjijjuh1hhhhhhNhNubjl)}(h**Parameters** ``struct i3c_driver *drv`` driver to register ``struct module *owner`` module that owns this driver **Description** Register **drv** to the core. **Return** 0 in case of success, a negative error core otherwise.h](jG)}(h**Parameters**h]jv)}(hj-h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj-ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj-ubj)}(hhh](j)}(h.``struct i3c_driver *drv`` driver to register h](j)}(h``struct i3c_driver *drv``h]j)}(hj-h]hstruct i3c_driver *drv}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj-ubj)}(hhh]jG)}(hdriver to registerh]hdriver to register}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhj-hMhj-ubj)}(h6``struct module *owner`` module that owns this driver h](j)}(h``struct module *owner``h]j)}(hj.h]hstruct module *owner}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj.ubj)}(hhh]jG)}(hmodule that owns this driverh]hmodule that owns this driver}(hj4.hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj0.hMhj1.ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhj0.hMhj-ubeh}(h]h ]h"]h$]h&]uh1jhj-ubjG)}(h**Description**h]jv)}(hjV.h]h Description}(hjX.hhhNhNubah}(h]h ]h"]h$]h&]uh1juhjT.ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj-ubjG)}(hRegister **drv** to the core.h](h Register }(hjl.hhhNhNubjv)}(h**drv**h]hdrv}(hjt.hhhNhNubah}(h]h ]h"]h$]h&]uh1juhjl.ubh to the core.}(hjl.hhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj-ubjG)}(h **Return**h]jv)}(hj.h]hReturn}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj.ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj-ubjG)}(h60 in case of success, a negative error core otherwise.h]h60 in case of success, a negative error core otherwise.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chMhj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌"i3c_driver_unregister (C function)c.i3c_driver_unregisterhNtauh1hhhhhhNhNubh)}(hhh](h)}(h3void i3c_driver_unregister (struct i3c_driver *drv)h]h)}(h2void i3c_driver_unregister(struct i3c_driver *drv)h](j)}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM-ubh)}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.hhhj.hM-ubj)}(hi3c_driver_unregisterh]j)}(hi3c_driver_unregisterh]hi3c_driver_unregister}(hj.hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj.ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj.hhhj.hM-ubj)}(h(struct i3c_driver *drv)h]j)}(hstruct i3c_driver *drvh](h)}(hjh]hstruct}(hj/hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj /ubh)}(h h]h }(hj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj /ubh)}(hhh]j)}(h i3c_driverh]h i3c_driver}(hj//hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj,/ubah}(h]h ]h"]h$]h&] refdomainj`reftypejG reftargetj1/modnameN classnameNjj)}j]jO)}jGj.sbc.i3c_driver_unregisterasbuh1hhj /ubh)}(h h]h }(hjO/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj /ubjc)}(hjfh]h*}(hj]/hhhNhNubah}(h]h ]joah"]h$]h&]uh1jbhj /ubj)}(hdrvh]hdrv}(hjj/hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj /ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj /ubah}(h]h ]h"]h$]h&]hhuh1jhj.hhhj.hM-ubeh}(h]h ]h"]h$]h&]hhj3uh1hj4j5hj.hhhj.hM-ubah}(h]j.ah ](j9j:eh"]h$]h&]j>j?)j@huh1hhj.hM-hj.hhubjB)}(hhh]jG)}(hunregister an I3C device driverh]hunregister an I3C device driver}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM-hj/hhubah}(h]h ]h"]h$]h&]uh1jAhj.hhhj.hM-ubeh}(h]h ](j`functioneh"]h$]h&]jej`jfj/jgj/jhjijjuh1hhhhhhNhNubjl)}(hg**Parameters** ``struct i3c_driver *drv`` driver to unregister **Description** Unregister **drv**.h](jG)}(h**Parameters**h]jv)}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj/ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM1hj/ubj)}(hhh]j)}(h0``struct i3c_driver *drv`` driver to unregister h](j)}(h``struct i3c_driver *drv``h]j)}(hj/h]hstruct i3c_driver *drv}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM/hj/ubj)}(hhh]jG)}(hdriver to unregisterh]hdriver to unregister}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jFhj/hM/hj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhj/hM/hj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubjG)}(h**Description**h]jv)}(hj0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj0ubah}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM1hj/ubjG)}(hUnregister **drv**.h](h Unregister }(hj&0hhhNhNubjv)}(h**drv**h]hdrv}(hj.0hhhNhNubah}(h]h ]h"]h$]h&]uh1juhj&0ubh.}(hj&0hhhNhNubeh}(h]h ]h"]h$]h&]uh1jFhd/var/lib/git/docbuild/linux/Documentation/driver-api/i3c/device-driver-api:9: ./drivers/i3c/device.chM0hj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jkhhhhhNhNubeh}(h]i3c-device-driver-apiah ]h"]i3c device driver apiah$]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_handlerjy0error_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}jS0jP0s nametypes}jS0sh}(jP0hhhjjjjjkjpjHjMj j j j jjjjjEjJjjjjjjj8j=jjjjj j j^"jc"j$j$j]&jb&j'(j,(j*j*jd,ji,j.j.u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.