sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}(hhparenthuba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget"/translations/zh_CN/driver-api/hsimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}(hhhh2ubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/zh_TW/driver-api/hsimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}(hhhhFubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/it_IT/driver-api/hsimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}(hhhhZubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ja_JP/driver-api/hsimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}(hhhhnubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ko_KR/driver-api/hsimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}(hhhhubah}(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)}(hhhhhhhNhNubah}(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 ----------->| | | | | | | | | | +------------+ +---------------+}(hhhhubah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhKhhhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hHSI Subsystem in Linuxh]hHSI Subsystem in Linux}(hjhjhhhNhNubah}(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.}(hj!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/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}(hjHhjFhhhNhNubah}(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:}(hjVhjThhhNhNubah}(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}(hjqhjohhhNhNubah}(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^hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jmhhhKKhjXubj~)}(hhh]h)}(hset TX configurationh]hset TX configuration}(hjohjmhhhNhNubah}(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}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jmhhhKNhjubj~)}(hhh]h)}(hget TX configurationh]hget TX configuration}(hjhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK;ubhdesc_sig_space)}(h h]h }(hhhj hhhNhNubah}(h]h ]wah"]h$]h&]uh1j hjhhhjhK;ubh desc_name)}(h hsi_channelh]h desc_sig_name)}(hjh]h hsi_channel}(hhhj"hhhNhNubah}(h]h ]nah"]h$]h&]uh1j hjubah}(h]h ](sig-namedescnameeh"]h$]h&]jjuh1jhjhhhjhK;ubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1jsphinx_line_type declaratorhjhhhjhK;ubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multilineuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjhhubh desc_content)}(hhh]h)}(h(channel resource used by the hsi clientsh]h(channel resource used by the hsi clients}(hjRhjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK:hjMhhubah}(h]h ]h"]h$]h&]uh1jKhjhhhjhK;ubeh}(h]h ](cstructeh"]h$]h&]domainjhobjtypejidesctypejinoindexuh1jhhhjhNhNubh 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}(hhhj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjwubh:}(h:hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK>hjsubh)}(hJstruct hsi_channel { unsigned int id; const char *name; };h]hJstruct hsi_channel { unsigned int id; const char *name; };}(hhhjubah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK@hjsubh)}(h **Members**h]j|)}(hjh]hMembers}(hhhjhhhNhNubah}(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.hhKEhjsubjc)}(hhh](jh)}(h``id`` Channel number h](jn)}(h``id``h]hliteral)}(hjh]hid}(hhhjhhhNhNubah}(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@hjThhhjihKEubah}(h]jOah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKChjQhhubjL)}(hhh]h)}(h#Configuration for RX/TX HSI modulesh]h#Configuration for RX/TX HSI modules}(hjhjhhhNhNubah}(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&]uh1jKhjQhhhjihKEubeh}(h]h ](jhstructeh"]h$]h&]jmjhjnjjojjpuh1jhhhjhNhNubjr)}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjubh:}(hjhjhhhNhNubeh}(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; }; };}(hhhjubah}(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}(hhhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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'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)}(hjEh]hchannels}(hhhjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(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`hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhKGhj[ubah}(h]h ]h"]h$]h&]uh1j}hj?ubeh}(h]h ]h"]h$]h&]uh1jghjZhKGhjubjh)}(h-``num_channels`` Number of channel resources h](jn)}(h``num_channels``h]j)}(hj~h]h num_channels}(hhhjhhhNhNubah}(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.hhKHhjxubj~)}(hhh]h)}(hNumber of channel resourcesh]hNumber of channel resources}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKHhjubah}(h]h ]h"]h$]h&]uh1j}hjxubeh}(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}(hhhjhhhNhNubah}(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)}(hhKMhj?ubah}(h]h ]h"]h$]h&]uh1j}hj#ubeh}(h]h ]h"]h$]h&]uh1jghj>hKMhjubjh)}(h1``flow`` RX flow type (SYNCHRONIZED or PIPELINE) h](jn)}(h``flow``h]j)}(hjbh]hflow}(hhhjdhhhNhNubah}(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.hhKKhj\ubj~)}(hhh]h)}(h'RX flow type (SYNCHRONIZED or PIPELINE)h]h'RX flow type (SYNCHRONIZED or PIPELINE)}(hj}hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhKKhjxubah}(h]h ]h"]h$]h&]uh1j}hj\ubeh}(h]h ]h"]h$]h&]uh1jghjwhKKhjubjh)}(hB``arb_mode`` Arbitration mode for TX frame (Round robin, priority)h](jn)}(h ``arb_mode``h]j)}(hjh]harb_mode}(hhhjhhhNhNubah}(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.hhKKhjubj~)}(hhh]h)}(h5Arbitration mode for TX frame (Round robin, priority)h]h5Arbitration mode for TX frame (Round robin, priority)}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKLhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghjhKKhjubeh}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jhsi_board_info (C struct)c.hsi_board_infohNtauh1jhjhhhNhNubj)}(hhh](j)}(hhsi_board_infoh]j)}(hstruct hsi_board_infoh](j)}(hjh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK[ubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhK[ubj)}(hhsi_board_infoh]j!)}(hjh]hhsi_board_info}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhK[ubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhK[ubah}(h]jah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKRhjhhubjL)}(hhh]h)}(hHSI client board infoh]hHSI client board info}(hj: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&]uh1jKhjhhhjhK[ubeh}(h]h ](jhstructeh"]h$]h&]jmjhjnjPjojPjpuh1jhhhjhNhNubjr)}(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}(hhhj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjXubh:}(hjhjXhhhNhNubeh}(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; };}(hhhjuubah}(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}(hhhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hj2hj0hhhNhNubah}(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}(hhhjRhhhNhNubah}(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}(hjkhjihhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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 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&]uh1jqhjhhhNhNubj)}(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}(hhhjU hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKzubj )}(h h]h }(hhhjc hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjQ hhhjb hKzubj)}(h hsi_clienth]j!)}(hjO h]h hsi_client}(hhhju hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjq ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjQ hhhjb hKzubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjM hhhjb hKzubah}(h]jH ah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhhjJ hhubjL)}(hhh]h)}(h"HSI client attached to an HSI porth]h"HSI client attached to an HSI port}(hj 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&]uh1jKhjJ hhhjb hKzubeh}(h]h ](jhstructeh"]h$]h&]jmjhjnj joj jpuh1jhhhjhNhNubjr)}(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}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hj ubh:}(hjhj 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; };}(hhhj ubah}(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}(hhhj 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}(hhhj 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 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}(hhhj@ 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|hj8 ubj~)}(hhh]h)}(hHSI TX configurationh]hHSI TX configuration}(hjY hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS hK|hjT ubah}(h]h ]h"]h$]h&]uh1j}hj8 ubeh}(h]h ]h"]h$]h&]uh1jghjS hK|hj ubjh)}(h``rx_cfg`` HSI RX configurationh](jn)}(h ``rx_cfg``h]j)}(hjw h]hrx_cfg}(hhhjy hhhNhNubah}(h]h ]h"]h$]h&]uh1jhju ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhK|hjq ubj~)}(hhh]h)}(hHSI RX configurationh]hHSI RX configuration}(hj 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}hjq ubeh}(h]h ]h"]h$]h&]uh1jghj hK|hj ubeh}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhj 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 }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhj hKubj)}(hhsi_client_driverh]j!)}(hj h]hhsi_client_driver}(hhhj 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&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj hhubjL)}(hhh]h)}(h"Driver associated to an HSI clienth]h"Driver associated to an HSI client}(hj 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&]uh1jKhj hhhj hKubeh}(h]h ](jhstructeh"]h$]h&]jmjhjnj, joj, jpuh1jhhhjhNhNubjr)}(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}(hhhj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hj4 ubh:}(hjhj4 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj0 ubh)}(hAstruct hsi_client_driver { struct device_driver driver; };h]hAstruct hsi_client_driver { struct device_driver driver; };}(hhhjQ ubah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj0 ubh)}(h **Members**h]j|)}(hjb h]hMembers}(hhhjd 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.hhKhj0 ubjc)}(hhh]jh)}(h4``driver`` Driver model representation of the driverh](jn)}(h ``driver``h]j)}(hj h]hdriver}(hhhj 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)Driver model representation of the driverh]h)Driver model representation of the driver}(hj 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}hj{ ubeh}(h]h ]h"]h$]h&]uh1jghj hKhjx ubah}(h]h ]h"]h$]h&]uh1jbhj0 ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhj 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 }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhj hKubj)}(hhsi_msgh]j!)}(hj h]hhsi_msg}(hhhj 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&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj hhubjL)}(hhh]h)}(hHSI message descriptorh]hHSI message descriptor}(hj 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&]uh1jKhj hhhj hKubeh}(h]h ](jhstructeh"]h$]h&]jmjhjnj6 joj6 jpuh1jhhhjhNhNubjr)}(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}(hhhjB hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hj> ubh:}(hjhj> hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj: 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; };}(hhhj[ ubah}(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|)}(hjl h]hMembers}(hhhjn hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjj 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``link`` Free to use by the current descriptor owner h](jn)}(h``link``h]j)}(hj h]hlink}(hhhj 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 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}(hhhj 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 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}(hhhj 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 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)}(hj6 h]hcontext}(hhhj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4 ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj0 ubj~)}(hhh]h)}(h.Client context data associated to the transferh]h.Client context data associated to the transfer}(hjQ hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjK hKhjL ubah}(h]h ]h"]h$]h&]uh1j}hj0 ubeh}(h]h ]h"]h$]h&]uh1jghjK hKhj ubjh)}(h*``complete`` Transfer completion callback h](jn)}(h ``complete``h]j)}(hjo h]hcomplete}(hhhjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm ubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhji ubj~)}(hhh]h)}(hTransfer completion callbackh]hTransfer completion callback}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j}hji 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}(hhhj 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 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}(hhhj 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 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}(hhhjhhhNhNubah}(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}(hj5hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKhj0ubah}(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)}(hjSh]hchannel}(hhhjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjMubj~)}(hhh]h)}(h!Channel were to TX/RX the messageh]h!Channel were to TX/RX the message}(hjnhjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhKhjiubah}(h]h ]h"]h$]h&]uh1j}hjMubeh}(h]h ]h"]h$]h&]uh1jghjhhKhj ubjh)}(h2``ttype`` Transfer type (TX if set, RX otherwise) h](jn)}(h ``ttype``h]j)}(hjh]httype}(hhhjhhhNhNubah}(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)}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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.}(hjhjhhhNhNubah}(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&]uh1jbhj: ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKubj )}(h h]h }(hhhj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhj+hKubj)}(hhsi_porth]j!)}(hjh]hhsi_port}(hhhj>hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj:ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhj+hKubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhj+hKubah}(h]jah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjhhubjL)}(hhh]h)}(hHSI port deviceh]hHSI port device}(hjchjahhhNhNubah}(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&]uh1jKhjhhhj+hKubeh}(h]h ](jhstructeh"]h$]h&]jmjhjnjyjojyjpuh1jhhhjhNhNubjr)}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjubh:}(hjhjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhj}ubh)}(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; };}(hhhjubah}(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|)}(hjh]hMembers}(hhhjhhhNhNubah}(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.hhKhj}ubjc)}(hhh](jh)}(h5``device`` Driver model representation of the device h](jn)}(h ``device``h]j)}(hjh]hdevice}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhj 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)}(hCurrent TX path configurationh]hCurrent TX path configuration}(hj"hj hhhNhNubah}(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}(hhhjBhhhNhNubah}(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)}(hCurrent RX path configurationh]hCurrent RX path configuration}(hj[hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjVubah}(h]h ]h"]h$]h&]uh1j}hj:ubeh}(h]h ]h"]h$]h&]uh1jghjUhKhjubjh)}(h``num`` Port number h](jn)}(h``num``h]j)}(hjyh]hnum}(hhhj{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)}(h Port numberh]h Port number}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j}hjsubeh}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhj&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.hhKhjubj~)}(hhh]h)}(hSerialize port claimh]hSerialize port claim}(hj?hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj:ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghj9hKhjubjh)}(h)``async`` Asynchronous transfer callback h](jn)}(h ``async``h]j)}(hj]h]hasync}(hhhj_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.hhKhjWubj~)}(hhh]h)}(hAsynchronous transfer callbackh]hAsynchronous transfer callback}(hjxhjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhKhjsubah}(h]h ]h"]h$]h&]uh1j}hjWubeh}(h]h ]h"]h$]h&]uh1jghjrhKhjubjh)}(h7``setup`` Callback to set the HSI client configuration h](jn)}(h ``setup``h]j)}(hjh]hsetup}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhj 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)}(h1Callback to inform that a client wants to TX datah]h1Callback to inform that a client wants to TX data}(hj#hj!hhhNhNubah}(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)}(hjAh]hstop_tx}(hhhjChhhNhNubah}(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)}(huh1jj?j@hjhhhjhMubah}(h]jah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhKhjhhubjL)}(hhh]h)}(hHSI controller deviceh]hHSI controller device}(hjRhjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjMhhubah}(h]h ]h"]h$]h&]uh1jKhjhhhjhMubeh}(h]h ](jhstructeh"]h$]h&]jmjhjnjhjojhjpuh1jhhhjhNhNubjr)}(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}(hhhjthhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjpubh:}(hjhjphhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hjlubh)}(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; };}(hhhjubah}(h]h ]h"]h$]h&]jjuh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hjlubh)}(h **Members**h]j|)}(hjh]hMembers}(hhhjhhhNhNubah}(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.hhMhjlubjc)}(hhh](jh)}(h5``device`` Driver model representation of the device h](jn)}(h ``device``h]j)}(hjh]hdevice}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM hj ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1jghj hM hjubjh)}(h``id`` HSI controller ID h](jn)}(h``id``h]j)}(hj/h]hid}(hhhj1hhhNhNubah}(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}(hjJhjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhM hjEubah}(h]h ]h"]h$]h&]uh1j}hj)ubeh}(h]h ]h"]h$]h&]uh1jghjDhM hjubjh)}(h4``num_ports`` Number of ports in the HSI controller h](jn)}(h ``num_ports``h]j)}(hjhh]h num_ports}(hhhjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM hjbubj~)}(hhh]h)}(h%Number of ports in the HSI controllerh]h%Number of ports in the HSI controller}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hM hj~ubah}(h]h ]h"]h$]h&]uh1j}hjbubeh}(h]h ]h"]h$]h&]uh1jghj}hM hjubjh)}(h``port`` Array of HSI portsh](jn)}(h``port``h]j)}(hjh]hport}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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&]uh1jbhjlubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMEubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhj hMEubj)}(hinth]hint}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj hMEubj )}(h h]h }(hhhj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhj hMEubj)}(hhsi_idh]j!)}(hhsi_idh]hhsi_id}(hhhj;hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj7ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhj hMEubhdesc_parameterlist)}(h(struct hsi_client *cl)h]hdesc_parameter)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj )}(h h]h }(hhhjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjWubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhjyhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjvubah}(h]h ]h"]h$]h&] refdomainjhreftype identifier reftargetj{modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jj=sbc.hsi_idasbuh1hhjWubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjWubhdesc_sig_punctuation)}(h*h]h*}(hhhjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjWubj!)}(hclh]hcl}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjQubah}(h]h ]h"]h$]h&]jjuh1jOhjhhhj hMEubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhj hMEubah}(h]jah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMIhjhhubjL)}(hhh]h)}(h,Get HSI controller ID associated to a clienth]h,Get HSI controller ID associated to a client}(hjhjhhhNhNubah}(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&]uh1jKhjhhhj hMEubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjjojjpuh1jhhhjhNhNubjr)}(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|)}(hj h]h Parameters}(hhhjhhhNhNubah}(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.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}(hhhj.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}(hjGhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMEhjBubah}(h]h ]h"]h$]h&]uh1j}hj&ubeh}(h]h ]h"]h$]h&]uh1jghjAhMEhj#ubah}(h]h ]h"]h$]h&]uh1jbhjubh)}(h**Description**h]j|)}(hjgh]h Description}(hhhjihhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjeubah}(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}(hjhj}hhhNhNubah}(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&]uh1jqhjhhhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMPubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMPubj)}(hinth]hint}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMPubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMPubj)}(h hsi_port_idh]j!)}(h hsi_port_idh]h hsi_port_id}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMPubjP)}(h(struct hsi_client *cl)h]jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj#hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj%modnameN classnameNjj)}j]j)}jjsb c.hsi_port_idasbuh1hhjubj )}(h h]h }(hhhjChhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hhhjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hhhj^hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjubah}(h]h ]h"]h$]h&]jjuh1jOhjhhhjhMPubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMPubah}(h]jah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMThjhhubjL)}(hhh]h)}(h,Gets the port number a client is attached toh]h,Gets the port number a client is attached to}(hjhjhhhNhNubah}(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&]uh1jKhjhhhjhMPubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjjojjpuh1jhhhjhNhNubjr)}(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}(hhhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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&]uh1jqhjhhhNhNubj)}(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}(hhhjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM[ubj )}(h h]h }(hhhjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjFhhhjXhM[ubj)}(h hsi_setuph]j!)}(h hsi_setuph]h hsi_setup}(hhhjkhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjgubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjFhhhjXhM[ubjP)}(h(struct hsi_client *cl)h]jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetjmodnameN classnameNjj)}j]j)}jjmsb c.hsi_setupasbuh1hhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjubah}(h]h ]h"]h$]h&]jjuh1jOhjFhhhjXhM[ubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjBhhhjXhM[ubah}(h]j=ah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMbhj?hhubjL)}(hhh]h)}(hConfigure the client's porth]hConfigure the client’s port}(hj hj hhhNhNubah}(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&]uh1jKhj?hhhjXhM[ubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj#joj#jpuh1jhhhjhNhNubjr)}(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}(hhhj/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^hj'ubjc)}(hhh]jh)}(h4``struct hsi_client *cl`` Pointer to the HSI client h](jn)}(h``struct hsi_client *cl``h]j)}(hjLh]hstruct hsi_client *cl}(hhhjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jmhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM[hjFubj~)}(hhh]h)}(hPointer to the HSI clienth]hPointer to the HSI client}(hjghjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahM[hjbubah}(h]h ]h"]h$]h&]uh1j}hjFubeh}(h]h ]h"]h$]h&]uh1jghjahM[hjCubah}(h]h ]h"]h$]h&]uh1jbhj'ubh)}(h**Description**h]j|)}(hjh]h Description}(hhhjhhhNhNubah}(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]hj'ubh)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM]hj'ubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM`hj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMkubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMkubj)}(h hsi_flushh]j!)}(h hsi_flushh]h hsi_flush}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMkubjP)}(h(struct hsi_client *cl)h]jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hhhj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj6hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj3ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj8modnameN classnameNjj)}j]j)}jjsb c.hsi_flushasbuh1hhjubj )}(h h]h }(hhhjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hhhjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hhhjqhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjubah}(h]h ]h"]h$]h&]jjuh1jOhjhhhjhMkubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMkubah}(h]jah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMrhjhhubjL)}(hhh]h)}(h3Flush all pending transactions on the client's porth]h5Flush all pending transactions on the client’s port}(hjhjhhhNhNubah}(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&]uh1jKhjhhhjhMkubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjjojjpuh1jhhhjhNhNubjr)}(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}(hhhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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.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.}(hj0hj.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}(hj?hj=hhhNhNubah}(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&]uh1jqhjhhhNhNubj)}(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}(hhhjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhM{ubj )}(h h]h }(hhhj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhhjzhM{ubj)}(hhsi_async_readh]j!)}(hhsi_async_readh]hhsi_async_read}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhhjzhM{ubjP)}(h,(struct hsi_client *cl, struct hsi_msg *msg)h](jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hsi_async_readasbuh1hhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjubjV)}(hstruct hsi_msg *msgh](j)}(hjh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hhhj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hhhj9hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj;modnameN classnameNjj)}j]jc.hsi_async_readasbuh1hhjubj )}(h h]h }(hhhjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hhhjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hmsgh]hmsg}(hhhjrhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjubeh}(h]h ]h"]h$]h&]jjuh1jOhjhhhhjzhM{ubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjdhhhjzhM{ubah}(h]j_ah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjahhubjL)}(hhh]h)}(hSubmit a read transferh]hSubmit a read transfer}(hjhjhhhNhNubah}(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&]uh1jKhjahhhjzhM{ubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjjojjpuh1jhhhjhNhNubjr)}(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}(hhhjhhhNhNubah}(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}(hhhjhhhNhNubah}(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}(hjhjhhhNhNubah}(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)}(hjh]hstruct hsi_msg *msg}(hhhjhhhNhNubah}(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&HSI message descriptor of the transferh]h&HSI message descriptor of the transfer}(hj2hj0hhhNhNubah}(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|)}(hjRh]h Description}(hhhjThhhNhNubah}(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.hhM~hjubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hjjhjhhhhNhNubah}(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&]uh1jqhjhhhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMubj)}(hhsi_async_writeh]j!)}(hhsi_async_writeh]hhsi_async_write}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMubjP)}(h,(struct hsi_client *cl, struct hsi_msg *msg)h](jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.hsi_async_writeasbuh1hhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hhhj-hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjubjV)}(hstruct hsi_msg *msgh](j)}(hjh]hstruct}(hhhjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj )}(h h]h }(hhhjShhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjBubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hhhjdhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjaubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetjfmodnameN classnameNjj)}j]jc.hsi_async_writeasbuh1hhjBubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjBubj)}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj!)}(hmsgh]hmsg}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjBubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjubeh}(h]h ]h"]h$]h&]jjuh1jOhjhhhjhMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMubah}(h]jah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjhhubjL)}(hhh]h)}(hSubmit a write transferh]hSubmit a write transfer}(hjhjhhhNhNubah}(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&]uh1jKhjhhhjhMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjjojjpuh1jhhhjhNhNubjr)}(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}(hhhjhhhNhNubah}(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)}(hj h]hstruct hsi_client *cl}(hhhj 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.hhMhjubj~)}(hhh]h)}(hPointer to the HSI clienth]hPointer to the HSI client}(hj$hj"hhhNhNubah}(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)}(hjBh]hstruct hsi_msg *msg}(hhhjDhhhNhNubah}(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)}(h&HSI message descriptor of the transferh]h&HSI message descriptor of the transfer}(hj]hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhMhjXubah}(h]h ]h"]h$]h&]uh1j}hj<ubeh}(h]h ]h"]h$]h&]uh1jghjWhMhjubeh}(h]h ]h"]h$]h&]uh1jbhjubh)}(h**Description**h]j|)}(hj}h]h Description}(hhhjhhhNhNubah}(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.hhMhjubh)}(h&Return -errno on failure, 0 on successh]h&Return -errno on failure, 0 on success}(hjhjhhhNhNubah}(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&]uh1jqhjhhhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMubj)}(h hsi_start_txh]j!)}(h hsi_start_txh]h hsi_start_tx}(hhhjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjhhhjhMubjP)}(h(struct hsi_client *cl)h]jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj modnameN classnameNjj)}j]j)}jjsbc.hsi_start_txasbuh1hhjubj )}(h h]h }(hhhj= hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(hjh]h*}(hhhjK hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj!)}(hclh]hcl}(hhhjX hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjubah}(h]h ]h"]h$]h&]jjuh1jOhjhhhjhMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjhhhjhMubah}(h]jah ](jDjEeh"]h$]h&]jIuh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:83: ./include/linux/hsi/hsi.hhMhjhhubjL)}(hhh]h)}(h3Signal the port that the client wants to start a TXh]h3Signal the port that the client wants to start a TX}(hj 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&]uh1jKhjhhhjhMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj joj jpuh1jhhhjhNhNubjr)}(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}(hhhj 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}(hhhj 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 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}(hhhj!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!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&]uh1jqhjhhhNhNubj)}(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}(hhhjD!hhhNhNubah}(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 }(hhhjS!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj@!hhhjR!hMubj)}(h hsi_stop_txh]j!)}(h hsi_stop_txh]h hsi_stop_tx}(hhhje!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hja!ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj@!hhhjR!hMubjP)}(h(struct hsi_client *cl)h]jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}!ubj )}(h h]h }(hhhj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj}!ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj!ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj!modnameN classnameNjj)}j]j)}jjg!sb c.hsi_stop_txasbuh1hhj}!ubj )}(h h]h }(hhhj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj}!ubj)}(hjh]h*}(hhhj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}!ubj!)}(hclh]hcl}(hhhj!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj}!ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjy!ubah}(h]h ]h"]h$]h&]jjuh1jOhj@!hhhjR!hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjuh1jj?j@hj"hhhj"hMdubah}(h]j"ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMfhj"hhubjL)}(hhh]h)}(hUnregister an HSI porth]hUnregister an HSI port}(hj#hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMchj#hhubah}(h]h ]h"]h$]h&]uh1jKhj"hhhj"hMdubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj#joj#jpuh1jhhhjhNhNubjr)}(hF**Parameters** ``struct hsi_port *port`` The HSI port to unregisterh](h)}(h**Parameters**h]j|)}(hj#h]h Parameters}(hhhj#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}(hhhj#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#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&]uh1jqhjhhhNhNubj)}(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}(hhhj"$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMnubj )}(h h]h }(hhhj1$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$hhhj0$hMnubj)}(hhsi_unregister_controllerh]j!)}(hhsi_unregister_controllerh]hhsi_unregister_controller}(hhhjC$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj?$ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj$hhhj0$hMnubjP)}(h(struct hsi_controller *hsi)h]jV)}(hstruct hsi_controller *hsih](j)}(hjh]hstruct}(hhhj_$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[$ubj )}(h h]h }(hhhjl$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj[$ubh)}(hhh]j!)}(hhsi_controllerh]hhsi_controller}(hhhj}$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjz$ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj$modnameN classnameNjj)}j]j)}jjE$sbc.hsi_unregister_controllerasbuh1hhj[$ubj )}(h h]h }(hhhj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj[$ubj)}(hjh]h*}(hhhj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[$ubj!)}(hhsih]hhsi}(hhhj$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj[$ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjW$ubah}(h]h ]h"]h$]h&]jjuh1jOhj$hhhj0$hMnubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj$hhhj0$hMnubah}(h]j$ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMphj$hhubjL)}(hhh]h)}(hUnregister an HSI controllerh]hUnregister an HSI controller}(hj$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&]uh1jKhj$hhhj0$hMnubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj$joj$jpuh1jhhhjhNhNubjr)}(hO**Parameters** ``struct hsi_controller *hsi`` The HSI controller to registerh](h)}(h**Parameters**h]j|)}(hj%h]h Parameters}(hhhj%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}(hhhj&%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?%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&]uh1jghj9%hMshj%ubah}(h]h ]h"]h$]h&]uh1jbhj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhj~%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz%hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMyubj )}(h h]h }(hhhj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjz%hhhj%hMyubj)}(hhsi_register_controllerh]j!)}(hhsi_register_controllerh]hhsi_register_controller}(hhhj%hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj%ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhjz%hhhj%hMyubjP)}(h(struct hsi_controller *hsi)h]jV)}(hstruct hsi_controller *hsih](j)}(hjh]hstruct}(hhhj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj )}(h h]h }(hhhj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj%ubh)}(hhh]j!)}(hhsi_controllerh]hhsi_controller}(hhhj%hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj%ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj%modnameN classnameNjj)}j]j)}jj%sbc.hsi_register_controllerasbuh1hhj%ubj )}(h h]h }(hhhj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj%ubj)}(hjh]h*}(hhhj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj!)}(hhsih]hhsi}(hhhj&hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj%ubah}(h]h ]h"]h$]h&]jjuh1jOhjz%hhhj%hMyubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjv%hhhj%hMyubah}(h]jq%ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM}hjs%hhubjL)}(hhh]h)}(h(Register an HSI controller and its portsh]h(Register an HSI controller and its ports}(hjA&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&]uh1jKhjs%hhhj%hMyubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjW&jojW&jpuh1jhhhjhNhNubjr)}(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|)}(hja&h]h Parameters}(hhhjc&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|hj[&ubjc)}(hhh]jh)}(h>``struct hsi_controller *hsi`` The HSI controller to register h](jn)}(h``struct hsi_controller *hsi``h]j)}(hj&h]hstruct hsi_controller *hsi}(hhhj&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.chMyhjz&ubj~)}(hhh]h)}(hThe HSI controller to registerh]hThe HSI controller to register}(hj&hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMyhj&ubah}(h]h ]h"]h$]h&]uh1j}hjz&ubeh}(h]h ]h"]h$]h&]uh1jghj&hMyhjw&ubah}(h]h ]h"]h$]h&]uh1jbhj[&ubh)}(h**Description**h]j|)}(hj&h]h Description}(hhhj&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{hj[&ubh)}(h(Returns -errno on failure, 0 on success.h]h(Returns -errno on failure, 0 on success.}(hj&hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM{hj[&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhj'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 }(hhhj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&hhhj'hMubj)}(hhsi_register_client_driverh]j!)}(hhsi_register_client_driverh]hhsi_register_client_driver}(hhhj!'hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj'ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj&hhhj'hMubjP)}(h(struct hsi_client_driver *drv)h]jV)}(hstruct hsi_client_driver *drvh](j)}(hjh]hstruct}(hhhj='hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9'ubj )}(h h]h }(hhhjJ'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9'ubh)}(hhh]j!)}(hhsi_client_driverh]hhsi_client_driver}(hhhj['hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjX'ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj]'modnameN classnameNjj)}j]j)}jj#'sbc.hsi_register_client_driverasbuh1hhj9'ubj )}(h h]h }(hhhj{'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9'ubj)}(hjh]h*}(hhhj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9'ubj!)}(hdrvh]hdrv}(hhhj'hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj9'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj5'ubah}(h]h ]h"]h$]h&]jjuh1jOhj&hhhj'hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj&hhhj'hMubah}(h]j&ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj&hhubjL)}(hhh]h)}(h%Register an HSI client to the HSI bush]h%Register an HSI client to the HSI bus}(hj'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&]uh1jKhj&hhhj'hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj'joj'jpuh1jhhhjhNhNubjr)}(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}(hhhj'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}(hhhj(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(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}(hhhj?(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.}(hjU(hjS(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&]uh1jqhjhhhNhNubj)}(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}(hhhj(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 }(hhhj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj~(hhhj(hMubj)}(hhsi_put_controllerh]j!)}(hhsi_put_controllerh]hhsi_put_controller}(hhhj(hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj(ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj~(hhhj(hMubjP)}(h(struct hsi_controller *hsi)h]jV)}(hstruct hsi_controller *hsih](j)}(hjh]hstruct}(hhhj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj )}(h h]h }(hhhj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj(ubh)}(hhh]j!)}(hhsi_controllerh]hhsi_controller}(hhhj(hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj(ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj(modnameN classnameNjj)}j]j)}jj(sbc.hsi_put_controllerasbuh1hhj(ubj )}(h h]h }(hhhj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj(ubj)}(hjh]h*}(hhhj )hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj!)}(hhsih]hhsi}(hhhj)hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj(ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj(ubah}(h]h ]h"]h$]h&]jjuh1jOhj~(hhhj(hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hjz(hhhj(hMubah}(h]ju(ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjw(hhubjL)}(hhh]h)}(hFree an HSI controllerh]hFree an HSI controller}(hjE)hjC)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&]uh1jKhjw(hhhj(hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj[)joj[)jpuh1jhhhjhNhNubjr)}(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|)}(hje)h]h Parameters}(hhhjg)hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjc)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)}(hF``struct hsi_controller *hsi`` Pointer to the HSI controller to freed h](jn)}(h``struct hsi_controller *hsi``h]j)}(hj)h]hstruct hsi_controller *hsi}(hhhj)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)}(h&Pointer to the HSI controller to freedh]h&Pointer to the HSI controller to freed}(hj)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}(hhhj)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)}(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)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&]uh1jqhjhhhNhNubj)}(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}(hhhj*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 }(hhhj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj*hhhj*hMubh)}(hhh]j!)}(hhsi_controllerh]hhsi_controller}(hhhj#*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj *ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj%*modnameN classnameNjj)}j]j)}jhsi_alloc_controllersbc.hsi_alloc_controllerasbuh1hhj*hhhj*hMubj )}(h h]h }(hhhjD*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj*hhhj*hMubj)}(hjh]h*}(hhhjR*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*hhhj*hMubj)}(hhsi_alloc_controllerh]j!)}(hjA*h]hhsi_alloc_controller}(hhhjc*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj_*ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj*hhhj*hMubjP)}(h#(unsigned int n_ports, gfp_t flags)h](jV)}(hunsigned int n_portsh](j)}(hunsignedh]hunsigned}(hhhj~*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz*ubj )}(h h]h }(hhhj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjz*ubj)}(hinth]hint}(hhhj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz*ubj )}(h h]h }(hhhj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjz*ubj!)}(hn_portsh]hn_ports}(hhhj*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjz*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjv*ubjV)}(h gfp_t flagsh](h)}(hhh]j!)}(hgfp_th]hgfp_t}(hhhj*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj*modnameN classnameNjj)}j]j?*c.hsi_alloc_controllerasbuh1hhj*ubj )}(h h]h }(hhhj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj*ubj!)}(hflagsh]hflags}(hhhj*hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjv*ubeh}(h]h ]h"]h$]h&]jjuh1jOhj*hhhj*hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj)hhhj*hMubah}(h]j)ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj)hhubjL)}(hhh]h)}(h(Allocate an HSI controller and its portsh]h(Allocate an HSI controller and its ports}(hj++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&]uh1jKhj)hhhj*hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjA+jojA+jpuh1jhhhjhNhNubjr)}(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|)}(hjK+h]h Parameters}(hhhjM+hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjI+ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjE+ubjc)}(hhh](jh)}(h?``unsigned int n_ports`` Number of ports on the HSI controller h](jn)}(h``unsigned int n_ports``h]j)}(hjj+h]hunsigned int n_ports}(hhhjl+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh+ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjd+ubj~)}(hhh]h)}(h%Number of ports on the HSI controllerh]h%Number of ports on the HSI controller}(hj+hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1j}hjd+ubeh}(h]h ]h"]h$]h&]uh1jghj+hMhja+ubjh)}(h(``gfp_t flags`` Kernel allocation flags h](jn)}(h``gfp_t flags``h]j)}(hj+h]h gfp_t flags}(hhhj+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+hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1j}hj+ubeh}(h]h ]h"]h$]h&]uh1jghj+hMhja+ubeh}(h]h ]h"]h$]h&]uh1jbhjE+ubh)}(h**Description**h]j|)}(hj+h]h Description}(hhhj+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.chMhjE+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+hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjE+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhj#,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 }(hhhj2,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj,hhhj1,hMubj)}(h hsi_free_msgh]j!)}(h hsi_free_msgh]h hsi_free_msg}(hhhjD,hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj@,ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj,hhhj1,hMubjP)}(h(struct hsi_msg *msg)h]jV)}(hstruct hsi_msg *msgh](j)}(hjh]hstruct}(hhhj`,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\,ubj )}(h h]h }(hhhjm,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj\,ubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hhhj~,hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj{,ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj,modnameN classnameNjj)}j]j)}jjF,sbc.hsi_free_msgasbuh1hhj\,ubj )}(h h]h }(hhhj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj\,ubj)}(hjh]h*}(hhhj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\,ubj!)}(hmsgh]hmsg}(hhhj,hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj\,ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjX,ubah}(h]h ]h"]h$]h&]jjuh1jOhj,hhhj1,hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj,hhhj1,hMubah}(h]j,ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj,hhubjL)}(hhh]h)}(hFree an HSI messageh]hFree an HSI message}(hj,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&]uh1jKhj,hhhj1,hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj,joj,jpuh1jhhhjhNhNubjr)}(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}(hhhj-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}(hhhj'-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@-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}(hhhjb-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)}(hFClient is responsible to free the buffers pointed by the scatterlists.h]hFClient is responsible to free the buffers pointed by the scatterlists.}(hjx-hjv-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&]uh1jqhjhhhNhNubj)}(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}(hhhj-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 }(hhhj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj-hhhj-hMubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hhhj-hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj-ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj-modnameN classnameNjj)}j]j)}j hsi_alloc_msgsbc.hsi_alloc_msgasbuh1hhj-hhhj-hMubj )}(h h]h }(hhhj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj-hhhj-hMubj)}(hjh]h*}(hhhj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hhhj-hMubj)}(h hsi_alloc_msgh]j!)}(hj-h]h hsi_alloc_msg}(hhhj.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj.ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj-hhhj-hMubjP)}(h!(unsigned int nents, gfp_t flags)h](jV)}(hunsigned int nentsh](j)}(hunsignedh]hunsigned}(hhhj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj )}(h h]h }(hhhj-.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.ubj)}(hinth]hint}(hhhj;.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj )}(h h]h }(hhhjI.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.ubj!)}(hnentsh]hnents}(hhhjW.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj.ubjV)}(h gfp_t flagsh](h)}(hhh]j!)}(hgfp_th]hgfp_t}(hhhjs.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjp.ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetju.modnameN classnameNjj)}j]j-c.hsi_alloc_msgasbuh1hhjl.ubj )}(h h]h }(hhhj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjl.ubj!)}(hflagsh]hflags}(hhhj.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjl.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj.ubeh}(h]h ]h"]h$]h&]jjuh1jOhj-hhhj-hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj-hhhj-hMubah}(h]j-ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj-hhubjL)}(hhh]h)}(hAllocate an HSI messageh]hAllocate an HSI message}(hj.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&]uh1jKhj-hhhj-hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj.joj.jpuh1jhhhjhNhNubjr)}(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}(hhhj.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}(hhhj /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&/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)}(hjD/h]h gfp_t flags}(hhhjF/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB/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_/hj]/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjY/hMhjZ/ubah}(h]h ]h"]h$]h&]uh1j}hj>/ubeh}(h]h ]h"]h$]h&]uh1jghjY/hMhj/ubeh}(h]h ]h"]h$]h&]uh1jbhj.ubh)}(h**Description**h]j|)}(hj/h]h Description}(hhhj/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)}(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/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/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&]uh1jqhjhhhNhNubj)}(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}(hhhj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM0ubj )}(h h]h }(hhhj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/hhhj/hM0ubj)}(h hsi_asynch]j!)}(h hsi_asynch]h hsi_async}(hhhj/hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj/ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj/hhhj/hM0ubjP)}(h,(struct hsi_client *cl, struct hsi_msg *msg)h](jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 0ubj )}(h h]h }(hhhj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj 0ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj.0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj+0ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj00modnameN classnameNjj)}j]j)}jj/sb c.hsi_asyncasbuh1hhj 0ubj )}(h h]h }(hhhjN0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj 0ubj)}(hjh]h*}(hhhj\0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 0ubj!)}(hclh]hcl}(hhhji0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj 0ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj0ubjV)}(hstruct hsi_msg *msgh](j)}(hjh]hstruct}(hhhj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~0ubj )}(h h]h }(hhhj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj~0ubh)}(hhh]j!)}(hhsi_msgh]hhsi_msg}(hhhj0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj0modnameN classnameNjj)}j]jJ0 c.hsi_asyncasbuh1hhj~0ubj )}(h h]h }(hhhj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj~0ubj)}(hjh]h*}(hhhj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~0ubj!)}(hmsgh]hmsg}(hhhj0hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj~0ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj0ubeh}(h]h ]h"]h$]h&]jjuh1jOhj/hhhj/hM0ubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj/hhhj/hM0ubah}(h]j/ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMAhj/hhubjL)}(hhh]h)}(h(Submit an HSI transfer to the controllerh]h(Submit an HSI transfer to the controller}(hj1hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chM/hj1hhubah}(h]h ]h"]h$]h&]uh1jKhj/hhhj/hM0ubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj1joj1jpuh1jhhhjhNhNubjr)}(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|)}(hj&1h]h Parameters}(hhhj(1hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hj$1ubah}(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)}(hjE1h]hstruct hsi_client *cl}(hhhjG1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC1ubah}(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}(hj`1hj^1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZ1hM0hj[1ubah}(h]h ]h"]h$]h&]uh1j}hj?1ubeh}(h]h ]h"]h$]h&]uh1jghjZ1hM0hj<1ubjh)}(h>``struct hsi_msg *msg`` The HSI transfer passed to controller h](jn)}(h``struct hsi_msg *msg``h]j)}(hj~1h]hstruct hsi_msg *msg}(hhhj1hhhNhNubah}(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.chM1hjx1ubj~)}(hhh]h)}(h%The HSI transfer passed to controllerh]h%The HSI transfer passed to controller}(hj1hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hM1hj1ubah}(h]h ]h"]h$]h&]uh1j}hjx1ubeh}(h]h ]h"]h$]h&]uh1jghj1hM1hj<1ubeh}(h]h ]h"]h$]h&]uh1jbhj 1ubh)}(h**Description**h]j|)}(hj1h]h Description}(hhhj1hhhNhNubah}(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.}(hj1hj1hhhNhNubah}(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.}(hj1hj1hhhNhNubah}(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.}(hj1hj1hhhNhNubah}(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}(hj1hj1hhhNhNubah}(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&]uh1jqhjhhhNhNubj)}(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}(hhhj+2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'2hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMQubj )}(h h]h }(hhhj:2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj'2hhhj92hMQubj)}(hhsi_claim_porth]j!)}(hhsi_claim_porth]hhsi_claim_port}(hhhjL2hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjH2ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj'2hhhj92hMQubjP)}(h+(struct hsi_client *cl, unsigned int share)h](jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhjh2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjd2ubj )}(h h]h }(hhhju2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjd2ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj2hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj2modnameN classnameNjj)}j]j)}jjN2sbc.hsi_claim_portasbuh1hhjd2ubj )}(h h]h }(hhhj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjd2ubj)}(hjh]h*}(hhhj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjd2ubj!)}(hclh]hcl}(hhhj2hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjd2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj`2ubjV)}(hunsigned int shareh](j)}(hunsignedh]hunsigned}(hhhj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj )}(h h]h }(hhhj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2ubj)}(hinth]hint}(hhhj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj )}(h h]h }(hhhj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2ubj!)}(hshareh]hshare}(hhhj3hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj`2ubeh}(h]h ]h"]h$]h&]jjuh1jOhj'2hhhj92hMQubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj#2hhhj92hMQubah}(h]j2ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMVhj 2hhubjL)}(hhh]h)}(hClaim the HSI client's porth]hClaim the HSI client’s port}(hj?3hj=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&]uh1jKhj 2hhhj92hMQubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjU3jojU3jpuh1jhhhjhNhNubjr)}(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|)}(hj_3h]h Parameters}(hhhja3hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hj]3ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMThjY3ubjc)}(hhh](jh)}(hB``struct hsi_client *cl`` HSI client that wants to claim its port h](jn)}(h``struct hsi_client *cl``h]j)}(hj~3h]hstruct hsi_client *cl}(hhhj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|3ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMQhjx3ubj~)}(hhh]h)}(h'HSI client that wants to claim its porth]h'HSI client that wants to claim its port}(hj3hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMQhj3ubah}(h]h ]h"]h$]h&]uh1j}hjx3ubeh}(h]h ]h"]h$]h&]uh1jghj3hMQhju3ubjh)}(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}(hhhj3hhhNhNubah}(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.}(hj3hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMRhj3ubah}(h]h ]h"]h$]h&]uh1j}hj3ubeh}(h]h ]h"]h$]h&]uh1jghj3hMRhju3ubeh}(h]h ]h"]h$]h&]uh1jbhjY3ubh)}(h**Description**h]j|)}(hj3h]h Description}(hhhj3hhhNhNubah}(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.chMThjY3ubh)}(h(Returns -errno on failure, 0 on success.h]h(Returns -errno on failure, 0 on success.}(hj 4hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMThjY3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhj74hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj34hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMpubj )}(h h]h }(hhhjF4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj34hhhjE4hMpubj)}(hhsi_release_porth]j!)}(hhsi_release_porth]hhsi_release_port}(hhhjX4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjT4ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj34hhhjE4hMpubjP)}(h(struct hsi_client *cl)h]jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhjt4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp4ubj )}(h h]h }(hhhj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjp4ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj4ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj4modnameN classnameNjj)}j]j)}jjZ4sbc.hsi_release_portasbuh1hhjp4ubj )}(h h]h }(hhhj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjp4ubj)}(hjh]h*}(hhhj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp4ubj!)}(hclh]hcl}(hhhj4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjp4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjl4ubah}(h]h ]h"]h$]h&]jjuh1jOhj34hhhjE4hMpubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj/4hhhjE4hMpubah}(h]j*4ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMrhj,4hhubjL)}(hhh]h)}(hRelease the HSI client's porth]hRelease the HSI client’s port}(hj4hj4hhhNhNubah}(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&]uh1jKhj,4hhhjE4hMpubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj5joj5jpuh1jhhhjhNhNubjr)}(hX**Parameters** ``struct hsi_client *cl`` HSI client which previously claimed its porth](h)}(h**Parameters**h]j|)}(hj5h]h Parameters}(hhhj5hhhNhNubah}(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.chMshj5ubjc)}(hhh]jh)}(hF``struct hsi_client *cl`` HSI client which previously claimed its porth](jn)}(h``struct hsi_client *cl``h]j)}(hj95h]hstruct hsi_client *cl}(hhhj;5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj75ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMuhj35ubj~)}(hhh]h)}(h,HSI client which previously claimed its porth]h,HSI client which previously claimed its port}(hjT5hjR5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMphjO5ubah}(h]h ]h"]h$]h&]uh1j}hj35ubeh}(h]h ]h"]h$]h&]uh1jghjN5hMuhj05ubah}(h]h ]h"]h$]h&]uh1jbhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hhhj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj5hhhj5hMubj)}(hhsi_register_port_eventh]j!)}(hhsi_register_port_eventh]hhsi_register_port_event}(hhhj5hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj5ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj5hhhj5hMubjP)}(hK(struct hsi_client *cl, void (*handler)(struct hsi_client*, unsigned long))h](jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj )}(h h]h }(hhhj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj5ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj5hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj5ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj5modnameN classnameNjj)}j]j)}jj5sbc.hsi_register_port_eventasbuh1hhj5ubj )}(h h]h }(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj5ubj)}(hjh]h*}(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj!)}(hclh]hcl}(hhhj)6hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj5ubjV)}(h2void (*handler)(struct hsi_client*, unsigned long)h](j)}(hvoidh]hvoid}(hhhjB6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj )}(h h]h }(hhhjP6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj>6ubj)}(h(h]h(}(hhhj^6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj)}(hjh]h*}(hhhjl6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj!)}(hhandlerh]hhandler}(hhhjy6hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj>6ubj)}(h)h]h)}(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj)}(hj`6h]h(}(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj)}(hjh]hstruct}(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj )}(h h]h }(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj>6ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj6hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj6modnameN classnameNjj)}j]j 6c.hsi_register_port_eventasbuh1hhj>6ubj)}(hjh]h*}(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj)}(h,h]h,}(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj )}(h h]h }(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj>6ubj)}(hunsignedh]hunsigned}(hhhj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj )}(h h]h }(hhhj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj>6ubj)}(hlongh]hlong}(hhhj#7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubj)}(hj6h]h)}(hhhj17hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>6ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj5ubeh}(h]h ]h"]h$]h&]jjuh1jOhj5hhhj5hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj5hhhj5hMubah}(h]j5ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj5hhubjL)}(hhh]h)}(h(Register a client to receive port eventsh]h(Register a client to receive port events}(hj]7hj[7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjX7hhubah}(h]h ]h"]h$]h&]uh1jKhj5hhhj5hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnjs7jojs7jpuh1jhhhjhNhNubjr)}(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|)}(hj}7h]h Parameters}(hhhj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hj{7ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjw7ubjc)}(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}(hhhj7hhhNhNubah}(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)}(h,HSI client that wants to receive port eventsh]h,HSI client that wants to receive port events}(hj7hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j}hj7ubeh}(h]h ]h"]h$]h&]uh1jghj7hMhj7ubjh)}(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)}(hhhj7hhhNhNubah}(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}(hj7hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j}hj7ubeh}(h]h ]h"]h$]h&]uh1jghj7hMhj7ubeh}(h]h ]h"]h$]h&]uh1jbhjw7ubh)}(h**Description**h]j|)}(hj8h]h Description}(hhhj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hj8ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjw7ubh)}(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(8hj&8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjw7ubh)}(h)Returns -errno on error, or 0 on success.h]h)Returns -errno on error, or 0 on success.}(hj78hj58hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjw7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhjd8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`8hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hhhjs8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj`8hhhjr8hMubj)}(hhsi_unregister_port_eventh]j!)}(hhsi_unregister_port_eventh]hhsi_unregister_port_event}(hhhj8hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj8ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj`8hhhjr8hMubjP)}(h(struct hsi_client *cl)h]jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj )}(h h]h }(hhhj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhj8hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj8ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj8modnameN classnameNjj)}j]j)}jj8sbc.hsi_unregister_port_eventasbuh1hhj8ubj )}(h h]h }(hhhj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubj)}(hjh]h*}(hhhj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj!)}(hclh]hcl}(hhhj8hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj8ubah}(h]h ]h"]h$]h&]jjuh1jOhj`8hhhjr8hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj\8hhhjr8hMubah}(h]jW8ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjY8hhubjL)}(hhh]h)}(h'Stop receiving port events for a clienth]h'Stop receiving port events for a client}(hj'9hj%9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj"9hhubah}(h]h ]h"]h$]h&]uh1jKhjY8hhhjr8hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj=9joj=9jpuh1jhhhjhNhNubjr)}(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|)}(hjG9h]h Parameters}(hhhjI9hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjE9ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjA9ubjc)}(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)}(hjf9h]hstruct hsi_client *cl}(hhhjh9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjd9ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj`9ubj~)}(hhh]h)}(h3HSI client that wants to stop receiving port eventsh]h3HSI client that wants to stop receiving port events}(hj9hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{9hMhj|9ubah}(h]h ]h"]h$]h&]uh1j}hj`9ubeh}(h]h ]h"]h$]h&]uh1jghj{9hMhj]9ubah}(h]h ]h"]h$]h&]uh1jbhjA9ubh)}(h**Description**h]j|)}(hj9h]h Description}(hhhj9hhhNhNubah}(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.chMhjA9ubh)}(hIClients should call this function before releasing their associated port.h]hIClients should call this function before releasing their associated port.}(hj9hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjA9ubh)}(h)Returns -errno on error, or 0 on success.h]h)Returns -errno on error, or 0 on success.}(hj9hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjA9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jqhjhhhNhNubj)}(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}(hhhj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMubj )}(h h]h }(hhhj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9hhhj:hMubj)}(h hsi_eventh]j!)}(h hsi_eventh]h hsi_event}(hhhj:hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj:ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj9hhhj:hMubjP)}(h,(struct hsi_port *port, unsigned long event)h](jV)}(hstruct hsi_port *porth](j)}(hjh]hstruct}(hhhj2:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.:ubj )}(h h]h }(hhhj?:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.:ubh)}(hhh]j!)}(hhsi_porth]hhsi_port}(hhhjP:hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjM:ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetjR:modnameN classnameNjj)}j]j)}jj:sb c.hsi_eventasbuh1hhj.:ubj )}(h h]h }(hhhjp:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.:ubj)}(hjh]h*}(hhhj~:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.:ubj!)}(hporth]hport}(hhhj:hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj.:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj*:ubjV)}(hunsigned long eventh](j)}(hunsignedh]hunsigned}(hhhj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj )}(h h]h }(hhhj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubj)}(hlongh]hlong}(hhhj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj )}(h h]h }(hhhj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubj!)}(heventh]hevent}(hhhj:hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhj*:ubeh}(h]h ]h"]h$]h&]jjuh1jOhj9hhhj:hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj9hhhj:hMubah}(h]j9ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj9hhubjL)}(hhh]h)}(h"Notifies clients about port eventsh]h"Notifies clients about port events}(hj ;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&]uh1jKhj9hhhj:hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj;joj;jpuh1jhhhjhNhNubjr)}(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}(hhhj+;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)}(hjH;h]hstruct hsi_port *port}(hhhjJ;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjF;ubah}(h]h ]h"]h$]h&]uh1jmhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhjB;ubj~)}(hhh]h)}(hPort where the event occurredh]hPort where the event occurred}(hjc;hja;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj];hMhj^;ubah}(h]h ]h"]h$]h&]uh1j}hjB;ubeh}(h]h ]h"]h$]h&]uh1jghj];hMhj?;ubjh)}(h'``unsigned long event`` The event type h](jn)}(h``unsigned long event``h]j)}(hj;h]hunsigned long event}(hhhj;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)}(hThe event typeh]hThe event type}(hj;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}(hhhj;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;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;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;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&]uh1jqhjhhhNhNubj)}(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}(hhhj<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 }(hhhj.<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}(hhhj@<hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj<<ubah}(h]h ](j3j4eh"]h$]h&]jjuh1jhj<hhhj-<hMubjP)}(h#(struct hsi_client *cl, char *name)h](jV)}(hstruct hsi_client *clh](j)}(hjh]hstruct}(hhhj\<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX<ubj )}(h h]h }(hhhji<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjX<ubh)}(hhh]j!)}(h hsi_clienth]h hsi_client}(hhhjz<hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjw<ubah}(h]h ]h"]h$]h&] refdomainjhreftypej reftargetj|<modnameN classnameNjj)}j]j)}jjB<sbc.hsi_get_channel_id_by_nameasbuh1hhjX<ubj )}(h h]h }(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjX<ubj)}(hjh]h*}(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX<ubj!)}(hclh]hcl}(hhhj<hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hjX<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjT<ubjV)}(h char *nameh](j)}(hcharh]hchar}(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj )}(h h]h }(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj<ubj)}(hjh]h*}(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj!)}(hnameh]hname}(hhhj<hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j hj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jUhjT<ubeh}(h]h ]h"]h$]h&]jjuh1jOhj<hhhj-<hMubeh}(h]h ]h"]h$]h&]jjj>uh1jj?j@hj<hhhj-<hMubah}(h]j<ah ](jDjEeh"]h$]h&]jIuh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/hsi:86: ./drivers/hsi/hsi_core.chMhj<hhubjL)}(hhh]h)}(h"acquire channel id by channel nameh]h"acquire channel id by channel name}(hj$=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&]uh1jKhj<hhhj-<hMubeh}(h]h ](jhfunctioneh"]h$]h&]jmjhjnj:=joj:=jpuh1jhhhjhNhNubjr)}(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|)}(hjD=h]h Parameters}(hhhjF=hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjB=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)}(hjc=h]hstruct hsi_client *cl}(hhhje=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja=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)}(h"HSI client, which uses the channelh]h"HSI client, which uses the channel}(hj~=hj|=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjx=hMhjy=ubah}(h]h ]h"]h$]h&]uh1j}hj]=ubeh}(h]h ]h"]h$]h&]uh1jghjx=hMhjZ=ubjh)}(h/``char *name`` name the channel is known under h](jn)}(h``char *name``h]j)}(hj=h]h char *name}(hhhj=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)}(hname the channel is known underh]hname the channel is known under}(hj=hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1j}hj=ubeh}(h]h ]h"]h$]h&]uh1jghj=hMhjZ=ubeh}(h]h ]h"]h$]h&]uh1jbhj>=ubh)}(h**Description**h]j|)}(hj=h]h Description}(hhhj=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=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=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&]uh1jqhjhhhNhNubeh}(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_handlerjE>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.confapep_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_spacefile_insertion_enabled raw_enabledKline_length_limitM'syntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_link embed_imagesenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j>j>j jj@j=jjj>j>u nametypes}(j>Nj Nj@NjNj>Nuh}(j>hjhj=jjjCj>jjjjOjTjjjH jM j j j j jjjjjjjjj=jBjjj_jdjjjjj7!j