Hsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget"/translations/zh_CN/driver-api/hsimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/zh_TW/driver-api/hsimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/it_IT/driver-api/hsimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ja_JP/driver-api/hsimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ko_KR/driver-api/hsimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/sp_SP/driver-api/hsimodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h-High Speed Synchronous Serial Interface (HSI)h]h-High Speed Synchronous Serial Interface (HSI)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh| | | T|------------ CADATA ------------>|R | | X|------------ CAFLAG ------------>|X | | |<----------- ACREADY ------------| | | | | | | | | | | |< - - - - - ACWAKE - - - - - - -| | | R|<----------- ACDATA -------------|T | | X|<----------- ACFLAG -------------|X | | |------------ CAREADY ----------->| | | | | | | | | | +------------+ +---------------+h]hX+------------+ +---------------+ | Cellular | | Application | | Die | | Die | | | - - - - - - CAWAKE - - - - - - >| | | T|------------ CADATA ------------>|R | | X|------------ CAFLAG ------------>|X | | |<----------- ACREADY ------------| | | | | | | | | | | |< - - - - - ACWAKE - - - - - - -| | | R|<----------- ACDATA -------------|T | | X|<----------- ACFLAG -------------|X | | |------------ CAREADY ----------->| | | | | | | | | | +------------+ +---------------+}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhKhhhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hHSI Subsystem in Linuxh]hHSI Subsystem in Linux}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK)ubh)}(hIn the Linux kernel the hsi subsystem is supposed to be used for HSI devices. The hsi subsystem contains drivers for hsi controllers including support for multi-port controllers and provides a generic API for using the HSI ports.h]hIn the Linux kernel the hsi subsystem is supposed to be used for HSI devices. The hsi subsystem contains drivers for hsi controllers including support for multi-port controllers and provides a generic API for using the HSI ports.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjhhubh)}(hIt also contains HSI client drivers, which make use of the generic API to implement a protocol used on the HSI interface. These client drivers can use an arbitrary number of channels.h]hIt also contains HSI client drivers, which make use of the generic API to implement a protocol used on the HSI interface. These client drivers can use an arbitrary number of channels.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjhhubeh}(h]hsi-subsystem-in-linuxah ]h"]hsi subsystem in linuxah$]h&]uh1hhhhhhhhK)ubh)}(hhh](h)}(hhsi-char Deviceh]hhsi-char Device}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChhhhhK4ubh)}(hXEach port automatically registers a generic client driver called hsi_char, which provides a character device for userspace representing the HSI port. It can be used to communicate via HSI from userspace. Userspace may configure the hsi_char device using the following ioctl commands:h]hXEach port automatically registers a generic client driver called hsi_char, which provides a character device for userspace representing the HSI port. It can be used to communicate via HSI from userspace. Userspace may configure the hsi_char device using the following ioctl commands:}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjChhubhdefinition_list)}(hhh](hdefinition_list_item)}(hHSC_RESET flush the HSI port h](hterm)}(h HSC_RESETh]h HSC_RESET}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jmhhhKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhj;ubah}(h]h ]h"]h$]h&]uh1j}hj)ubeh}(h]h ]h"]h$]h&]uh1jghhhKHhjdhhubjh)}(h HSC_SET_TX set TX configuration h](jn)}(h HSC_SET_TXh]h HSC_SET_TX}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jmhhhKKhjXubj~)}(hhh]h)}(hset TX configurationh]hset TX configuration}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjjubah}(h]h ]h"]h$]h&]uh1j}hjXubeh}(h]h ]h"]h$]h&]uh1jghhhKKhjdhhubjh)}(h HSC_GET_TX get TX configuration h](jn)}(h HSC_GET_TXh]h HSC_GET_TX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jmhhhKNhjubj~)}(hhh]h)}(hget TX configurationh]hget TX configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghhhKNhjdhhubeh}(h]h ]h"]h$]h&]uh1jbhjChhhhhNubeh}(h]hsi-char-deviceah ]h"]hsi-char deviceah$]h&]uh1hhhhhhhhK4ubh)}(hhh](h)}(hThe kernel HSI APIh]hThe kernel HSI API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKQubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlehsi_channel (C struct) c.hsi_channelhNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h hsi_channelh]hdesc_signature_line)}(hstruct hsi_channelh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKubhdesc_sig_space)}(h h]h }(hj hhhNhNubah}(h]h ]wah"]h$]h&]uh1j hjhhhjhKubh desc_name)}(h hsi_channelh]h desc_sig_name)}(hjh]h hsi_channel}(hj"hhhNhNubah}(h]h ]nah"]h$]h&]uh1j hjubah}(h]h ](sig-namedescnameeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h)}(h(channel resource used by the hsi clientsh]h(channel resource used by the hsi clients}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK:hjNhhubah}(h]h ]h"]h$]h&]uh1jLhjhhhjhKubeh}(h]h ](cstructeh"]h$]h&]domainjiobjtypejjdesctypejjnoindex noindexentrynocontentsentryuh1jhhhjhNhNubh container)}(h**Definition**:: struct hsi_channel { unsigned int id; const char *name; }; **Members** ``id`` Channel number ``name`` Channel nameh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjzubh:}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK>hjvubh)}(hJstruct hsi_channel { unsigned int id; const char *name; };h]hJstruct hsi_channel { unsigned int id; const char *name; };}hjsbah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK@hjvubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKEhjvubjc)}(hhh](jh)}(h``id`` Channel number h](jn)}(h``id``h]hliteral)}(hjh]hid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKuh1jj?j@hjVhhhjkhKCubah}(h]jQah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjkhKChjShhubjM)}(hhh]h)}(h#Configuration for RX/TX HSI modulesh]h#Configuration for RX/TX HSI modules}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKDhjhhubah}(h]h ]h"]h$]h&]uh1jLhjShhhjkhKCubeh}(h]h ](jistructeh"]h$]h&]jnjijojjpjjqjrjsuh1jhhhjhNhNubju)}(hX**Definition**:: struct hsi_config { unsigned int mode; struct hsi_channel *channels; unsigned int num_channels; unsigned int num_hw_channels; unsigned int speed; union { unsigned int flow; unsigned int arb_mode; }; }; **Members** ``mode`` Bit transmission mode (STREAM or FRAME) ``channels`` Channel resources used by the client ``num_channels`` Number of channel resources ``num_hw_channels`` Number of channels the transceiver is configured for [1..16] ``speed`` Max bit transmission speed (Kbit/s) ``{unnamed_union}`` anonymous ``flow`` RX flow type (SYNCHRONIZED or PIPELINE) ``arb_mode`` Arbitration mode for TX frame (Round robin, priority)h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKHhjubh)}(hX,struct hsi_config { unsigned int mode; struct hsi_channel *channels; unsigned int num_channels; unsigned int num_hw_channels; unsigned int speed; union { unsigned int flow; unsigned int arb_mode; }; };h]hX,struct hsi_config { unsigned int mode; struct hsi_channel *channels; unsigned int num_channels; unsigned int num_hw_channels; unsigned int speed; union { unsigned int flow; unsigned int arb_mode; }; };}hjsbah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKJhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKVhjubjc)}(hhh](jh)}(h1``mode`` Bit transmission mode (STREAM or FRAME) h](jn)}(h``mode``h]j)}(hj h]hmode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKFhjubj~)}(hhh]h)}(h'Bit transmission mode (STREAM or FRAME)h]h'Bit transmission mode (STREAM or FRAME)}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKFhj#ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghj"hKFhjubjh)}(h2``channels`` Channel resources used by the client h](jn)}(h ``channels``h]j)}(hjFh]hchannels}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKGhj@ubj~)}(hhh]h)}(h$Channel resources used by the clienth]h$Channel resources used by the client}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hKGhj\ubah}(h]h ]h"]h$]h&]uh1j}hj@ubeh}(h]h ]h"]h$]h&]uh1jghj[hKGhjubjh)}(h-``num_channels`` Number of channel resources h](jn)}(h``num_channels``h]j)}(hjh]h num_channels}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKHhjyubj~)}(hhh]h)}(hNumber of channel resourcesh]hNumber of channel resources}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKHhjubah}(h]h ]h"]h$]h&]uh1j}hjyubeh}(h]h ]h"]h$]h&]uh1jghjhKHhjubjh)}(hQ``num_hw_channels`` Number of channels the transceiver is configured for [1..16] h](jn)}(h``num_hw_channels``h]j)}(hjh]hnum_hw_channels}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKIhjubj~)}(hhh]h)}(huh1jj?j@hjhhhjhKRubah}(h]jah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjhKRhjhhubjM)}(hhh]h)}(hHSI client board infoh]hHSI client board info}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKZhj5hhubah}(h]h ]h"]h$]h&]uh1jLhjhhhjhKRubeh}(h]h ](jistructeh"]h$]h&]jnjijojPjpjPjqjrjsuh1jhhhjhNhNubju)}(hXz**Definition**:: struct hsi_board_info { const char *name; unsigned int hsi_id; unsigned int port; struct hsi_config tx_cfg; struct hsi_config rx_cfg; void *platform_data; struct dev_archdata *archdata; }; **Members** ``name`` Name for the HSI device ``hsi_id`` HSI controller id where the client sits ``port`` Port number in the controller where the client sits ``tx_cfg`` HSI TX configuration ``rx_cfg`` HSI RX configuration ``platform_data`` Platform related data ``archdata`` Architecture-dependent device datah](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjXubh:}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK^hjTubh)}(hX struct hsi_board_info { const char *name; unsigned int hsi_id; unsigned int port; struct hsi_config tx_cfg; struct hsi_config rx_cfg; void *platform_data; struct dev_archdata *archdata; };h]hX struct hsi_board_info { const char *name; unsigned int hsi_id; unsigned int port; struct hsi_config tx_cfg; struct hsi_config rx_cfg; void *platform_data; struct dev_archdata *archdata; };}hjusbah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK`hjTubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKjhjTubjc)}(hhh](jh)}(h!``name`` Name for the HSI device h](jn)}(h``name``h]j)}(hjh]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK\hjubj~)}(hhh]h)}(hName for the HSI deviceh]hName for the HSI device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK\hjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhK\hjubjh)}(h3``hsi_id`` HSI controller id where the client sits h](jn)}(h ``hsi_id``h]j)}(hjh]hhsi_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK]hjubj~)}(hhh]h)}(h'HSI controller id where the client sitsh]h'HSI controller id where the client sits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK]hjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhK]hjubjh)}(h=``port`` Port number in the controller where the client sits h](jn)}(h``port``h]j)}(hjh]hport}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK^hjubj~)}(hhh]h)}(h3Port number in the controller where the client sitsh]h3Port number in the controller where the client sits}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hK^hj-ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghj,hK^hjubjh)}(h ``tx_cfg`` HSI TX configuration h](jn)}(h ``tx_cfg``h]j)}(hjPh]htx_cfg}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK_hjJubj~)}(hhh]h)}(hHSI TX configurationh]hHSI TX configuration}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehK_hjfubah}(h]h ]h"]h$]h&]uh1j}hjJubeh}(h]h ]h"]h$]h&]uh1jghjehK_hjubjh)}(h ``rx_cfg`` HSI RX configuration h](jn)}(h ``rx_cfg``h]j)}(hjh]hrx_cfg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK`hjubj~)}(hhh]h)}(hHSI RX configurationh]hHSI RX configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK`hjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhK`hjubjh)}(h(``platform_data`` Platform related data h](jn)}(h``platform_data``h]j)}(hjh]h platform_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKahjubj~)}(hhh]h)}(hPlatform related datah]hPlatform related data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKahjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKahjubjh)}(h/``archdata`` Architecture-dependent device datah](jn)}(h ``archdata``h]j)}(hjh]harchdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKahjubj~)}(hhh]h)}(h"Architecture-dependent device datah]h"Architecture-dependent device data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKbhj ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghj hKahjubeh}(h]h ]h"]h$]h&]uh1jbhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_client (C struct) c.hsi_clienthNtauh1jhjhhhNhNubj)}(hhh](j)}(h hsi_clienth]j)}(hstruct hsi_clienth](j)}(hjh]hstruct}(hjU hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhubj )}(h h]h }(hjc hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjQ hhhjb hKhubj)}(h hsi_clienth]j!)}(hjO h]h hsi_client}(hju hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjq ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjQ hhhjb hKhubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjM hhhjb hKhubah}(h]jH ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjb hKhhjJ hhubjM)}(hhh]h)}(h"HSI client attached to an HSI porth]h"HSI client attached to an HSI port}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKyhj hhubah}(h]h ]h"]h$]h&]uh1jLhjJ hhhjb hKhubeh}(h]h ](jistructeh"]h$]h&]jnjijoj jpj jqjrjsuh1jhhhjhNhNubju)}(hX)**Definition**:: struct hsi_client { struct device device; struct hsi_config tx_cfg; struct hsi_config rx_cfg; }; **Members** ``device`` Driver model representation of the device ``tx_cfg`` HSI TX configuration ``rx_cfg`` HSI RX configurationh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK}hj ubh)}(hstruct hsi_client { struct device device; struct hsi_config tx_cfg; struct hsi_config rx_cfg; };h]hstruct hsi_client { struct device device; struct hsi_config tx_cfg; struct hsi_config rx_cfg; };}hj sbah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj ubjc)}(hhh](jh)}(h5``device`` Driver model representation of the device h](jn)}(h ``device``h]j)}(hj h]hdevice}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK{hj ubj~)}(hhh]h)}(h)Driver model representation of the deviceh]h)Driver model representation of the device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK{hj ubah}(h]h ]h"]h$]h&]uh1j}hj ubeh}(h]h ]h"]h$]h&]uh1jghj hK{hj ubjh)}(h ``tx_cfg`` HSI TX configuration h](jn)}(h ``tx_cfg``h]j)}(hj= h]htx_cfg}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj; ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK|hj7 ubj~)}(hhh]h)}(hHSI TX configurationh]hHSI TX configuration}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjR hK|hjS ubah}(h]h ]h"]h$]h&]uh1j}hj7 ubeh}(h]h ]h"]h$]h&]uh1jghjR hK|hj ubjh)}(h``rx_cfg`` HSI RX configurationh](jn)}(h ``rx_cfg``h]j)}(hjv h]hrx_cfg}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK|hjp ubj~)}(hhh]h)}(hHSI RX configurationh]hHSI RX configuration}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK}hj ubah}(h]h ]h"]h$]h&]uh1j}hjp ubeh}(h]h ]h"]h$]h&]uh1jghj hK|hj ubeh}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_client_driver (C struct)c.hsi_client_driverhNtauh1jhjhhhNhNubj)}(hhh](j)}(hhsi_client_driverh]j)}(hstruct hsi_client_driverh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhj hKubj)}(hhsi_client_driverh]j!)}(hj h]hhsi_client_driver}(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj hhhj hKubah}(h]j ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj hKhj hhubjM)}(hhh]h)}(h"Driver associated to an HSI clienth]h"Driver associated to an HSI client}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jLhj hhhj hKubeh}(h]h ](jistructeh"]h$]h&]jnjijoj* jpj* jqjrjsuh1jhhhjhNhNubju)}(h**Definition**:: struct hsi_client_driver { struct device_driver driver; }; **Members** ``driver`` Driver model representation of the driverh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj2 ubh:}(hj2 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj. ubh)}(hAstruct hsi_client_driver { struct device_driver driver; };h]hAstruct hsi_client_driver { struct device_driver driver; };}hjO sbah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj. ubh)}(h **Members**h]j)}(hj` h]hMembers}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj^ ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj. ubjc)}(hhh]jh)}(h4``driver`` Driver model representation of the driverh](jn)}(h ``driver``h]j)}(hj h]hdriver}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj} ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjy ubj~)}(hhh]h)}(h)Driver model representation of the driverh]h)Driver model representation of the driver}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj ubah}(h]h ]h"]h$]h&]uh1j}hjy ubeh}(h]h ]h"]h$]h&]uh1jghj hKhjv ubah}(h]h ]h"]h$]h&]uh1jbhj. ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_msg (C struct) c.hsi_msghNtauh1jhjhhhNhNubj)}(hhh](j)}(hhsi_msgh]j)}(hstruct hsi_msgh](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhj hKubj)}(hhsi_msgh]j!)}(hj h]hhsi_msg}(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj hhhj hKubah}(h]j ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj hKhj hhubjM)}(hhh]h)}(hHSI message descriptorh]hHSI message descriptor}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jLhj hhhj hKubeh}(h]h ](jistructeh"]h$]h&]jnjijoj3 jpj3 jqjrjsuh1jhhhjhNhNubju)}(hXM**Definition**:: struct hsi_msg { struct list_head link; struct hsi_client *cl; struct sg_table sgt; void *context; void (*complete)(struct hsi_msg *msg); void (*destructor)(struct hsi_msg *msg); int status; unsigned int actual_len; unsigned int channel; unsigned int ttype:1; unsigned int break_frame:1; }; **Members** ``link`` Free to use by the current descriptor owner ``cl`` HSI device client that issues the transfer ``sgt`` Head of the scatterlist array ``context`` Client context data associated to the transfer ``complete`` Transfer completion callback ``destructor`` Destructor to free resources when flushing ``status`` Status of the transfer when completed ``actual_len`` Actual length of data transferred on completion ``channel`` Channel were to TX/RX the message ``ttype`` Transfer type (TX if set, RX otherwise) ``break_frame`` if true HSI will send/receive a break frame. Data buffers are ignored in the request.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj; ubh:}(hj; hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj7 ubh)}(hXstruct hsi_msg { struct list_head link; struct hsi_client *cl; struct sg_table sgt; void *context; void (*complete)(struct hsi_msg *msg); void (*destructor)(struct hsi_msg *msg); int status; unsigned int actual_len; unsigned int channel; unsigned int ttype:1; unsigned int break_frame:1; };h]hXstruct hsi_msg { struct list_head link; struct hsi_client *cl; struct sg_table sgt; void *context; void (*complete)(struct hsi_msg *msg); void (*destructor)(struct hsi_msg *msg); int status; unsigned int actual_len; unsigned int channel; unsigned int ttype:1; unsigned int break_frame:1; };}hjX sbah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj7 ubh)}(h **Members**h]j)}(hji h]hMembers}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjg ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj7 ubjc)}(hhh](jh)}(h5``link`` Free to use by the current descriptor owner h](jn)}(h``link``h]j)}(hj h]hlink}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj ubj~)}(hhh]h)}(h+Free to use by the current descriptor ownerh]h+Free to use by the current descriptor owner}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j}hj ubeh}(h]h ]h"]h$]h&]uh1jghj hKhj ubjh)}(h2``cl`` HSI device client that issues the transfer h](jn)}(h``cl``h]j)}(hj h]hcl}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj ubj~)}(hhh]h)}(h*HSI device client that issues the transferh]h*HSI device client that issues the transfer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j}hj ubeh}(h]h ]h"]h$]h&]uh1jghj hKhj ubjh)}(h&``sgt`` Head of the scatterlist array h](jn)}(h``sgt``h]j)}(hj h]hsgt}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj ubj~)}(hhh]h)}(hHead of the scatterlist arrayh]hHead of the scatterlist array}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j}hj ubeh}(h]h ]h"]h$]h&]uh1jghj hKhj ubjh)}(h;``context`` Client context data associated to the transfer h](jn)}(h ``context``h]j)}(hj3 h]hcontext}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1 ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj- ubj~)}(hhh]h)}(h.Client context data associated to the transferh]h.Client context data associated to the transfer}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjH hKhjI ubah}(h]h ]h"]h$]h&]uh1j}hj- ubeh}(h]h ]h"]h$]h&]uh1jghjH hKhj ubjh)}(h*``complete`` Transfer completion callback h](jn)}(h ``complete``h]j)}(hjl h]hcomplete}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjf ubj~)}(hhh]h)}(hTransfer completion callbackh]hTransfer completion callback}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j}hjf ubeh}(h]h ]h"]h$]h&]uh1jghj hKhj ubjh)}(h:``destructor`` Destructor to free resources when flushing h](jn)}(h``destructor``h]j)}(hj h]h destructor}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj ubj~)}(hhh]h)}(h*Destructor to free resources when flushingh]h*Destructor to free resources when flushing}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j}hj ubeh}(h]h ]h"]h$]h&]uh1jghj hKhj ubjh)}(h1``status`` Status of the transfer when completed h](jn)}(h ``status``h]j)}(hj h]hstatus}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj ubj~)}(hhh]h)}(h%Status of the transfer when completedh]h%Status of the transfer when completed}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j}hj ubeh}(h]h ]h"]h$]h&]uh1jghj hKhj ubjh)}(h?``actual_len`` Actual length of data transferred on completion h](jn)}(h``actual_len``h]j)}(hjh]h actual_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(h/Actual length of data transferred on completionh]h/Actual length of data transferred on completion}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hKhj-ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghj,hKhj ubjh)}(h.``channel`` Channel were to TX/RX the message h](jn)}(h ``channel``h]j)}(hjPh]hchannel}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjJubj~)}(hhh]h)}(h!Channel were to TX/RX the messageh]h!Channel were to TX/RX the message}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKhjfubah}(h]h ]h"]h$]h&]uh1j}hjJubeh}(h]h ]h"]h$]h&]uh1jghjehKhj ubjh)}(h2``ttype`` Transfer type (TX if set, RX otherwise) h](jn)}(h ``ttype``h]j)}(hjh]httype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(h'Transfer type (TX if set, RX otherwise)h]h'Transfer type (TX if set, RX otherwise)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhj ubjh)}(he``break_frame`` if true HSI will send/receive a break frame. Data buffers are ignored in the request.h](jn)}(h``break_frame``h]j)}(hjh]h break_frame}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(hUif true HSI will send/receive a break frame. Data buffers are ignored in the request.h]hUif true HSI will send/receive a break frame. Data buffers are ignored in the request.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhj ubeh}(h]h ]h"]h$]h&]uh1jbhj7 ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_port (C struct) c.hsi_porthNtauh1jhjhhhNhNubj)}(hhh](j)}(hhsi_porth]j)}(hstruct hsi_porth](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKubj )}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhj(hKubj)}(hhsi_porth]j!)}(hjh]hhsi_port}(hj;hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj7ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhj(hKubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhj(hKubah}(h]jah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj(hKhjhhubjM)}(hhh]h)}(hHSI port deviceh]hHSI port device}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjZhhubah}(h]h ]h"]h$]h&]uh1jLhjhhhj(hKubeh}(h]h ](jistructeh"]h$]h&]jnjijojujpjujqjrjsuh1jhhhjhNhNubju)}(hX**Definition**:: struct hsi_port { struct device device; struct hsi_config tx_cfg; struct hsi_config rx_cfg; unsigned int num; unsigned int shared:1; int claimed; struct mutex lock; int (*async)(struct hsi_msg *msg); int (*setup)(struct hsi_client *cl); int (*flush)(struct hsi_client *cl); int (*start_tx)(struct hsi_client *cl); int (*stop_tx)(struct hsi_client *cl); int (*release)(struct hsi_client *cl); struct blocking_notifier_head n_head; }; **Members** ``device`` Driver model representation of the device ``tx_cfg`` Current TX path configuration ``rx_cfg`` Current RX path configuration ``num`` Port number ``shared`` Set when port can be shared by different clients ``claimed`` Reference count of clients which claimed the port ``lock`` Serialize port claim ``async`` Asynchronous transfer callback ``setup`` Callback to set the HSI client configuration ``flush`` Callback to clean the HW state and destroy all pending transfers ``start_tx`` Callback to inform that a client wants to TX data ``stop_tx`` Callback to inform that a client no longer wishes to TX data ``release`` Callback to inform that a client no longer uses the port ``n_head`` Notifier chain for signaling port events to the clients.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj}ubh:}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjyubh)}(hXQstruct hsi_port { struct device device; struct hsi_config tx_cfg; struct hsi_config rx_cfg; unsigned int num; unsigned int shared:1; int claimed; struct mutex lock; int (*async)(struct hsi_msg *msg); int (*setup)(struct hsi_client *cl); int (*flush)(struct hsi_client *cl); int (*start_tx)(struct hsi_client *cl); int (*stop_tx)(struct hsi_client *cl); int (*release)(struct hsi_client *cl); struct blocking_notifier_head n_head; };h]hXQstruct hsi_port { struct device device; struct hsi_config tx_cfg; struct hsi_config rx_cfg; unsigned int num; unsigned int shared:1; int claimed; struct mutex lock; int (*async)(struct hsi_msg *msg); int (*setup)(struct hsi_client *cl); int (*flush)(struct hsi_client *cl); int (*start_tx)(struct hsi_client *cl); int (*stop_tx)(struct hsi_client *cl); int (*release)(struct hsi_client *cl); struct blocking_notifier_head n_head; };}hjsbah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjyubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjyubjc)}(hhh](jh)}(h5``device`` Driver model representation of the device h](jn)}(h ``device``h]j)}(hjh]hdevice}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(h)Driver model representation of the deviceh]h)Driver model representation of the device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhjubjh)}(h)``tx_cfg`` Current TX path configuration h](jn)}(h ``tx_cfg``h]j)}(hjh]htx_cfg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(hCurrent TX path configurationh]hCurrent TX path configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhjubjh)}(h)``rx_cfg`` Current RX path configuration h](jn)}(h ``rx_cfg``h]j)}(hj<h]hrx_cfg}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj6ubj~)}(hhh]h)}(hCurrent RX path configurationh]hCurrent RX path configuration}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKhjRubah}(h]h ]h"]h$]h&]uh1j}hj6ubeh}(h]h ]h"]h$]h&]uh1jghjQhKhjubjh)}(h``num`` Port number h](jn)}(h``num``h]j)}(hjuh]hnum}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjoubj~)}(hhh]h)}(h Port numberh]h Port number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjoubeh}(h]h ]h"]h$]h&]uh1jghjhKhjubjh)}(h<``shared`` Set when port can be shared by different clients h](jn)}(h ``shared``h]j)}(hjh]hshared}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(h0Set when port can be shared by different clientsh]h0Set when port can be shared by different clients}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhjubjh)}(h>``claimed`` Reference count of clients which claimed the port h](jn)}(h ``claimed``h]j)}(hjh]hclaimed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(h1Reference count of clients which claimed the porth]h1Reference count of clients which claimed the port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhjubjh)}(h``lock`` Serialize port claim h](jn)}(h``lock``h]j)}(hj h]hlock}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(hSerialize port claimh]hSerialize port claim}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKhj6ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghj5hKhjubjh)}(h)``async`` Asynchronous transfer callback h](jn)}(h ``async``h]j)}(hjYh]hasync}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjSubj~)}(hhh]h)}(hAsynchronous transfer callbackh]hAsynchronous transfer callback}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhKhjoubah}(h]h ]h"]h$]h&]uh1j}hjSubeh}(h]h ]h"]h$]h&]uh1jghjnhKhjubjh)}(h7``setup`` Callback to set the HSI client configuration h](jn)}(h ``setup``h]j)}(hjh]hsetup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(h,Callback to set the HSI client configurationh]h,Callback to set the HSI client configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhjubjh)}(hK``flush`` Callback to clean the HW state and destroy all pending transfers h](jn)}(h ``flush``h]j)}(hjh]hflush}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(h@Callback to clean the HW state and destroy all pending transfersh]h@Callback to clean the HW state and destroy all pending transfers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhjubjh)}(h?``start_tx`` Callback to inform that a client wants to TX data h](jn)}(h ``start_tx``h]j)}(hjh]hstart_tx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjubj~)}(hhh]h)}(h1Callback to inform that a client wants to TX datah]h1Callback to inform that a client wants to TX data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKhjubjh)}(hI``stop_tx`` Callback to inform that a client no longer wishes to TX data h](jn)}(h ``stop_tx``h]j)}(hj=h]hstop_tx}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj7ubj~)}(hhh]h)}(huh1jj?j@hjhhhjhKubah}(h]jah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjhKhjhhubjM)}(hhh]h)}(hHSI controller deviceh]hHSI controller device}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjHhhubah}(h]h ]h"]h$]h&]uh1jLhjhhhjhKubeh}(h]h ](jistructeh"]h$]h&]jnjijojcjpjcjqjrjsuh1jhhhjhNhNubju)}(hX**Definition**:: struct hsi_controller { struct device device; struct module *owner; unsigned int id; unsigned int num_ports; struct hsi_port **port; }; **Members** ``device`` Driver model representation of the device ``owner`` Pointer to the module owning the controller ``id`` HSI controller ID ``num_ports`` Number of ports in the HSI controller ``port`` Array of HSI portsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjkubh:}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hjgubh)}(hstruct hsi_controller { struct device device; struct module *owner; unsigned int id; unsigned int num_ports; struct hsi_port **port; };h]hstruct hsi_controller { struct device device; struct module *owner; unsigned int id; unsigned int num_ports; struct hsi_port **port; };}hjsbah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hjgubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjgubjc)}(hhh](jh)}(h5``device`` Driver model representation of the device h](jn)}(h ``device``h]j)}(hjh]hdevice}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjubj~)}(hhh]h)}(h)Driver model representation of the deviceh]h)Driver model representation of the device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhMhjubjh)}(h6``owner`` Pointer to the module owning the controller h](jn)}(h ``owner``h]j)}(hjh]howner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hjubj~)}(hhh]h)}(h+Pointer to the module owning the controllerh]h+Pointer to the module owning the controller}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhM hjubjh)}(h``id`` HSI controller ID h](jn)}(h``id``h]j)}(hj*h]hid}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hj$ubj~)}(hhh]h)}(hHSI controller IDh]hHSI controller ID}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hM hj@ubah}(h]h ]h"]h$]h&]uh1j}hj$ubeh}(h]h ]h"]h$]h&]uh1jghj?hM hjubjh)}(h4``num_ports`` Number of ports in the HSI controller h](jn)}(h ``num_ports``h]j)}(hjch]h num_ports}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hj]ubj~)}(hhh]h)}(h%Number of ports in the HSI controllerh]h%Number of ports in the HSI controller}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhM hjyubah}(h]h ]h"]h$]h&]uh1j}hj]ubeh}(h]h ]h"]h$]h&]uh1jghjxhM hjubjh)}(h``port`` Array of HSI portsh](jn)}(h``port``h]j)}(hjh]hport}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hjubj~)}(hhh]h)}(hArray of HSI portsh]hArray of HSI ports}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhM hjubeh}(h]h ]h"]h$]h&]uh1jbhjgubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_id (C function)c.hsi_idhNtauh1jhjhhhNhNubj)}(hhh](j)}(h+unsigned int hsi_id (struct hsi_client *cl)h]j)}(h*unsigned int hsi_id(struct hsi_client *cl)h](hdesc_sig_keyword_type)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMIubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMIubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMIubj )}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMIubj)}(hhsi_idh]j!)}(hhsi_idh]hhsi_id}(hj6hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj2ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMIubhdesc_parameterlist)}(h(struct hsi_client *cl)h]hdesc_parameter)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj )}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjRubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hjthhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjqubah}(h]h ]h"]h$]h&] refdomainjireftype identifier reftargetjvmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jj8sbc.hsi_idasbuh1hhjRubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjRubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjRubj!)}(hclh]hcl}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjRubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjLubah}(h]h ]h"]h$]h&]jjuh1jJhjhhhjhMIubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMIubah}(h]jah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjhMIhjhhubjM)}(hhh]h)}(h,Get HSI controller ID associated to a clienth]h,Get HSI controller ID associated to a client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMDhjhhubah}(h]h ]h"]h$]h&]uh1jLhjhhhjhMIubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojjpjjqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_client *cl`` Pointer to a HSI client **Description** Return the controller id where the client is attached toh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMHhjubjc)}(hhh]jh)}(h2``struct hsi_client *cl`` Pointer to a HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hj&h]hstruct hsi_client *cl}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMEhj ubj~)}(hhh]h)}(hPointer to a HSI clienth]hPointer to a HSI client}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMEhj<ubah}(h]h ]h"]h$]h&]uh1j}hj ubeh}(h]h ]h"]h$]h&]uh1jghj;hMEhjubah}(h]h ]h"]h$]h&]uh1jbhjubh)}(h**Description**h]j)}(hjah]h Description}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj_ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMGhjubh)}(h8Return the controller id where the client is attached toh]h8Return the controller id where the client is attached to}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMGhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_port_id (C function) c.hsi_port_idhNtauh1jhjhhhNhNubj)}(hhh](j)}(h0unsigned int hsi_port_id (struct hsi_client *cl)h]j)}(h/unsigned int hsi_port_id(struct hsi_client *cl)h](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMTubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMTubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMTubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMTubj)}(h hsi_port_idh]j!)}(h hsi_port_idh]h hsi_port_id}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMTubjK)}(h(struct hsi_client *cl)h]jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.hsi_port_idasbuh1hhjubj )}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hjXhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjubah}(h]h ]h"]h$]h&]jjuh1jJhjhhhjhMTubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMTubah}(h]jah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjhMThjhhubjM)}(hhh]h)}(h,Gets the port number a client is attached toh]h,Gets the port number a client is attached to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMOhjhhubah}(h]h ]h"]h$]h&]uh1jLhjhhhjhMTubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojjpjjqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_client *cl`` Pointer to HSI client **Description** Return the port number associated to the clienth](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMShjubjc)}(hhh]jh)}(h0``struct hsi_client *cl`` Pointer to HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hjh]hstruct hsi_client *cl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMPhjubj~)}(hhh]h)}(hPointer to HSI clienth]hPointer to HSI client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMPhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhMPhjubah}(h]h ]h"]h$]h&]uh1jbhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMRhjubh)}(h/Return the port number associated to the clienth]h/Return the port number associated to the client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMRhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_setup (C function) c.hsi_setuphNtauh1jhjhhhNhNubj)}(hhh](j)}(h%int hsi_setup (struct hsi_client *cl)h]j)}(h$int hsi_setup(struct hsi_client *cl)h](j)}(hinth]hint}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMbubj )}(h h]h }(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj?hhhjQhMbubj)}(h hsi_setuph]j!)}(h hsi_setuph]h hsi_setup}(hjdhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj`ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj?hhhjQhMbubjK)}(h(struct hsi_client *cl)h]jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetjmodnameN classnameNjj)}j]j)}jjfsb c.hsi_setupasbuh1hhj|ubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj!)}(hclh]hcl}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj|ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjxubah}(h]h ]h"]h$]h&]jjuh1jJhj?hhhjQhMbubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj;hhhjQhMbubah}(h]j6ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjQhMbhj8hhubjM)}(hhh]h)}(hConfigure the client's porth]hConfigure the client’s port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMZhjhhubah}(h]h ]h"]h$]h&]uh1jLhj8hhhjQhMbubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojjpjjqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_client *cl`` Pointer to the HSI client **Description** When sharing ports, clients should either relay on a single client setup or have the same setup for all of them. Return -errno on failure, 0 on successh](h)}(h**Parameters**h]j)}(hj%h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj#ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM^hjubjc)}(hhh]jh)}(h4``struct hsi_client *cl`` Pointer to the HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hjDh]hstruct hsi_client *cl}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM[hj>ubj~)}(hhh]h)}(hPointer to the HSI clienth]hPointer to the HSI client}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhM[hjZubah}(h]h ]h"]h$]h&]uh1j}hj>ubeh}(h]h ]h"]h$]h&]uh1jghjYhM[hj;ubah}(h]h ]h"]h$]h&]uh1jbhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj}ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM]hjubh)}(hpWhen sharing ports, clients should either relay on a single client setup or have the same setup for all of them.h]hpWhen sharing ports, clients should either relay on a single client setup or have the same setup for all of them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM]hjubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM`hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_flush (C function) c.hsi_flushhNtauh1jhjhhhNhNubj)}(hhh](j)}(h%int hsi_flush (struct hsi_client *cl)h]j)}(h$int hsi_flush(struct hsi_client *cl)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMrubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMrubj)}(h hsi_flushh]j!)}(h hsi_flushh]h hsi_flush}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMrubjK)}(h(struct hsi_client *cl)h]jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj+ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj0modnameN classnameNjj)}j]j)}jjsb c.hsi_flushasbuh1hhj ubj )}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj!)}(hclh]hcl}(hjihhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjubah}(h]h ]h"]h$]h&]jjuh1jJhjhhhjhMrubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMrubah}(h]jah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjhMrhjhhubjM)}(hhh]h)}(h3Flush all pending transactions on the client's porth]h5Flush all pending transactions on the client’s port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMjhjhhubah}(h]h ]h"]h$]h&]uh1jLhjhhhjhMrubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojjpjjqjrjsuh1jhhhjhNhNubju)}(hX **Parameters** ``struct hsi_client *cl`` Pointer to the HSI client **Description** This function will destroy all pending hsi_msg in the port and reset the HW port so it is ready to receive and transmit from a clean state. Return -errno on failure, 0 on successh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMnhjubjc)}(hhh]jh)}(h4``struct hsi_client *cl`` Pointer to the HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hjh]hstruct hsi_client *cl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMkhjubj~)}(hhh]h)}(hPointer to the HSI clienth]hPointer to the HSI client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMkhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhMkhjubah}(h]h ]h"]h$]h&]uh1jbhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMmhjubh)}(hThis function will destroy all pending hsi_msg in the port and reset the HW port so it is ready to receive and transmit from a clean state.h]hThis function will destroy all pending hsi_msg in the port and reset the HW port so it is ready to receive and transmit from a clean state.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMmhjubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMphjubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_async_read (C function)c.hsi_async_readhNtauh1jhjhhhNhNubj)}(hhh](j)}(h?int hsi_async_read (struct hsi_client *cl, struct hsi_msg *msg)h]j)}(h>int hsi_async_read(struct hsi_client *cl, struct hsi_msg *msg)h](j)}(hinth]hint}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMubj )}(h h]h }(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj_hhhjqhMubj)}(hhsi_async_readh]j!)}(hhsi_async_readh]hhsi_async_read}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj_hhhjqhMubjK)}(h,(struct hsi_client *cl, struct hsi_msg *msg)h](jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hsi_async_readasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjubjQ)}(hstruct hsi_msg *msgh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hj0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj-ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj2modnameN classnameNjj)}j]jc.hsi_async_readasbuh1hhjubj )}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hmsgh]hmsg}(hjihhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjubeh}(h]h ]h"]h$]h&]jjuh1jJhj_hhhjqhMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj[hhhjqhMubah}(h]jVah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjqhMhjXhhubjM)}(hhh]h)}(hSubmit a read transferh]hSubmit a read transfer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMzhjhhubah}(h]h ]h"]h$]h&]uh1jLhjXhhhjqhMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojjpjjqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_client *cl`` Pointer to the HSI client ``struct hsi_msg *msg`` HSI message descriptor of the transfer **Description** Return -errno on failure, 0 on successh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM~hjubjc)}(hhh](jh)}(h4``struct hsi_client *cl`` Pointer to the HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hjh]hstruct hsi_client *cl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM{hjubj~)}(hhh]h)}(hPointer to the HSI clienth]hPointer to the HSI client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM{hjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhM{hjubjh)}(h?``struct hsi_msg *msg`` HSI message descriptor of the transfer h](jn)}(h``struct hsi_msg *msg``h]j)}(hj h]hstruct hsi_msg *msg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM|hjubj~)}(hhh]h)}(h&HSI message descriptor of the transferh]h&HSI message descriptor of the transfer}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hM|hj#ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghj"hM|hjubeh}(h]h ]h"]h$]h&]uh1jbhjubh)}(h**Description**h]j)}(hjHh]h Description}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjFubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM~hjubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM~hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_async_write (C function)c.hsi_async_writehNtauh1jhjhhhNhNubj)}(hhh](j)}(h@int hsi_async_write (struct hsi_client *cl, struct hsi_msg *msg)h]j)}(h?int hsi_async_write(struct hsi_client *cl, struct hsi_msg *msg)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMubj)}(hhsi_async_writeh]j!)}(hhsi_async_writeh]hhsi_async_write}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMubjK)}(h,(struct hsi_client *cl, struct hsi_msg *msg)h](jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hsi_async_writeasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hj#hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjubjQ)}(hstruct hsi_msg *msgh](j)}(hjh]hstruct}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj )}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hjZhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjWubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj\modnameN classnameNjj)}j]jc.hsi_async_writeasbuh1hhj8ubj )}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj!)}(hmsgh]hmsg}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjubeh}(h]h ]h"]h$]h&]jjuh1jJhjhhhjhMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMubah}(h]jah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjhMhjhhubjM)}(hhh]h)}(hSubmit a write transferh]hSubmit a write transfer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jLhjhhhjhMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojjpjjqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_client *cl`` Pointer to the HSI client ``struct hsi_msg *msg`` HSI message descriptor of the transfer **Description** Return -errno on failure, 0 on successh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjubjc)}(hhh](jh)}(h4``struct hsi_client *cl`` Pointer to the HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hjh]hstruct hsi_client *cl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjubj~)}(hhh]h)}(hPointer to the HSI clienth]hPointer to the HSI client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhMhjubjh)}(h?``struct hsi_msg *msg`` HSI message descriptor of the transfer h](jn)}(h``struct hsi_msg *msg``h]j)}(hj7h]hstruct hsi_msg *msg}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj1ubj~)}(hhh]h)}(h&HSI message descriptor of the transferh]h&HSI message descriptor of the transfer}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhjMubah}(h]h ]h"]h$]h&]uh1j}hj1ubeh}(h]h ]h"]h$]h&]uh1jghjLhMhjubeh}(h]h ]h"]h$]h&]uh1jbhjubh)}(h**Description**h]j)}(hjrh]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjpubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_start_tx (C function)c.hsi_start_txhNtauh1jhjhhhNhNubj)}(hhh](j)}(h(int hsi_start_tx (struct hsi_client *cl)h]j)}(h'int hsi_start_tx(struct hsi_client *cl)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMubj)}(h hsi_start_txh]j!)}(h hsi_start_txh]h hsi_start_tx}(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMubjK)}(h(struct hsi_client *cl)h]jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj modnameN classnameNjj)}j]j)}jjsbc.hsi_start_txasbuh1hhjubj )}(h h]h }(hj2 hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj@ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hjM hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjubah}(h]h ]h"]h$]h&]jjuh1jJhjhhhjhMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMubah}(h]jah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjhMhjhhubjM)}(hhh]h)}(h3Signal the port that the client wants to start a TXh]h3Signal the port that the client wants to start a TX}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjt hhubah}(h]h ]h"]h$]h&]uh1jLhjhhhjhMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj jpj jqjrjsuh1jhhhjhNhNubju)}(h~**Parameters** ``struct hsi_client *cl`` Pointer to the HSI client **Description** Return -errno on failure, 0 on successh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj ubjc)}(hhh]jh)}(h4``struct hsi_client *cl`` Pointer to the HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hj h]hstruct hsi_client *cl}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj ubj~)}(hhh]h)}(hPointer to the HSI clienth]hPointer to the HSI client}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j}hj ubeh}(h]h ]h"]h$]h&]uh1jghj hMhj ubah}(h]h ]h"]h$]h&]uh1jbhj ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj ubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hj !hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_stop_tx (C function) c.hsi_stop_txhNtauh1jhjhhhNhNubj)}(hhh](j)}(h'int hsi_stop_tx (struct hsi_client *cl)h]j)}(h&int hsi_stop_tx(struct hsi_client *cl)h](j)}(hinth]hint}(hj8!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4!hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMubj )}(h h]h }(hjG!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj4!hhhjF!hMubj)}(h hsi_stop_txh]j!)}(h hsi_stop_txh]h hsi_stop_tx}(hjY!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjU!ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj4!hhhjF!hMubjK)}(h(struct hsi_client *cl)h]jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hju!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjq!ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj!ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj!modnameN classnameNjj)}j]j)}jj[!sb c.hsi_stop_txasbuh1hhjq!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjq!ubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq!ubj!)}(hclh]hcl}(hj!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjq!ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjm!ubah}(h]h ]h"]h$]h&]jjuh1jJhj4!hhhjF!hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj0!hhhjF!hMubah}(h]j+!ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjF!hMhj-!hhubjM)}(hhh]h)}(h;Signal the port that the client no longer wants to transmith]h;Signal the port that the client no longer wants to transmit}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj!hhubah}(h]h ]h"]h$]h&]uh1jLhj-!hhhjF!hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj"jpj"jqjrjsuh1jhhhjhNhNubju)}(h~**Parameters** ``struct hsi_client *cl`` Pointer to the HSI client **Description** Return -errno on failure, 0 on successh](h)}(h**Parameters**h]j)}(hj"h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj"ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj"ubjc)}(hhh]jh)}(h4``struct hsi_client *cl`` Pointer to the HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hj9"h]hstruct hsi_client *cl}(hj;"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7"ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj3"ubj~)}(hhh]h)}(hPointer to the HSI clienth]hPointer to the HSI client}(hjR"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN"hMhjO"ubah}(h]h ]h"]h$]h&]uh1j}hj3"ubeh}(h]h ]h"]h$]h&]uh1jghjN"hMhj0"ubah}(h]h ]h"]h$]h&]uh1jbhj"ubh)}(h**Description**h]j)}(hjt"h]h Description}(hjv"hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjr"ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj"ubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j(hsi_port_unregister_clients (C function)c.hsi_port_unregister_clientshNtauh1jhjhhhNhNubj)}(hhh](j)}(h8void hsi_port_unregister_clients (struct hsi_port *port)h]j)}(h7void hsi_port_unregister_clients(struct hsi_port *port)h](j)}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMfubj )}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"hhhj"hMfubj)}(hhsi_port_unregister_clientsh]j!)}(hhsi_port_unregister_clientsh]hhsi_port_unregister_clients}(hj"hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj"ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj"hhhj"hMfubjK)}(h(struct hsi_port *port)h]jQ)}(hstruct hsi_port *porth](j)}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj )}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"ubh)}(hhh]j!)}(hhsi_porth]hhsi_port}(hj#hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj#ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj#modnameN classnameNjj)}j]j)}jj"sbc.hsi_port_unregister_clientsasbuh1hhj"ubj )}(h h]h }(hj4#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"ubj)}(hjh]h*}(hjB#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj!)}(hporth]hport}(hjO#hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj"ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj"ubah}(h]h ]h"]h$]h&]jjuh1jJhj"hhhj"hMfubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj"hhhj"hMfubah}(h]j"ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj"hMfhj"hhubjM)}(hhh]h)}(hUnregister an HSI porth]hUnregister an HSI port}(hjy#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMchjv#hhubah}(h]h ]h"]h$]h&]uh1jLhj"hhhj"hMfubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj#jpj#jqjrjsuh1jhhhjhNhNubju)}(hF**Parameters** ``struct hsi_port *port`` The HSI port to unregisterh](h)}(h**Parameters**h]j)}(hj#h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj#ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMghj#ubjc)}(hhh]jh)}(h4``struct hsi_port *port`` The HSI port to unregisterh](jn)}(h``struct hsi_port *port``h]j)}(hj#h]hstruct hsi_port *port}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMihj#ubj~)}(hhh]h)}(hThe HSI port to unregisterh]hThe HSI port to unregister}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMdhj#ubah}(h]h ]h"]h$]h&]uh1j}hj#ubeh}(h]h ]h"]h$]h&]uh1jghj#hMihj#ubah}(h]h ]h"]h$]h&]uh1jbhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&hsi_unregister_controller (C function)c.hsi_unregister_controllerhNtauh1jhjhhhNhNubj)}(hhh](j)}(h;void hsi_unregister_controller (struct hsi_controller *hsi)h]j)}(h:void hsi_unregister_controller(struct hsi_controller *hsi)h](j)}(hvoidh]hvoid}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMpubj )}(h h]h }(hj#$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$hhhj"$hMpubj)}(hhsi_unregister_controllerh]j!)}(hhsi_unregister_controllerh]hhsi_unregister_controller}(hj5$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj1$ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj$hhhj"$hMpubjK)}(h(struct hsi_controller *hsi)h]jQ)}(hstruct hsi_controller *hsih](j)}(hjh]hstruct}(hjQ$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM$ubj )}(h h]h }(hj^$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjM$ubh)}(hhh]j!)}(hhsi_controllerh]hhsi_controller}(hjo$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjl$ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetjq$modnameN classnameNjj)}j]j)}jj7$sbc.hsi_unregister_controllerasbuh1hhjM$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjM$ubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM$ubj!)}(hhsih]hhsi}(hj$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjM$ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjI$ubah}(h]h ]h"]h$]h&]jjuh1jJhj$hhhj"$hMpubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj $hhhj"$hMpubah}(h]j$ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj"$hMphj $hhubjM)}(hhh]h)}(hUnregister an HSI controllerh]hUnregister an HSI controller}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMmhj$hhubah}(h]h ]h"]h$]h&]uh1jLhj $hhhj"$hMpubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj$jpj$jqjrjsuh1jhhhjhNhNubju)}(hO**Parameters** ``struct hsi_controller *hsi`` The HSI controller to registerh](h)}(h**Parameters**h]j)}(hj$h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj$ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMqhj$ubjc)}(hhh]jh)}(h=``struct hsi_controller *hsi`` The HSI controller to registerh](jn)}(h``struct hsi_controller *hsi``h]j)}(hj%h]hstruct hsi_controller *hsi}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMshj%ubj~)}(hhh]h)}(hThe HSI controller to registerh]hThe HSI controller to register}(hj.%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMnhj+%ubah}(h]h ]h"]h$]h&]uh1j}hj%ubeh}(h]h ]h"]h$]h&]uh1jghj*%hMshj %ubah}(h]h ]h"]h$]h&]uh1jbhj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$hsi_register_controller (C function)c.hsi_register_controllerhNtauh1jhjhhhNhNubj)}(hhh](j)}(h8int hsi_register_controller (struct hsi_controller *hsi)h]j)}(h7int hsi_register_controller(struct hsi_controller *hsi)h](j)}(hinth]hint}(hjo%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk%hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM}ubj )}(h h]h }(hj~%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjk%hhhj}%hM}ubj)}(hhsi_register_controllerh]j!)}(hhsi_register_controllerh]hhsi_register_controller}(hj%hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj%ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjk%hhhj}%hM}ubjK)}(h(struct hsi_controller *hsi)h]jQ)}(hstruct hsi_controller *hsih](j)}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj )}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj%ubh)}(hhh]j!)}(hhsi_controllerh]hhsi_controller}(hj%hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj%ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj%modnameN classnameNjj)}j]j)}jj%sbc.hsi_register_controllerasbuh1hhj%ubj )}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj!)}(hhsih]hhsi}(hj&hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj%ubah}(h]h ]h"]h$]h&]jjuh1jJhjk%hhhj}%hM}ubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjg%hhhj}%hM}ubah}(h]jb%ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj}%hM}hjd%hhubjM)}(hhh]h)}(h(Register an HSI controller and its portsh]h(Register an HSI controller and its ports}(hj/&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMxhj,&hhubah}(h]h ]h"]h$]h&]uh1jLhjd%hhhj}%hM}ubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojG&jpjG&jqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_controller *hsi`` The HSI controller to register **Description** Returns -errno on failure, 0 on success.h](h)}(h**Parameters**h]j)}(hjQ&h]h Parameters}(hjS&hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjO&ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM|hjK&ubjc)}(hhh]jh)}(h>``struct hsi_controller *hsi`` The HSI controller to register h](jn)}(h``struct hsi_controller *hsi``h]j)}(hjp&h]hstruct hsi_controller *hsi}(hjr&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn&ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMyhjj&ubj~)}(hhh]h)}(hThe HSI controller to registerh]hThe HSI controller to register}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMyhj&ubah}(h]h ]h"]h$]h&]uh1j}hjj&ubeh}(h]h ]h"]h$]h&]uh1jghj&hMyhjg&ubah}(h]h ]h"]h$]h&]uh1jbhjK&ubh)}(h**Description**h]j)}(hj&h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj&ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM{hjK&ubh)}(h(Returns -errno on failure, 0 on success.h]h(Returns -errno on failure, 0 on success.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM{hjK&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'hsi_register_client_driver (C function)c.hsi_register_client_driverhNtauh1jhjhhhNhNubj)}(hhh](j)}(h>int hsi_register_client_driver (struct hsi_client_driver *drv)h]j)}(h=int hsi_register_client_driver(struct hsi_client_driver *drv)h](j)}(hinth]hint}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&hhhj&hMubj)}(hhsi_register_client_driverh]j!)}(hhsi_register_client_driverh]hhsi_register_client_driver}(hj'hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj 'ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj&hhhj&hMubjK)}(h(struct hsi_client_driver *drv)h]jQ)}(hstruct hsi_client_driver *drvh](j)}(hjh]hstruct}(hj-'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)'ubj )}(h h]h }(hj:'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj)'ubh)}(hhh]j!)}(hhsi_client_driverh]hhsi_client_driver}(hjK'hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjH'ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetjM'modnameN classnameNjj)}j]j)}jj'sbc.hsi_register_client_driverasbuh1hhj)'ubj )}(h h]h }(hjk'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj)'ubj)}(hjh]h*}(hjy'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)'ubj!)}(hdrvh]hdrv}(hj'hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj)'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj%'ubah}(h]h ]h"]h$]h&]jjuh1jJhj&hhhj&hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj&hhhj&hMubah}(h]j&ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj&hMhj&hhubjM)}(hhh]h)}(h%Register an HSI client to the HSI bush]h%Register an HSI client to the HSI bus}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'hhubah}(h]h ]h"]h$]h&]uh1jLhj&hhhj&hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj'jpj'jqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_client_driver *drv`` HSI client driver to register **Description** Returns -errno on failure, 0 on success.h](h)}(h**Parameters**h]j)}(hj'h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj'ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'ubjc)}(hhh]jh)}(h@``struct hsi_client_driver *drv`` HSI client driver to register h](jn)}(h!``struct hsi_client_driver *drv``h]j)}(hj'h]hstruct hsi_client_driver *drv}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'ubj~)}(hhh]h)}(hHSI client driver to registerh]hHSI client driver to register}(hj (hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMhj(ubah}(h]h ]h"]h$]h&]uh1j}hj'ubeh}(h]h ]h"]h$]h&]uh1jghj(hMhj'ubah}(h]h ]h"]h$]h&]uh1jbhj'ubh)}(h**Description**h]j)}(hj,(h]h Description}(hj.(hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj*(ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'ubh)}(h(Returns -errno on failure, 0 on success.h]h(Returns -errno on failure, 0 on success.}(hjB(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_put_controller (C function)c.hsi_put_controllerhNtauh1jhjhhhNhNubj)}(hhh](j)}(h4void hsi_put_controller (struct hsi_controller *hsi)h]j)}(h3void hsi_put_controller(struct hsi_controller *hsi)h](j)}(hvoidh]hvoid}(hjq(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm(hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjm(hhhj(hMubj)}(hhsi_put_controllerh]j!)}(hhsi_put_controllerh]hhsi_put_controller}(hj(hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj(ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjm(hhhj(hMubjK)}(h(struct hsi_controller *hsi)h]jQ)}(hstruct hsi_controller *hsih](j)}(hjh]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj(ubh)}(hhh]j!)}(hhsi_controllerh]hhsi_controller}(hj(hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj(ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj(modnameN classnameNjj)}j]j)}jj(sbc.hsi_put_controllerasbuh1hhj(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj!)}(hhsih]hhsi}(hj)hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj(ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj(ubah}(h]h ]h"]h$]h&]jjuh1jJhjm(hhhj(hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hji(hhhj(hMubah}(h]jd(ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj(hMhjf(hhubjM)}(hhh]h)}(hFree an HSI controllerh]hFree an HSI controller}(hj1)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj.)hhubah}(h]h ]h"]h$]h&]uh1jLhjf(hhhj(hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojI)jpjI)jqjrjsuh1jhhhjhNhNubju)}(hX,**Parameters** ``struct hsi_controller *hsi`` Pointer to the HSI controller to freed **Description** HSI controller drivers should only use this function if they need to free their allocated hsi_controller structures before a successful call to hsi_register_controller. Other use is not allowed.h](h)}(h**Parameters**h]j)}(hjS)h]h Parameters}(hjU)hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjQ)ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjM)ubjc)}(hhh]jh)}(hF``struct hsi_controller *hsi`` Pointer to the HSI controller to freed h](jn)}(h``struct hsi_controller *hsi``h]j)}(hjr)h]hstruct hsi_controller *hsi}(hjt)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp)ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjl)ubj~)}(hhh]h)}(h&Pointer to the HSI controller to freedh]h&Pointer to the HSI controller to freed}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1j}hjl)ubeh}(h]h ]h"]h$]h&]uh1jghj)hMhji)ubah}(h]h ]h"]h$]h&]uh1jbhjM)ubh)}(h**Description**h]j)}(hj)h]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj)ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjM)ubh)}(hHSI controller drivers should only use this function if they need to free their allocated hsi_controller structures before a successful call to hsi_register_controller. Other use is not allowed.h]hHSI controller drivers should only use this function if they need to free their allocated hsi_controller structures before a successful call to hsi_register_controller. Other use is not allowed.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjM)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!hsi_alloc_controller (C function)c.hsi_alloc_controllerhNtauh1jhjhhhNhNubj)}(hhh](j)}(hPstruct hsi_controller * hsi_alloc_controller (unsigned int n_ports, gfp_t flags)h]j)}(hNstruct hsi_controller *hsi_alloc_controller(unsigned int n_ports, gfp_t flags)h](j)}(hjh]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj)hhhj)hMubh)}(hhh]j!)}(hhsi_controllerh]hhsi_controller}(hj*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj*modnameN classnameNjj)}j]j)}jhsi_alloc_controllersbc.hsi_alloc_controllerasbuh1hhj)hhhj)hMubj )}(h h]h }(hj2*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj)hhhj)hMubj)}(hjh]h*}(hj@*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhj)hMubj)}(hhsi_alloc_controllerh]j!)}(hj/*h]hhsi_alloc_controller}(hjQ*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjM*ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj)hhhj)hMubjK)}(h#(unsigned int n_ports, gfp_t flags)h](jQ)}(hunsigned int n_portsh](j)}(hunsignedh]hunsigned}(hjl*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh*ubj )}(h h]h }(hjz*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjh*ubj)}(hinth]hint}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh*ubj )}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjh*ubj!)}(hn_portsh]hn_ports}(hj*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjh*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjd*ubjQ)}(h gfp_t flagsh](h)}(hhh]j!)}(hgfp_th]hgfp_t}(hj*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj*modnameN classnameNjj)}j]j-*c.hsi_alloc_controllerasbuh1hhj*ubj )}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj*ubj!)}(hflagsh]hflags}(hj*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjd*ubeh}(h]h ]h"]h$]h&]jjuh1jJhj)hhhj)hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj)hhhj)hMubah}(h]j)ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj)hMhj)hhubjM)}(hhh]h)}(h(Allocate an HSI controller and its portsh]h(Allocate an HSI controller and its ports}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj+hhubah}(h]h ]h"]h$]h&]uh1jLhj)hhhj)hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj.+jpj.+jqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``unsigned int n_ports`` Number of ports on the HSI controller ``gfp_t flags`` Kernel allocation flags **Description** Return NULL on failure or a pointer to an hsi_controller on success.h](h)}(h**Parameters**h]j)}(hj8+h]h Parameters}(hj:+hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj6+ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj2+ubjc)}(hhh](jh)}(h?``unsigned int n_ports`` Number of ports on the HSI controller h](jn)}(h``unsigned int n_ports``h]j)}(hjW+h]hunsigned int n_ports}(hjY+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjU+ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjQ+ubj~)}(hhh]h)}(h%Number of ports on the HSI controllerh]h%Number of ports on the HSI controller}(hjp+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjl+hMhjm+ubah}(h]h ]h"]h$]h&]uh1j}hjQ+ubeh}(h]h ]h"]h$]h&]uh1jghjl+hMhjN+ubjh)}(h(``gfp_t flags`` Kernel allocation flags h](jn)}(h``gfp_t flags``h]j)}(hj+h]h gfp_t flags}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj+ubj~)}(hhh]h)}(hKernel allocation flagsh]hKernel allocation flags}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1j}hj+ubeh}(h]h ]h"]h$]h&]uh1jghj+hMhjN+ubeh}(h]h ]h"]h$]h&]uh1jbhj2+ubh)}(h**Description**h]j)}(hj+h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj+ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj2+ubh)}(hDReturn NULL on failure or a pointer to an hsi_controller on success.h]hDReturn NULL on failure or a pointer to an hsi_controller on success.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj2+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_free_msg (C function)c.hsi_free_msghNtauh1jhjhhhNhNubj)}(hhh](j)}(h'void hsi_free_msg (struct hsi_msg *msg)h]j)}(h&void hsi_free_msg(struct hsi_msg *msg)h](j)}(hvoidh]hvoid}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ,hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ,hhhj,hMubj)}(h hsi_free_msgh]j!)}(h hsi_free_msgh]h hsi_free_msg}(hj1,hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj-,ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj ,hhhj,hMubjK)}(h(struct hsi_msg *msg)h]jQ)}(hstruct hsi_msg *msgh](j)}(hjh]hstruct}(hjM,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI,ubj )}(h h]h }(hjZ,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjI,ubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hjk,hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjh,ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetjm,modnameN classnameNjj)}j]j)}jj3,sbc.hsi_free_msgasbuh1hhjI,ubj )}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjI,ubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI,ubj!)}(hmsgh]hmsg}(hj,hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjI,ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjE,ubah}(h]h ]h"]h$]h&]jjuh1jJhj ,hhhj,hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj,hhhj,hMubah}(h]j,ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj,hMhj,hhubjM)}(hhh]h)}(hFree an HSI messageh]hFree an HSI message}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj,hhubah}(h]h ]h"]h$]h&]uh1jLhj,hhhj,hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj,jpj,jqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_msg *msg`` Pointer to the HSI message **Description** Client is responsible to free the buffers pointed by the scatterlists.h](h)}(h**Parameters**h]j)}(hj,h]h Parameters}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj,ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj,ubjc)}(hhh]jh)}(h3``struct hsi_msg *msg`` Pointer to the HSI message h](jn)}(h``struct hsi_msg *msg``h]j)}(hj-h]hstruct hsi_msg *msg}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj -ubj~)}(hhh]h)}(hPointer to the HSI messageh]hPointer to the HSI message}(hj*-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&-hMhj'-ubah}(h]h ]h"]h$]h&]uh1j}hj -ubeh}(h]h ]h"]h$]h&]uh1jghj&-hMhj-ubah}(h]h ]h"]h$]h&]uh1jbhj,ubh)}(h**Description**h]j)}(hjL-h]h Description}(hjN-hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjJ-ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj,ubh)}(hFClient is responsible to free the buffers pointed by the scatterlists.h]hFClient is responsible to free the buffers pointed by the scatterlists.}(hjb-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_alloc_msg (C function)c.hsi_alloc_msghNtauh1jhjhhhNhNubj)}(hhh](j)}(h@struct hsi_msg * hsi_alloc_msg (unsigned int nents, gfp_t flags)h]j)}(h>struct hsi_msg *hsi_alloc_msg(unsigned int nents, gfp_t flags)h](j)}(hjh]hstruct}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj-hhhj-hMubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hj-hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj-ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj-modnameN classnameNjj)}j]j)}j hsi_alloc_msgsbc.hsi_alloc_msgasbuh1hhj-hhhj-hMubj )}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj-hhhj-hMubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hhhj-hMubj)}(h hsi_alloc_msgh]j!)}(hj-h]h hsi_alloc_msg}(hj-hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj-ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj-hhhj-hMubjK)}(h!(unsigned int nents, gfp_t flags)h](jQ)}(hunsigned int nentsh](j)}(hunsignedh]hunsigned}(hj .hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.ubj)}(hinth]hint}(hj'.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj )}(h h]h }(hj5.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.ubj!)}(hnentsh]hnents}(hjC.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj.ubjQ)}(h gfp_t flagsh](h)}(hhh]j!)}(hgfp_th]hgfp_t}(hj_.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj\.ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetja.modnameN classnameNjj)}j]j-c.hsi_alloc_msgasbuh1hhjX.ubj )}(h h]h }(hj}.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjX.ubj!)}(hflagsh]hflags}(hj.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjX.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj.ubeh}(h]h ]h"]h$]h&]jjuh1jJhj-hhhj-hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj-hhhj-hMubah}(h]j-ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj-hMhj-hhubjM)}(hhh]h)}(hAllocate an HSI messageh]hAllocate an HSI message}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj.hhubah}(h]h ]h"]h$]h&]uh1jLhj-hhhj-hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj.jpj.jqjrjsuh1jhhhjhNhNubju)}(hXf**Parameters** ``unsigned int nents`` Number of memory entries ``gfp_t flags`` Kernel allocation flags **Description** nents can be 0. This mainly makes sense for read transfer. In that case, HSI drivers will call the complete callback when there is data to be read without consuming it. Return NULL on failure or a pointer to an hsi_msg on success.h](h)}(h**Parameters**h]j)}(hj.h]h Parameters}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj.ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj.ubjc)}(hhh](jh)}(h0``unsigned int nents`` Number of memory entries h](jn)}(h``unsigned int nents``h]j)}(hj.h]hunsigned int nents}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj.ubj~)}(hhh]h)}(hNumber of memory entriesh]hNumber of memory entries}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj /hMhj /ubah}(h]h ]h"]h$]h&]uh1j}hj.ubeh}(h]h ]h"]h$]h&]uh1jghj /hMhj.ubjh)}(h(``gfp_t flags`` Kernel allocation flags h](jn)}(h``gfp_t flags``h]j)}(hj//h]h gfp_t flags}(hj1/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-/ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj)/ubj~)}(hhh]h)}(hKernel allocation flagsh]hKernel allocation flags}(hjH/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjD/hMhjE/ubah}(h]h ]h"]h$]h&]uh1j}hj)/ubeh}(h]h ]h"]h$]h&]uh1jghjD/hMhj.ubeh}(h]h ]h"]h$]h&]uh1jbhj.ubh)}(h**Description**h]j)}(hjj/h]h Description}(hjl/hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjh/ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj.ubh)}(hnents can be 0. This mainly makes sense for read transfer. In that case, HSI drivers will call the complete callback when there is data to be read without consuming it.h]hnents can be 0. This mainly makes sense for read transfer. In that case, HSI drivers will call the complete callback when there is data to be read without consuming it.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj.ubh)}(h=Return NULL on failure or a pointer to an hsi_msg on success.h]h=Return NULL on failure or a pointer to an hsi_msg on success.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_async (C function) c.hsi_asynchNtauh1jhjhhhNhNubj)}(hhh](j)}(h:int hsi_async (struct hsi_client *cl, struct hsi_msg *msg)h]j)}(h9int hsi_async(struct hsi_client *cl, struct hsi_msg *msg)h](j)}(hinth]hint}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMAubj )}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/hhhj/hMAubj)}(h hsi_asynch]j!)}(h hsi_asynch]h hsi_async}(hj/hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj/ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj/hhhj/hMAubjK)}(h,(struct hsi_client *cl, struct hsi_msg *msg)h](jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj )}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj0modnameN classnameNjj)}j]j)}jj/sb c.hsi_asyncasbuh1hhj/ubj )}(h h]h }(hj90hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/ubj)}(hjh]h*}(hjG0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj!)}(hclh]hcl}(hjT0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj/ubjQ)}(hstruct hsi_msg *msgh](j)}(hjh]hstruct}(hjm0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhji0ubj )}(h h]h }(hjz0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hji0ubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hj0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj0modnameN classnameNjj)}j]j50 c.hsi_asyncasbuh1hhji0ubj )}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hji0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhji0ubj!)}(hmsgh]hmsg}(hj0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hji0ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj/ubeh}(h]h ]h"]h$]h&]jjuh1jJhj/hhhj/hMAubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj/hhhj/hMAubah}(h]j/ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj/hMAhj/hhubjM)}(hhh]h)}(h(Submit an HSI transfer to the controllerh]h(Submit an HSI transfer to the controller}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM/hj0hhubah}(h]h ]h"]h$]h&]uh1jLhj/hhhj/hMAubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj1jpj1jqjrjsuh1jhhhjhNhNubju)}(hX**Parameters** ``struct hsi_client *cl`` HSI client sending the transfer ``struct hsi_msg *msg`` The HSI transfer passed to controller **Description** The HSI message must have the channel, ttype, complete and destructor fields set beforehand. If nents > 0 then the client has to initialize also the scatterlists to point to the buffers to write to or read from. HSI controllers relay on pre-allocated buffers from their clients and they do not allocate buffers on their own. Once the HSI message transfer finishes, the HSI controller calls the complete callback with the status and actual_len fields of the HSI message updated. The complete callback can be called before returning from hsi_async. Returns -errno on failure or 0 on successh](h)}(h**Parameters**h]j)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj1ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM3hj 1ubjc)}(hhh](jh)}(h:``struct hsi_client *cl`` HSI client sending the transfer h](jn)}(h``struct hsi_client *cl``h]j)}(hj/1h]hstruct hsi_client *cl}(hj11hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-1ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM0hj)1ubj~)}(hhh]h)}(hHSI client sending the transferh]hHSI client sending the transfer}(hjH1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjD1hM0hjE1ubah}(h]h ]h"]h$]h&]uh1j}hj)1ubeh}(h]h ]h"]h$]h&]uh1jghjD1hM0hj&1ubjh)}(h>``struct hsi_msg *msg`` The HSI transfer passed to controller h](jn)}(h``struct hsi_msg *msg``h]j)}(hjh1h]hstruct hsi_msg *msg}(hjj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf1ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM1hjb1ubj~)}(hhh]h)}(h%The HSI transfer passed to controllerh]h%The HSI transfer passed to controller}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}1hM1hj~1ubah}(h]h ]h"]h$]h&]uh1j}hjb1ubeh}(h]h ]h"]h$]h&]uh1jghj}1hM1hj&1ubeh}(h]h ]h"]h$]h&]uh1jbhj 1ubh)}(h**Description**h]j)}(hj1h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj1ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM3hj 1ubh)}(hThe HSI message must have the channel, ttype, complete and destructor fields set beforehand. If nents > 0 then the client has to initialize also the scatterlists to point to the buffers to write to or read from.h]hThe HSI message must have the channel, ttype, complete and destructor fields set beforehand. If nents > 0 then the client has to initialize also the scatterlists to point to the buffers to write to or read from.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM3hj 1ubh)}(hpHSI controllers relay on pre-allocated buffers from their clients and they do not allocate buffers on their own.h]hpHSI controllers relay on pre-allocated buffers from their clients and they do not allocate buffers on their own.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM7hj 1ubh)}(hOnce the HSI message transfer finishes, the HSI controller calls the complete callback with the status and actual_len fields of the HSI message updated. The complete callback can be called before returning from hsi_async.h]hOnce the HSI message transfer finishes, the HSI controller calls the complete callback with the status and actual_len fields of the HSI message updated. The complete callback can be called before returning from hsi_async.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM:hj 1ubh)}(h)Returns -errno on failure or 0 on successh]h)Returns -errno on failure or 0 on success}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM?hj 1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_claim_port (C function)c.hsi_claim_porthNtauh1jhjhhhNhNubj)}(hhh](j)}(h>int hsi_claim_port (struct hsi_client *cl, unsigned int share)h]j)}(h=int hsi_claim_port(struct hsi_client *cl, unsigned int share)h](j)}(hinth]hint}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMVubj )}(h h]h }(hj$2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2hhhj#2hMVubj)}(hhsi_claim_porth]j!)}(hhsi_claim_porth]hhsi_claim_port}(hj62hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj22ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj2hhhj#2hMVubjK)}(h+(struct hsi_client *cl, unsigned int share)h](jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjR2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjN2ubj )}(h h]h }(hj_2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjN2ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hjp2hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjm2ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetjr2modnameN classnameNjj)}j]j)}jj82sbc.hsi_claim_portasbuh1hhjN2ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjN2ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjN2ubj!)}(hclh]hcl}(hj2hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjN2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjJ2ubjQ)}(hunsigned int shareh](j)}(hunsignedh]hunsigned}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2ubj)}(hinth]hint}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2ubj!)}(hshareh]hshare}(hj2hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjJ2ubeh}(h]h ]h"]h$]h&]jjuh1jJhj2hhhj#2hMVubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj 2hhhj#2hMVubah}(h]j2ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj#2hMVhj 2hhubjM)}(hhh]h)}(hClaim the HSI client's porth]hClaim the HSI client’s port}(hj&3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMPhj#3hhubah}(h]h ]h"]h$]h&]uh1jLhj 2hhhj#2hMVubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj>3jpj>3jqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_client *cl`` HSI client that wants to claim its port ``unsigned int share`` Flag to indicate if the client wants to share the port or not. **Description** Returns -errno on failure, 0 on success.h](h)}(h**Parameters**h]j)}(hjH3h]h Parameters}(hjJ3hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjF3ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMThjB3ubjc)}(hhh](jh)}(hB``struct hsi_client *cl`` HSI client that wants to claim its port h](jn)}(h``struct hsi_client *cl``h]j)}(hjg3h]hstruct hsi_client *cl}(hji3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje3ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMQhja3ubj~)}(hhh]h)}(h'HSI client that wants to claim its porth]h'HSI client that wants to claim its port}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|3hMQhj}3ubah}(h]h ]h"]h$]h&]uh1j}hja3ubeh}(h]h ]h"]h$]h&]uh1jghj|3hMQhj^3ubjh)}(hV``unsigned int share`` Flag to indicate if the client wants to share the port or not. h](jn)}(h``unsigned int share``h]j)}(hj3h]hunsigned int share}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMRhj3ubj~)}(hhh]h)}(h>Flag to indicate if the client wants to share the port or not.h]h>Flag to indicate if the client wants to share the port or not.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMRhj3ubah}(h]h ]h"]h$]h&]uh1j}hj3ubeh}(h]h ]h"]h$]h&]uh1jghj3hMRhj^3ubeh}(h]h ]h"]h$]h&]uh1jbhjB3ubh)}(h**Description**h]j)}(hj3h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj3ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMThjB3ubh)}(h(Returns -errno on failure, 0 on success.h]h(Returns -errno on failure, 0 on success.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMThjB3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_release_port (C function)c.hsi_release_porthNtauh1jhjhhhNhNubj)}(hhh](j)}(h-void hsi_release_port (struct hsi_client *cl)h]j)}(h,void hsi_release_port(struct hsi_client *cl)h](j)}(hvoidh]hvoid}(hj 4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMrubj )}(h h]h }(hj/4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj4hhhj.4hMrubj)}(hhsi_release_porth]j!)}(hhsi_release_porth]hhsi_release_port}(hjA4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj=4ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj4hhhj.4hMrubjK)}(h(struct hsi_client *cl)h]jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hj]4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY4ubj )}(h h]h }(hjj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjY4ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj{4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjx4ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj}4modnameN classnameNjj)}j]j)}jjC4sbc.hsi_release_portasbuh1hhjY4ubj )}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjY4ubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY4ubj!)}(hclh]hcl}(hj4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjY4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhjU4ubah}(h]h ]h"]h$]h&]jjuh1jJhj4hhhj.4hMrubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj4hhhj.4hMrubah}(h]j4ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj.4hMrhj4hhubjM)}(hhh]h)}(hRelease the HSI client's porth]hRelease the HSI client’s port}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMohj4hhubah}(h]h ]h"]h$]h&]uh1jLhj4hhhj.4hMrubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj4jpj4jqjrjsuh1jhhhjhNhNubju)}(hX**Parameters** ``struct hsi_client *cl`` HSI client which previously claimed its porth](h)}(h**Parameters**h]j)}(hj5h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj5ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMshj4ubjc)}(hhh]jh)}(hF``struct hsi_client *cl`` HSI client which previously claimed its porth](jn)}(h``struct hsi_client *cl``h]j)}(hj!5h]hstruct hsi_client *cl}(hj#5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMuhj5ubj~)}(hhh]h)}(h,HSI client which previously claimed its porth]h,HSI client which previously claimed its port}(hj:5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMphj75ubah}(h]h ]h"]h$]h&]uh1j}hj5ubeh}(h]h ]h"]h$]h&]uh1jghj65hMuhj5ubah}(h]h ]h"]h$]h&]uh1jbhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$hsi_register_port_event (C function)c.hsi_register_port_eventhNtauh1jhjhhhNhNubj)}(hhh](j)}(hhint hsi_register_port_event (struct hsi_client *cl, void (*handler)(struct hsi_client *, unsigned long))h]j)}(hfint hsi_register_port_event(struct hsi_client *cl, void (*handler)(struct hsi_client*, unsigned long))h](j)}(hinth]hint}(hj{5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw5hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjw5hhhj5hMubj)}(hhsi_register_port_eventh]j!)}(hhsi_register_port_eventh]hhsi_register_port_event}(hj5hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj5ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjw5hhhj5hMubjK)}(hK(struct hsi_client *cl, void (*handler)(struct hsi_client*, unsigned long))h](jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj5ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj5hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj5ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj5modnameN classnameNjj)}j]j)}jj5sbc.hsi_register_port_eventasbuh1hhj5ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj5ubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj!)}(hclh]hcl}(hj6hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj5ubjQ)}(h2void (*handler)(struct hsi_client*, unsigned long)h](j)}(hvoidh]hvoid}(hj*6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj )}(h h]h }(hj86hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&6ubj)}(h(h]h(}(hjF6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj)}(hjh]h*}(hjT6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj!)}(hhandlerh]hhandler}(hja6hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj&6ubj)}(h)h]h)}(hjo6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj)}(hjH6h]h(}(hj}6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj)}(hjh]hstruct}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj )}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&6ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj6hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj6modnameN classnameNjj)}j]j5c.hsi_register_port_eventasbuh1hhj&6ubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj)}(h,h]h,}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj )}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&6ubj)}(hunsignedh]hunsigned}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj )}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&6ubj)}(hlongh]hlong}(hj 7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubj)}(hjq6h]h)}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&6ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj5ubeh}(h]h ]h"]h$]h&]jjuh1jJhjw5hhhj5hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjs5hhhj5hMubah}(h]jn5ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj5hMhjp5hhubjM)}(hhh]h)}(h(Register a client to receive port eventsh]h(Register a client to receive port events}(hjB7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj?7hhubah}(h]h ]h"]h$]h&]uh1jLhjp5hhhj5hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijojZ7jpjZ7jqjrjsuh1jhhhjhNhNubju)}(hX**Parameters** ``struct hsi_client *cl`` HSI client that wants to receive port events ``void (*handler)(struct hsi_client *, unsigned long)`` Event handler callback **Description** Clients should register a callback to be able to receive events from the ports. Registration should happen after claiming the port. The handler can be called in interrupt context. Returns -errno on error, or 0 on success.h](h)}(h**Parameters**h]j)}(hjd7h]h Parameters}(hjf7hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjb7ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj^7ubjc)}(hhh](jh)}(hG``struct hsi_client *cl`` HSI client that wants to receive port events h](jn)}(h``struct hsi_client *cl``h]j)}(hj7h]hstruct hsi_client *cl}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj}7ubj~)}(hhh]h)}(h,HSI client that wants to receive port eventsh]h,HSI client that wants to receive port events}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j}hj}7ubeh}(h]h ]h"]h$]h&]uh1jghj7hMhjz7ubjh)}(hO``void (*handler)(struct hsi_client *, unsigned long)`` Event handler callback h](jn)}(h7``void (*handler)(struct hsi_client *, unsigned long)``h]j)}(hj7h]h3void (*handler)(struct hsi_client *, unsigned long)}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj7ubj~)}(hhh]h)}(hEvent handler callbackh]hEvent handler callback}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j}hj7ubeh}(h]h ]h"]h$]h&]uh1jghj7hMhjz7ubeh}(h]h ]h"]h$]h&]uh1jbhj^7ubh)}(h**Description**h]j)}(hj7h]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj7ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj^7ubh)}(hClients should register a callback to be able to receive events from the ports. Registration should happen after claiming the port. The handler can be called in interrupt context.h]hClients should register a callback to be able to receive events from the ports. Registration should happen after claiming the port. The handler can be called in interrupt context.}(hj 8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj^7ubh)}(h)Returns -errno on error, or 0 on success.h]h)Returns -errno on error, or 0 on success.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj^7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&hsi_unregister_port_event (C function)c.hsi_unregister_port_eventhNtauh1jhjhhhNhNubj)}(hhh](j)}(h5int hsi_unregister_port_event (struct hsi_client *cl)h]j)}(h4int hsi_unregister_port_event(struct hsi_client *cl)h](j)}(hinth]hint}(hjK8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG8hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hjZ8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjG8hhhjY8hMubj)}(hhsi_unregister_port_eventh]j!)}(hhsi_unregister_port_eventh]hhsi_unregister_port_event}(hjl8hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjh8ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjG8hhhjY8hMubjK)}(h(struct hsi_client *cl)h]jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj )}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj8hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj8ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj8modnameN classnameNjj)}j]j)}jjn8sbc.hsi_unregister_port_eventasbuh1hhj8ubj )}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj!)}(hclh]hcl}(hj8hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj8ubah}(h]h ]h"]h$]h&]jjuh1jJhjG8hhhjY8hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjC8hhhjY8hMubah}(h]j>8ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhjY8hMhj@8hhubjM)}(hhh]h)}(h'Stop receiving port events for a clienth]h'Stop receiving port events for a client}(hj 9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj9hhubah}(h]h ]h"]h$]h&]uh1jLhj@8hhhjY8hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj#9jpj#9jqjrjsuh1jhhhjhNhNubju)}(h**Parameters** ``struct hsi_client *cl`` HSI client that wants to stop receiving port events **Description** Clients should call this function before releasing their associated port. Returns -errno on error, or 0 on success.h](h)}(h**Parameters**h]j)}(hj-9h]h Parameters}(hj/9hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj+9ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'9ubjc)}(hhh]jh)}(hN``struct hsi_client *cl`` HSI client that wants to stop receiving port events h](jn)}(h``struct hsi_client *cl``h]j)}(hjL9h]hstruct hsi_client *cl}(hjN9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ9ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjF9ubj~)}(hhh]h)}(h3HSI client that wants to stop receiving port eventsh]h3HSI client that wants to stop receiving port events}(hje9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhja9hMhjb9ubah}(h]h ]h"]h$]h&]uh1j}hjF9ubeh}(h]h ]h"]h$]h&]uh1jghja9hMhjC9ubah}(h]h ]h"]h$]h&]uh1jbhj'9ubh)}(h**Description**h]j)}(hj9h]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj9ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'9ubh)}(hIClients should call this function before releasing their associated port.h]hIClients should call this function before releasing their associated port.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'9ubh)}(h)Returns -errno on error, or 0 on success.h]h)Returns -errno on error, or 0 on success.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj'9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_event (C function) c.hsi_eventhNtauh1jhjhhhNhNubj)}(hhh](j)}(h:int hsi_event (struct hsi_port *port, unsigned long event)h]j)}(h9int hsi_event(struct hsi_port *port, unsigned long event)h](j)}(hinth]hint}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9hhhj9hMubj)}(h hsi_eventh]j!)}(h hsi_eventh]h hsi_event}(hj9hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj9ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj9hhhj9hMubjK)}(h,(struct hsi_port *port, unsigned long event)h](jQ)}(hstruct hsi_port *porth](j)}(hjh]hstruct}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj )}(h h]h }(hj%:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubh)}(hhh]j!)}(hhsi_porth]hhsi_port}(hj6:hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj3:ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetj8:modnameN classnameNjj)}j]j)}jj9sb c.hsi_eventasbuh1hhj:ubj )}(h h]h }(hjV:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubj)}(hjh]h*}(hjd:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj!)}(hporth]hport}(hjq:hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj:ubjQ)}(hunsigned long eventh](j)}(hunsignedh]hunsigned}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj )}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubj)}(hlongh]hlong}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj )}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubj!)}(heventh]hevent}(hj:hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj:ubeh}(h]h ]h"]h$]h&]jjuh1jJhj9hhhj9hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj9hhhj9hMubah}(h]j9ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj9hMhj9hhubjM)}(hhh]h)}(h"Notifies clients about port eventsh]h"Notifies clients about port events}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj:hhubah}(h]h ]h"]h$]h&]uh1jLhj9hhhj9hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj;jpj;jqjrjsuh1jhhhjhNhNubju)}(hX**Parameters** ``struct hsi_port *port`` Port where the event occurred ``unsigned long event`` The event type **Description** Clients should not be concerned about wake line behavior. However, due to a race condition in HSI HW protocol, clients need to be notified about wake line changes, so they can implement a workaround for it. Events: HSI_EVENT_START_RX - Incoming wake line high HSI_EVENT_STOP_RX - Incoming wake line down Returns -errno on error, or 0 on success.h](h)}(h**Parameters**h]j)}(hj;h]h Parameters}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj ;ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj;ubjc)}(hhh](jh)}(h8``struct hsi_port *port`` Port where the event occurred h](jn)}(h``struct hsi_port *port``h]j)}(hj-;h]hstruct hsi_port *port}(hj/;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+;ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj';ubj~)}(hhh]h)}(hPort where the event occurredh]hPort where the event occurred}(hjF;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB;hMhjC;ubah}(h]h ]h"]h$]h&]uh1j}hj';ubeh}(h]h ]h"]h$]h&]uh1jghjB;hMhj$;ubjh)}(h'``unsigned long event`` The event type h](jn)}(h``unsigned long event``h]j)}(hjf;h]hunsigned long event}(hjh;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjd;ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj`;ubj~)}(hhh]h)}(hThe event typeh]hThe event type}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{;hMhj|;ubah}(h]h ]h"]h$]h&]uh1j}hj`;ubeh}(h]h ]h"]h$]h&]uh1jghj{;hMhj$;ubeh}(h]h ]h"]h$]h&]uh1jbhj;ubh)}(h**Description**h]j)}(hj;h]h Description}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj;ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj;ubh)}(hClients should not be concerned about wake line behavior. However, due to a race condition in HSI HW protocol, clients need to be notified about wake line changes, so they can implement a workaround for it.h]hClients should not be concerned about wake line behavior. However, due to a race condition in HSI HW protocol, clients need to be notified about wake line changes, so they can implement a workaround for it.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj;ubh)}(h`Events: HSI_EVENT_START_RX - Incoming wake line high HSI_EVENT_STOP_RX - Incoming wake line downh]h`Events: HSI_EVENT_START_RX - Incoming wake line high HSI_EVENT_STOP_RX - Incoming wake line down}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj;ubh)}(h)Returns -errno on error, or 0 on success.h]h)Returns -errno on error, or 0 on success.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'hsi_get_channel_id_by_name (C function)c.hsi_get_channel_id_by_namehNtauh1jhjhhhNhNubj)}(hhh](j)}(hBint hsi_get_channel_id_by_name (struct hsi_client *cl, char *name)h]j)}(hAint hsi_get_channel_id_by_name(struct hsi_client *cl, char *name)h](j)}(hinth]hint}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj<hhhj<hMubj)}(hhsi_get_channel_id_by_nameh]j!)}(hhsi_get_channel_id_by_nameh]hhsi_get_channel_id_by_name}(hj%<hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj!<ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj<hhhj<hMubjK)}(h#(struct hsi_client *cl, char *name)h](jQ)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hjA<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=<ubj )}(h h]h }(hjN<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj=<ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hj_<hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj\<ubah}(h]h ]h"]h$]h&] refdomainjireftypej reftargetja<modnameN classnameNjj)}j]j)}jj'<sbc.hsi_get_channel_id_by_nameasbuh1hhj=<ubj )}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj=<ubj)}(hjh]h*}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=<ubj!)}(hclh]hcl}(hj<hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj=<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj9<ubjQ)}(h char *nameh](j)}(hcharh]hchar}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj )}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj<ubj)}(hjh]h*}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj!)}(hnameh]hname}(hj<hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jPhj9<ubeh}(h]h ]h"]h$]h&]jjuh1jJhj<hhhj<hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj;hhhj<hMubah}(h]j;ah ](jDjEeh"]h$]h&]jIjJ)jKhuh1jhj<hMhj;hhubjM)}(hhh]h)}(h"acquire channel id by channel nameh]h"acquire channel id by channel name}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj=hhubah}(h]h ]h"]h$]h&]uh1jLhj;hhhj<hMubeh}(h]h ](jifunctioneh"]h$]h&]jnjijoj=jpj=jqjrjsuh1jhhhjhNhNubju)}(hXx**Parameters** ``struct hsi_client *cl`` HSI client, which uses the channel ``char *name`` name the channel is known under **Description** Clients can call this function to get the hsi channel ids similar to requesting IRQs or GPIOs by name. This function assumes the same channel configuration is used for RX and TX. Returns -errno on error or channel id on success.h](h)}(h**Parameters**h]j)}(hj(=h]h Parameters}(hj*=hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj&=ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj"=ubjc)}(hhh](jh)}(h=``struct hsi_client *cl`` HSI client, which uses the channel h](jn)}(h``struct hsi_client *cl``h]j)}(hjG=h]hstruct hsi_client *cl}(hjI=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE=ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjA=ubj~)}(hhh]h)}(h"HSI client, which uses the channelh]h"HSI client, which uses the channel}(hj`=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\=hMhj]=ubah}(h]h ]h"]h$]h&]uh1j}hjA=ubeh}(h]h ]h"]h$]h&]uh1jghj\=hMhj>=ubjh)}(h/``char *name`` name the channel is known under h](jn)}(h``char *name``h]j)}(hj=h]h char *name}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~=ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjz=ubj~)}(hhh]h)}(hname the channel is known underh]hname the channel is known under}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1j}hjz=ubeh}(h]h ]h"]h$]h&]uh1jghj=hMhj>=ubeh}(h]h ]h"]h$]h&]uh1jbhj"=ubh)}(h**Description**h]j)}(hj=h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj=ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj"=ubh)}(hClients can call this function to get the hsi channel ids similar to requesting IRQs or GPIOs by name. This function assumes the same channel configuration is used for RX and TX.h]hClients can call this function to get the hsi channel ids similar to requesting IRQs or GPIOs by name. This function assumes the same channel configuration is used for RX and TX.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj"=ubh)}(h1Returns -errno on error or channel id on success.h]h1Returns -errno on error or channel id on success.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj"=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jthjhhhNhNubeh}(h]the-kernel-hsi-apiah ]h"]the kernel hsi apiah$]h&]uh1hhhhhhhhKQubeh}(h]+high-speed-synchronous-serial-interface-hsiah ]h"]-high speed synchronous serial interface (hsi)ah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj)>error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j>j>j jj@j=jjj=j=u nametypes}(j>j j@jj=uh}(j>hjhj=jjjCj=jjjjQjVjjjH jM j j j j jjjjjjjjj6j;jjjVj[jjjjj+!j0!j"j"j$j $jb%jg%j&j&jd(ji(j)j)j,j,j-j-j/j/j2j 2j4j4jn5js5j>8jC8j9j9j;j;u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionspCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.