sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget&/translations/zh_CN/driver-api/slimbusmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/zh_TW/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/it_IT/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ja_JP/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ko_KR/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/pt_BR/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/sp_SP/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hLinux kernel SLIMbus supporth]hLinux kernel SLIMbus support}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh@/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus.rsthKubh)}(hhh](h)}(hOverviewh]hOverview}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hWhat is SLIMbus?h]hWhat is SLIMbus?}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh paragraph)}(hSLIMbus (Serial Low Power Interchip Media Bus) is a specification developed by MIPI (Mobile Industry Processor Interface) alliance. The bus uses master/slave configuration, and is a 2-wire multi-drop implementation (clock, and data).h]hSLIMbus (Serial Low Power Interchip Media Bus) is a specification developed by MIPI (Mobile Industry Processor Interface) alliance. The bus uses master/slave configuration, and is a 2-wire multi-drop implementation (clock, and data).}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hCurrently, SLIMbus is used to interface between application processors of SoCs (System-on-Chip) and peripheral components (typically codec). SLIMbus uses Time-Division-Multiplexing to accommodate multiple data channels, and a control channel.h]hCurrently, SLIMbus is used to interface between application processors of SoCs (System-on-Chip) and peripheral components (typically codec). SLIMbus uses Time-Division-Multiplexing to accommodate multiple data channels, and a control channel.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hX*The control channel is used for various control functions such as bus management, configuration and status updates. These messages can be unicast (e.g. reading/writing device specific values), or multicast (e.g. data channel reconfiguration sequence is a broadcast message announced to all devices)h]hX*The control channel is used for various control functions such as bus management, configuration and status updates. These messages can be unicast (e.g. reading/writing device specific values), or multicast (e.g. data channel reconfiguration sequence is a broadcast message announced to all devices)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(htA data channel is used for data-transfer between 2 SLIMbus devices. Data channel uses dedicated ports on the device.h]htA data channel is used for data-transfer between 2 SLIMbus devices. Data channel uses dedicated ports on the device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]what-is-slimbusah ]h"]what is slimbus?ah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hHardware description:h]hHardware description:}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hhhhhKubh)}(hSLIMbus specification has different types of device classifications based on their capabilities. A manager device is responsible for enumeration, configuration, and dynamic channel allocation. Every bus has 1 active manager.h]hSLIMbus specification has different types of device classifications based on their capabilities. A manager device is responsible for enumeration, configuration, and dynamic channel allocation. Every bus has 1 active manager.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj/hhubh)}(hNA generic device is a device providing application functionality (e.g. codec).h]hNA generic device is a device providing application functionality (e.g. codec).}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hj/hhubh)}(hrFramer device is responsible for clocking the bus, and transmitting frame-sync and framing information on the bus.h]hrFramer device is responsible for clocking the bus, and transmitting frame-sync and framing information on the bus.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hj/hhubh)}(hMEach SLIMbus component has an interface device for monitoring physical layer.h]hMEach SLIMbus component has an interface device for monitoring physical layer.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hj/hhubh)}(hX]Typically each SoC contains SLIMbus component having 1 manager, 1 framer device, 1 generic device (for data channel support), and 1 interface device. External peripheral SLIMbus component usually has 1 generic device (for functionality/data channel support), and an associated interface device. The generic device's registers are mapped as 'value elements' so that they can be written/read using SLIMbus control channel exchanging control/status type of information. In case there are multiple framer devices on the same bus, manager device is responsible to select the active-framer for clocking the bus.h]hXcTypically each SoC contains SLIMbus component having 1 manager, 1 framer device, 1 generic device (for data channel support), and 1 interface device. External peripheral SLIMbus component usually has 1 generic device (for functionality/data channel support), and an associated interface device. The generic device’s registers are mapped as ‘value elements’ so that they can be written/read using SLIMbus control channel exchanging control/status type of information. In case there are multiple framer devices on the same bus, manager device is responsible to select the active-framer for clocking the bus.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hj/hhubh)}(hPer specification, SLIMbus uses "clock gears" to do power management based on current frequency and bandwidth requirements. There are 10 clock gears and each gear changes the SLIMbus frequency to be twice its previous gear.h]hPer specification, SLIMbus uses “clock gears” to do power management based on current frequency and bandwidth requirements. There are 10 clock gears and each gear changes the SLIMbus frequency to be twice its previous gear.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hj/hhubh)}(hEach device has a 6-byte enumeration-address and the manager assigns every device with a 1-byte logical address after the devices report presence on the bus.h]hEach device has a 6-byte enumeration-address and the manager assigns every device with a 1-byte logical address after the devices report presence on the bus.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj/hhubeh}(h]hardware-descriptionah ]h"]hardware description:ah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hSoftware description:h]hSoftware description:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKh]hSLIM_DEVICE_STATUS_RESERVED}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj<ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK*hj8ubjX)}(hhh]h)}(hReserved for future use.h]hReserved for future use.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK+hjTubah}(h]h ]h"]h$]h&]uh1jWhj8ubeh}(h]h ]h"]h$]h&]uh1j5hjShK*hjubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_device (C struct) c.slim_devicehNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(h slim_deviceh]j^)}(hstruct slim_deviceh](jd)}(hjgh]hstruct}(hjhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjhhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK0ubjv)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhjhK0ubj)}(h slim_deviceh]j)}(hjh]h slim_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhK0ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjhhhjhK0ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jWhjhK0hjhhubj)}(hhh]h)}(hSlim device handle.h]hSlim device handle.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK,hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK0ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hNhNubj)}(hX**Definition**:: struct slim_device { struct device dev; struct slim_eaddr e_addr; struct slim_controller *ctrl; enum slim_device_status status; u8 laddr; bool is_laddr_valid; struct list_head stream_list; spinlock_t stream_list_lock; }; **Members** ``dev`` Driver model representation of the device. ``e_addr`` Enumeration address of this device. ``ctrl`` slim controller instance. ``status`` slim device status ``laddr`` 1-byte Logical address of this device. ``is_laddr_valid`` indicates if the laddr is valid or not ``stream_list`` List of streams on this device ``stream_list_lock`` lock to protect the stream listh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK0hjubj)}(hXstruct slim_device { struct device dev; struct slim_eaddr e_addr; struct slim_controller *ctrl; enum slim_device_status status; u8 laddr; bool is_laddr_valid; struct list_head stream_list; spinlock_t stream_list_lock; };h]hXstruct slim_device { struct device dev; struct slim_eaddr e_addr; struct slim_controller *ctrl; enum slim_device_status status; u8 laddr; bool is_laddr_valid; struct list_head stream_list; spinlock_t stream_list_lock; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK2hjubh)}(h **Members**h]j)}(hj(h]hMembers}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK=hjubj1)}(hhh](j6)}(h3``dev`` Driver model representation of the device. h](j<)}(h``dev``h]jB)}(hjGh]hdev}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjEubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK.hjAubjX)}(hhh]h)}(h*Driver model representation of the device.h]h*Driver model representation of the device.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hK.hj]ubah}(h]h ]h"]h$]h&]uh1jWhjAubeh}(h]h ]h"]h$]h&]uh1j5hj\hK.hj>ubj6)}(h/``e_addr`` Enumeration address of this device. h](j<)}(h ``e_addr``h]jB)}(hjh]he_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj~ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK/hjzubjX)}(hhh]h)}(h#Enumeration address of this device.h]h#Enumeration address of this device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK/hjubah}(h]h ]h"]h$]h&]uh1jWhjzubeh}(h]h ]h"]h$]h&]uh1j5hjhK/hj>ubj6)}(h#``ctrl`` slim controller instance. h](j<)}(h``ctrl``h]jB)}(hjh]hctrl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK1hjubjX)}(hhh]h)}(hslim controller instance.h]hslim controller instance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK1hjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhK1hj>ubj6)}(h``status`` slim device status h](j<)}(h ``status``h]jB)}(hjh]hstatus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK0hjubjX)}(hhh]h)}(hslim device statush]hslim device status}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK0hjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhK0hj>ubj6)}(h1``laddr`` 1-byte Logical address of this device. h](j<)}(h ``laddr``h]jB)}(hj+h]hladdr}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj)ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK2hj%ubjX)}(hhh]h)}(h&1-byte Logical address of this device.h]h&1-byte Logical address of this device.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hK2hjAubah}(h]h ]h"]h$]h&]uh1jWhj%ubeh}(h]h ]h"]h$]h&]uh1j5hj@hK2hj>ubj6)}(h:``is_laddr_valid`` indicates if the laddr is valid or not h](j<)}(h``is_laddr_valid``h]jB)}(hjdh]his_laddr_valid}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjbubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK3hj^ubjX)}(hhh]h)}(h&indicates if the laddr is valid or noth]h&indicates if the laddr is valid or not}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhK3hjzubah}(h]h ]h"]h$]h&]uh1jWhj^ubeh}(h]h ]h"]h$]h&]uh1j5hjyhK3hj>ubj6)}(h/``stream_list`` List of streams on this device h](j<)}(h``stream_list``h]jB)}(hjh]h stream_list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK4hjubjX)}(hhh]h)}(hList of streams on this deviceh]hList of streams on this device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK4hjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhK4hj>ubj6)}(h4``stream_list_lock`` lock to protect the stream listh](j<)}(h``stream_list_lock``h]jB)}(hjh]hstream_list_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK4hjubjX)}(hhh]h)}(hlock to protect the stream listh]hlock to protect the stream list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK5hjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhK4hj>ubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK8hj0hhubh)}(hThis is the client/device handle returned when a SLIMbus device is registered with a controller. Pointer to this structure is used by client-driver as a handle.h]hThis is the client/device handle returned when a SLIMbus device is registered with a controller. Pointer to this structure is used by client-driver as a handle.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK5hj0hhubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_driver (C struct) c.slim_driverhNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(h slim_driverh]j^)}(hstruct slim_driverh](jd)}(hjgh]hstruct}(hjWhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjShhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKShj; ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj: hKRhjubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_val_inf (C struct)c.slim_val_infhNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(h slim_val_infh]j^)}(hstruct slim_val_infh](jd)}(hjgh]hstruct}(hj hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj{ hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKYubjv)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj{ hhhj hKYubj)}(h slim_val_infh]j)}(hjy h]h slim_val_inf}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj{ hhhj hKYubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjw hhhj hKYubah}(h]jr ah ](jjeh"]h$]h&]jj)jhuh1jWhj hKYhjt hhubj)}(hhh]h)}(h$Slimbus value or information elementh]h$Slimbus value or information element}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKahj hhubah}(h]h ]h"]h$]h&]uh1jhjt hhhj hKYubeh}(h]h ](jstructeh"]h$]h&]jjjj jj jjjuh1jRhhhj0hNhNubj)}(hXd**Definition**:: struct slim_val_inf { u16 start_offset; u8 num_bytes; u8 *rbuf; const u8 *wbuf; struct completion *comp; }; **Members** ``start_offset`` Specifies starting offset in information/value element map ``num_bytes`` upto 16. This ensures that the message will fit the slicesize per SLIMbus spec ``rbuf`` buffer to read the values ``wbuf`` buffer to write ``comp`` completion for asynchronous operations, valid only if TID is required for transaction, like REQUEST operations. Rest of the transactions are synchronous anyway.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKehj ubj)}(hstruct slim_val_inf { u16 start_offset; u8 num_bytes; u8 *rbuf; const u8 *wbuf; struct completion *comp; };h]hstruct slim_val_inf { u16 start_offset; u8 num_bytes; u8 *rbuf; const u8 *wbuf; struct completion *comp; };}hj sbah}(h]h ]h"]h$]h&]jjuh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKghj ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKohj ubj1)}(hhh](j6)}(hL``start_offset`` Specifies starting offset in information/value element map h](j<)}(h``start_offset``h]jB)}(hj. h]h start_offset}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj, ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKchj( ubjX)}(hhh]h)}(h:Specifies starting offset in information/value element maph]h:Specifies starting offset in information/value element map}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjC hKchjD ubah}(h]h ]h"]h$]h&]uh1jWhj( ubeh}(h]h ]h"]h$]h&]uh1j5hjC hKchj% ubj6)}(h]``num_bytes`` upto 16. This ensures that the message will fit the slicesize per SLIMbus spec h](j<)}(h ``num_bytes``h]jB)}(hjg h]h num_bytes}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhje ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKghja ubjX)}(hhh]h)}(hNupto 16. This ensures that the message will fit the slicesize per SLIMbus spech]hNupto 16. This ensures that the message will fit the slicesize per SLIMbus spec}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKfhj} ubah}(h]h ]h"]h$]h&]uh1jWhja ubeh}(h]h ]h"]h$]h&]uh1j5hj| hKghj% ubj6)}(h#``rbuf`` buffer to read the values h](j<)}(h``rbuf``h]jB)}(hj h]hrbuf}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKdhj ubjX)}(hhh]h)}(hbuffer to read the valuesh]hbuffer to read the values}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKdhj ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj hKdhj% ubj6)}(h``wbuf`` buffer to write h](j<)}(h``wbuf``h]jB)}(hj h]hwbuf}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKehj ubjX)}(hhh]h)}(hbuffer to writeh]hbuffer to write}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKehj ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj hKehj% ubj6)}(h``comp`` completion for asynchronous operations, valid only if TID is required for transaction, like REQUEST operations. Rest of the transactions are synchronous anyway.h](j<)}(h``comp``h]jB)}(hj h]hcomp}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKihj ubjX)}(hhh]h)}(hcompletion for asynchronous operations, valid only if TID is required for transaction, like REQUEST operations. Rest of the transactions are synchronous anyway.h]hcompletion for asynchronous operations, valid only if TID is required for transaction, like REQUEST operations. Rest of the transactions are synchronous anyway.}(hj, hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhhj) ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj( hKihj% ubeh}(h]h ]h"]h$]h&]uh1j0hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_stream_config (C struct)c.slim_stream_confighNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(hslim_stream_configh]j^)}(hstruct slim_stream_configh](jd)}(hjgh]hstruct}(hjm hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchji hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKpubjv)}(h h]h }(hj{ hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhji hhhjz hKpubj)}(hslim_stream_configh]j)}(hjg h]hslim_stream_config}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhji hhhjz hKpubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhje hhhjz hKpubah}(h]j` ah ](jjeh"]h$]h&]jj)jhuh1jWhjz hKphjb hhubj)}(hhh]h)}(hSLIMbus stream configuration Configuring a stream is done at hw_params or prepare call from audio drivers where they have all the required information regarding rate, number of channels and so on. There is a 1:1 mapping of channel and ports.h]hSLIMbus stream configuration Configuring a stream is done at hw_params or prepare call from audio drivers where they have all the required information regarding rate, number of channels and so on. There is a 1:1 mapping of channel and ports.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKxhj hhubah}(h]h ]h"]h$]h&]uh1jhjb hhhjz hKpubeh}(h]h ](jstructeh"]h$]h&]jjjj jj jjjuh1jRhhhj0hNhNubj)}(hX**Definition**:: struct slim_stream_config { unsigned int rate; unsigned int bps; unsigned int ch_count; unsigned int *chs; unsigned long port_mask; int direction; }; **Members** ``rate`` data rate ``bps`` bits per data sample ``ch_count`` number of channels ``chs`` pointer to list of channel numbers ``port_mask`` port mask of ports to use for this stream ``direction`` direction of the stream, SNDRV_PCM_STREAM_PLAYBACK or SNDRV_PCM_STREAM_CAPTURE.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK|hj ubj)}(hstruct slim_stream_config { unsigned int rate; unsigned int bps; unsigned int ch_count; unsigned int *chs; unsigned long port_mask; int direction; };h]hstruct slim_stream_config { unsigned int rate; unsigned int bps; unsigned int ch_count; unsigned int *chs; unsigned long port_mask; int direction; };}hj sbah}(h]h ]h"]h$]h&]jjuh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK~hj ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj ubj1)}(hhh](j6)}(h``rate`` data rate h](j<)}(h``rate``h]jB)}(hj h]hrate}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj ubjX)}(hhh]h)}(h data rateh]h data rate}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1 hKhj2 ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj1 hKhj ubj6)}(h``bps`` bits per data sample h](j<)}(h``bps``h]jB)}(hjU h]hbps}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjS ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjO ubjX)}(hhh]h)}(hbits per data sampleh]hbits per data sample}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjj hKhjk ubah}(h]h ]h"]h$]h&]uh1jWhjO ubeh}(h]h ]h"]h$]h&]uh1j5hjj hKhj ubj6)}(h ``ch_count`` number of channels h](j<)}(h ``ch_count``h]jB)}(hj h]hch_count}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj ubjX)}(hhh]h)}(hnumber of channelsh]hnumber of channels}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj hKhj ubj6)}(h+``chs`` pointer to list of channel numbers h](j<)}(h``chs``h]jB)}(hj h]hchs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj ubjX)}(hhh]h)}(h"pointer to list of channel numbersh]h"pointer to list of channel numbers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj hKhj ubj6)}(h8``port_mask`` port mask of ports to use for this stream h](j<)}(h ``port_mask``h]jB)}(hjh]h port_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj ubjX)}(hhh]h)}(h)port mask of ports to use for this streamh]h)port mask of ports to use for this stream}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hjhKhj ubj6)}(h]``direction`` direction of the stream, SNDRV_PCM_STREAM_PLAYBACK or SNDRV_PCM_STREAM_CAPTURE.h](j<)}(h ``direction``h]jB)}(hj9h]h direction}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj7ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj3ubjX)}(hhh]h)}(hOdirection of the stream, SNDRV_PCM_STREAM_PLAYBACK or SNDRV_PCM_STREAM_CAPTURE.h]hOdirection of the stream, SNDRV_PCM_STREAM_PLAYBACK or SNDRV_PCM_STREAM_CAPTURE.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhKhjOubah}(h]h ]h"]h$]h&]uh1jWhj3ubeh}(h]h ]h"]h$]h&]uh1j5hjNhKhj ubeh}(h]h ]h"]h$]h&]uh1j0hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNmodule_slim_driver (C macro)c.module_slim_driverhNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(hmodule_slim_driverh]j^)}(hmodule_slim_driverh]j)}(hmodule_slim_driverh]j)}(hjh]hmodule_slim_driver}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKubah}(h]h ]h"]h$]h&]jjjuh1j]jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jWhjhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hNhNubh)}(h&``module_slim_driver (__slim_driver)``h]jB)}(hjh]h"module_slim_driver (__slim_driver)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj0hhubh block_quote)}(h.Helper macro for registering a SLIMbus driver h]h)}(h-Helper macro for registering a SLIMbus driverh]h-Helper macro for registering a SLIMbus driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhj0hhubj)}(hX***Parameters** ``__slim_driver`` slimbus_driver struct **Description** Helper macro for SLIMbus drivers which do not do anything special in module init/exit. This eliminates a lot of boilerplate. Each module may only use this macro once, and calling it replaces module_init() and module_exit()h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubj1)}(hhh]j6)}(h(``__slim_driver`` slimbus_driver struct h](j<)}(h``__slim_driver``h]jB)}(hjh]h __slim_driver}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubjX)}(hhh]h)}(hslimbus_driver structh]hslimbus_driver struct}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKhj4ubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hj3hKhjubah}(h]h ]h"]h$]h&]uh1j0hjubh)}(h**Description**h]j)}(hjYh]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubh)}(hHelper macro for SLIMbus drivers which do not do anything special in module init/exit. This eliminates a lot of boilerplate. Each module may only use this macro once, and calling it replaces module_init() and module_exit()h]hHelper macro for SLIMbus drivers which do not do anything special in module init/exit. This eliminates a lot of boilerplate. Each module may only use this macro once, and calling it replaces module_init() and module_exit()}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_framer (C struct) c.slim_framerhNtauh1jAhj0hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhNubjS)}(hhh](jX)}(h slim_framerh]j^)}(hstruct slim_framerh](jd)}(hjgh]hstruct}(hjhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjv)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhjhKubj)}(h slim_framerh]j)}(hjh]h slim_framer}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jWhjhKhjhhubj)}(hhh]h)}(hRepresents SLIMbus framer. Every controller may have multiple framers. There is 1 active framer device responsible for clocking the bus. Manager is responsible for framer hand-over.h]hRepresents SLIMbus framer. Every controller may have multiple framers. There is 1 active framer device responsible for clocking the bus. Manager is responsible for framer hand-over.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK[hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hjhNubj)}(hX**Definition**:: struct slim_framer { struct device dev; struct slim_eaddr e_addr; int rootfreq; int superfreq; }; **Members** ``dev`` Driver model representation of the device. ``e_addr`` Enumeration address of the framer. ``rootfreq`` Root Frequency at which the framer can run. This is maximum frequency ('clock gear 10') at which the bus can operate. ``superfreq`` Superframes per root frequency. Every frame is 6144 bits.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK_hjubj)}(hstruct slim_framer { struct device dev; struct slim_eaddr e_addr; int rootfreq; int superfreq; };h]hstruct slim_framer { struct device dev; struct slim_eaddr e_addr; int rootfreq; int superfreq; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKahjubh)}(h **Members**h]j)}(hj/h]hMembers}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhhjubj1)}(hhh](j6)}(h3``dev`` Driver model representation of the device. h](j<)}(h``dev``h]jB)}(hjNh]hdev}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjLubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK`hjHubjX)}(hhh]h)}(h*Driver model representation of the device.h]h*Driver model representation of the device.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchK`hjdubah}(h]h ]h"]h$]h&]uh1jWhjHubeh}(h]h ]h"]h$]h&]uh1j5hjchK`hjEubj6)}(h.``e_addr`` Enumeration address of the framer. h](j<)}(h ``e_addr``h]jB)}(hjh]he_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKahjubjX)}(hhh]h)}(h"Enumeration address of the framer.h]h"Enumeration address of the framer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKahjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKahjEubj6)}(h``rootfreq`` Root Frequency at which the framer can run. This is maximum frequency ('clock gear 10') at which the bus can operate. h](j<)}(h ``rootfreq``h]jB)}(hjh]hrootfreq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKchjubjX)}(hhh]h)}(huRoot Frequency at which the framer can run. This is maximum frequency ('clock gear 10') at which the bus can operate.h]hyRoot Frequency at which the framer can run. This is maximum frequency (‘clock gear 10’) at which the bus can operate.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKbhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKchjEubj6)}(hG``superfreq`` Superframes per root frequency. Every frame is 6144 bits.h](j<)}(h ``superfreq``h]jB)}(hjh]h superfreq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKchjubjX)}(hhh]h)}(h9Superframes per root frequency. Every frame is 6144 bits.h]h9Superframes per root frequency. Every frame is 6144 bits.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKdhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKchjEubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_msg_txn (C struct)c.slim_msg_txnhNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(h slim_msg_txnh]j^)}(hstruct slim_msg_txnh](jd)}(hjgh]hstruct}(hjThhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjPhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKjubjv)}(h h]h }(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjPhhhjahKjubj)}(h slim_msg_txnh]j)}(hjNh]h slim_msg_txn}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubah}(h]h ](jjeh"]h$]h&]jjuh1jhjPhhhjahKjubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjLhhhjahKjubah}(h]jGah ](jjeh"]h$]h&]jj)jhuh1jWhjahKjhjIhhubj)}(hhh]h)}(hpMessage to be sent by the controller. This structure has packet header, payload and buffer to be filled (if any)h]hpMessage to be sent by the controller. This structure has packet header, payload and buffer to be filled (if any)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKohjhhubah}(h]h ]h"]h$]h&]uh1jhjIhhhjahKjubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hjhNubj)}(hXQ**Definition**:: struct slim_msg_txn { u8 rl; u8 mt; u8 mc; u8 dt; u16 ec; u8 tid; u8 la; struct slim_val_inf *msg; struct completion *comp; }; **Members** ``rl`` Header field. remaining length. ``mt`` Header field. Message type. ``mc`` Header field. LSB is message code for type mt. ``dt`` Header field. Destination type. ``ec`` Element code. Used for elemental access APIs. ``tid`` Transaction ID. Used for messages expecting response. (relevant for message-codes involving read operation) ``la`` Logical address of the device this message is going to. (Not used when destination type is broadcast.) ``msg`` Elemental access message to be read/written ``comp`` completion if read/write is synchronous, used internally for tid based transactions.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKshjubj)}(hstruct slim_msg_txn { u8 rl; u8 mt; u8 mc; u8 dt; u16 ec; u8 tid; u8 la; struct slim_val_inf *msg; struct completion *comp; };h]hstruct slim_msg_txn { u8 rl; u8 mt; u8 mc; u8 dt; u16 ec; u8 tid; u8 la; struct slim_val_inf *msg; struct completion *comp; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKuhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubj1)}(hhh](j6)}(h'``rl`` Header field. remaining length. h](j<)}(h``rl``h]jB)}(hjh]hrl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKshjubjX)}(hhh]h)}(hHeader field. remaining length.h]hHeader field. remaining length.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKshjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKshjubj6)}(h#``mt`` Header field. Message type. h](j<)}(h``mt``h]jB)}(hj<h]hmt}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj:ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKthj6ubjX)}(hhh]h)}(hHeader field. Message type.h]hHeader field. Message type.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKthjRubah}(h]h ]h"]h$]h&]uh1jWhj6ubeh}(h]h ]h"]h$]h&]uh1j5hjQhKthjubj6)}(h6``mc`` Header field. LSB is message code for type mt. h](j<)}(h``mc``h]jB)}(hjuh]hmc}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjsubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKuhjoubjX)}(hhh]h)}(h.Header field. LSB is message code for type mt.h]h.Header field. LSB is message code for type mt.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKuhjubah}(h]h ]h"]h$]h&]uh1jWhjoubeh}(h]h ]h"]h$]h&]uh1j5hjhKuhjubj6)}(h'``dt`` Header field. Destination type. h](j<)}(h``dt``h]jB)}(hjh]hdt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKvhjubjX)}(hhh]h)}(hHeader field. Destination type.h]hHeader field. Destination type.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKvhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKvhjubj6)}(h5``ec`` Element code. Used for elemental access APIs. h](j<)}(h``ec``h]jB)}(hjh]hec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKwhjubjX)}(hhh]h)}(h-Element code. Used for elemental access APIs.h]h-Element code. Used for elemental access APIs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKwhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKwhjubj6)}(ht``tid`` Transaction ID. Used for messages expecting response. (relevant for message-codes involving read operation) h](j<)}(h``tid``h]jB)}(hj h]htid}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKyhjubjX)}(hhh]h)}(hkTransaction ID. Used for messages expecting response. (relevant for message-codes involving read operation)h]hkTransaction ID. Used for messages expecting response. (relevant for message-codes involving read operation)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKxhj6ubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hj5hKyhjubj6)}(hn``la`` Logical address of the device this message is going to. (Not used when destination type is broadcast.) h](j<)}(h``la``h]jB)}(hjZh]hla}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjXubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK{hjTubjX)}(hhh]h)}(hfLogical address of the device this message is going to. (Not used when destination type is broadcast.)h]hfLogical address of the device this message is going to. (Not used when destination type is broadcast.)}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKzhjpubah}(h]h ]h"]h$]h&]uh1jWhjTubeh}(h]h ]h"]h$]h&]uh1j5hjohK{hjubj6)}(h4``msg`` Elemental access message to be read/written h](j<)}(h``msg``h]jB)}(hjh]hmsg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK|hjubjX)}(hhh]h)}(h+Elemental access message to be read/writtenh]h+Elemental access message to be read/written}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK|hjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhK|hjubj6)}(h]``comp`` completion if read/write is synchronous, used internally for tid based transactions.h](j<)}(h``comp``h]jB)}(hjh]hcomp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK}hjubjX)}(hhh]h)}(hTcompletion if read/write is synchronous, used internally for tid based transactions.h]hTcompletion if read/write is synchronous, used internally for tid based transactions.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK}hjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhK}hjubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_clk_state (C enum)c.slim_clk_statehNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(hslim_clk_stateh]j^)}(henum slim_clk_stateh](jd)}(hjJh]henum}(hj&hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj"hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjv)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj"hhhj3hKubj)}(hslim_clk_stateh]j)}(hj h]hslim_clk_state}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubah}(h]h ](jjeh"]h$]h&]jjuh1jhj"hhhj3hKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjhhhj3hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jWhj3hKhjhhubj)}(hhh]h)}(hUSLIMbus controller's clock state used internally for maintaining current clock state.h]hWSLIMbus controller’s clock state used internally for maintaining current clock state.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjehhubah}(h]h ]h"]h$]h&]uh1jhjhhhj3hKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hjhNubj)}(hXE**Constants** ``SLIM_CLK_ACTIVE`` SLIMbus clock is active ``SLIM_CLK_ENTERING_PAUSE`` SLIMbus clock pause sequence is being sent on the bus. If this succeeds, state changes to SLIM_CLK_PAUSED. If the transition fails, state changes back to SLIM_CLK_ACTIVE ``SLIM_CLK_PAUSED`` SLIMbus controller clock has paused.h](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubj1)}(hhh](j6)}(h,``SLIM_CLK_ACTIVE`` SLIMbus clock is active h](j<)}(h``SLIM_CLK_ACTIVE``h]jB)}(hjh]hSLIM_CLK_ACTIVE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hSLIMbus clock is activeh]hSLIMbus clock is active}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(h``SLIM_CLK_ENTERING_PAUSE`` SLIMbus clock pause sequence is being sent on the bus. If this succeeds, state changes to SLIM_CLK_PAUSED. If the transition fails, state changes back to SLIM_CLK_ACTIVE h](j<)}(h``SLIM_CLK_ENTERING_PAUSE``h]jB)}(hjh]hSLIM_CLK_ENTERING_PAUSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hSLIMbus clock pause sequence is being sent on the bus. If this succeeds, state changes to SLIM_CLK_PAUSED. If the transition fails, state changes back to SLIM_CLK_ACTIVEh]hSLIMbus clock pause sequence is being sent on the bus. If this succeeds, state changes to SLIM_CLK_PAUSED. If the transition fails, state changes back to SLIM_CLK_ACTIVE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(h8``SLIM_CLK_PAUSED`` SLIMbus controller clock has paused.h](j<)}(h``SLIM_CLK_PAUSED``h]jB)}(hjh]hSLIM_CLK_PAUSED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(h$SLIMbus controller clock has paused.h]h$SLIMbus controller clock has paused.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj2ubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hj1hKhjubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_sched (C struct) c.slim_schedhNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(h slim_schedh]j^)}(hstruct slim_schedh](jd)}(hjgh]hstruct}(hjvhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjrhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjv)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjrhhhjhKubj)}(h slim_schedh]j)}(hjph]h slim_sched}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjrhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjnhhhjhKubah}(h]jiah ](jjeh"]h$]h&]jj)jhuh1jWhjhKhjkhhubj)}(hhh]h)}(h8Framework uses this structure internally for scheduling.h]h8Framework uses this structure internally for scheduling.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjkhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hjhNubj)}(hX**Definition**:: struct slim_sched { enum slim_clk_state clk_state; struct completion pause_comp; struct mutex m_reconf; }; **Members** ``clk_state`` Controller's clock state from enum slim_clk_state ``pause_comp`` Signals completion of clock pause sequence. This is useful when client tries to call SLIMbus transaction when controller is entering clock pause. ``m_reconf`` This mutex is held until current reconfiguration (data channel scheduling, message bandwidth reservation) is done. Message APIs can use the bus concurrently when this mutex is held since elemental access messages can be sent on the bus when reconfiguration is in progress.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubj)}(hstruct slim_sched { enum slim_clk_state clk_state; struct completion pause_comp; struct mutex m_reconf; };h]hstruct slim_sched { enum slim_clk_state clk_state; struct completion pause_comp; struct mutex m_reconf; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubj1)}(hhh](j6)}(h@``clk_state`` Controller's clock state from enum slim_clk_state h](j<)}(h ``clk_state``h]jB)}(hj%h]h clk_state}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj#ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(h1Controller's clock state from enum slim_clk_stateh]h3Controller’s clock state from enum slim_clk_state}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hKhj;ubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hj:hKhjubj6)}(h``pause_comp`` Signals completion of clock pause sequence. This is useful when client tries to call SLIMbus transaction when controller is entering clock pause. h](j<)}(h``pause_comp``h]jB)}(hj^h]h pause_comp}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj\ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjXubjX)}(hhh]h)}(hSignals completion of clock pause sequence. This is useful when client tries to call SLIMbus transaction when controller is entering clock pause.h]hSignals completion of clock pause sequence. This is useful when client tries to call SLIMbus transaction when controller is entering clock pause.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjtubah}(h]h ]h"]h$]h&]uh1jWhjXubeh}(h]h ]h"]h$]h&]uh1j5hjshKhjubj6)}(hX``m_reconf`` This mutex is held until current reconfiguration (data channel scheduling, message bandwidth reservation) is done. Message APIs can use the bus concurrently when this mutex is held since elemental access messages can be sent on the bus when reconfiguration is in progress.h](j<)}(h ``m_reconf``h]jB)}(hjh]hm_reconf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hXThis mutex is held until current reconfiguration (data channel scheduling, message bandwidth reservation) is done. Message APIs can use the bus concurrently when this mutex is held since elemental access messages can be sent on the bus when reconfiguration is in progress.h]hXThis mutex is held until current reconfiguration (data channel scheduling, message bandwidth reservation) is done. Message APIs can use the bus concurrently when this mutex is held since elemental access messages can be sent on the bus when reconfiguration is in progress.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_port_direction (C enum)c.slim_port_directionhNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(hslim_port_directionh]j^)}(henum slim_port_directionh](jd)}(hjJh]henum}(hjhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjv)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhjhKubj)}(hslim_port_directionh]j)}(hjh]hslim_port_direction}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jWhjhKhjhhubj)}(hhh]h)}(hSLIMbus port directionh]hSLIMbus port direction}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj1hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjLjjLjjjuh1jRhhhj0hjhNubj)}(hk**Constants** ``SLIM_PORT_SINK`` SLIMbus port is a sink ``SLIM_PORT_SOURCE`` SLIMbus port is a sourceh](h)}(h **Constants**h]j)}(hjVh]h Constants}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjPubj1)}(hhh](j6)}(h*``SLIM_PORT_SINK`` SLIMbus port is a sink h](j<)}(h``SLIM_PORT_SINK``h]jB)}(hjuh]hSLIM_PORT_SINK}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjsubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjoubjX)}(hhh]h)}(hSLIMbus port is a sinkh]hSLIMbus port is a sink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhjoubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjlubj6)}(h-``SLIM_PORT_SOURCE`` SLIMbus port is a sourceh](j<)}(h``SLIM_PORT_SOURCE``h]jB)}(hjh]hSLIM_PORT_SOURCE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hSLIMbus port is a sourceh]hSLIMbus port is a source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjlubeh}(h]h ]h"]h$]h&]uh1j0hjPubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_port_state (C enum)c.slim_port_statehNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(hslim_port_stateh]j^)}(henum slim_port_stateh](jd)}(hjJh]henum}(hjhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjv)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhjhKubj)}(hslim_port_stateh]j)}(hjh]hslim_port_state}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jWhjhKhjhhubj)}(hhh]h)}(hASLIMbus Port/Endpoint state machine according to SLIMbus Spec 2.0h]hASLIMbus Port/Endpoint state machine according to SLIMbus Spec 2.0}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjGhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjbjjbjjjuh1jRhhhj0hjhNubj)}(hX**Constants** ``SLIM_PORT_DISCONNECTED`` SLIMbus port is disconnected entered from Unconfigure/configured state after DISCONNECT_PORT or REMOVE_CHANNEL core command ``SLIM_PORT_UNCONFIGURED`` SLIMbus port is in unconfigured state. entered from disconnect state after CONNECT_SOURCE/SINK core command ``SLIM_PORT_CONFIGURED`` SLIMbus port is in configured state. entered from unconfigured state after DEFINE_CHANNEL, DEFINE_CONTENT and ACTIVATE_CHANNEL core commands. Ready for data transmission.h](h)}(h **Constants**h]j)}(hjlh]h Constants}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjfubj1)}(hhh](j6)}(h``SLIM_PORT_DISCONNECTED`` SLIMbus port is disconnected entered from Unconfigure/configured state after DISCONNECT_PORT or REMOVE_CHANNEL core command h](j<)}(h``SLIM_PORT_DISCONNECTED``h]jB)}(hjh]hSLIM_PORT_DISCONNECTED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(h{SLIMbus port is disconnected entered from Unconfigure/configured state after DISCONNECT_PORT or REMOVE_CHANNEL core commandh]h{SLIMbus port is disconnected entered from Unconfigure/configured state after DISCONNECT_PORT or REMOVE_CHANNEL core command}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(h``SLIM_PORT_UNCONFIGURED`` SLIMbus port is in unconfigured state. entered from disconnect state after CONNECT_SOURCE/SINK core command h](j<)}(h``SLIM_PORT_UNCONFIGURED``h]jB)}(hjh]hSLIM_PORT_UNCONFIGURED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hkSLIMbus port is in unconfigured state. entered from disconnect state after CONNECT_SOURCE/SINK core commandh]hkSLIMbus port is in unconfigured state. entered from disconnect state after CONNECT_SOURCE/SINK core command}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(h``SLIM_PORT_CONFIGURED`` SLIMbus port is in configured state. entered from unconfigured state after DEFINE_CHANNEL, DEFINE_CONTENT and ACTIVATE_CHANNEL core commands. Ready for data transmission.h](j<)}(h``SLIM_PORT_CONFIGURED``h]jB)}(hjh]hSLIM_PORT_CONFIGURED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hSLIMbus port is in configured state. entered from unconfigured state after DEFINE_CHANNEL, DEFINE_CONTENT and ACTIVATE_CHANNEL core commands. Ready for data transmission.h]hSLIMbus port is in configured state. entered from unconfigured state after DEFINE_CHANNEL, DEFINE_CONTENT and ACTIVATE_CHANNEL core commands. Ready for data transmission.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubeh}(h]h ]h"]h$]h&]uh1j0hjfubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_channel_state (C enum)c.slim_channel_statehNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(hslim_channel_stateh]j^)}(henum slim_channel_stateh](jd)}(hjJh]henum}(hjYhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjUhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjv)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjUhhhjfhKubj)}(hslim_channel_stateh]j)}(hjSh]hslim_channel_state}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubah}(h]h ](jjeh"]h$]h&]jjuh1jhjUhhhjfhKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjQhhhjfhKubah}(h]jLah ](jjeh"]h$]h&]jj)jhuh1jWhjfhKhjNhhubj)}(hhh]h)}(h+SLIMbus channel state machine used by core.h]h+SLIMbus channel state machine used by core.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjNhhhjfhKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hjhNubj)}(hX**Constants** ``SLIM_CH_STATE_DISCONNECTED`` SLIMbus channel is disconnected ``SLIM_CH_STATE_ALLOCATED`` SLIMbus channel is allocated ``SLIM_CH_STATE_ASSOCIATED`` SLIMbus channel is associated with port ``SLIM_CH_STATE_DEFINED`` SLIMbus channel parameters are defined ``SLIM_CH_STATE_CONTENT_DEFINED`` SLIMbus channel content is defined ``SLIM_CH_STATE_ACTIVE`` SLIMbus channel is active and ready for data ``SLIM_CH_STATE_REMOVED`` SLIMbus channel is inactive and removedh](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubj1)}(hhh](j6)}(h?``SLIM_CH_STATE_DISCONNECTED`` SLIMbus channel is disconnected h](j<)}(h``SLIM_CH_STATE_DISCONNECTED``h]jB)}(hjh]hSLIM_CH_STATE_DISCONNECTED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hSLIMbus channel is disconnectedh]hSLIMbus channel is disconnected}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(h9``SLIM_CH_STATE_ALLOCATED`` SLIMbus channel is allocated h](j<)}(h``SLIM_CH_STATE_ALLOCATED``h]jB)}(hjh]hSLIM_CH_STATE_ALLOCATED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hSLIMbus channel is allocatedh]hSLIMbus channel is allocated}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhj+ubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hj*hKhjubj6)}(hE``SLIM_CH_STATE_ASSOCIATED`` SLIMbus channel is associated with port h](j<)}(h``SLIM_CH_STATE_ASSOCIATED``h]jB)}(hjNh]hSLIM_CH_STATE_ASSOCIATED}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjLubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjHubjX)}(hhh]h)}(h'SLIMbus channel is associated with porth]h'SLIMbus channel is associated with port}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKhjdubah}(h]h ]h"]h$]h&]uh1jWhjHubeh}(h]h ]h"]h$]h&]uh1j5hjchKhjubj6)}(hA``SLIM_CH_STATE_DEFINED`` SLIMbus channel parameters are defined h](j<)}(h``SLIM_CH_STATE_DEFINED``h]jB)}(hjh]hSLIM_CH_STATE_DEFINED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(h&SLIMbus channel parameters are definedh]h&SLIMbus channel parameters are defined}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(hE``SLIM_CH_STATE_CONTENT_DEFINED`` SLIMbus channel content is defined h](j<)}(h!``SLIM_CH_STATE_CONTENT_DEFINED``h]jB)}(hjh]hSLIM_CH_STATE_CONTENT_DEFINED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(h"SLIMbus channel content is definedh]h"SLIMbus channel content is defined}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(hF``SLIM_CH_STATE_ACTIVE`` SLIMbus channel is active and ready for data h](j<)}(h``SLIM_CH_STATE_ACTIVE``h]jB)}(hjh]hSLIM_CH_STATE_ACTIVE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(h,SLIMbus channel is active and ready for datah]h,SLIMbus channel is active and ready for data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(hA``SLIM_CH_STATE_REMOVED`` SLIMbus channel is inactive and removedh](j<)}(h``SLIM_CH_STATE_REMOVED``h]jB)}(hj2h]hSLIM_CH_STATE_REMOVED}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj0ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj,ubjX)}(hhh]h)}(h'SLIMbus channel is inactive and removedh]h'SLIMbus channel is inactive and removed}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjHubah}(h]h ]h"]h$]h&]uh1jWhj,ubeh}(h]h ]h"]h$]h&]uh1j5hjGhKhjubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_ch_data_fmt (C enum)c.slim_ch_data_fmthNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(hslim_ch_data_fmth]j^)}(henum slim_ch_data_fmth](jd)}(hjJh]henum}(hjhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjv)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhjhKubj)}(hslim_ch_data_fmth]j)}(hjh]hslim_ch_data_fmt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jWhjhKhjhhubj)}(hhh]h)}(hSSLIMbus channel data Type identifiers according to Table 60 of SLIMbus Spec 1.01.01h]hSSLIMbus channel data Type identifiers according to Table 60 of SLIMbus Spec 1.01.01}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hjhNubj)}(h**Constants** ``SLIM_CH_DATA_FMT_NOT_DEFINED`` Undefined ``SLIM_CH_DATA_FMT_LPCM_AUDIO`` LPCM audio ``SLIM_CH_DATA_FMT_IEC61937_COMP_AUDIO`` IEC61937 Compressed audio ``SLIM_CH_DATA_FMT_PACKED_PDM_AUDIO`` Packed PDM audioh](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubj1)}(hhh](j6)}(h+``SLIM_CH_DATA_FMT_NOT_DEFINED`` Undefined h](j<)}(h ``SLIM_CH_DATA_FMT_NOT_DEFINED``h]jB)}(hjh]hSLIM_CH_DATA_FMT_NOT_DEFINED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj ubjX)}(hhh]h)}(h Undefinedh]h Undefined}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj%ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj$hKhjubj6)}(h+``SLIM_CH_DATA_FMT_LPCM_AUDIO`` LPCM audio h](j<)}(h``SLIM_CH_DATA_FMT_LPCM_AUDIO``h]jB)}(hjHh]hSLIM_CH_DATA_FMT_LPCM_AUDIO}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjFubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjBubjX)}(hhh]h)}(h LPCM audioh]h LPCM audio}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hKhj^ubah}(h]h ]h"]h$]h&]uh1jWhjBubeh}(h]h ]h"]h$]h&]uh1j5hj]hKhjubj6)}(hC``SLIM_CH_DATA_FMT_IEC61937_COMP_AUDIO`` IEC61937 Compressed audio h](j<)}(h(``SLIM_CH_DATA_FMT_IEC61937_COMP_AUDIO``h]jB)}(hjh]h$SLIM_CH_DATA_FMT_IEC61937_COMP_AUDIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj{ubjX)}(hhh]h)}(hIEC61937 Compressed audioh]hIEC61937 Compressed audio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhj{ubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(h6``SLIM_CH_DATA_FMT_PACKED_PDM_AUDIO`` Packed PDM audioh](j<)}(h%``SLIM_CH_DATA_FMT_PACKED_PDM_AUDIO``h]jB)}(hjh]h!SLIM_CH_DATA_FMT_PACKED_PDM_AUDIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(hPacked PDM audioh]hPacked PDM audio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubeh}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_ch_aux_bit_fmt (C enum)c.slim_ch_aux_bit_fmthNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(hslim_ch_aux_bit_fmth]j^)}(henum slim_ch_aux_bit_fmth](jd)}(hjJh]henum}(hjhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjv)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhhj!hKubj)}(hslim_ch_aux_bit_fmth]j)}(hjh]hslim_ch_aux_bit_fmt}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj!hKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj hhhj!hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jWhj!hKhj hhubj)}(hhh]h)}(hNSLIMbus channel Aux Field format IDs according to Table 63 of SLIMbus Spec 2.0h]hNSLIMbus channel Aux Field format IDs according to Table 63 of SLIMbus Spec 2.0}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjShhubah}(h]h ]h"]h$]h&]uh1jhj hhhj!hKubeh}(h]h ](jenumeh"]h$]h&]jjjjnjjnjjjuh1jRhhhj0hjhNubj)}(h**Constants** ``SLIM_CH_AUX_FMT_NOT_APPLICABLE`` Undefined ``SLIM_CH_AUX_FMT_ZCUV_TUNNEL_IEC60958`` ZCUV for tunneling IEC60958 ``SLIM_CH_AUX_FMT_USER_DEFINED`` User definedh](h)}(h **Constants**h]j)}(hjxh]h Constants}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjrubj1)}(hhh](j6)}(h-``SLIM_CH_AUX_FMT_NOT_APPLICABLE`` Undefined h](j<)}(h"``SLIM_CH_AUX_FMT_NOT_APPLICABLE``h]jB)}(hjh]hSLIM_CH_AUX_FMT_NOT_APPLICABLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjX)}(hhh]h)}(h Undefinedh]h Undefined}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhKhjubj6)}(hE``SLIM_CH_AUX_FMT_ZCUV_TUNNEL_IEC60958`` ZCUV for tunneling IEC60958 h](j<)}(h(``SLIM_CH_AUX_FMT_ZCUV_TUNNEL_IEC60958``h]jB)}(hjh]h$SLIM_CH_AUX_FMT_ZCUV_TUNNEL_IEC60958}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjubjX)}(hhh]h)}(hZCUV for tunneling IEC60958h]hZCUV for tunneling IEC60958}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhMhjubj6)}(h-``SLIM_CH_AUX_FMT_USER_DEFINED`` User definedh](j<)}(h ``SLIM_CH_AUX_FMT_USER_DEFINED``h]jB)}(hj h]hSLIM_CH_AUX_FMT_USER_DEFINED}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjubjX)}(hhh]h)}(h User definedh]h User defined}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjubah}(h]h ]h"]h$]h&]uh1jWhjubeh}(h]h ]h"]h$]h&]uh1j5hjhMhjubeh}(h]h ]h"]h$]h&]uh1j0hjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_channel (C struct)c.slim_channelhNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(h slim_channelh]j^)}(hstruct slim_channelh](jd)}(hjgh]hstruct}(hjchhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj_hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM ubjv)}(h h]h }(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj_hhhjphM ubj)}(h slim_channelh]j)}(hj]h]h slim_channel}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhj_hhhjphM ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj[hhhjphM ubah}(h]jVah ](jjeh"]h$]h&]jj)jhuh1jWhjphM hjXhhubj)}(hhh]h)}(h'SLIMbus channel, used for state machineh]h'SLIMbus channel, used for state machine}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jhjXhhhjphM ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jRhhhj0hjhNubj)}(hX**Definition**:: struct slim_channel { int id; int prrate; int seg_dist; enum slim_ch_data_fmt data_fmt; enum slim_ch_aux_bit_fmt aux_fmt; enum slim_channel_state state; }; **Members** ``id`` ID of channel ``prrate`` Presense rate of channel from Table 66 of SLIMbus 2.0 Specs ``seg_dist`` segment distribution code from Table 20 of SLIMbus 2.0 Specs ``data_fmt`` Data format of channel. ``aux_fmt`` Aux format for this channel. ``state`` channel state machineh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjubj)}(hstruct slim_channel { int id; int prrate; int seg_dist; enum slim_ch_data_fmt data_fmt; enum slim_ch_aux_bit_fmt aux_fmt; enum slim_channel_state state; };h]hstruct slim_channel { int id; int prrate; int seg_dist; enum slim_ch_data_fmt data_fmt; enum slim_ch_aux_bit_fmt aux_fmt; enum slim_channel_state state; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjubj1)}(hhh](j6)}(h``id`` ID of channel h](j<)}(h``id``h]jB)}(hjh]hid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj ubjX)}(hhh]h)}(h ID of channelh]h ID of channel}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj(ubah}(h]h ]h"]h$]h&]uh1jWhj ubeh}(h]h ]h"]h$]h&]uh1j5hj'hMhj ubj6)}(hG``prrate`` Presense rate of channel from Table 66 of SLIMbus 2.0 Specs h](j<)}(h ``prrate``h]jB)}(hjKh]hprrate}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjIubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjEubjX)}(hhh]h)}(h;Presense rate of channel from Table 66 of SLIMbus 2.0 Specsh]h;Presense rate of channel from Table 66 of SLIMbus 2.0 Specs}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMhjaubah}(h]h ]h"]h$]h&]uh1jWhjEubeh}(h]h ]h"]h$]h&]uh1j5hj`hMhj ubj6)}(hJ``seg_dist`` segment distribution code from Table 20 of SLIMbus 2.0 Specs h](j<)}(h ``seg_dist``h]jB)}(hjh]hseg_dist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM hj~ubjX)}(hhh]h)}(h%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:%ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMShj %ubj1)}(hhh](j6)}(h``name`` Name of the stream h](j<)}(h``name``h]jB)}(hj[%h]hname}(hj]%hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjY%ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMChjU%ubjX)}(hhh]h)}(hName of the streamh]hName of the stream}(hjt%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjp%hMChjq%ubah}(h]h ]h"]h$]h&]uh1jWhjU%ubeh}(h]h ]h"]h$]h&]uh1j5hjp%hMChjR%ubj6)}(h9``dev`` SLIM Device instance associated with this stream h](j<)}(h``dev``h]jB)}(hj%h]hdev}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj%ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMDhj%ubjX)}(hhh]h)}(h0SLIM Device instance associated with this streamh]h0SLIM Device instance associated with this stream}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMDhj%ubah}(h]h ]h"]h$]h&]uh1jWhj%ubeh}(h]h ]h"]h$]h&]uh1j5hj%hMDhjR%ubj6)}(h"``direction`` direction of stream h](j<)}(h ``direction``h]jB)}(hj%h]h direction}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj%ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMEhj%ubjX)}(hhh]h)}(hdirection of streamh]hdirection of stream}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMEhj%ubah}(h]h ]h"]h$]h&]uh1jWhj%ubeh}(h]h ]h"]h$]h&]uh1j5hj%hMEhjR%ubj6)}(h0``prot`` Transport protocol used in this stream h](j<)}(h``prot``h]jB)}(hj&h]hprot}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj&ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMFhj&ubjX)}(hhh]h)}(h&Transport protocol used in this streamh]h&Transport protocol used in this stream}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMFhj&ubah}(h]h ]h"]h$]h&]uh1jWhj&ubeh}(h]h ]h"]h$]h&]uh1j5hj&hMFhjR%ubj6)}(h ``rate`` Data rate of samples * h](j<)}(h``rate``h]jB)}(hj?&h]hrate}(hjA&hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj=&ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMGhj9&ubjX)}(hhh]h)}(hData rate of samples *h]hData rate of samples *}(hjX&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjT&hMGhjU&ubah}(h]h ]h"]h$]h&]uh1jWhj9&ubeh}(h]h ]h"]h$]h&]uh1j5hjT&hMGhjR%ubj6)}(h``bps`` bits per sample h](j<)}(h``bps``h]jB)}(hjx&h]hbps}(hjz&hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjv&ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMHhjr&ubjX)}(hhh]h)}(hbits per sampleh]hbits per sample}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMHhj&ubah}(h]h ]h"]h$]h&]uh1jWhjr&ubeh}(h]h ]h"]h$]h&]uh1j5hj&hMHhjR%ubj6)}(h=``ratem`` rate multipler which is super frame rate/data rate h](j<)}(h ``ratem``h]jB)}(hj&h]hratem}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj&ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMIhj&ubjX)}(hhh]h)}(h2rate multipler which is super frame rate/data rateh]h2rate multipler which is super frame rate/data rate}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMIhj&ubah}(h]h ]h"]h$]h&]uh1jWhj&ubeh}(h]h ]h"]h$]h&]uh1j5hj&hMIhjR%ubj6)}(h``num_ports`` number of ports h](j<)}(h ``num_ports``h]jB)}(hj&h]h num_ports}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj&ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMJhj&ubjX)}(hhh]h)}(hnumber of portsh]hnumber of ports}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMJhj'ubah}(h]h ]h"]h$]h&]uh1jWhj&ubeh}(h]h ]h"]h$]h&]uh1j5hj&hMJhjR%ubj6)}(h'``ports`` pointer to instance of ports h](j<)}(h ``ports``h]jB)}(hj#'h]hports}(hj%'hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj!'ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMKhj'ubjX)}(hhh]h)}(hpointer to instance of portsh]hpointer to instance of ports}(hj<'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8'hMKhj9'ubah}(h]h ]h"]h$]h&]uh1jWhj'ubeh}(h]h ]h"]h$]h&]uh1j5hj8'hMKhjR%ubj6)}(h:``node`` list head for stream associated with slim device.h](j<)}(h``node``h]jB)}(hj\'h]hnode}(hj^'hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjZ'ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMKhjV'ubjX)}(hhh]h)}(h1list head for stream associated with slim device.h]h1list head for stream associated with slim device.}(hju'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMLhjr'ubah}(h]h ]h"]h$]h&]uh1jWhjV'ubeh}(h]h ]h"]h$]h&]uh1j5hjq'hMKhjR%ubeh}(h]h ]h"]h$]h&]uh1j0hj %ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_controller (C struct)c.slim_controllerhNtauh1jAhj0hhhjhNubjS)}(hhh](jX)}(hslim_controllerh]j^)}(hstruct slim_controllerh](jd)}(hjgh]hstruct}(hj'hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj'hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMRubjv)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj'hhhj'hMRubj)}(hslim_controllerh]j)}(hj'h]hslim_controller}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj'hhhj'hMRubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj'hhhj'hMRubah}(h]j'ah ](jjeh"]h$]h&]jj)jhuh1jWhj'hMRhj'hhubj)}(hhh]h)}(h?Controls every instance of SLIMbus (similar to 'master' on SPI)h]hCControls every instance of SLIMbus (similar to ‘master’ on SPI)}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM[hj'hhubah}(h]h ]h"]h$]h&]uh1jhj'hhhj'hMRubeh}(h]h ](jstructeh"]h$]h&]jjjj(jj(jjjuh1jRhhhj0hjhNubj)}(hX **Definition**:: struct slim_controller { struct device *dev; unsigned int id; char name[SLIMBUS_NAME_SIZE]; int min_cg; int max_cg; int clkgear; struct ida laddr_ida; struct slim_framer *a_framer; struct mutex lock; struct list_head devices; struct idr tid_idr; spinlock_t txn_lock; struct slim_sched sched; int (*xfer_msg)(struct slim_controller *ctrl, struct slim_msg_txn *tx); int (*set_laddr)(struct slim_controller *ctrl, struct slim_eaddr *ea, u8 laddr); int (*get_laddr)(struct slim_controller *ctrl, struct slim_eaddr *ea, u8 *laddr); int (*enable_stream)(struct slim_stream_runtime *rt); int (*disable_stream)(struct slim_stream_runtime *rt); int (*wakeup)(struct slim_controller *ctrl); }; **Members** ``dev`` Device interface to this driver ``id`` Board-specific number identifier for this controller/bus ``name`` Name for this controller ``min_cg`` Minimum clock gear supported by this controller (default value: 1) ``max_cg`` Maximum clock gear supported by this controller (default value: 10) ``clkgear`` Current clock gear in which this bus is running ``laddr_ida`` logical address id allocator ``a_framer`` Active framer which is clocking the bus managed by this controller ``lock`` Mutex protecting controller data structures ``devices`` Slim device list ``tid_idr`` tid id allocator ``txn_lock`` Lock to protect table of transactions ``sched`` scheduler structure used by the controller ``xfer_msg`` Transfer a message on this controller (this can be a broadcast control/status message like data channel setup, or a unicast message like value element read/write. ``set_laddr`` Setup logical address at laddr for the slave with elemental address e_addr. Drivers implementing controller will be expected to send unicast message to this device with its logical address. ``get_laddr`` It is possible that controller needs to set fixed logical address table and get_laddr can be used in that case so that controller can do this assignment. Use case is when the master is on the remote processor side, who is resposible for allocating laddr. ``enable_stream`` This function pointer implements controller-specific procedure to enable a stream. ``disable_stream`` This function pointer implements controller-specific procedure to disable stream. ``wakeup`` This function pointer implements controller-specific procedure to wake it up from clock-pause. Framework will call this to bring the controller out of clock pause.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubh:}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM_hj(ubj)}(hXCstruct slim_controller { struct device *dev; unsigned int id; char name[SLIMBUS_NAME_SIZE]; int min_cg; int max_cg; int clkgear; struct ida laddr_ida; struct slim_framer *a_framer; struct mutex lock; struct list_head devices; struct idr tid_idr; spinlock_t txn_lock; struct slim_sched sched; int (*xfer_msg)(struct slim_controller *ctrl, struct slim_msg_txn *tx); int (*set_laddr)(struct slim_controller *ctrl, struct slim_eaddr *ea, u8 laddr); int (*get_laddr)(struct slim_controller *ctrl, struct slim_eaddr *ea, u8 *laddr); int (*enable_stream)(struct slim_stream_runtime *rt); int (*disable_stream)(struct slim_stream_runtime *rt); int (*wakeup)(struct slim_controller *ctrl); };h]hXCstruct slim_controller { struct device *dev; unsigned int id; char name[SLIMBUS_NAME_SIZE]; int min_cg; int max_cg; int clkgear; struct ida laddr_ida; struct slim_framer *a_framer; struct mutex lock; struct list_head devices; struct idr tid_idr; spinlock_t txn_lock; struct slim_sched sched; int (*xfer_msg)(struct slim_controller *ctrl, struct slim_msg_txn *tx); int (*set_laddr)(struct slim_controller *ctrl, struct slim_eaddr *ea, u8 laddr); int (*get_laddr)(struct slim_controller *ctrl, struct slim_eaddr *ea, u8 *laddr); int (*enable_stream)(struct slim_stream_runtime *rt); int (*disable_stream)(struct slim_stream_runtime *rt); int (*wakeup)(struct slim_controller *ctrl); };}hj5(sbah}(h]h ]h"]h$]h&]jjuh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMahj(ubh)}(h **Members**h]j)}(hjF(h]hMembers}(hjH(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD(ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMwhj(ubj1)}(hhh](j6)}(h(``dev`` Device interface to this driver h](j<)}(h``dev``h]jB)}(hje(h]hdev}(hjg(hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjc(ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM^hj_(ubjX)}(hhh]h)}(hDevice interface to this driverh]hDevice interface to this driver}(hj~(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjz(hM^hj{(ubah}(h]h ]h"]h$]h&]uh1jWhj_(ubeh}(h]h ]h"]h$]h&]uh1j5hjz(hM^hj\(ubj6)}(h@``id`` Board-specific number identifier for this controller/bus h](j<)}(h``id``h]jB)}(hj(h]hid}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj(ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM_hj(ubjX)}(hhh]h)}(h8Board-specific number identifier for this controller/bush]h8Board-specific number identifier for this controller/bus}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hM_hj(ubah}(h]h ]h"]h$]h&]uh1jWhj(ubeh}(h]h ]h"]h$]h&]uh1j5hj(hM_hj\(ubj6)}(h"``name`` Name for this controller h](j<)}(h``name``h]jB)}(hj(h]hname}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj(ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM`hj(ubjX)}(hhh]h)}(hName for this controllerh]hName for this controller}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hM`hj(ubah}(h]h ]h"]h$]h&]uh1jWhj(ubeh}(h]h ]h"]h$]h&]uh1j5hj(hM`hj\(ubj6)}(hN``min_cg`` Minimum clock gear supported by this controller (default value: 1) h](j<)}(h ``min_cg``h]jB)}(hj)h]hmin_cg}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj)ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMahj )ubjX)}(hhh]h)}(hBMinimum clock gear supported by this controller (default value: 1)h]hBMinimum clock gear supported by this controller (default value: 1)}(hj))hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%)hMahj&)ubah}(h]h ]h"]h$]h&]uh1jWhj )ubeh}(h]h ]h"]h$]h&]uh1j5hj%)hMahj\(ubj6)}(hO``max_cg`` Maximum clock gear supported by this controller (default value: 10) h](j<)}(h ``max_cg``h]jB)}(hjI)h]hmax_cg}(hjK)hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjG)ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMbhjC)ubjX)}(hhh]h)}(hCMaximum clock gear supported by this controller (default value: 10)h]hCMaximum clock gear supported by this controller (default value: 10)}(hjb)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^)hMbhj_)ubah}(h]h ]h"]h$]h&]uh1jWhjC)ubeh}(h]h ]h"]h$]h&]uh1j5hj^)hMbhj\(ubj6)}(h<``clkgear`` Current clock gear in which this bus is running h](j<)}(h ``clkgear``h]jB)}(hj)h]hclkgear}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj)ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMchj|)ubjX)}(hhh]h)}(h/Current clock gear in which this bus is runningh]h/Current clock gear in which this bus is running}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMchj)ubah}(h]h ]h"]h$]h&]uh1jWhj|)ubeh}(h]h ]h"]h$]h&]uh1j5hj)hMchj\(ubj6)}(h+``laddr_ida`` logical address id allocator h](j<)}(h ``laddr_ida``h]jB)}(hj)h]h laddr_ida}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj)ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMdhj)ubjX)}(hhh]h)}(hlogical address id allocatorh]hlogical address id allocator}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMdhj)ubah}(h]h ]h"]h$]h&]uh1jWhj)ubeh}(h]h ]h"]h$]h&]uh1j5hj)hMdhj\(ubj6)}(hP``a_framer`` Active framer which is clocking the bus managed by this controller h](j<)}(h ``a_framer``h]jB)}(hj)h]ha_framer}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj)ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMehj)ubjX)}(hhh]h)}(hBActive framer which is clocking the bus managed by this controllerh]hBActive framer which is clocking the bus managed by this controller}(hj *hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj *hMehj *ubah}(h]h ]h"]h$]h&]uh1jWhj)ubeh}(h]h ]h"]h$]h&]uh1j5hj *hMehj\(ubj6)}(h5``lock`` Mutex protecting controller data structures h](j<)}(h``lock``h]jB)}(hj-*h]hlock}(hj/*hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj+*ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMfhj'*ubjX)}(hhh]h)}(h+Mutex protecting controller data structuresh]h+Mutex protecting controller data structures}(hjF*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB*hMfhjC*ubah}(h]h ]h"]h$]h&]uh1jWhj'*ubeh}(h]h ]h"]h$]h&]uh1j5hjB*hMfhj\(ubj6)}(h``devices`` Slim device list h](j<)}(h ``devices``h]jB)}(hjf*h]hdevices}(hjh*hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjd*ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMghj`*ubjX)}(hhh]h)}(hSlim device listh]hSlim device list}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{*hMghj|*ubah}(h]h ]h"]h$]h&]uh1jWhj`*ubeh}(h]h ]h"]h$]h&]uh1j5hj{*hMghj\(ubj6)}(h``tid_idr`` tid id allocator h](j<)}(h ``tid_idr``h]jB)}(hj*h]htid_idr}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj*ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhhj*ubjX)}(hhh]h)}(htid id allocatorh]htid id allocator}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhhj*ubah}(h]h ]h"]h$]h&]uh1jWhj*ubeh}(h]h ]h"]h$]h&]uh1j5hj*hMhhj\(ubj6)}(h3``txn_lock`` Lock to protect table of transactions h](j<)}(h ``txn_lock``h]jB)}(hj*h]htxn_lock}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj*ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMihj*ubjX)}(hhh]h)}(h%Lock to protect table of transactionsh]h%Lock to protect table of transactions}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMihj*ubah}(h]h ]h"]h$]h&]uh1jWhj*ubeh}(h]h ]h"]h$]h&]uh1j5hj*hMihj\(ubj6)}(h5``sched`` scheduler structure used by the controller h](j<)}(h ``sched``h]jB)}(hj+h]hsched}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj+ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMjhj +ubjX)}(hhh]h)}(h*scheduler structure used by the controllerh]h*scheduler structure used by the controller}(hj*+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&+hMjhj'+ubah}(h]h ]h"]h$]h&]uh1jWhj +ubeh}(h]h ]h"]h$]h&]uh1j5hj&+hMjhj\(ubj6)}(h``xfer_msg`` Transfer a message on this controller (this can be a broadcast control/status message like data channel setup, or a unicast message like value element read/write. h](j<)}(h ``xfer_msg``h]jB)}(hjJ+h]hxfer_msg}(hjL+hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjH+ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMmhjD+ubjX)}(hhh]h)}(hTransfer a message on this controller (this can be a broadcast control/status message like data channel setup, or a unicast message like value element read/write.h]hTransfer a message on this controller (this can be a broadcast control/status message like data channel setup, or a unicast message like value element read/write.}(hjc+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMkhj`+ubah}(h]h ]h"]h$]h&]uh1jWhjD+ubeh}(h]h ]h"]h$]h&]uh1j5hj_+hMmhj\(ubj6)}(h``set_laddr`` Setup logical address at laddr for the slave with elemental address e_addr. Drivers implementing controller will be expected to send unicast message to this device with its logical address. h](j<)}(h ``set_laddr``h]jB)}(hj+h]h set_laddr}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj+ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMphj~+ubjX)}(hhh]h)}(hSetup logical address at laddr for the slave with elemental address e_addr. Drivers implementing controller will be expected to send unicast message to this device with its logical address.h]hSetup logical address at laddr for the slave with elemental address e_addr. Drivers implementing controller will be expected to send unicast message to this device with its logical address.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMnhj+ubah}(h]h ]h"]h$]h&]uh1jWhj~+ubeh}(h]h ]h"]h$]h&]uh1j5hj+hMphj\(ubj6)}(hX ``get_laddr`` It is possible that controller needs to set fixed logical address table and get_laddr can be used in that case so that controller can do this assignment. Use case is when the master is on the remote processor side, who is resposible for allocating laddr. h](j<)}(h ``get_laddr``h]jB)}(hj+h]h get_laddr}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj+ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMthj+ubjX)}(hhh]h)}(hIt is possible that controller needs to set fixed logical address table and get_laddr can be used in that case so that controller can do this assignment. Use case is when the master is on the remote processor side, who is resposible for allocating laddr.h]hIt is possible that controller needs to set fixed logical address table and get_laddr can be used in that case so that controller can do this assignment. Use case is when the master is on the remote processor side, who is resposible for allocating laddr.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMqhj+ubah}(h]h ]h"]h$]h&]uh1jWhj+ubeh}(h]h ]h"]h$]h&]uh1j5hj+hMthj\(ubj6)}(he``enable_stream`` This function pointer implements controller-specific procedure to enable a stream. h](j<)}(h``enable_stream``h]jB)}(hj+h]h enable_stream}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj+ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMyhj+ubjX)}(hhh]h)}(hRThis function pointer implements controller-specific procedure to enable a stream.h]hRThis function pointer implements controller-specific procedure to enable a stream.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMxhj,ubah}(h]h ]h"]h$]h&]uh1jWhj+ubeh}(h]h ]h"]h$]h&]uh1j5hj ,hMyhj\(ubj6)}(he``disable_stream`` This function pointer implements controller-specific procedure to disable stream. h](j<)}(h``disable_stream``h]jB)}(hj2,h]hdisable_stream}(hj4,hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj0,ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM{hj,,ubjX)}(hhh]h)}(hQThis function pointer implements controller-specific procedure to disable stream.h]hQThis function pointer implements controller-specific procedure to disable stream.}(hjK,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMzhjH,ubah}(h]h ]h"]h$]h&]uh1jWhj,,ubeh}(h]h ]h"]h$]h&]uh1j5hjG,hM{hj\(ubj6)}(h``wakeup`` This function pointer implements controller-specific procedure to wake it up from clock-pause. Framework will call this to bring the controller out of clock pause.h](j<)}(h ``wakeup``h]jB)}(hjl,h]hwakeup}(hjn,hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjj,ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMvhjf,ubjX)}(hhh]h)}(hThis function pointer implements controller-specific procedure to wake it up from clock-pause. Framework will call this to bring the controller out of clock pause.h]hThis function pointer implements controller-specific procedure to wake it up from clock-pause. Framework will call this to bring the controller out of clock pause.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMuhj,ubah}(h]h ]h"]h$]h&]uh1jWhjf,ubeh}(h]h ]h"]h$]h&]uh1j5hj,hMvhj\(ubeh}(h]h ]h"]h$]h&]uh1j0hj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhjhNubh)}(h**Description**h]j)}(hj,h]h Description}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMzhj0hhubj)}(hX;'Manager device' is responsible for device management, bandwidth allocation, channel setup, and port associations per channel. Device management means Logical address assignment/removal based on enumeration (report-present, report-absent) of a device. Bandwidth allocation is done dynamically by the manager based on active channels on the bus, message-bandwidth requests made by SLIMbus devices. Based on current bandwidth usage, manager chooses a frequency to run the bus at (in steps of 'clock-gear', 1 through 10, each clock gear representing twice the frequency than the previous gear). Manager is also responsible for entering (and exiting) low-power-mode (known as 'clock pause'). Manager can do handover of framer if there are multiple framers on the bus and a certain usecase warrants using certain framer to avoid keeping previous framer being powered-on. Controller here performs duties of the manager device, and 'interface device'. Interface device is responsible for monitoring the bus and reporting information such as loss-of-synchronization, data slot-collision. h](h)}(hXb'Manager device' is responsible for device management, bandwidth allocation, channel setup, and port associations per channel. Device management means Logical address assignment/removal based on enumeration (report-present, report-absent) of a device. Bandwidth allocation is done dynamically by the manager based on active channels on the bus, message-bandwidth requests made by SLIMbus devices. Based on current bandwidth usage, manager chooses a frequency to run the bus at (in steps of 'clock-gear', 1 through 10, each clock gear representing twice the frequency than the previous gear). Manager is also responsible for entering (and exiting) low-power-mode (known as 'clock pause'). Manager can do handover of framer if there are multiple framers on the bus and a certain usecase warrants using certain framer to avoid keeping previous framer being powered-on.h]hXn‘Manager device’ is responsible for device management, bandwidth allocation, channel setup, and port associations per channel. Device management means Logical address assignment/removal based on enumeration (report-present, report-absent) of a device. Bandwidth allocation is done dynamically by the manager based on active channels on the bus, message-bandwidth requests made by SLIMbus devices. Based on current bandwidth usage, manager chooses a frequency to run the bus at (in steps of ‘clock-gear’, 1 through 10, each clock gear representing twice the frequency than the previous gear). Manager is also responsible for entering (and exiting) low-power-mode (known as ‘clock pause’). Manager can do handover of framer if there are multiple framers on the bus and a certain usecase warrants using certain framer to avoid keeping previous framer being powered-on.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM{hj,ubh)}(hController here performs duties of the manager device, and 'interface device'. Interface device is responsible for monitoring the bus and reporting information such as loss-of-synchronization, data slot-collision.h]hController here performs duties of the manager device, and ‘interface device’. Interface device is responsible for monitoring the bus and reporting information such as loss-of-synchronization, data slot-collision.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj,ubeh}(h]h ]h"]h$]h&]uh1jhj,hM{hj0hhubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jN'slim_unregister_controller (C function)c.slim_unregister_controllerhNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(h=int slim_unregister_controller (struct slim_controller *ctrl)h]j^)}(h-hj-hhhj-hM&ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj,hhhj-hM&ubah}(h]j,ah ](jjeh"]h$]h&]jj)jhuh1jWhj-hM&hj,hhubj)}(hhh]h)}(hController tear-down.h]hController tear-down.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM&hj-hhubah}(h]h ]h"]h$]h&]uh1jhj,hhhj-hM&ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj-jj-jjjuh1jRhhhj0hNhNubj)}(hK**Parameters** ``struct slim_controller *ctrl`` Controller to tear-down.h](h)}(h**Parameters**h]j)}(hj-h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM*hj-ubj1)}(hhh]j6)}(h9``struct slim_controller *ctrl`` Controller to tear-down.h](j<)}(h ``struct slim_controller *ctrl``h]jB)}(hj.h]hstruct slim_controller *ctrl}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj.ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM,hj.ubjX)}(hhh]h)}(hController to tear-down.h]hController to tear-down.}(hj3.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM(hj0.ubah}(h]h ]h"]h$]h&]uh1jWhj.ubeh}(h]h ]h"]h$]h&]uh1j5hj/.hM,hj.ubah}(h]h ]h"]h$]h&]uh1j0hj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_report_absent (C function)c.slim_report_absenthNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(h3void slim_report_absent (struct slim_device *sbdev)h]j^)}(h2void slim_report_absent(struct slim_device *sbdev)h](j-)}(hvoidh]hvoid}(hjt.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjp.hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM5ubjv)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjp.hhhj.hM5ubj)}(hslim_report_absenth]j)}(hslim_report_absenth]hslim_report_absent}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjp.hhhj.hM5ubj?-)}(h(struct slim_device *sbdev)h]jE-)}(hstruct slim_device *sbdevh](jd)}(hjgh]hstruct}(hj.hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj.ubjv)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj.ubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj.modnameN classnameNj-j-)}j-]j-)}j~-j.sbc.slim_report_absentasbuh1hhj.ubjv)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj.ubj-)}(hj-h]h*}(hj.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj.ubj)}(hsbdevh]hsbdev}(hj /hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj.ubah}(h]h ]h"]h$]h&]jjuh1j>-hjp.hhhj.hM5ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjl.hhhj.hM5ubah}(h]jg.ah ](jjeh"]h$]h&]jj)jhuh1jWhj.hM5hji.hhubj)}(hhh]h)}(hkController calls this function when a device reports absent, OR when the device cannot be communicated withh]hkController calls this function when a device reports absent, OR when the device cannot be communicated with}(hj4/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM5hj1/hhubah}(h]h ]h"]h$]h&]uh1jhji.hhhj.hM5ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjL/jjL/jjjuh1jRhhhj0hNhNubj)}(hd**Parameters** ``struct slim_device *sbdev`` Device that cannot be reached, or sent report absenth](h)}(h**Parameters**h]j)}(hjV/h]h Parameters}(hjX/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT/ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM9hjP/ubj1)}(hhh]j6)}(hR``struct slim_device *sbdev`` Device that cannot be reached, or sent report absenth](j<)}(h``struct slim_device *sbdev``h]jB)}(hju/h]hstruct slim_device *sbdev}(hjw/hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjs/ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM;hjo/ubjX)}(hhh]h)}(h4Device that cannot be reached, or sent report absenth]h4Device that cannot be reached, or sent report absent}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM8hj/ubah}(h]h ]h"]h$]h&]uh1jWhjo/ubeh}(h]h ]h"]h$]h&]uh1j5hj/hM;hjl/ubah}(h]h ]h"]h$]h&]uh1j0hjP/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_get_device (C function)c.slim_get_devicehNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(h^struct slim_device * slim_get_device (struct slim_controller *ctrl, struct slim_eaddr *e_addr)h]j^)}(h\struct slim_device *slim_get_device(struct slim_controller *ctrl, struct slim_eaddr *e_addr)h](jd)}(hjgh]hstruct}(hj/hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj/hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMlubjv)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj/hhhj/hMlubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj/modnameN classnameNj-j-)}j-]j-)}j~-slim_get_devicesbc.slim_get_deviceasbuh1hhj/hhhj/hMlubjv)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj/hhhj/hMlubj-)}(hj-h]h*}(hj0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj/hhhj/hMlubj)}(hslim_get_deviceh]j)}(hj 0h]hslim_get_device}(hj.0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*0ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj/hhhj/hMlubj?-)}(h9(struct slim_controller *ctrl, struct slim_eaddr *e_addr)h](jE-)}(hstruct slim_controller *ctrlh](jd)}(hjgh]hstruct}(hjI0hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjE0ubjv)}(h h]h }(hjV0hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjE0ubh)}(hhh]j)}(hslim_controllerh]hslim_controller}(hjg0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjd0ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetji0modnameN classnameNj-j-)}j-]j 0c.slim_get_deviceasbuh1hhjE0ubjv)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjE0ubj-)}(hj-h]h*}(hj0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjE0ubj)}(hctrlh]hctrl}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE0ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjA0ubjE-)}(hstruct slim_eaddr *e_addrh](jd)}(hjgh]hstruct}(hj0hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj0ubjv)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj0ubh)}(hhh]j)}(h slim_eaddrh]h slim_eaddr}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj0modnameN classnameNj-j-)}j-]j 0c.slim_get_deviceasbuh1hhj0ubjv)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj0ubj-)}(hj-h]h*}(hj1hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj0ubj)}(he_addrh]he_addr}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjA0ubeh}(h]h ]h"]h$]h&]jjuh1j>-hj/hhhj/hMlubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj/hhhj/hMlubah}(h]j/ah ](jjeh"]h$]h&]jj)jhuh1jWhj/hMlhj/hhubj)}(hhh]h)}(hget handle to a device.h]hget handle to a device.}(hj:1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMlhj71hhubah}(h]h ]h"]h$]h&]uh1jhj/hhhj/hMlubeh}(h]h ](jfunctioneh"]h$]h&]jjjjR1jjR1jjjuh1jRhhhj0hNhNubj)}(hX**Parameters** ``struct slim_controller *ctrl`` Controller on which this device will be added/queried ``struct slim_eaddr *e_addr`` Enumeration address of the device to be queried **Description** Takes a reference to the embedded struct device which needs to be dropped after use. **Return** pointer to a device if it has already reported. Creates a new device and returns pointer to it if the device has not yet enumerated.h](h)}(h**Parameters**h]j)}(hj\1h]h Parameters}(hj^1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ1ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMphjV1ubj1)}(hhh](j6)}(hW``struct slim_controller *ctrl`` Controller on which this device will be added/queried h](j<)}(h ``struct slim_controller *ctrl``h]jB)}(hj{1h]hstruct slim_controller *ctrl}(hj}1hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjy1ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMnhju1ubjX)}(hhh]h)}(h5Controller on which this device will be added/queriedh]h5Controller on which this device will be added/queried}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMnhj1ubah}(h]h ]h"]h$]h&]uh1jWhju1ubeh}(h]h ]h"]h$]h&]uh1j5hj1hMnhjr1ubj6)}(hN``struct slim_eaddr *e_addr`` Enumeration address of the device to be queried h](j<)}(h``struct slim_eaddr *e_addr``h]jB)}(hj1h]hstruct slim_eaddr *e_addr}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj1ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMohj1ubjX)}(hhh]h)}(h/Enumeration address of the device to be queriedh]h/Enumeration address of the device to be queried}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMohj1ubah}(h]h ]h"]h$]h&]uh1jWhj1ubeh}(h]h ]h"]h$]h&]uh1j5hj1hMohjr1ubeh}(h]h ]h"]h$]h&]uh1j0hjV1ubh)}(h**Description**h]j)}(hj1h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMqhjV1ubh)}(hTTakes a reference to the embedded struct device which needs to be dropped after use.h]hTTakes a reference to the embedded struct device which needs to be dropped after use.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMphjV1ubh)}(h **Return**h]j)}(hj2h]hReturn}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMshjV1ubh)}(hpointer to a device if it has already reported. Creates a new device and returns pointer to it if the device has not yet enumerated.h]hpointer to a device if it has already reported. Creates a new device and returns pointer to it if the device has not yet enumerated.}(hj,2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMthjV1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNof_slim_get_device (C function)c.of_slim_get_devicehNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(h^struct slim_device * of_slim_get_device (struct slim_controller *ctrl, struct device_node *np)h]j^)}(h\struct slim_device *of_slim_get_device(struct slim_controller *ctrl, struct device_node *np)h](jd)}(hjgh]hstruct}(hj[2hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjW2hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMubjv)}(h h]h }(hji2hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjW2hhhjh2hMubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hjz2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw2ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj|2modnameN classnameNj-j-)}j-]j-)}j~-of_slim_get_devicesbc.of_slim_get_deviceasbuh1hhjW2hhhjh2hMubjv)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjW2hhhjh2hMubj-)}(hj-h]h*}(hj2hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjW2hhhjh2hMubj)}(hof_slim_get_deviceh]j)}(hj2h]hof_slim_get_device}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjW2hhhjh2hMubj?-)}(h6(struct slim_controller *ctrl, struct device_node *np)h](jE-)}(hstruct slim_controller *ctrlh](jd)}(hjgh]hstruct}(hj2hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj2ubjv)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj2ubh)}(hhh]j)}(hslim_controllerh]hslim_controller}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj2modnameN classnameNj-j-)}j-]j2c.of_slim_get_deviceasbuh1hhj2ubjv)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj2ubj-)}(hj-h]h*}(hj3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj2ubj)}(hctrlh]hctrl}(hj,3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj2ubjE-)}(hstruct device_node *nph](jd)}(hjgh]hstruct}(hjE3hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjA3ubjv)}(h h]h }(hjR3hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjA3ubh)}(hhh]j)}(h device_nodeh]h device_node}(hjc3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`3ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetje3modnameN classnameNj-j-)}j-]j2c.of_slim_get_deviceasbuh1hhjA3ubjv)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjA3ubj-)}(hj-h]h*}(hj3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjA3ubj)}(hnph]hnp}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjA3ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj2ubeh}(h]h ]h"]h$]h&]jjuh1j>-hjW2hhhjh2hMubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjS2hhhjh2hMubah}(h]jN2ah ](jjeh"]h$]h&]jj)jhuh1jWhjh2hMhjP2hhubj)}(hhh]h)}(h%get handle to a device using dt node.h]h%get handle to a device using dt node.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3hhubah}(h]h ]h"]h$]h&]uh1jhjP2hhhjh2hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3jj3jjjuh1jRhhhj0hNhNubj)}(hXJ**Parameters** ``struct slim_controller *ctrl`` Controller on which this device will be queried ``struct device_node *np`` node pointer to device **Description** Takes a reference to the embedded struct device which needs to be dropped after use. **Return** pointer to a device if it has been registered, otherwise NULL.h](h)}(h**Parameters**h]j)}(hj3h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3ubj1)}(hhh](j6)}(hQ``struct slim_controller *ctrl`` Controller on which this device will be queried h](j<)}(h ``struct slim_controller *ctrl``h]jB)}(hj4h]hstruct slim_controller *ctrl}(hj 4hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj4ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj4ubjX)}(hhh]h)}(h/Controller on which this device will be queriedh]h/Controller on which this device will be queried}(hj 4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hMhj4ubah}(h]h ]h"]h$]h&]uh1jWhj4ubeh}(h]h ]h"]h$]h&]uh1j5hj4hMhj3ubj6)}(h2``struct device_node *np`` node pointer to device h](j<)}(h``struct device_node *np``h]jB)}(hj@4h]hstruct device_node *np}(hjB4hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj>4ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj:4ubjX)}(hhh]h)}(hnode pointer to deviceh]hnode pointer to device}(hjY4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjU4hMhjV4ubah}(h]h ]h"]h$]h&]uh1jWhj:4ubeh}(h]h ]h"]h$]h&]uh1j5hjU4hMhj3ubeh}(h]h ]h"]h$]h&]uh1j0hj3ubh)}(h**Description**h]j)}(hj{4h]h Description}(hj}4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy4ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3ubh)}(hTTakes a reference to the embedded struct device which needs to be dropped after use.h]hTTakes a reference to the embedded struct device which needs to be dropped after use.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3ubh)}(h **Return**h]j)}(hj4h]hReturn}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3ubh)}(h>pointer to a device if it has been registered, otherwise NULL.h]h>pointer to a device if it has been registered, otherwise NULL.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jN'slim_device_report_present (C function)c.slim_device_report_presenthNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(hcint slim_device_report_present (struct slim_controller *ctrl, struct slim_eaddr *e_addr, u8 *laddr)h]j^)}(hbint slim_device_report_present(struct slim_controller *ctrl, struct slim_eaddr *e_addr, u8 *laddr)h](j-)}(hinth]hint}(hj4hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj4hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMubjv)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj4hhhj4hMubj)}(hslim_device_report_presenth]j)}(hslim_device_report_presenth]hslim_device_report_present}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj4hhhj4hMubj?-)}(hD(struct slim_controller *ctrl, struct slim_eaddr *e_addr, u8 *laddr)h](jE-)}(hstruct slim_controller *ctrlh](jd)}(hjgh]hstruct}(hj$5hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj 5ubjv)}(h h]h }(hj15hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj 5ubh)}(hhh]j)}(hslim_controllerh]hslim_controller}(hjB5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?5ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjD5modnameN classnameNj-j-)}j-]j-)}j~-j 5sbc.slim_device_report_presentasbuh1hhj 5ubjv)}(h h]h }(hjb5hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj 5ubj-)}(hj-h]h*}(hjp5hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj 5ubj)}(hctrlh]hctrl}(hj}5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 5ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj5ubjE-)}(hstruct slim_eaddr *e_addrh](jd)}(hjgh]hstruct}(hj5hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj5ubjv)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj5ubh)}(hhh]j)}(h slim_eaddrh]h slim_eaddr}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj5modnameN classnameNj-j-)}j-]j^5c.slim_device_report_presentasbuh1hhj5ubjv)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj5ubj-)}(hj-h]h*}(hj5hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj5ubj)}(he_addrh]he_addr}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj5ubjE-)}(h u8 *laddrh](h)}(hhh]j)}(hu8h]hu8}(hj 6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypeEj~- reftargetj 6modnameN classnameNj-j-)}j-]j^5c.slim_device_report_presentasbuh1hhj6ubjv)}(h h]h }(hj'6hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj6ubj-)}(hj-h]h*}(hj56hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj6ubj)}(hladdrh]hladdr}(hjB6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj5ubeh}(h]h ]h"]h$]h&]jjuh1j>-hj4hhhj4hMubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj4hhhj4hMubah}(h]j4ah ](jjeh"]h$]h&]jj)jhuh1jWhj4hMhj4hhubj)}(hhh]h)}(hReport enumerated device.h]hReport enumerated device.}(hjl6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhji6hhubah}(h]h ]h"]h$]h&]uh1jhj4hhhj4hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj6jj6jjjuh1jRhhhj0hNhNubj)}(hX**Parameters** ``struct slim_controller *ctrl`` Controller with which device is enumerated. ``struct slim_eaddr *e_addr`` Enumeration address of the device. ``u8 *laddr`` Return logical address (if valid flag is false) **Description** Called by controller in response to REPORT_PRESENT. Framework will assign a logical address to this enumeration address. Function returns -EXFULL to indicate that all logical addresses are already taken.h](h)}(h**Parameters**h]j)}(hj6h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj6ubj1)}(hhh](j6)}(hM``struct slim_controller *ctrl`` Controller with which device is enumerated. h](j<)}(h ``struct slim_controller *ctrl``h]jB)}(hj6h]hstruct slim_controller *ctrl}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj6ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj6ubjX)}(hhh]h)}(h+Controller with which device is enumerated.h]h+Controller with which device is enumerated.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jWhj6ubeh}(h]h ]h"]h$]h&]uh1j5hj6hMhj6ubj6)}(hA``struct slim_eaddr *e_addr`` Enumeration address of the device. h](j<)}(h``struct slim_eaddr *e_addr``h]jB)}(hj6h]hstruct slim_eaddr *e_addr}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj6ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj6ubjX)}(hhh]h)}(h"Enumeration address of the device.h]h"Enumeration address of the device.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jWhj6ubeh}(h]h ]h"]h$]h&]uh1j5hj6hMhj6ubj6)}(h>``u8 *laddr`` Return logical address (if valid flag is false) h](j<)}(h ``u8 *laddr``h]jB)}(hj7h]h u8 *laddr}(hj!7hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj7ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj7ubjX)}(hhh]h)}(h/Return logical address (if valid flag is false)h]h/Return logical address (if valid flag is false)}(hj87hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj47hMhj57ubah}(h]h ]h"]h$]h&]uh1jWhj7ubeh}(h]h ]h"]h$]h&]uh1j5hj47hMhj6ubeh}(h]h ]h"]h$]h&]uh1j0hj6ubh)}(h**Description**h]j)}(hjZ7h]h Description}(hj\7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX7ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj6ubh)}(hCalled by controller in response to REPORT_PRESENT. Framework will assign a logical address to this enumeration address. Function returns -EXFULL to indicate that all logical addresses are already taken.h]hCalled by controller in response to REPORT_PRESENT. Framework will assign a logical address to this enumeration address. Function returns -EXFULL to indicate that all logical addresses are already taken.}(hjp7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jN"slim_get_logical_addr (C function)c.slim_get_logical_addrhNtauh1jAhj0hhhNhNubjS)}(hhh](jX)}(h5int slim_get_logical_addr (struct slim_device *sbdev)h]j^)}(h4int slim_get_logical_addr(struct slim_device *sbdev)h](j-)}(hinth]hint}(hj7hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj7hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMubjv)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj7hhhj7hMubj)}(hslim_get_logical_addrh]j)}(hslim_get_logical_addrh]hslim_get_logical_addr}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj7hhhj7hMubj?-)}(h(struct slim_device *sbdev)h]jE-)}(hstruct slim_device *sbdevh](jd)}(hjgh]hstruct}(hj7hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj7ubjv)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj7ubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj7modnameN classnameNj-j-)}j-]j-)}j~-j7sbc.slim_get_logical_addrasbuh1hhj7ubjv)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj7ubj-)}(hj-h]h*}(hj(8hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj7ubj)}(hsbdevh]hsbdev}(hj58hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj7ubah}(h]h ]h"]h$]h&]jjuh1j>-hj7hhhj7hMubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj7hhhj7hMubah}(h]j7ah ](jjeh"]h$]h&]jj)jhuh1jWhj7hMhj7hhubj)}(hhh]h)}(h1get/allocate logical address of a SLIMbus device.h]h1get/allocate logical address of a SLIMbus device.}(hj_8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj\8hhubah}(h]h ]h"]h$]h&]uh1jhj7hhhj7hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjw8jjw8jjjuh1jRhhhj0hNhNubj)}(h**Parameters** ``struct slim_device *sbdev`` client handle requesting the address. **Return** zero if a logical address is valid or a new logical address has been assigned. error code in case of error.h](h)}(h**Parameters**h]j)}(hj8h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM hj{8ubj1)}(hhh]j6)}(hD``struct slim_device *sbdev`` client handle requesting the address. h](j<)}(h``struct slim_device *sbdev``h]jB)}(hj8h]hstruct slim_device *sbdev}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj8ubah}(h]h ]h"]h$]h&]uh1j;hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj8ubjX)}(hhh]h)}(h%client handle requesting the address.h]h%client handle requesting the address.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1jWhj8ubeh}(h]h ]h"]h$]h&]uh1j5hj8hMhj8ubah}(h]h ]h"]h$]h&]uh1j0hj{8ubh)}(h **Return**h]j)}(hj8h]hReturn}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM hj{8ubh)}(hkzero if a logical address is valid or a new logical address has been assigned. error code in case of error.h]hkzero if a logical address is valid or a new logical address has been assigned. error code in case of error.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM hj{8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj0hhhNhNubeh}(h]driver-and-controller-apisah ]h"]driver and controller apis:ah$]h&]uh1hhhhhhhhK]ubh)}(hhh](h)}(h Clock-pause:h]h Clock-pause:}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hhhhhKhubh)}(hXSLIMbus mandates that a reconfiguration sequence (known as clock-pause) be broadcast to all active devices on the bus before the bus can enter low-power mode. Controller uses this sequence when it decides to enter low-power mode so that corresponding clocks and/or power-rails can be turned off to save power. Clock-pause is exited by waking up framer device (if controller driver initiates exiting low power mode), or by toggling the data line (if a slave device wants to initiate it).h]hXSLIMbus mandates that a reconfiguration sequence (known as clock-pause) be broadcast to all active devices on the bus before the bus can enter low-power mode. Controller uses this sequence when it decides to enter low-power mode so that corresponding clocks and/or power-rails can be turned off to save power. Clock-pause is exited by waking up framer device (if controller driver initiates exiting low power mode), or by toggling the data line (if a slave device wants to initiate it).}(hj 9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihj9hhubh)}(hhh](h)}(hClock-pause APIs:h]hClock-pause APIs:}(hj19hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.9hhhhhKrubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jN slim_ctrl_clk_pause (C function)c.slim_ctrl_clk_pausehNtauh1jAhj.9hhhNhNubjS)}(hhh](jX)}(hOint slim_ctrl_clk_pause (struct slim_controller *ctrl, bool wakeup, u8 restart)h]j^)}(hNint slim_ctrl_clk_pause(struct slim_controller *ctrl, bool wakeup, u8 restart)h](j-)}(hinth]hint}(hjX9hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjT9hhh[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chK ubjv)}(h h]h }(hjg9hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjT9hhhjf9hK ubj)}(hslim_ctrl_clk_pauseh]j)}(hslim_ctrl_clk_pauseh]hslim_ctrl_clk_pause}(hjy9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju9ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjT9hhhjf9hK ubj?-)}(h7(struct slim_controller *ctrl, bool wakeup, u8 restart)h](jE-)}(hstruct slim_controller *ctrlh](jd)}(hjgh]hstruct}(hj9hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj9ubjv)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj9ubh)}(hhh]j)}(hslim_controllerh]hslim_controller}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj9modnameN classnameNj-j-)}j-]j-)}j~-j{9sbc.slim_ctrl_clk_pauseasbuh1hhj9ubjv)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj9ubj-)}(hj-h]h*}(hj9hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj9ubj)}(hctrlh]hctrl}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj9ubjE-)}(h bool wakeuph](j-)}(hboolh]hbool}(hj:hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj:ubjv)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj:ubj)}(hwakeuph]hwakeup}(hj#:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj9ubjE-)}(h u8 restarth](h)}(hhh]j)}(hu8h]hu8}(hj?:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<:ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjA:modnameN classnameNj-j-)}j-]j9c.slim_ctrl_clk_pauseasbuh1hhj8:ubjv)}(h h]h }(hj]:hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj8:ubj)}(hrestarth]hrestart}(hjk:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj9ubeh}(h]h ]h"]h$]h&]jjuh1j>-hjT9hhhjf9hK ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjP9hhhjf9hK ubah}(h]jK9ah ](jjeh"]h$]h&]jj)jhuh1jWhjf9hK hjM9hhubj)}(hhh]h)}(h8Called by slimbus controller to enter/exit 'clock pause'h]h has more documentation about messaging APIs.h]hThe framework supports regmap and read/write apis to exchange control-information with a SLIMbus device. APIs can be synchronous or asynchronous. The header file has more documentation about messaging APIs.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKxhj;hhubh)}(hhh](h)}(hMessaging APIs:h]hMessaging APIs:}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hhhhhK}ubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_msg_response (C function)c.slim_msg_responsehNtauh1jAhj;hhhNhNubjS)}(hhh](jX)}(hPvoid slim_msg_response (struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len)h]j^)}(hOvoid slim_msg_response(struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len)h](j-)}(hvoidh]hvoid}(hj <hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj<hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK ubjv)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj<hhhj<hK ubj)}(hslim_msg_responseh]j)}(hslim_msg_responseh]hslim_msg_response}(hj*<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&<ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj<hhhj<hK ubj?-)}(h9(struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len)h](jE-)}(hstruct slim_controller *ctrlh](jd)}(hjgh]hstruct}(hjF<hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjB<ubjv)}(h h]h }(hjS<hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjB<ubh)}(hhh]j)}(hslim_controllerh]hslim_controller}(hjd<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja<ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjf<modnameN classnameNj-j-)}j-]j-)}j~-j,<sbc.slim_msg_responseasbuh1hhjB<ubjv)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjB<ubj-)}(hj-h]h*}(hj<hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjB<ubj)}(hctrlh]hctrl}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj><ubjE-)}(h u8 *replyh](h)}(hhh]j)}(hu8h]hu8}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj<modnameN classnameNj-j-)}j-]j<c.slim_msg_responseasbuh1hhj<ubjv)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj<ubj-)}(hj-h]h*}(hj<hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj<ubj)}(hreplyh]hreply}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj><ubjE-)}(hu8 tidh](h)}(hhh]j)}(hu8h]hu8}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj =ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj=modnameN classnameNj-j-)}j-]j<c.slim_msg_responseasbuh1hhj =ubjv)}(h h]h }(hj.=hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj =ubj)}(htidh]htid}(hj<=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj =ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj><ubjE-)}(hu8 lenh](h)}(hhh]j)}(hu8h]hu8}(hjX=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU=ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjZ=modnameN classnameNj-j-)}j-]j<c.slim_msg_responseasbuh1hhjQ=ubjv)}(h h]h }(hjv=hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjQ=ubj)}(hlenh]hlen}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ=ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj><ubeh}(h]h ]h"]h$]h&]jjuh1j>-hj<hhhj<hK ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj<hhhj<hK ubah}(h]j;ah ](jjeh"]h$]h&]jj)jhuh1jWhj<hK hj;hhubj)}(hhh]h)}(hADeliver Message response received from a device to the framework.h]hADeliver Message response received from a device to the framework.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK hj=hhubah}(h]h ]h"]h$]h&]uh1jhj;hhhj<hK ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj=jj=jjjuh1jRhhhj;hNhNubj)}(hX**Parameters** ``struct slim_controller *ctrl`` Controller handle ``u8 *reply`` Reply received from the device ``u8 tid`` Transaction ID received with which framework can associate reply. ``u8 len`` Length of the reply **Description** Called by controller to inform framework about the response received. This helps in making the API asynchronous, and controller-driver doesn't need to manage 1 more table other than the one managed by framework mapping TID with buffersh](h)}(h**Parameters**h]j)}(hj=h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj=ubj1)}(hhh](j6)}(h3``struct slim_controller *ctrl`` Controller handle h](j<)}(h ``struct slim_controller *ctrl``h]jB)}(hj=h]hstruct slim_controller *ctrl}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj=ubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj=ubjX)}(hhh]h)}(hController handleh]hController handle}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj>ubah}(h]h ]h"]h$]h&]uh1jWhj=ubeh}(h]h ]h"]h$]h&]uh1j5hj>hKhj=ubj6)}(h-``u8 *reply`` Reply received from the device h](j<)}(h ``u8 *reply``h]jB)}(hj(>h]h u8 *reply}(hj*>hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj&>ubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj">ubjX)}(hhh]h)}(hReply received from the deviceh]hReply received from the device}(hjA>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=>hKhj>>ubah}(h]h ]h"]h$]h&]uh1jWhj">ubeh}(h]h ]h"]h$]h&]uh1j5hj=>hKhj=ubj6)}(hM``u8 tid`` Transaction ID received with which framework can associate reply. h](j<)}(h ``u8 tid``h]jB)}(hja>h]hu8 tid}(hjc>hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj_>ubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj[>ubjX)}(hhh]h)}(hATransaction ID received with which framework can associate reply.h]hATransaction ID received with which framework can associate reply.}(hjz>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjv>hKhjw>ubah}(h]h ]h"]h$]h&]uh1jWhj[>ubeh}(h]h ]h"]h$]h&]uh1j5hjv>hKhj=ubj6)}(h``u8 len`` Length of the reply h](j<)}(h ``u8 len``h]jB)}(hj>h]hu8 len}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj>ubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj>ubjX)}(hhh]h)}(hLength of the replyh]hLength of the reply}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj>ubah}(h]h ]h"]h$]h&]uh1jWhj>ubeh}(h]h ]h"]h$]h&]uh1j5hj>hKhj=ubeh}(h]h ]h"]h$]h&]uh1j0hj=ubh)}(h**Description**h]j)}(hj>h]h Description}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj=ubh)}(hCalled by controller to inform framework about the response received. This helps in making the API asynchronous, and controller-driver doesn't need to manage 1 more table other than the one managed by framework mapping TID with buffersh]hCalled by controller to inform framework about the response received. This helps in making the API asynchronous, and controller-driver doesn’t need to manage 1 more table other than the one managed by framework mapping TID with buffers}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj;hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_alloc_txn_tid (C function)c.slim_alloc_txn_tidhNtauh1jAhj;hhhNhNubjS)}(hhh](jX)}(hOint slim_alloc_txn_tid (struct slim_controller *ctrl, struct slim_msg_txn *txn)h]j^)}(hNint slim_alloc_txn_tid(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](j-)}(hinth]hint}(hj?hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj?hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK8ubjv)}(h h]h }(hj)?hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj?hhhj(?hK8ubj)}(hslim_alloc_txn_tidh]j)}(hslim_alloc_txn_tidh]hslim_alloc_txn_tid}(hj;?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7?ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj?hhhj(?hK8ubj?-)}(h8(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](jE-)}(hstruct slim_controller *ctrlh](jd)}(hjgh]hstruct}(hjW?hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjS?ubjv)}(h h]h }(hjd?hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjS?ubh)}(hhh]j)}(hslim_controllerh]hslim_controller}(hju?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjr?ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjw?modnameN classnameNj-j-)}j-]j-)}j~-j=?sbc.slim_alloc_txn_tidasbuh1hhjS?ubjv)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjS?ubj-)}(hj-h]h*}(hj?hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjS?ubj)}(hctrlh]hctrl}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS?ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjO?ubjE-)}(hstruct slim_msg_txn *txnh](jd)}(hjgh]hstruct}(hj?hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj?ubjv)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj?ubh)}(hhh]j)}(h slim_msg_txnh]h slim_msg_txn}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj?modnameN classnameNj-j-)}j-]j?c.slim_alloc_txn_tidasbuh1hhj?ubjv)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj?ubj-)}(hj-h]h*}(hj@hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj?ubj)}(htxnh]htxn}(hj @hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjO?ubeh}(h]h ]h"]h$]h&]jjuh1j>-hj?hhhj(?hK8ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj?hhhj(?hK8ubah}(h]j ?ah ](jjeh"]h$]h&]jj)jhuh1jWhj(?hK8hj?hhubj)}(hhh]h)}(hAllocate a tid to txnh]hAllocate a tid to txn}(hjJ@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK8hjG@hhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj(?hK8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjb@jjb@jjjuh1jRhhhj;hNhNubj)}(h**Parameters** ``struct slim_controller *ctrl`` Controller handle ``struct slim_msg_txn *txn`` transaction to be allocated with tid. **Return** zero on success with valid txn->tid and error code on failures.h](h)}(h**Parameters**h]j)}(hjl@h]h Parameters}(hjn@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj@ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKtid and error code on failures.h]h?zero on success with valid txn->tid and error code on failures.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK=hjf@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj;hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_free_txn_tid (C function)c.slim_free_txn_tidhNtauh1jAhj;hhhNhNubjS)}(hhh](jX)}(hOvoid slim_free_txn_tid (struct slim_controller *ctrl, struct slim_msg_txn *txn)h]j^)}(hNvoid slim_free_txn_tid(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](j-)}(hvoidh]hvoid}(hjDAhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj@Ahhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKRubjv)}(h h]h }(hjSAhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj@AhhhjRAhKRubj)}(hslim_free_txn_tidh]j)}(hslim_free_txn_tidh]hslim_free_txn_tid}(hjeAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaAubah}(h]h ](jjeh"]h$]h&]jjuh1jhj@AhhhjRAhKRubj?-)}(h8(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](jE-)}(hstruct slim_controller *ctrlh](jd)}(hjgh]hstruct}(hjAhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj}Aubjv)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj}Aubh)}(hhh]j)}(hslim_controllerh]hslim_controller}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjAmodnameN classnameNj-j-)}j-]j-)}j~-jgAsbc.slim_free_txn_tidasbuh1hhj}Aubjv)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj}Aubj-)}(hj-h]h*}(hjAhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj}Aubj)}(hctrlh]hctrl}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}Aubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjyAubjE-)}(hstruct slim_msg_txn *txnh](jd)}(hjgh]hstruct}(hjAhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjAubjv)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjAubh)}(hhh]j)}(h slim_msg_txnh]h slim_msg_txn}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjBmodnameN classnameNj-j-)}j-]jAc.slim_free_txn_tidasbuh1hhjAubjv)}(h h]h }(hj/BhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjAubj-)}(hj-h]h*}(hj=BhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjAubj)}(htxnh]htxn}(hjJBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjyAubeh}(h]h ]h"]h$]h&]jjuh1j>-hj@AhhhjRAhKRubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj-hjDChhhjVChKbubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj@ChhhjVChKbubah}(h]j;Cah ](jjeh"]h$]h&]jj)jhuh1jWhjVChKbhj=Chhubj)}(hhh]h)}(h'Process a SLIMbus-messaging transactionh]h'Process a SLIMbus-messaging transaction}(hjxDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKbhjuDhhubah}(h]h ]h"]h$]h&]uh1jhj=ChhhjVChKbubeh}(h]h ](jfunctioneh"]h$]h&]jjjjDjjDjjjuh1jRhhhj;hNhNubj)}(hX**Parameters** ``struct slim_controller *ctrl`` Controller handle ``struct slim_msg_txn *txn`` Transaction to be sent over SLIMbus **Description** Called by controller to transmit messaging transactions not dealing with Interface/Value elements. (e.g. transmitting a message to assign logical address to a slave device **Return** -ETIMEDOUT: If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h](h)}(h**Parameters**h]j)}(hjDh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKfhjDubj1)}(hhh](j6)}(h3``struct slim_controller *ctrl`` Controller handle h](j<)}(h ``struct slim_controller *ctrl``h]jB)}(hjDh]hstruct slim_controller *ctrl}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjDubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKdhjDubjX)}(hhh]h)}(hController handleh]hController handle}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKdhjDubah}(h]h ]h"]h$]h&]uh1jWhjDubeh}(h]h ]h"]h$]h&]uh1j5hjDhKdhjDubj6)}(hA``struct slim_msg_txn *txn`` Transaction to be sent over SLIMbus h](j<)}(h``struct slim_msg_txn *txn``h]jB)}(hjDh]hstruct slim_msg_txn *txn}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjDubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKehjDubjX)}(hhh]h)}(h#Transaction to be sent over SLIMbush]h#Transaction to be sent over SLIMbus}(hj EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKehjEubah}(h]h ]h"]h$]h&]uh1jWhjDubeh}(h]h ]h"]h$]h&]uh1j5hjEhKehjDubeh}(h]h ]h"]h$]h&]uh1j0hjDubh)}(h**Description**h]j)}(hj-Eh]h Description}(hj/EhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+Eubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKghjDubh)}(hCalled by controller to transmit messaging transactions not dealing with Interface/Value elements. (e.g. transmitting a message to assign logical address to a slave deviceh]hCalled by controller to transmit messaging transactions not dealing with Interface/Value elements. (e.g. transmitting a message to assign logical address to a slave device}(hjCEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKfhjDubh)}(h **Return**h]j)}(hjTEh]hReturn}(hjVEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjREubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKjhjDubh)}(hw-ETIMEDOUT: If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h]hw-ETIMEDOUT: If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)}(hjjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKkhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj;hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_xfer_msg (C function)c.slim_xfer_msghNtauh1jAhj;hhhNhNubjS)}(hhh](jX)}(hNint slim_xfer_msg (struct slim_device *sbdev, struct slim_val_inf *msg, u8 mc)h]j^)}(hMint slim_xfer_msg(struct slim_device *sbdev, struct slim_val_inf *msg, u8 mc)h](j-)}(hinth]hint}(hjEhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjEhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKubjv)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjEhhhjEhKubj)}(h slim_xfer_msgh]j)}(h slim_xfer_msgh]h slim_xfer_msg}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ](jjeh"]h$]h&]jjuh1jhjEhhhjEhKubj?-)}(h<(struct slim_device *sbdev, struct slim_val_inf *msg, u8 mc)h](jE-)}(hstruct slim_device *sbdevh](jd)}(hjgh]hstruct}(hjEhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjEubjv)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjEubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjEmodnameN classnameNj-j-)}j-]j-)}j~-jEsbc.slim_xfer_msgasbuh1hhjEubjv)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjEubj-)}(hj-h]h*}(hj"FhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjEubj)}(hsbdevh]hsbdev}(hj/FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjEubjE-)}(hstruct slim_val_inf *msgh](jd)}(hjgh]hstruct}(hjHFhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjDFubjv)}(h h]h }(hjUFhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjDFubh)}(hhh]j)}(h slim_val_infh]h slim_val_inf}(hjfFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcFubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjhFmodnameN classnameNj-j-)}j-]jFc.slim_xfer_msgasbuh1hhjDFubjv)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjDFubj-)}(hj-h]h*}(hjFhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjDFubj)}(hmsgh]hmsg}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDFubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjEubjE-)}(hu8 mch](h)}(hhh]j)}(hu8h]hu8}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjFmodnameN classnameNj-j-)}j-]jFc.slim_xfer_msgasbuh1hhjFubjv)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjFubj)}(hmch]hmc}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjEubeh}(h]h ]h"]h$]h&]jjuh1j>-hjEhhhjEhKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjEhhhjEhKubah}(h]jEah ](jjeh"]h$]h&]jj)jhuh1jWhjEhKhjEhhubj)}(hhh]h)}(h,Transfer a value info message on slim deviceh]h,Transfer a value info message on slim device}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjGhhubah}(h]h ]h"]h$]h&]uh1jhjEhhhjEhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)Gjj)Gjjjuh1jRhhhj;hNhNubj)}(hX_**Parameters** ``struct slim_device *sbdev`` slim device to which this msg has to be transferred ``struct slim_val_inf *msg`` value info message pointer ``u8 mc`` message code of the message **Description** Called by drivers which want to transfer a vlaue or info elements. **Return** -ETIMEDOUT: If transmission of this message timed outh](h)}(h**Parameters**h]j)}(hj3Gh]h Parameters}(hj5GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1Gubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj-Gubj1)}(hhh](j6)}(hR``struct slim_device *sbdev`` slim device to which this msg has to be transferred h](j<)}(h``struct slim_device *sbdev``h]jB)}(hjRGh]hstruct slim_device *sbdev}(hjTGhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjPGubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjLGubjX)}(hhh]h)}(h3slim device to which this msg has to be transferredh]h3slim device to which this msg has to be transferred}(hjkGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjgGhKhjhGubah}(h]h ]h"]h$]h&]uh1jWhjLGubeh}(h]h ]h"]h$]h&]uh1j5hjgGhKhjIGubj6)}(h8``struct slim_val_inf *msg`` value info message pointer h](j<)}(h``struct slim_val_inf *msg``h]jB)}(hjGh]hstruct slim_val_inf *msg}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjGubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjGubjX)}(hhh]h)}(hvalue info message pointerh]hvalue info message pointer}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhKhjGubah}(h]h ]h"]h$]h&]uh1jWhjGubeh}(h]h ]h"]h$]h&]uh1j5hjGhKhjIGubj6)}(h&``u8 mc`` message code of the message h](j<)}(h ``u8 mc``h]jB)}(hjGh]hu8 mc}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjGubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjGubjX)}(hhh]h)}(hmessage code of the messageh]hmessage code of the message}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhKhjGubah}(h]h ]h"]h$]h&]uh1jWhjGubeh}(h]h ]h"]h$]h&]uh1j5hjGhKhjIGubeh}(h]h ]h"]h$]h&]uh1j0hj-Gubh)}(h**Description**h]j)}(hjGh]h Description}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj-Gubh)}(hBCalled by drivers which want to transfer a vlaue or info elements.h]hBCalled by drivers which want to transfer a vlaue or info elements.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj-Gubh)}(h **Return**h]j)}(hj&Hh]hReturn}(hj(HhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$Hubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj-Gubh)}(h5-ETIMEDOUT: If transmission of this message timed outh]h5-ETIMEDOUT: If transmission of this message timed out}(hj-hjgHhhhjyHhMubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjcHhhhjyHhMubah}(h]j^Hah ](jjeh"]h$]h&]jj)jhuh1jWhjyHhMhj`Hhhubj)}(hhh]h)}(hRead SLIMbus value elementh]hRead SLIMbus value element}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMhj Jhhubah}(h]h ]h"]h$]h&]uh1jhj`HhhhjyHhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj(Jjj(Jjjjuh1jRhhhj;hNhNubj)}(hX**Parameters** ``struct slim_device *sdev`` client handle. ``u32 addr`` address of value element to read. ``size_t count`` number of bytes to read. Maximum bytes allowed are 16. ``u8 *val`` will return what the value element value was **Return** -EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h](h)}(h**Parameters**h]j)}(hj2Jh]h Parameters}(hj4JhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0Jubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM!hj,Jubj1)}(hhh](j6)}(h,``struct slim_device *sdev`` client handle. h](j<)}(h``struct slim_device *sdev``h]jB)}(hjQJh]hstruct slim_device *sdev}(hjSJhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjOJubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMhjKJubjX)}(hhh]h)}(hclient handle.h]hclient handle.}(hjjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfJhMhjgJubah}(h]h ]h"]h$]h&]uh1jWhjKJubeh}(h]h ]h"]h$]h&]uh1j5hjfJhMhjHJubj6)}(h/``u32 addr`` address of value element to read. h](j<)}(h ``u32 addr``h]jB)}(hjJh]hu32 addr}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjJubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM hjJubjX)}(hhh]h)}(h!address of value element to read.h]h!address of value element to read.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM hjJubah}(h]h ]h"]h$]h&]uh1jWhjJubeh}(h]h ]h"]h$]h&]uh1j5hjJhM hjHJubj6)}(hH``size_t count`` number of bytes to read. Maximum bytes allowed are 16. h](j<)}(h``size_t count``h]jB)}(hjJh]h size_t count}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjJubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM!hjJubjX)}(hhh]h)}(h6number of bytes to read. Maximum bytes allowed are 16.h]h6number of bytes to read. Maximum bytes allowed are 16.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM!hjJubah}(h]h ]h"]h$]h&]uh1jWhjJubeh}(h]h ]h"]h$]h&]uh1j5hjJhM!hjHJubj6)}(h9``u8 *val`` will return what the value element value was h](j<)}(h ``u8 *val``h]jB)}(hjJh]hu8 *val}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjJubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM"hjJubjX)}(hhh]h)}(h,will return what the value element value wash]h,will return what the value element value was}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhM"hjKubah}(h]h ]h"]h$]h&]uh1jWhjJubeh}(h]h ]h"]h$]h&]uh1j5hjKhM"hjHJubeh}(h]h ]h"]h$]h&]uh1j0hj,Jubh)}(h **Return**h]j)}(hj7Kh]hReturn}(hj9KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5Kubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM$hj,Jubh)}(h-EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h]h-EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)}(hjMKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM$hj,Jubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj;hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_readb (C function) c.slim_readbhNtauh1jAhj;hhhNhNubjS)}(hhh](jX)}(h3int slim_readb (struct slim_device *sdev, u32 addr)h]j^)}(h2int slim_readb(struct slim_device *sdev, u32 addr)h](j-)}(hinth]hint}(hj|KhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjxKhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM3ubjv)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjxKhhhjKhM3ubj)}(h slim_readbh]j)}(h slim_readbh]h slim_readb}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubah}(h]h ](jjeh"]h$]h&]jjuh1jhjxKhhhjKhM3ubj?-)}(h$(struct slim_device *sdev, u32 addr)h](jE-)}(hstruct slim_device *sdevh](jd)}(hjgh]hstruct}(hjKhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjKubjv)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjKubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjKmodnameN classnameNj-j-)}j-]j-)}j~-jKsb c.slim_readbasbuh1hhjKubjv)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjKubj-)}(hj-h]h*}(hjLhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjKubj)}(hsdevh]hsdev}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjKubjE-)}(hu32 addrh](h)}(hhh]j)}(hu32h]hu32}(hj.LhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+Lubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj0LmodnameN classnameNj-j-)}j-]jK c.slim_readbasbuh1hhj'Lubjv)}(h h]h }(hjLLhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj'Lubj)}(haddrh]haddr}(hjZLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'Lubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjKubeh}(h]h ]h"]h$]h&]jjuh1j>-hjxKhhhjKhM3ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjtKhhhjKhM3ubah}(h]joKah ](jjeh"]h$]h&]jj)jhuh1jWhjKhM3hjqKhhubj)}(hhh]h)}(h$Read byte from SLIMbus value elementh]h$Read byte from SLIMbus value element}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM3hjLhhubah}(h]h ]h"]h$]h&]uh1jhjqKhhhjKhM3ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjLjjLjjjuh1jRhhhj;hNhNubj)}(h**Parameters** ``struct slim_device *sdev`` client handle. ``u32 addr`` address in the value element to read. **Return** byte value of value element.h](h)}(h**Parameters**h]j)}(hjLh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM7hjLubj1)}(hhh](j6)}(h,``struct slim_device *sdev`` client handle. h](j<)}(h``struct slim_device *sdev``h]jB)}(hjLh]hstruct slim_device *sdev}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjLubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM5hjLubjX)}(hhh]h)}(hclient handle.h]hclient handle.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhM5hjLubah}(h]h ]h"]h$]h&]uh1jWhjLubeh}(h]h ]h"]h$]h&]uh1j5hjLhM5hjLubj6)}(h3``u32 addr`` address in the value element to read. h](j<)}(h ``u32 addr``h]jB)}(hjLh]hu32 addr}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjLubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM6hjLubjX)}(hhh]h)}(h%address in the value element to read.h]h%address in the value element to read.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhM6hjMubah}(h]h ]h"]h$]h&]uh1jWhjLubeh}(h]h ]h"]h$]h&]uh1j5hjMhM6hjLubeh}(h]h ]h"]h$]h&]uh1j0hjLubh)}(h **Return**h]j)}(hj9Mh]hReturn}(hj;MhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7Mubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM8hjLubh)}(hbyte value of value element.h]hbyte value of value element.}(hjOMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM8hjLubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj;hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_write (C function) c.slim_writehNtauh1jAhj;hhhNhNubjS)}(hhh](jX)}(hJint slim_write (struct slim_device *sdev, u32 addr, size_t count, u8 *val)h]j^)}(hIint slim_write(struct slim_device *sdev, u32 addr, size_t count, u8 *val)h](j-)}(hinth]hint}(hj~MhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjzMhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMHubjv)}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjzMhhhjMhMHubj)}(h slim_writeh]j)}(h slim_writeh]h slim_write}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubah}(h]h ](jjeh"]h$]h&]jjuh1jhjzMhhhjMhMHubj?-)}(h;(struct slim_device *sdev, u32 addr, size_t count, u8 *val)h](jE-)}(hstruct slim_device *sdevh](jd)}(hjgh]hstruct}(hjMhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjMubjv)}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjMubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjMmodnameN classnameNj-j-)}j-]j-)}j~-jMsb c.slim_writeasbuh1hhjMubjv)}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjMubj-)}(hj-h]h*}(hjNhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjMubj)}(hsdevh]hsdev}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjMubjE-)}(hu32 addrh](h)}(hhh]j)}(hu32h]hu32}(hj0NhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-Nubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj2NmodnameN classnameNj-j-)}j-]jM c.slim_writeasbuh1hhj)Nubjv)}(h h]h }(hjNNhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj)Nubj)}(haddrh]haddr}(hj\NhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)Nubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjMubjE-)}(h size_t counth](h)}(hhh]j)}(hsize_th]hsize_t}(hjxNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuNubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjzNmodnameN classnameNj-j-)}j-]jM c.slim_writeasbuh1hhjqNubjv)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjqNubj)}(hcounth]hcount}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqNubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjMubjE-)}(hu8 *valh](h)}(hhh]j)}(hu8h]hu8}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjNmodnameN classnameNj-j-)}j-]jM c.slim_writeasbuh1hhjNubjv)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjNubj-)}(hj-h]h*}(hjNhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjNubj)}(hvalh]hval}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjMubeh}(h]h ]h"]h$]h&]jjuh1j>-hjzMhhhjMhMHubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjvMhhhjMhMHubah}(h]jqMah ](jjeh"]h$]h&]jj)jhuh1jWhjMhMHhjsMhhubj)}(hhh]h)}(hWrite SLIMbus value elementh]hWrite SLIMbus value element}(hj#OhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMHhj Ohhubah}(h]h ]h"]h$]h&]uh1jhjsMhhhjMhMHubeh}(h]h ](jfunctioneh"]h$]h&]jjjj;Ojj;Ojjjuh1jRhhhj;hNhNubj)}(hX**Parameters** ``struct slim_device *sdev`` client handle. ``u32 addr`` address in the value element to write. ``size_t count`` number of bytes to write. Maximum bytes allowed are 16. ``u8 *val`` value to write to value element **Return** -EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h](h)}(h**Parameters**h]j)}(hjEOh]h Parameters}(hjGOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCOubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMLhj?Oubj1)}(hhh](j6)}(h,``struct slim_device *sdev`` client handle. h](j<)}(h``struct slim_device *sdev``h]jB)}(hjdOh]hstruct slim_device *sdev}(hjfOhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjbOubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMJhj^OubjX)}(hhh]h)}(hclient handle.h]hclient handle.}(hj}OhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyOhMJhjzOubah}(h]h ]h"]h$]h&]uh1jWhj^Oubeh}(h]h ]h"]h$]h&]uh1j5hjyOhMJhj[Oubj6)}(h4``u32 addr`` address in the value element to write. h](j<)}(h ``u32 addr``h]jB)}(hjOh]hu32 addr}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjOubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMKhjOubjX)}(hhh]h)}(h&address in the value element to write.h]h&address in the value element to write.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMKhjOubah}(h]h ]h"]h$]h&]uh1jWhjOubeh}(h]h ]h"]h$]h&]uh1j5hjOhMKhj[Oubj6)}(hI``size_t count`` number of bytes to write. Maximum bytes allowed are 16. h](j<)}(h``size_t count``h]jB)}(hjOh]h size_t count}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjOubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMLhjOubjX)}(hhh]h)}(h7number of bytes to write. Maximum bytes allowed are 16.h]h7number of bytes to write. Maximum bytes allowed are 16.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMLhjOubah}(h]h ]h"]h$]h&]uh1jWhjOubeh}(h]h ]h"]h$]h&]uh1j5hjOhMLhj[Oubj6)}(h,``u8 *val`` value to write to value element h](j<)}(h ``u8 *val``h]jB)}(hjPh]hu8 *val}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj Pubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMMhj PubjX)}(hhh]h)}(hvalue to write to value elementh]hvalue to write to value element}(hj(PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$PhMMhj%Pubah}(h]h ]h"]h$]h&]uh1jWhj Pubeh}(h]h ]h"]h$]h&]uh1j5hj$PhMMhj[Oubeh}(h]h ]h"]h$]h&]uh1j0hj?Oubh)}(h **Return**h]j)}(hjJPh]hReturn}(hjLPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHPubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMOhj?Oubh)}(h-EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h]h-EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)}(hj`PhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMOhj?Oubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj;hhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_writeb (C function) c.slim_writebhNtauh1jAhj;hhhNhNubjS)}(hhh](jX)}(h>int slim_writeb (struct slim_device *sdev, u32 addr, u8 value)h]j^)}(h=int slim_writeb(struct slim_device *sdev, u32 addr, u8 value)h](j-)}(hinth]hint}(hjPhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjPhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM^ubjv)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjPhhhjPhM^ubj)}(h slim_writebh]j)}(h slim_writebh]h slim_writeb}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubah}(h]h ](jjeh"]h$]h&]jjuh1jhjPhhhjPhM^ubj?-)}(h.(struct slim_device *sdev, u32 addr, u8 value)h](jE-)}(hstruct slim_device *sdevh](jd)}(hjgh]hstruct}(hjPhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjPubjv)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjPubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjPmodnameN classnameNj-j-)}j-]j-)}j~-jPsb c.slim_writebasbuh1hhjPubjv)}(h h]h }(hj QhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjPubj-)}(hj-h]h*}(hjQhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjPubj)}(hsdevh]hsdev}(hj%QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjPubjE-)}(hu32 addrh](h)}(hhh]j)}(hu32h]hu32}(hjAQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>Qubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjCQmodnameN classnameNj-j-)}j-]jQ c.slim_writebasbuh1hhj:Qubjv)}(h h]h }(hj_QhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj:Qubj)}(haddrh]haddr}(hjmQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:Qubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjPubjE-)}(hu8 valueh](h)}(hhh]j)}(hu8h]hu8}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjQmodnameN classnameNj-j-)}j-]jQ c.slim_writebasbuh1hhjQubjv)}(h h]h }(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjQubj)}(hvalueh]hvalue}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjPubeh}(h]h ]h"]h$]h&]jjuh1j>-hjPhhhjPhM^ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjPhhhjPhM^ubah}(h]jPah ](jjeh"]h$]h&]jj)jhuh1jWhjPhM^hjPhhubj)}(hhh]h)}(h#Write byte to SLIMbus value elementh]h#Write byte to SLIMbus value element}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM^hjQhhubah}(h]h ]h"]h$]h&]uh1jhjPhhhjPhM^ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQjjQjjjuh1jRhhhj;hNhNubj)}(hXD**Parameters** ``struct slim_device *sdev`` client handle. ``u32 addr`` address of value element to write. ``u8 value`` value to write to value element **Return** -EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h](h)}(h**Parameters**h]j)}(hjRh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMbhjQubj1)}(hhh](j6)}(h,``struct slim_device *sdev`` client handle. h](j<)}(h``struct slim_device *sdev``h]jB)}(hj Rh]hstruct slim_device *sdev}(hj"RhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjRubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM`hjRubjX)}(hhh]h)}(hclient handle.h]hclient handle.}(hj9RhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5RhM`hj6Rubah}(h]h ]h"]h$]h&]uh1jWhjRubeh}(h]h ]h"]h$]h&]uh1j5hj5RhM`hjRubj6)}(h0``u32 addr`` address of value element to write. h](j<)}(h ``u32 addr``h]jB)}(hjYRh]hu32 addr}(hj[RhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjWRubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMahjSRubjX)}(hhh]h)}(h"address of value element to write.h]h"address of value element to write.}(hjrRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnRhMahjoRubah}(h]h ]h"]h$]h&]uh1jWhjSRubeh}(h]h ]h"]h$]h&]uh1j5hjnRhMahjRubj6)}(h-``u8 value`` value to write to value element h](j<)}(h ``u8 value``h]jB)}(hjRh]hu8 value}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjRubah}(h]h ]h"]h$]h&]uh1j;h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMbhjRubjX)}(hhh]h)}(hvalue to write to value elementh]hvalue to write to value element}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMbhjRubah}(h]h ]h"]h$]h&]uh1jWhjRubeh}(h]h ]h"]h$]h&]uh1j5hjRhMbhjRubeh}(h]h ]h"]h$]h&]uh1j0hjQubh)}(h **Return**h]j)}(hjRh]hReturn}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMdhjQubh)}(h-EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h]h-EINVAL for Invalid parameters, -ETIMEDOUT If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMdhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj;hhhNhNubeh}(h]messaging-apisah ]h"]messaging apis:ah$]h&]uh1hhj;hhhhhK}ubh)}(hhh](h)}(hStreaming APIs:h]hStreaming APIs:}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShhhhhKubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jN!slim_stream_allocate (C function)c.slim_stream_allocatehNtauh1jAhjShhhNhNubjS)}(hhh](jX)}(h]struct slim_stream_runtime * slim_stream_allocate (struct slim_device *dev, const char *name)h]j^)}(h[struct slim_stream_runtime *slim_stream_allocate(struct slim_device *dev, const char *name)h](jd)}(hjgh]hstruct}(hj+ShhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj'Shhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKZubjv)}(h h]h }(hj9ShhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj'Shhhj8ShKZubh)}(hhh]j)}(hslim_stream_runtimeh]hslim_stream_runtime}(hjJShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGSubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjLSmodnameN classnameNj-j-)}j-]j-)}j~-slim_stream_allocatesbc.slim_stream_allocateasbuh1hhj'Shhhj8ShKZubjv)}(h h]h }(hjkShhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj'Shhhj8ShKZubj-)}(hj-h]h*}(hjyShhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj'Shhhj8ShKZubj)}(hslim_stream_allocateh]j)}(hjhSh]hslim_stream_allocate}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubah}(h]h ](jjeh"]h$]h&]jjuh1jhj'Shhhj8ShKZubj?-)}(h+(struct slim_device *dev, const char *name)h](jE-)}(hstruct slim_device *devh](jd)}(hjgh]hstruct}(hjShhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjSubjv)}(h h]h }(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjSubh)}(hhh]j)}(h slim_deviceh]h slim_device}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjSmodnameN classnameNj-j-)}j-]jfSc.slim_stream_allocateasbuh1hhjSubjv)}(h h]h }(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjSubj-)}(hj-h]h*}(hjShhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjSubj)}(hdevh]hdev}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjSubjE-)}(hconst char *nameh](jd)}(hconsth]hconst}(hjThhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjTubjv)}(h h]h }(hj#ThhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjTubj-)}(hcharh]hchar}(hj1ThhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjTubjv)}(h h]h }(hj?ThhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjTubj-)}(hj-h]h*}(hjMThhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjTubj)}(hnameh]hname}(hjZThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjSubeh}(h]h ]h"]h$]h&]jjuh1j>-hj'Shhhj8ShKZubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj#Shhhj8ShKZubah}(h]jSah ](jjeh"]h$]h&]jj)jhuh1jWhj8ShKZhj Shhubj)}(hhh]h)}(hAllocate a new SLIMbus Streamh]hAllocate a new SLIMbus Stream}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKZhjThhubah}(h]h ]h"]h$]h&]uh1jhj Shhhj8ShKZubeh}(h]h ](jfunctioneh"]h$]h&]jjjjTjjTjjjuh1jRhhhjShNhNubj)}(hX**Parameters** ``struct slim_device *dev`` Slim device to be associated with ``const char *name`` name of the stream **Description** This is very first call for SLIMbus streaming, this API will allocate a new SLIMbus stream and return a valid stream runtime pointer for client to use it in subsequent stream apis. state of stream is set to ALLOCATED **Return** valid pointer on success and error code on failure. From ASoC DPCM framework, this state is linked to startup() operation.h](h)}(h**Parameters**h]j)}(hjTh]h Parameters}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chK^hjTubj1)}(hhh](j6)}(h>``struct slim_device *dev`` Slim device to be associated with h](j<)}(h``struct slim_device *dev``h]jB)}(hjTh]hstruct slim_device *dev}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjTubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chK[hjTubjX)}(hhh]h)}(h!Slim device to be associated withh]h!Slim device to be associated with}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThK[hjTubah}(h]h ]h"]h$]h&]uh1jWhjTubeh}(h]h ]h"]h$]h&]uh1j5hjThK[hjTubj6)}(h(``const char *name`` name of the stream h](j<)}(h``const char *name``h]jB)}(hjTh]hconst char *name}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjTubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chK\hjTubjX)}(hhh]h)}(hname of the streamh]hname of the stream}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhK\hjUubah}(h]h ]h"]h$]h&]uh1jWhjTubeh}(h]h ]h"]h$]h&]uh1j5hjUhK\hjTubeh}(h]h ]h"]h$]h&]uh1j0hjTubh)}(h**Description**h]j)}(hj9Uh]h Description}(hj;UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7Uubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chK^hjTubh)}(hThis is very first call for SLIMbus streaming, this API will allocate a new SLIMbus stream and return a valid stream runtime pointer for client to use it in subsequent stream apis. state of stream is set to ALLOCATEDh]hThis is very first call for SLIMbus streaming, this API will allocate a new SLIMbus stream and return a valid stream runtime pointer for client to use it in subsequent stream apis. state of stream is set to ALLOCATED}(hjOUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chK]hjTubh)}(h **Return**h]j)}(hj`Uh]hReturn}(hjbUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^Uubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKahjTubh)}(hzvalid pointer on success and error code on failure. From ASoC DPCM framework, this state is linked to startup() operation.h]hzvalid pointer on success and error code on failure. From ASoC DPCM framework, this state is linked to startup() operation.}(hjvUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKbhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjShhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jN slim_stream_prepare (C function)c.slim_stream_preparehNtauh1jAhjShhhNhNubjS)}(hhh](jX)}(hXint slim_stream_prepare (struct slim_stream_runtime *rt, struct slim_stream_config *cfg)h]j^)}(hWint slim_stream_prepare(struct slim_stream_runtime *rt, struct slim_stream_config *cfg)h](j-)}(hinth]hint}(hjUhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjUhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKubjv)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjUhhhjUhKubj)}(hslim_stream_prepareh]j)}(hslim_stream_prepareh]hslim_stream_prepare}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubah}(h]h ](jjeh"]h$]h&]jjuh1jhjUhhhjUhKubj?-)}(h@(struct slim_stream_runtime *rt, struct slim_stream_config *cfg)h](jE-)}(hstruct slim_stream_runtime *rth](jd)}(hjgh]hstruct}(hjUhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjUubjv)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjUubh)}(hhh]j)}(hslim_stream_runtimeh]hslim_stream_runtime}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjVmodnameN classnameNj-j-)}j-]j-)}j~-jUsbc.slim_stream_prepareasbuh1hhjUubjv)}(h h]h }(hj VhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjUubj-)}(hj-h]h*}(hj.VhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjUubj)}(hrth]hrt}(hj;VhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjUubjE-)}(hstruct slim_stream_config *cfgh](jd)}(hjgh]hstruct}(hjTVhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjPVubjv)}(h h]h }(hjaVhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjPVubh)}(hhh]j)}(hslim_stream_configh]hslim_stream_config}(hjrVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoVubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetjtVmodnameN classnameNj-j-)}j-]jVc.slim_stream_prepareasbuh1hhjPVubjv)}(h h]h }(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjPVubj-)}(hj-h]h*}(hjVhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjPVubj)}(hcfgh]hcfg}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPVubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjUubeh}(h]h ]h"]h$]h&]jjuh1j>-hjUhhhjUhKubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjUhhhjUhKubah}(h]jUah ](jjeh"]h$]h&]jj)jhuh1jWhjUhKhjUhhubj)}(hhh]h)}(hPrepare a SLIMbus Streamh]hPrepare a SLIMbus Stream}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKhjVhhubah}(h]h ]h"]h$]h&]uh1jhjUhhhjUhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjVjjVjjjuh1jRhhhjShNhNubj)}(hX}**Parameters** ``struct slim_stream_runtime *rt`` instance of slim stream runtime to configure ``struct slim_stream_config *cfg`` new configuration for the stream **Description** This API will configure SLIMbus stream with config parameters from cfg. return zero on success and error code on failure. From ASoC DPCM framework, this state is linked to hw_params() operation.h](h)}(h**Parameters**h]j)}(hjVh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKhjVubj1)}(hhh](j6)}(hP``struct slim_stream_runtime *rt`` instance of slim stream runtime to configure h](j<)}(h"``struct slim_stream_runtime *rt``h]jB)}(hjWh]hstruct slim_stream_runtime *rt}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjWubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKhjWubjX)}(hhh]h)}(h,instance of slim stream runtime to configureh]h,instance of slim stream runtime to configure}(hj/WhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+WhKhj,Wubah}(h]h ]h"]h$]h&]uh1jWhjWubeh}(h]h ]h"]h$]h&]uh1j5hj+WhKhj Wubj6)}(hD``struct slim_stream_config *cfg`` new configuration for the stream h](j<)}(h"``struct slim_stream_config *cfg``h]jB)}(hjOWh]hstruct slim_stream_config *cfg}(hjQWhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjMWubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKhjIWubjX)}(hhh]h)}(h new configuration for the streamh]h new configuration for the stream}(hjhWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdWhKhjeWubah}(h]h ]h"]h$]h&]uh1jWhjIWubeh}(h]h ]h"]h$]h&]uh1j5hjdWhKhj Wubeh}(h]h ]h"]h$]h&]uh1j0hjVubh)}(h**Description**h]j)}(hjWh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKhjVubh)}(hThis API will configure SLIMbus stream with config parameters from cfg. return zero on success and error code on failure. From ASoC DPCM framework, this state is linked to hw_params() operation.h]hThis API will configure SLIMbus stream with config parameters from cfg. return zero on success and error code on failure. From ASoC DPCM framework, this state is linked to hw_params() operation.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjShhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_stream_enable (C function)c.slim_stream_enablehNtauh1jAhjShhhNhNubjS)}(hhh](jX)}(h;int slim_stream_enable (struct slim_stream_runtime *stream)h]j^)}(h:int slim_stream_enable(struct slim_stream_runtime *stream)h](j-)}(hinth]hint}(hjWhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjWhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM]ubjv)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjWhhhjWhM]ubj)}(hslim_stream_enableh]j)}(hslim_stream_enableh]hslim_stream_enable}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ](jjeh"]h$]h&]jjuh1jhjWhhhjWhM]ubj?-)}(h$(struct slim_stream_runtime *stream)h]jE-)}(h"struct slim_stream_runtime *streamh](jd)}(hjgh]hstruct}(hj XhhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjXubjv)}(h h]h }(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjXubh)}(hhh]j)}(hslim_stream_runtimeh]hslim_stream_runtime}(hj*XhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'Xubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj,XmodnameN classnameNj-j-)}j-]j-)}j~-jWsbc.slim_stream_enableasbuh1hhjXubjv)}(h h]h }(hjJXhhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjXubj-)}(hj-h]h*}(hjXXhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjXubj)}(hstreamh]hstream}(hjeXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjXubah}(h]h ]h"]h$]h&]jjuh1j>-hjWhhhjWhM]ubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjWhhhjWhM]ubah}(h]jWah ](jjeh"]h$]h&]jj)jhuh1jWhjWhM]hjWhhubj)}(hhh]h)}(h Enable a prepared SLIMbus Streamh]h Enable a prepared SLIMbus Stream}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM]hjXhhubah}(h]h ]h"]h$]h&]uh1jhjWhhhjWhM]ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjXjjXjjjuh1jRhhhjShNhNubj)}(hXH**Parameters** ``struct slim_stream_runtime *stream`` instance of slim stream runtime to enable **Description** This API will enable all the ports and channels associated with SLIMbus stream **Return** zero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() start operation.h](h)}(h**Parameters**h]j)}(hjXh]h Parameters}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMahjXubj1)}(hhh]j6)}(hQ``struct slim_stream_runtime *stream`` instance of slim stream runtime to enable h](j<)}(h&``struct slim_stream_runtime *stream``h]jB)}(hjXh]h"struct slim_stream_runtime *stream}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjXubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM_hjXubjX)}(hhh]h)}(h)instance of slim stream runtime to enableh]h)instance of slim stream runtime to enable}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhM_hjXubah}(h]h ]h"]h$]h&]uh1jWhjXubeh}(h]h ]h"]h$]h&]uh1j5hjXhM_hjXubah}(h]h ]h"]h$]h&]uh1j0hjXubh)}(h**Description**h]j)}(hj Yh]h Description}(hj YhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Yubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMahjXubh)}(hNThis API will enable all the ports and channels associated with SLIMbus streamh]hNThis API will enable all the ports and channels associated with SLIMbus stream}(hj!YhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM`hjXubh)}(h **Return**h]j)}(hj2Yh]hReturn}(hj4YhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0Yubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMchjXubh)}(hwzero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() start operation.h]hwzero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() start operation.}(hjHYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMdhjXubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjShhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jN slim_stream_disable (C function)c.slim_stream_disablehNtauh1jAhjShhhNhNubjS)}(hhh](jX)}(h-hjsYhhhjYhMubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhjoYhhhjYhMubah}(h]jjYah ](jjeh"]h$]h&]jj)jhuh1jWhjYhMhjlYhhubj)}(hhh]h)}(hDisable a SLIMbus Streamh]hDisable a SLIMbus Stream}(hj7ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj4Zhhubah}(h]h ]h"]h$]h&]uh1jhjlYhhhjYhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjOZjjOZjjjuh1jRhhhjShNhNubj)}(hXJ**Parameters** ``struct slim_stream_runtime *stream`` instance of slim stream runtime to disable **Description** This API will disable all the ports and channels associated with SLIMbus stream **Return** zero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() pause operation.h](h)}(h**Parameters**h]j)}(hjYZh]h Parameters}(hj[ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWZubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjSZubj1)}(hhh]j6)}(hR``struct slim_stream_runtime *stream`` instance of slim stream runtime to disable h](j<)}(h&``struct slim_stream_runtime *stream``h]jB)}(hjxZh]h"struct slim_stream_runtime *stream}(hjzZhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjvZubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjrZubjX)}(hhh]h)}(h*instance of slim stream runtime to disableh]h*instance of slim stream runtime to disable}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jWhjrZubeh}(h]h ]h"]h$]h&]uh1j5hjZhMhjoZubah}(h]h ]h"]h$]h&]uh1j0hjSZubh)}(h**Description**h]j)}(hjZh]h Description}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjSZubh)}(hOThis API will disable all the ports and channels associated with SLIMbus streamh]hOThis API will disable all the ports and channels associated with SLIMbus stream}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjSZubh)}(h **Return**h]j)}(hjZh]hReturn}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjSZubh)}(hwzero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() pause operation.h]hwzero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() pause operation.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjSZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjShhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jN"slim_stream_unprepare (C function)c.slim_stream_unpreparehNtauh1jAhjShhhNhNubjS)}(hhh](jX)}(h>int slim_stream_unprepare (struct slim_stream_runtime *stream)h]j^)}(h=int slim_stream_unprepare(struct slim_stream_runtime *stream)h](j-)}(hinth]hint}(hj[hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMubjv)}(h h]h }(hj.[hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjhhj-[hMubj)}(hslim_stream_unprepareh]j)}(hslim_stream_unprepareh]hslim_stream_unprepare}(hj@[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<[ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhj-[hMubj?-)}(h$(struct slim_stream_runtime *stream)h]jE-)}(h"struct slim_stream_runtime *streamh](jd)}(hjgh]hstruct}(hj\[hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchjX[ubjv)}(h h]h }(hji[hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjX[ubh)}(hhh]j)}(hslim_stream_runtimeh]hslim_stream_runtime}(hjz[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw[ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj|[modnameN classnameNj-j-)}j-]j-)}j~-jB[sbc.slim_stream_unprepareasbuh1hhjX[ubjv)}(h h]h }(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhjX[ubj-)}(hj-h]h*}(hj[hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hjX[ubj)}(hstreamh]hstream}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX[ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hjT[ubah}(h]h ]h"]h$]h&]jjuh1j>-hjhhj-[hMubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj[hhhj-[hMubah}(h]j[ah ](jjeh"]h$]h&]jj)jhuh1jWhj-[hMhj[hhubj)}(hhh]h)}(hUn-prepare a SLIMbus Streamh]hUn-prepare a SLIMbus Stream}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj[hhubah}(h]h ]h"]h$]h&]uh1jhj[hhhj-[hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj[jj[jjjuh1jRhhhjShNhNubj)}(hXO**Parameters** ``struct slim_stream_runtime *stream`` instance of slim stream runtime to unprepare **Description** This API will un allocate all the ports and channels associated with SLIMbus stream **Return** zero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() stop operation.h](h)}(h**Parameters**h]j)}(hj\h]h Parameters}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj[ubj1)}(hhh]j6)}(hT``struct slim_stream_runtime *stream`` instance of slim stream runtime to unprepare h](j<)}(h&``struct slim_stream_runtime *stream``h]jB)}(hj \h]h"struct slim_stream_runtime *stream}(hj"\hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj\ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj\ubjX)}(hhh]h)}(h,instance of slim stream runtime to unprepareh]h,instance of slim stream runtime to unprepare}(hj9\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5\hMhj6\ubah}(h]h ]h"]h$]h&]uh1jWhj\ubeh}(h]h ]h"]h$]h&]uh1j5hj5\hMhj\ubah}(h]h ]h"]h$]h&]uh1j0hj[ubh)}(h**Description**h]j)}(hj[\h]h Description}(hj]\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjY\ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj[ubh)}(hSThis API will un allocate all the ports and channels associated with SLIMbus streamh]hSThis API will un allocate all the ports and channels associated with SLIMbus stream}(hjq\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj[ubh)}(h **Return**h]j)}(hj\h]hReturn}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj[ubh)}(hvzero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() stop operation.h]hvzero on success and error code on failure. From ASoC DPCM framework, this state is linked to trigger() stop operation.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjShhhNhNubjB)}(hhh]h}(h]h ]h"]h$]h&]entries](jNslim_stream_free (C function)c.slim_stream_freehNtauh1jAhjShhhNhNubjS)}(hhh](jX)}(h9int slim_stream_free (struct slim_stream_runtime *stream)h]j^)}(h8int slim_stream_free(struct slim_stream_runtime *stream)h](j-)}(hinth]hint}(hj\hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj\hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMubjv)}(h h]h }(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj\hhhj\hMubj)}(hslim_stream_freeh]j)}(hslim_stream_freeh]hslim_stream_free}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj\hhhj\hMubj?-)}(h$(struct slim_stream_runtime *stream)h]jE-)}(h"struct slim_stream_runtime *streamh](jd)}(hjgh]hstruct}(hj]hhhNhNubah}(h]h ]jpah"]h$]h&]uh1jchj]ubjv)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj]ubh)}(hhh]j)}(hslim_stream_runtimeh]hslim_stream_runtime}(hj"]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej~- reftargetj$]modnameN classnameNj-j-)}j-]j-)}j~-j\sbc.slim_stream_freeasbuh1hhj]ubjv)}(h h]h }(hjB]hhhNhNubah}(h]h ]jah"]h$]h&]uh1juhj]ubj-)}(hj-h]h*}(hjP]hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1j-hj]ubj)}(hstreamh]hstream}(hj]]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphjjuh1jD-hj\ubah}(h]h ]h"]h$]h&]jjuh1j>-hj\hhhj\hMubeh}(h]h ]h"]h$]h&]jjjuh1j]jjhj\hhhj\hMubah}(h]j\ah ](jjeh"]h$]h&]jj)jhuh1jWhj\hMhj\hhubj)}(hhh]h)}(hFree a SLIMbus Streamh]hFree a SLIMbus Stream}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj]hhubah}(h]h ]h"]h$]h&]uh1jhj\hhhj\hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj]jj]jjjuh1jRhhhjShNhNubj)}(hX**Parameters** ``struct slim_stream_runtime *stream`` instance of slim stream runtime to free **Description** This API will un allocate all the memory associated with slim stream runtime, user is not allowed to make an dereference to stream after this call. **Return** zero on success and error code on failure. From ASoC DPCM framework, this state is linked to shutdown() operation.h](h)}(h**Parameters**h]j)}(hj]h]h Parameters}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj]ubj1)}(hhh]j6)}(hO``struct slim_stream_runtime *stream`` instance of slim stream runtime to free h](j<)}(h&``struct slim_stream_runtime *stream``h]jB)}(hj]h]h"struct slim_stream_runtime *stream}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jAhj]ubah}(h]h ]h"]h$]h&]uh1j;h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj]ubjX)}(hhh]h)}(h'instance of slim stream runtime to freeh]h'instance of slim stream runtime to free}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMhj]ubah}(h]h ]h"]h$]h&]uh1jWhj]ubeh}(h]h ]h"]h$]h&]uh1j5hj]hMhj]ubah}(h]h ]h"]h$]h&]uh1j0hj]ubh)}(h**Description**h]j)}(hj^h]h Description}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj]ubh)}(hThis API will un allocate all the memory associated with slim stream runtime, user is not allowed to make an dereference to stream after this call.h]hThis API will un allocate all the memory associated with slim stream runtime, user is not allowed to make an dereference to stream after this call.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj]ubh)}(h **Return**h]j)}(hj*^h]hReturn}(hj,^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(^ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj]ubh)}(hrzero on success and error code on failure. From ASoC DPCM framework, this state is linked to shutdown() operation.h]hrzero on success and error code on failure. From ASoC DPCM framework, this state is linked to shutdown() operation.}(hj@^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjShhhNhNubeh}(h]streaming-apisah ]h"]streaming apis:ah$]h&]uh1hhj;hhhhhKubeh}(h] messagingah ]h"] messaging:ah$]h&]uh1hhhhhhhhKwubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhhhKubeh}(h]linux-kernel-slimbus-supportah ]h"]linux kernel slimbus supportah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj^error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehʌ _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(js^jp^jk^jh^j,j)jjjjj-j*j 9j 9j;j;j;j;jc^j`^jRjRj[^jX^u nametypes}(js^jk^j,jjj-j 9j;j;jc^jRj[^uh}(jp^hjh^hj)hjj/jjj*jj 9j0jPjYj;j@jjjJjOjr jw j` je jjjjjGjLjjjijnjjjjjLjQjjjj jVj[j| j j0"j5"j$j$j'j'j,j,jg.jl.j/j/jN2jS2j4j4j7j7j;j9j;j.9jK9jP9j`^j;jRj;j;j<j ?j?j7Aj