5sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}(hhparenthuba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget&/translations/zh_CN/driver-api/slimbusmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}(hhhh2ubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/zh_TW/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}(hhhhFubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/it_IT/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}(hhhhZubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ja_JP/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}(hhhhnubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ko_KR/driver-api/slimbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}(hhhhubah}(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}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh@/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus.rsthKubh)}(hhh](h)}(hOverviewh]hOverview}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hWhat is SLIMbus?h]hWhat is SLIMbus?}(hhhhhhhNhNubah}(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).}(hhhhhhhNhNubah}(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.}(hhhhhhhNhNubah}(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)}(hhhhhhhNhNubah}(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.}(hjhjhhhNhNubah}(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:}(hj hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(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.hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(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).}(hj<hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjhhubh)}(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.}(hjJhjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjhhubh)}(hMEach SLIMbus component has an interface device for monitoring physical layer.h]hMEach SLIMbus component has an interface device for monitoring physical layer.}(hjXhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjhhubh)}(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.}(hjfhjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubh)}(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.}(hjthjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjhhubh)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjhhubeh}(h]hardware-descriptionah ]h"]hardware description:ah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hSoftware description:h]hSoftware description:}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKhhhjhNhNubh container)}(hX**Definition**:: struct slim_eaddr { u8 instance; u8 dev_index; u16 prod_code; u16 manf_id; }; **Members** ``instance`` Instance value ``dev_index`` Device index ``prod_code`` Product code ``manf_id`` Manufacturer Id for the deviceh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(h:hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubh literal_block)}(h]struct slim_eaddr { u8 instance; u8 dev_index; u16 prod_code; u16 manf_id; };h]h]struct slim_eaddr { u8 instance; u8 dev_index; u16 prod_code; u16 manf_id; };}(hhhjubah}(h]h ]h"]h$]h&]jjuh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hhhjhhhNhNubah}(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.hhKhjubhdefinition_list)}(hhh](hdefinition_list_item)}(h``instance`` Instance value h](hterm)}(h ``instance``h]hliteral)}(hj)h]hinstance}(hhhj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj'ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj!ubh definition)}(hhh]h)}(hInstance valueh]hInstance value}(hjHhjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hKhjCubah}(h]h ]h"]h$]h&]uh1jAhj!ubeh}(h]h ]h"]h$]h&]uh1jhj@hKhjubj )}(h``dev_index`` Device index h](j&)}(h ``dev_index``h]j,)}(hjfh]h dev_index}(hhhjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjdubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj`ubjB)}(hhh]h)}(h Device indexh]h Device index}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hKhj|ubah}(h]h ]h"]h$]h&]uh1jAhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hKhjubj )}(h``prod_code`` Product code h](j&)}(h ``prod_code``h]j,)}(hjh]h prod_code}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubjB)}(hhh]h)}(h Product codeh]h Product code}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(h*``manf_id`` Manufacturer Id for the deviceh](j&)}(h ``manf_id``h]j,)}(hjh]hmanf_id}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubjB)}(hhh]h)}(hManufacturer Id for the deviceh]hManufacturer Id for the device}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_device_status (C enum)c.slim_device_statushNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_device_statush]jJ)}(henum slim_device_statush](jP)}(henumh]henum}(hhhj2hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj.hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKubjb)}(h h]h }(hhhjAhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj.hhhj@hKubjs)}(hslim_device_statush]jy)}(hj,h]hslim_device_status}(hhhjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjOubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj.hhhj@hKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj*hhhj@hKubah}(h]j%ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj'hhubj)}(hhh]h)}(hslim device statush]hslim device status}(hjxhjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjshhubah}(h]h ]h"]h$]h&]uh1jhj'hhhj@hKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(h**Constants** ``SLIM_DEVICE_STATUS_DOWN`` Slim device is absent or not reported yet. ``SLIM_DEVICE_STATUS_UP`` Slim device is announced on the bus. ``SLIM_DEVICE_STATUS_RESERVED`` Reserved for future use.h](h)}(h **Constants**h]j)}(hjh]h Constants}(hhhjhhhNhNubah}(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.hhK"hjubj)}(hhh](j )}(hG``SLIM_DEVICE_STATUS_DOWN`` Slim device is absent or not reported yet. h](j&)}(h``SLIM_DEVICE_STATUS_DOWN``h]j,)}(hjh]hSLIM_DEVICE_STATUS_DOWN}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK%hjubjB)}(hhh]h)}(h*Slim device is absent or not reported yet.h]h*Slim device is absent or not reported yet.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK%hjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhK%hjubj )}(h?``SLIM_DEVICE_STATUS_UP`` Slim device is announced on the bus. h](j&)}(h``SLIM_DEVICE_STATUS_UP``h]j,)}(hjh]hSLIM_DEVICE_STATUS_UP}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK(hjubjB)}(hhh]h)}(h$Slim device is announced on the bus.h]h$Slim device is announced on the bus.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK(hjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjubj )}(h8``SLIM_DEVICE_STATUS_RESERVED`` Reserved for future use.h](j&)}(h``SLIM_DEVICE_STATUS_RESERVED``h]j,)}(hj)h]hSLIM_DEVICE_STATUS_RESERVED}(hhhj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj'ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK*hj#ubjB)}(hhh]h)}(hReserved for future use.h]hReserved for future use.}(hjDhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK+hj?ubah}(h]h ]h"]h$]h&]uh1jAhj#ubeh}(h]h ]h"]h$]h&]uh1jhj>hK*hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_device (C struct) c.slim_devicehNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h slim_deviceh]jJ)}(hstruct slim_deviceh](jP)}(hjSh]hstruct}(hhhjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK-ubjb)}(h h]h }(hhhjhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjhhhjhK-ubjs)}(h slim_deviceh]jy)}(hj}h]h slim_device}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjhhhjhK-ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj{hhhjhK-ubah}(h]jvah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK1hjxhhubj)}(hhh]h)}(hSlim device handle.h]hSlim device handle.}(hjhjhhhNhNubah}(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&]uh1jhjxhhhjhK-ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhjhhhNhNubeh}(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; };}(hhhjubah}(h]h ]h"]h$]h&]jjuh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK2hjubh)}(h **Members**h]j)}(hjh]hMembers}(hhhjhhhNhNubah}(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.hhK=hjubj)}(hhh](j )}(h3``dev`` Driver model representation of the device. h](j&)}(h``dev``h]j,)}(hj3h]hdev}(hhhj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj1ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK.hj-ubjB)}(hhh]h)}(h*Driver model representation of the device.h]h*Driver model representation of the device.}(hjNhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhK.hjIubah}(h]h ]h"]h$]h&]uh1jAhj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhK.hj*ubj )}(h/``e_addr`` Enumeration address of this device. h](j&)}(h ``e_addr``h]j,)}(hjlh]he_addr}(hhhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK/hjfubjB)}(hhh]h)}(h#Enumeration address of this device.h]h#Enumeration address of this device.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK/hjubah}(h]h ]h"]h$]h&]uh1jAhjfubeh}(h]h ]h"]h$]h&]uh1jhjhK/hj*ubj )}(h#``ctrl`` slim controller instance. h](j&)}(h``ctrl``h]j,)}(hjh]hctrl}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK1hjubjB)}(hhh]h)}(hslim controller instance.h]hslim controller instance.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK1hjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhK1hj*ubj )}(h``status`` slim device status h](j&)}(h ``status``h]j,)}(hjh]hstatus}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK0hjubjB)}(hhh]h)}(hslim device statush]hslim device status}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK0hjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhK0hj*ubj )}(h1``laddr`` 1-byte Logical address of this device. h](j&)}(h ``laddr``h]j,)}(hjh]hladdr}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK2hjubjB)}(hhh]h)}(h&1-byte Logical address of this device.h]h&1-byte Logical address of this device.}(hj2hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hK2hj-ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhj,hK2hj*ubj )}(h:``is_laddr_valid`` indicates if the laddr is valid or not h](j&)}(h``is_laddr_valid``h]j,)}(hjPh]his_laddr_valid}(hhhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjNubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK3hjJubjB)}(hhh]h)}(h&indicates if the laddr is valid or noth]h&indicates if the laddr is valid or not}(hjkhjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehK3hjfubah}(h]h ]h"]h$]h&]uh1jAhjJubeh}(h]h ]h"]h$]h&]uh1jhjehK3hj*ubj )}(h/``stream_list`` List of streams on this device h](j&)}(h``stream_list``h]j,)}(hjh]h stream_list}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK4hjubjB)}(hhh]h)}(hList of streams on this deviceh]hList of streams on this device}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK4hjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhK4hj*ubj )}(h4``stream_list_lock`` lock to protect the stream listh](j&)}(h``stream_list_lock``h]j,)}(hjh]hstream_list_lock}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK4hjubjB)}(hhh]h)}(hlock to protect the stream listh]hlock to protect the stream list}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhK4hj*ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hhhjhhhNhNubah}(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.hhK8hjhhubh)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK6hjhhubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_driver (C struct) c.slim_driverhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h slim_driverh]jJ)}(hstruct slim_driverh](jP)}(hjSh]hstruct}(hhhjChhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj?hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKIubjb)}(h h]h }(hhhjQhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj?hhhjPhKIubjs)}(h slim_driverh]jy)}(hj=h]h slim_driver}(hhhjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj_ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj?hhhjPhKIubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj;hhhjPhKIubah}(h]j6ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhK=hj8hhubj)}(hhh]h)}(hOSLIMbus 'generic device' (slave) device driver (similar to 'spi_device' on SPI)h]hWSLIMbus ‘generic device’ (slave) device driver (similar to ‘spi_device’ on SPI)}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKHhjhhubah}(h]h ]h"]h$]h&]uh1jhj8hhhjPhKIubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(hXi**Definition**:: struct slim_driver { int (*probe)(struct slim_device *sl); void (*remove)(struct slim_device *sl); void (*shutdown)(struct slim_device *sl); int (*device_status)(struct slim_device *sl, enum slim_device_status s); struct device_driver driver; const struct slim_device_id *id_table; }; **Members** ``probe`` Binds this driver to a SLIMbus device. ``remove`` Unbinds this driver from the SLIMbus device. ``shutdown`` Standard shutdown callback used during powerdown/halt. ``device_status`` This callback is called when - The device reports present and gets a laddr assigned - The device reports absent, or the bus goes down. ``driver`` SLIMbus device drivers should initialize name and owner field of this structure ``id_table`` List of SLIMbus devices supported by this driverh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKLhjubj)}(hXCstruct slim_driver { int (*probe)(struct slim_device *sl); void (*remove)(struct slim_device *sl); void (*shutdown)(struct slim_device *sl); int (*device_status)(struct slim_device *sl, enum slim_device_status s); struct device_driver driver; const struct slim_device_id *id_table; };h]hXCstruct slim_driver { int (*probe)(struct slim_device *sl); void (*remove)(struct slim_device *sl); void (*shutdown)(struct slim_device *sl); int (*device_status)(struct slim_device *sl, enum slim_device_status s); struct device_driver driver; const struct slim_device_id *id_table; };}(hhhjubah}(h]h ]h"]h$]h&]jjuh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKNhjubh)}(h **Members**h]j)}(hjh]hMembers}(hhhjhhhNhNubah}(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.hhKWhjubj)}(hhh](j )}(h1``probe`` Binds this driver to a SLIMbus device. h](j&)}(h ``probe``h]j,)}(hjh]hprobe}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKKhjubjB)}(hhh]h)}(h&Binds this driver to a SLIMbus device.h]h&Binds this driver to a SLIMbus device.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKKhj ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhj hKKhjubj )}(h8``remove`` Unbinds this driver from the SLIMbus device. h](j&)}(h ``remove``h]j,)}(hj, h]hremove}(hhhj. hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj* ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKLhj& ubjB)}(hhh]h)}(h,Unbinds this driver from the SLIMbus device.h]h,Unbinds this driver from the SLIMbus device.}(hjG hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjA hKLhjB ubah}(h]h ]h"]h$]h&]uh1jAhj& ubeh}(h]h ]h"]h$]h&]uh1jhjA hKLhjubj )}(hD``shutdown`` Standard shutdown callback used during powerdown/halt. h](j&)}(h ``shutdown``h]j,)}(hje h]hshutdown}(hhhjg hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjc ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKMhj_ ubjB)}(hhh]h)}(h6Standard shutdown callback used during powerdown/halt.h]h6Standard shutdown callback used during powerdown/halt.}(hj hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjz hKMhj{ ubah}(h]h ]h"]h$]h&]uh1jAhj_ ubeh}(h]h ]h"]h$]h&]uh1jhjz hKMhjubj )}(h``device_status`` This callback is called when - The device reports present and gets a laddr assigned - The device reports absent, or the bus goes down. h](j&)}(h``device_status``h]j,)}(hj h]h device_status}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKPhj ubjB)}(hhh]h)}(hThis callback is called when - The device reports present and gets a laddr assigned - The device reports absent, or the bus goes down.h]hThis callback is called when - The device reports present and gets a laddr assigned - The device reports absent, or the bus goes down.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKNhj ubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKPhjubj )}(h[``driver`` SLIMbus device drivers should initialize name and owner field of this structure h](j&)}(h ``driver``h]j,)}(hj h]hdriver}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKRhj ubjB)}(hhh]h)}(hOSLIMbus device drivers should initialize name and owner field of this structureh]hOSLIMbus device drivers should initialize name and owner field of this structure}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKQhj ubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKRhjubj )}(h=``id_table`` List of SLIMbus devices supported by this driverh](j&)}(h ``id_table``h]j,)}(hj h]hid_table}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKRhj ubjB)}(hhh]h)}(h0List of SLIMbus devices supported by this driverh]h0List of SLIMbus devices supported by this driver}(hj- hj+ 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&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj' hKRhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_val_inf (C struct)c.slim_val_infhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h slim_val_infh]jJ)}(hstruct slim_val_infh](jP)}(hjSh]hstruct}(hhhjl hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjh hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKbubjb)}(h h]h }(hhhjz hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjh hhhjy hKbubjs)}(h slim_val_infh]jy)}(hjf h]h slim_val_inf}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjh hhhjy hKbubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjd hhhjy hKbubah}(h]j_ ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKYhja hhubj)}(hhh]h)}(h$Slimbus value or information elementh]h$Slimbus value or information element}(hj 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&]uh1jhja hhhjy hKbubeh}(h]h ](jstructeh"]h$]h&]jjjj jj juh1j>hhhjhNhNubj)}(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}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hjhj 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; };}(hhhj ubah}(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}(hhhj 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 ubj)}(hhh](j )}(hL``start_offset`` Specifies starting offset in information/value element map h](j&)}(h``start_offset``h]j,)}(hj h]h start_offset}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKchj ubjB)}(hhh]h)}(h:Specifies starting offset in information/value element maph]h:Specifies starting offset in information/value element map}(hj7 hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1 hKchj2 ubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj1 hKchj ubj )}(h]``num_bytes`` upto 16. This ensures that the message will fit the slicesize per SLIMbus spec h](j&)}(h ``num_bytes``h]j,)}(hjU h]h num_bytes}(hhhjW hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjS ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKghjO ubjB)}(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}(hjp hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKfhjk ubah}(h]h ]h"]h$]h&]uh1jAhjO ubeh}(h]h ]h"]h$]h&]uh1jhjj hKghj ubj )}(h#``rbuf`` buffer to read the values h](j&)}(h``rbuf``h]j,)}(hj h]hrbuf}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKdhj ubjB)}(hhh]h)}(hbuffer to read the valuesh]hbuffer to read the values}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKdhj ubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKdhj ubj )}(h``wbuf`` buffer to write h](j&)}(h``wbuf``h]j,)}(hj h]hwbuf}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKehj ubjB)}(hhh]h)}(hbuffer to writeh]hbuffer to write}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKehj ubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKehj ubj )}(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]j,)}(hj h]hcomp}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKihj ubjB)}(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 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&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKihj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_stream_config (C struct)c.slim_stream_confighNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_stream_configh]jJ)}(hstruct slim_stream_configh](jP)}(hjSh]hstruct}(hhhj[ hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjW hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKyubjb)}(h h]h }(hhhji hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjW hhhjh hKyubjs)}(hslim_stream_configh]jy)}(hjU h]hslim_stream_config}(hhhj{ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjw ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjW hhhjh hKyubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjS hhhjh hKyubah}(h]jN ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKphjP 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 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&]uh1jhjP hhhjh hKyubeh}(h]h ](jstructeh"]h$]h&]jjjj jj juh1j>hhhjhNhNubj)}(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}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hjhj 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; };}(hhhj ubah}(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}(hhhj 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 ubj)}(hhh](j )}(h``rate`` data rate h](j&)}(h``rate``h]j,)}(hj h]hrate}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj ubjB)}(hhh]h)}(h data rateh]h data rate}(hj& hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj! ubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj )}(h``bps`` bits per data sample h](j&)}(h``bps``h]j,)}(hjD h]hbps}(hhhjF hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjB ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj> ubjB)}(hhh]h)}(hbits per data sampleh]hbits per data sample}(hj_ hj] hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjY hKhjZ ubah}(h]h ]h"]h$]h&]uh1jAhj> ubeh}(h]h ]h"]h$]h&]uh1jhjY hKhj ubj )}(h ``ch_count`` number of channels h](j&)}(h ``ch_count``h]j,)}(hj} h]hch_count}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj{ ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjw ubjB)}(hhh]h)}(hnumber of channelsh]hnumber of channels}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jAhjw ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj )}(h+``chs`` pointer to list of channel numbers h](j&)}(h``chs``h]j,)}(hj h]hchs}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj ubjB)}(hhh]h)}(h"pointer to list of channel numbersh]h"pointer to list of channel numbers}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj )}(h8``port_mask`` port mask of ports to use for this stream h](j&)}(h ``port_mask``h]j,)}(hj h]h port_mask}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj ubjB)}(hhh]h)}(h)port mask of ports to use for this streamh]h)port mask of ports to use for this stream}(hj hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubj )}(h]``direction`` direction of the stream, SNDRV_PCM_STREAM_PLAYBACK or SNDRV_PCM_STREAM_CAPTURE.h](j&)}(h ``direction``h]j,)}(hj(h]h direction}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj&ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhj"ubjB)}(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.}(hjChjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKhj>ubah}(h]h ]h"]h$]h&]uh1jAhj"ubeh}(h]h ]h"]h$]h&]uh1jhj=hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:module_slim_driver (C macro)c.module_slim_driverhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hmodule_slim_driverh]jJ)}(hmodule_slim_driverh]js)}(hmodule_slim_driverh]jy)}(hj{h]hmodule_slim_driver}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj}hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKubah}(h]h ]h"]h$]h&]jjjuh1jIjjhjyhhhjhKubah}(h]jtah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjvhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjvhhhjhKubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubh)}(h&``module_slim_driver (__slim_driver)``h]j,)}(hjh]h"module_slim_driver (__slim_driver)}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjhhubh block_quote)}(hhh]h)}(h-Helper macro for registering a SLIMbus driverh]h-Helper macro for registering a SLIMbus driver}(hjhjhhhNhNubah}(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&]uh1jhjhhhNhNubj)}(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}(hhhjhhhNhNubah}(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.hhKhjubj)}(hhh]j )}(h(``__slim_driver`` slimbus_driver struct h](j&)}(h``__slim_driver``h]j,)}(hj h]h __slim_driver}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:94: ./include/linux/slimbus.hhKhjubjB)}(hhh]h)}(hslimbus_driver structh]hslimbus_driver struct}(hj(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKhj#ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhj"hKhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjHh]h Description}(hhhjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(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()}(hj`hj^hhhNhNubah}(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&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_framer (C struct) c.slim_framerhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h slim_framerh]jJ)}(hstruct slim_framerh](jP)}(hjSh]hstruct}(hhhjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK\ubjb)}(h h]h }(hhhjhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjhhhjhK\ubjs)}(h slim_framerh]jy)}(hjh]h slim_framer}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjhhhjhK\ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjhhhjhK\ubah}(h]jah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjhhubj)}(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.}(hjhjhhhNhNubah}(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&]uh1jhjhhhjhK\ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhjhhhNhNubeh}(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; };}(hhhj ubah}(h]h ]h"]h$]h&]jjuh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKahjubh)}(h **Members**h]j)}(hjh]hMembers}(hhhj hhhNhNubah}(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.hhKhhjubj)}(hhh](j )}(h3``dev`` Driver model representation of the device. h](j&)}(h``dev``h]j,)}(hj=h]hdev}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj;ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK`hj7ubjB)}(hhh]h)}(h*Driver model representation of the device.h]h*Driver model representation of the device.}(hjXhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhK`hjSubah}(h]h ]h"]h$]h&]uh1jAhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhK`hj4ubj )}(h.``e_addr`` Enumeration address of the framer. h](j&)}(h ``e_addr``h]j,)}(hjvh]he_addr}(hhhjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjtubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKahjpubjB)}(hhh]h)}(h"Enumeration address of the framer.h]h"Enumeration address of the framer.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKahjubah}(h]h ]h"]h$]h&]uh1jAhjpubeh}(h]h ]h"]h$]h&]uh1jhjhKahj4ubj )}(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]j,)}(hjh]hrootfreq}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKchjubjB)}(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.}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKchj4ubj )}(hG``superfreq`` Superframes per root frequency. Every frame is 6144 bits.h](j&)}(h ``superfreq``h]j,)}(hjh]h superfreq}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKchjubjB)}(hhh]h)}(h9Superframes per root frequency. Every frame is 6144 bits.h]h9Superframes per root frequency. Every frame is 6144 bits.}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKchj4ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_msg_txn (C struct)c.slim_msg_txnhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h slim_msg_txnh]jJ)}(hstruct slim_msg_txnh](jP)}(hjSh]hstruct}(hhhjChhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj?hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKpubjb)}(h h]h }(hhhjQhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj?hhhjPhKpubjs)}(h slim_msg_txnh]jy)}(hj=h]h slim_msg_txn}(hhhjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj_ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj?hhhjPhKpubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj;hhhjPhKpubah}(h]j6ah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKjhj8hhubj)}(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)}(hjhjhhhNhNubah}(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&]uh1jhj8hhhjPhKpubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhjhhhNhNubeh}(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; };}(hhhjubah}(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}(hhhjhhhNhNubah}(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.hhKhjubj)}(hhh](j )}(h'``rl`` Header field. remaining length. h](j&)}(h``rl``h]j,)}(hjh]hrl}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKshjubjB)}(hhh]h)}(hHeader field. remaining length.h]hHeader field. remaining length.}(hjhj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKshj ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKshjubj )}(h#``mt`` Header field. Message type. h](j&)}(h``mt``h]j,)}(hj,h]hmt}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj*ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKthj&ubjB)}(hhh]h)}(hHeader field. Message type.h]hHeader field. Message type.}(hjGhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhKthjBubah}(h]h ]h"]h$]h&]uh1jAhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhKthjubj )}(h6``mc`` Header field. LSB is message code for type mt. h](j&)}(h``mc``h]j,)}(hjeh]hmc}(hhhjghhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjcubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKuhj_ubjB)}(hhh]h)}(h.Header field. LSB is message code for type mt.h]h.Header field. LSB is message code for type mt.}(hjhj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhKuhj{ubah}(h]h ]h"]h$]h&]uh1jAhj_ubeh}(h]h ]h"]h$]h&]uh1jhjzhKuhjubj )}(h'``dt`` Header field. Destination type. h](j&)}(h``dt``h]j,)}(hjh]hdt}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKvhjubjB)}(hhh]h)}(hHeader field. Destination type.h]hHeader field. Destination type.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKvhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKvhjubj )}(h5``ec`` Element code. Used for elemental access APIs. h](j&)}(h``ec``h]j,)}(hjh]hec}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKwhjubjB)}(hhh]h)}(h-Element code. Used for elemental access APIs.h]h-Element code. Used for elemental access APIs.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKwhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKwhjubj )}(ht``tid`` Transaction ID. Used for messages expecting response. (relevant for message-codes involving read operation) h](j&)}(h``tid``h]j,)}(hjh]htid}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKyhj ubjB)}(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)}(hj+hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKxhj&ubah}(h]h ]h"]h$]h&]uh1jAhj ubeh}(h]h ]h"]h$]h&]uh1jhj%hKyhjubj )}(hn``la`` Logical address of the device this message is going to. (Not used when destination type is broadcast.) h](j&)}(h``la``h]j,)}(hjJh]hla}(hhhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjHubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK{hjDubjB)}(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.)}(hjehjchhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKzhj`ubah}(h]h ]h"]h$]h&]uh1jAhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hK{hjubj )}(h4``msg`` Elemental access message to be read/written h](j&)}(h``msg``h]j,)}(hjh]hmsg}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK|hj~ubjB)}(hhh]h)}(h+Elemental access message to be read/writtenh]h+Elemental access message to be read/written}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK|hjubah}(h]h ]h"]h$]h&]uh1jAhj~ubeh}(h]h ]h"]h$]h&]uh1jhjhK|hjubj )}(h]``comp`` completion if read/write is synchronous, used internally for tid based transactions.h](j&)}(h``comp``h]j,)}(hjh]hcomp}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhK}hjubjB)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK}hjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhK}hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_clk_state (C enum)c.slim_clk_statehNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_clk_stateh]jJ)}(henum slim_clk_stateh](jP)}(hj4h]henum}(hhhjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjb)}(h h]h }(hhhj$hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjhhhj#hKubjs)}(hslim_clk_stateh]jy)}(hjh]hslim_clk_state}(hhhj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj2ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjhhhj#hKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjhhhj#hKubah}(h]j ah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj hhubj)}(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.}(hj[hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjVhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj#hKubeh}(h]h ](jenumeh"]h$]h&]jjjjqjjqjuh1j>hhhjhNhNubj)}(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)}(hj{h]h Constants}(hhhj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjuubj)}(hhh](j )}(h,``SLIM_CLK_ACTIVE`` SLIMbus clock is active h](j&)}(h``SLIM_CLK_ACTIVE``h]j,)}(hjh]hSLIM_CLK_ACTIVE}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(hSLIMbus clock is activeh]hSLIMbus clock is active}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(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]j,)}(hjh]hSLIM_CLK_ENTERING_PAUSE}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(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}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(h8``SLIM_CLK_PAUSED`` SLIMbus controller clock has paused.h](j&)}(h``SLIM_CLK_PAUSED``h]j,)}(hj h]hSLIM_CLK_PAUSED}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(h$SLIMbus controller clock has paused.h]h$SLIMbus controller clock has paused.}(hj(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj#ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhj"hKhjubeh}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_sched (C struct) c.slim_schedhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h slim_schedh]jJ)}(hstruct slim_schedh](jP)}(hjSh]hstruct}(hhhjghhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjchhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjb)}(h h]h }(hhhjuhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjchhhjthKubjs)}(h slim_schedh]jy)}(hjah]h slim_sched}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjchhhjthKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj_hhhjthKubah}(h]jZah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj\hhubj)}(hhh]h)}(h8Framework uses this structure internally for scheduling.h]h8Framework uses this structure internally for scheduling.}(hjhjhhhNhNubah}(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&]uh1jhj\hhhjthKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhjhhhNhNubeh}(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; };}(hhhjubah}(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}(hhhjhhhNhNubah}(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.hhKhjubj)}(hhh](j )}(h@``clk_state`` Controller's clock state from enum slim_clk_state h](j&)}(h ``clk_state``h]j,)}(hjh]h clk_state}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(h1Controller's clock state from enum slim_clk_stateh]h3Controller’s clock state from enum slim_clk_state}(hj2hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hKhj-ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhj,hKhjubj )}(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]j,)}(hjPh]h pause_comp}(hhhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjNubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjJubjB)}(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.}(hjkhjihhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjfubah}(h]h ]h"]h$]h&]uh1jAhjJubeh}(h]h ]h"]h$]h&]uh1jhjehKhjubj )}(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]j,)}(hjh]hm_reconf}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(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.}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_port_direction (C enum)c.slim_port_directionhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_port_directionh]jJ)}(henum slim_port_directionh](jP)}(hj4h]henum}(hhhjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjb)}(h h]h }(hhhjhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjhhhjhKubjs)}(hslim_port_directionh]jy)}(hjh]hslim_port_direction}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjhhubj)}(hhh]h)}(hSLIMbus port directionh]hSLIMbus port direction}(hj)hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj$hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjj?jj?juh1j>hhhjhNhNubj)}(hk**Constants** ``SLIM_PORT_SINK`` SLIMbus port is a sink ``SLIM_PORT_SOURCE`` SLIMbus port is a sourceh](h)}(h **Constants**h]j)}(hjIh]h Constants}(hhhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjCubj)}(hhh](j )}(h*``SLIM_PORT_SINK`` SLIMbus port is a sink h](j&)}(h``SLIM_PORT_SINK``h]j,)}(hjhh]hSLIM_PORT_SINK}(hhhjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjfubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjbubjB)}(hhh]h)}(hSLIMbus port is a sinkh]hSLIMbus port is a sink}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hKhj~ubah}(h]h ]h"]h$]h&]uh1jAhjbubeh}(h]h ]h"]h$]h&]uh1jhj}hKhj_ubj )}(h-``SLIM_PORT_SOURCE`` SLIMbus port is a sourceh](j&)}(h``SLIM_PORT_SOURCE``h]j,)}(hjh]hSLIM_PORT_SOURCE}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(hSLIMbus port is a sourceh]hSLIMbus port is a source}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj_ubeh}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_port_state (C enum)c.slim_port_statehNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_port_stateh]jJ)}(henum slim_port_stateh](jP)}(hj4h]henum}(hhhjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjb)}(h h]h }(hhhj hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjhhhjhKubjs)}(hslim_port_stateh]jy)}(hjh]hslim_port_state}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjhhubj)}(hhh]h)}(hASLIMbus Port/Endpoint state machine according to SLIMbus Spec 2.0h]hASLIMbus Port/Endpoint state machine according to SLIMbus Spec 2.0}(hj@hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj;hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjVjjVjuh1j>hhhjhNhNubj)}(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)}(hj`h]h Constants}(hhhjbhhhNhNubah}(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.hhKhjZubj)}(hhh](j )}(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]j,)}(hjh]hSLIM_PORT_DISCONNECTED}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj}ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjyubjB)}(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}(hjhjhhhNhNubah}(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&]uh1jAhjyubeh}(h]h ]h"]h$]h&]uh1jhjhKhjvubj )}(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]j,)}(hjh]hSLIM_PORT_UNCONFIGURED}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(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}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjvubj )}(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]j,)}(hjh]hSLIM_PORT_CONFIGURED}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(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.}(hjhj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjvubeh}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_channel_state (C enum)c.slim_channel_statehNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_channel_stateh]jJ)}(henum slim_channel_stateh](jP)}(hj4h]henum}(hhhjMhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjIhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjb)}(h h]h }(hhhj[hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjIhhhjZhKubjs)}(hslim_channel_stateh]jy)}(hjGh]hslim_channel_state}(hhhjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjiubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjIhhhjZhKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjEhhhjZhKubah}(h]j@ah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjBhhubj)}(hhh]h)}(h+SLIMbus channel state machine used by core.h]h+SLIMbus channel state machine used by core.}(hjhjhhhNhNubah}(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&]uh1jhjBhhhjZhKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(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}(hhhjhhhNhNubah}(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.hhKhjubj)}(hhh](j )}(h?``SLIM_CH_STATE_DISCONNECTED`` SLIMbus channel is disconnected h](j&)}(h``SLIM_CH_STATE_DISCONNECTED``h]j,)}(hjh]hSLIM_CH_STATE_DISCONNECTED}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(hSLIMbus channel is disconnectedh]hSLIMbus channel is disconnected}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(h9``SLIM_CH_STATE_ALLOCATED`` SLIMbus channel is allocated h](j&)}(h``SLIM_CH_STATE_ALLOCATED``h]j,)}(hj h]hSLIM_CH_STATE_ALLOCATED}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(hSLIMbus channel is allocatedh]hSLIMbus channel is allocated}(hj%hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(hE``SLIM_CH_STATE_ASSOCIATED`` SLIMbus channel is associated with port h](j&)}(h``SLIM_CH_STATE_ASSOCIATED``h]j,)}(hjCh]hSLIM_CH_STATE_ASSOCIATED}(hhhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjAubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj=ubjB)}(hhh]h)}(h'SLIMbus channel is associated with porth]h'SLIMbus channel is associated with port}(hj^hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhKhjYubah}(h]h ]h"]h$]h&]uh1jAhj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhKhjubj )}(hA``SLIM_CH_STATE_DEFINED`` SLIMbus channel parameters are defined h](j&)}(h``SLIM_CH_STATE_DEFINED``h]j,)}(hj|h]hSLIM_CH_STATE_DEFINED}(hhhj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjzubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjvubjB)}(hhh]h)}(h&SLIMbus channel parameters are definedh]h&SLIMbus channel parameters are defined}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjvubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(hE``SLIM_CH_STATE_CONTENT_DEFINED`` SLIMbus channel content is defined h](j&)}(h!``SLIM_CH_STATE_CONTENT_DEFINED``h]j,)}(hjh]hSLIM_CH_STATE_CONTENT_DEFINED}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(h"SLIMbus channel content is definedh]h"SLIMbus channel content is defined}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(hF``SLIM_CH_STATE_ACTIVE`` SLIMbus channel is active and ready for data h](j&)}(h``SLIM_CH_STATE_ACTIVE``h]j,)}(hjh]hSLIM_CH_STATE_ACTIVE}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(h,SLIMbus channel is active and ready for datah]h,SLIMbus channel is active and ready for data}(hj hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(hA``SLIM_CH_STATE_REMOVED`` SLIMbus channel is inactive and removedh](j&)}(h``SLIM_CH_STATE_REMOVED``h]j,)}(hj'h]hSLIM_CH_STATE_REMOVED}(hhhj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj%ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj!ubjB)}(hhh]h)}(h'SLIMbus channel is inactive and removedh]h'SLIMbus channel is inactive and removed}(hjBhj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj=ubah}(h]h ]h"]h$]h&]uh1jAhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_ch_data_fmt (C enum)c.slim_ch_data_fmthNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_ch_data_fmth]jJ)}(henum slim_ch_data_fmth](jP)}(hj4h]henum}(hhhjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj}hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjb)}(h h]h }(hhhjhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj}hhhjhKubjs)}(hslim_ch_data_fmth]jy)}(hj{h]hslim_ch_data_fmt}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj}hhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjyhhhjhKubah}(h]jtah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjvhhubj)}(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}(hjhjhhhNhNubah}(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&]uh1jhjvhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(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}(hhhjhhhNhNubah}(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.hhKhjubj)}(hhh](j )}(h+``SLIM_CH_DATA_FMT_NOT_DEFINED`` Undefined h](j&)}(h ``SLIM_CH_DATA_FMT_NOT_DEFINED``h]j,)}(hjh]hSLIM_CH_DATA_FMT_NOT_DEFINED}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(h Undefinedh]h Undefined}(hj hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(h+``SLIM_CH_DATA_FMT_LPCM_AUDIO`` LPCM audio h](j&)}(h``SLIM_CH_DATA_FMT_LPCM_AUDIO``h]j,)}(hj>h]hSLIM_CH_DATA_FMT_LPCM_AUDIO}(hhhj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj<ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhj8ubjB)}(hhh]h)}(h LPCM audioh]h LPCM audio}(hjYhjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShKhjTubah}(h]h ]h"]h$]h&]uh1jAhj8ubeh}(h]h ]h"]h$]h&]uh1jhjShKhjubj )}(hC``SLIM_CH_DATA_FMT_IEC61937_COMP_AUDIO`` IEC61937 Compressed audio h](j&)}(h(``SLIM_CH_DATA_FMT_IEC61937_COMP_AUDIO``h]j,)}(hjwh]h$SLIM_CH_DATA_FMT_IEC61937_COMP_AUDIO}(hhhjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjuubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjqubjB)}(hhh]h)}(hIEC61937 Compressed audioh]hIEC61937 Compressed audio}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjqubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(h6``SLIM_CH_DATA_FMT_PACKED_PDM_AUDIO`` Packed PDM audioh](j&)}(h%``SLIM_CH_DATA_FMT_PACKED_PDM_AUDIO``h]j,)}(hjh]h!SLIM_CH_DATA_FMT_PACKED_PDM_AUDIO}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(hPacked PDM audioh]hPacked PDM audio}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_ch_aux_bit_fmt (C enum)c.slim_ch_aux_bit_fmthNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_ch_aux_bit_fmth]jJ)}(henum slim_ch_aux_bit_fmth](jP)}(hj4h]henum}(hhhj hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKubjb)}(h h]h }(hhhjhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjhhhjhKubjs)}(hslim_ch_aux_bit_fmth]jy)}(hjh]hslim_ch_aux_bit_fmt}(hhhj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj&ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjhhubj)}(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}(hjOhjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjJhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjejjejuh1j>hhhjhNhNubj)}(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)}(hjoh]h Constants}(hhhjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjiubj)}(hhh](j )}(h-``SLIM_CH_AUX_FMT_NOT_APPLICABLE`` Undefined h](j&)}(h"``SLIM_CH_AUX_FMT_NOT_APPLICABLE``h]j,)}(hjh]hSLIM_CH_AUX_FMT_NOT_APPLICABLE}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhKhjubjB)}(hhh]h)}(h Undefinedh]h Undefined}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(hE``SLIM_CH_AUX_FMT_ZCUV_TUNNEL_IEC60958`` ZCUV for tunneling IEC60958 h](j&)}(h(``SLIM_CH_AUX_FMT_ZCUV_TUNNEL_IEC60958``h]j,)}(hjh]h$SLIM_CH_AUX_FMT_ZCUV_TUNNEL_IEC60958}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjubjB)}(hhh]h)}(hZCUV for tunneling IEC60958h]hZCUV for tunneling IEC60958}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj )}(h-``SLIM_CH_AUX_FMT_USER_DEFINED`` User definedh](j&)}(h ``SLIM_CH_AUX_FMT_USER_DEFINED``h]j,)}(hjh]hSLIM_CH_AUX_FMT_USER_DEFINED}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjubjB)}(hhh]h)}(h User definedh]h User defined}(hjhjhhhNhNubah}(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&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_channel (C struct)c.slim_channelhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h slim_channelh]jJ)}(hstruct slim_channelh](jP)}(hjSh]hstruct}(hhhjZhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjVhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMubjb)}(h h]h }(hhhjhhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjVhhhjghMubjs)}(h slim_channelh]jy)}(hjTh]h slim_channel}(hhhjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjvubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjVhhhjghMubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjRhhhjghMubah}(h]jMah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM hjOhhubj)}(hhh]h)}(h'SLIMbus channel, used for state machineh]h'SLIMbus channel, used for state machine}(hjhjhhhNhNubah}(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&]uh1jhjOhhhjghMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjuh1j>hhhjhNhNubj)}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhjhhhNhNubeh}(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; };}(hhhjubah}(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}(hhhjhhhNhNubah}(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.hhMhjubj)}(hhh](j )}(h``id`` ID of channel h](j&)}(h``id``h]j,)}(hj h]hid}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjubjB)}(hhh]h)}(h ID of channelh]h ID of channel}(hj%hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhj ubah}(h]h ]h"]h$]h&]uh1jAhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj )}(hG``prrate`` Presense rate of channel from Table 66 of SLIMbus 2.0 Specs h](j&)}(h ``prrate``h]j,)}(hjCh]hprrate}(hhhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjAubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj=ubjB)}(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}(hj^hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjYubah}(h]h ]h"]h$]h&]uh1jAhj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhMhjubj )}(hJ``seg_dist`` segment distribution code from Table 20 of SLIMbus 2.0 Specs h](j&)}(h ``seg_dist``h]j,)}(hj|h]hseg_dist}(hhhj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjzubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM hjvubjB)}(hhh]h)}(hhhhjhNhNubj)}(hXD**Definition**:: struct slim_port { int id; enum slim_port_direction direction; enum slim_port_state state; struct slim_channel ch; }; **Members** ``id`` Port id ``direction`` Port direction, Source or Sink. ``state`` state machine of port. ``ch`` channel associated with this port.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hjhj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj ubj)}(hstruct slim_port { int id; enum slim_port_direction direction; enum slim_port_state state; struct slim_channel ch; };h]hstruct slim_port { int id; enum slim_port_direction direction; enum slim_port_state state; struct slim_channel ch; };}(hhhj!ubah}(h]h ]h"]h$]h&]jjuh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj ubh)}(h **Members**h]j)}(hj!h]hMembers}(hhhj!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.hhM$hj ubj)}(hhh](j )}(h``id`` Port id h](j&)}(h``id``h]j,)}(hj1!h]hid}(hhhj3!hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj/!ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj+!ubjB)}(hhh]h)}(hPort idh]hPort id}(hjL!hjJ!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjF!hMhjG!ubah}(h]h ]h"]h$]h&]uh1jAhj+!ubeh}(h]h ]h"]h$]h&]uh1jhjF!hMhj(!ubj )}(h.``direction`` Port direction, Source or Sink. h](j&)}(h ``direction``h]j,)}(hjj!h]h direction}(hhhjl!hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjh!ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjd!ubjB)}(hhh]h)}(hPort direction, Source or Sink.h]hPort direction, Source or Sink.}(hj!hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj!ubah}(h]h ]h"]h$]h&]uh1jAhjd!ubeh}(h]h ]h"]h$]h&]uh1jhj!hMhj(!ubj )}(h!``state`` state machine of port. h](j&)}(h ``state``h]j,)}(hj!h]hstate}(hhhj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj!ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj!ubjB)}(hhh]h)}(hstate machine of port.h]hstate machine of port.}(hj!hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj!ubah}(h]h ]h"]h$]h&]uh1jAhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hMhj(!ubj )}(h)``ch`` channel associated with this port.h](j&)}(h``ch``h]j,)}(hj!h]hch}(hhhj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj!ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj!ubjB)}(hhh]h)}(h"channel associated with this port.h]h"channel associated with this port.}(hj!hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj!ubah}(h]h ]h"]h$]h&]uh1jAhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hMhj(!ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j: slim_transport_protocol (C enum)c.slim_transport_protocolhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_transport_protocolh]jJ)}(henum slim_transport_protocolh](jP)}(hj4h]henum}(hhhj6"hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj2"hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM'ubjb)}(h h]h }(hhhjD"hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj2"hhhjC"hM'ubjs)}(hslim_transport_protocolh]jy)}(hj0"h]hslim_transport_protocol}(hhhjV"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjR"ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj2"hhhjC"hM'ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj."hhhjC"hM'ubah}(h]j)"ah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM#hj+"hhubj)}(hhh]h)}(hCSLIMbus Transport protocol list from Table 47 of SLIMbus 2.0 specs.h]hCSLIMbus Transport protocol list from Table 47 of SLIMbus 2.0 specs.}(hj{"hjy"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM&hjv"hhubah}(h]h ]h"]h$]h&]uh1jhj+"hhhjC"hM'ubeh}(h]h ](jenumeh"]h$]h&]jjjj"jj"juh1j>hhhjhNhNubj)}(hX**Constants** ``SLIM_PROTO_ISO`` Isochronous Protocol, no flow control as data rate match channel rate flow control embedded in the data. ``SLIM_PROTO_PUSH`` Pushed Protocol, includes flow control, Used to carry data whose rate is equal to, or lower than the channel rate. ``SLIM_PROTO_PULL`` Pulled Protocol, similar usage as pushed protocol but pull is a unicast. ``SLIM_PROTO_LOCKED`` Locked Protocol ``SLIM_PROTO_ASYNC_SMPLX`` Asynchronous Protocol-Simplex ``SLIM_PROTO_ASYNC_HALF_DUP`` Asynchronous Protocol-Half-duplex ``SLIM_PROTO_EXT_SMPLX`` Extended Asynchronous Protocol-Simplex ``SLIM_PROTO_EXT_HALF_DUP`` Extended Asynchronous Protocol-Half-duplexh](h)}(h **Constants**h]j)}(hj"h]h Constants}(hhhj"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.hhM*hj"ubj)}(hhh](j )}(h|``SLIM_PROTO_ISO`` Isochronous Protocol, no flow control as data rate match channel rate flow control embedded in the data. h](j&)}(h``SLIM_PROTO_ISO``h]j,)}(hj"h]hSLIM_PROTO_ISO}(hhhj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj"ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM.hj"ubjB)}(hhh]h)}(hhIsochronous Protocol, no flow control as data rate match channel rate flow control embedded in the data.h]hhIsochronous Protocol, no flow control as data rate match channel rate flow control embedded in the data.}(hj"hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM-hj"ubah}(h]h ]h"]h$]h&]uh1jAhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hM.hj"ubj )}(h``SLIM_PROTO_PUSH`` Pushed Protocol, includes flow control, Used to carry data whose rate is equal to, or lower than the channel rate. h](j&)}(h``SLIM_PROTO_PUSH``h]j,)}(hj"h]hSLIM_PROTO_PUSH}(hhhj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj"ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM2hj"ubjB)}(hhh]h)}(hrPushed Protocol, includes flow control, Used to carry data whose rate is equal to, or lower than the channel rate.h]hrPushed Protocol, includes flow control, Used to carry data whose rate is equal to, or lower than the channel rate.}(hj#hj #hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM1hj #ubah}(h]h ]h"]h$]h&]uh1jAhj"ubeh}(h]h ]h"]h$]h&]uh1jhj #hM2hj"ubj )}(h]``SLIM_PROTO_PULL`` Pulled Protocol, similar usage as pushed protocol but pull is a unicast. h](j&)}(h``SLIM_PROTO_PULL``h]j,)}(hj.#h]hSLIM_PROTO_PULL}(hhhj0#hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj,#ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM6hj(#ubjB)}(hhh]h)}(hHPulled Protocol, similar usage as pushed protocol but pull is a unicast.h]hHPulled Protocol, similar usage as pushed protocol but pull is a unicast.}(hjI#hjG#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM5hjD#ubah}(h]h ]h"]h$]h&]uh1jAhj(#ubeh}(h]h ]h"]h$]h&]uh1jhjC#hM6hj"ubj )}(h&``SLIM_PROTO_LOCKED`` Locked Protocol h](j&)}(h``SLIM_PROTO_LOCKED``h]j,)}(hjh#h]hSLIM_PROTO_LOCKED}(hhhjj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjf#ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM9hjb#ubjB)}(hhh]h)}(hLocked Protocolh]hLocked Protocol}(hj#hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}#hM9hj~#ubah}(h]h ]h"]h$]h&]uh1jAhjb#ubeh}(h]h ]h"]h$]h&]uh1jhj}#hM9hj"ubj )}(h9``SLIM_PROTO_ASYNC_SMPLX`` Asynchronous Protocol-Simplex h](j&)}(h``SLIM_PROTO_ASYNC_SMPLX``h]j,)}(hj#h]hSLIM_PROTO_ASYNC_SMPLX}(hhhj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj#ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM<hj#ubjB)}(hhh]h)}(hAsynchronous Protocol-Simplexh]hAsynchronous Protocol-Simplex}(hj#hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hM<hj#ubah}(h]h ]h"]h$]h&]uh1jAhj#ubeh}(h]h ]h"]h$]h&]uh1jhj#hM<hj"ubj )}(h@``SLIM_PROTO_ASYNC_HALF_DUP`` Asynchronous Protocol-Half-duplex h](j&)}(h``SLIM_PROTO_ASYNC_HALF_DUP``h]j,)}(hj#h]hSLIM_PROTO_ASYNC_HALF_DUP}(hhhj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj#ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM?hj#ubjB)}(hhh]h)}(h!Asynchronous Protocol-Half-duplexh]h!Asynchronous Protocol-Half-duplex}(hj#hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hM?hj#ubah}(h]h ]h"]h$]h&]uh1jAhj#ubeh}(h]h ]h"]h$]h&]uh1jhj#hM?hj"ubj )}(h@``SLIM_PROTO_EXT_SMPLX`` Extended Asynchronous Protocol-Simplex h](j&)}(h``SLIM_PROTO_EXT_SMPLX``h]j,)}(hj$h]hSLIM_PROTO_EXT_SMPLX}(hhhj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj$ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMBhj $ubjB)}(hhh]h)}(h&Extended Asynchronous Protocol-Simplexh]h&Extended Asynchronous Protocol-Simplex}(hj.$hj,$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj($hMBhj)$ubah}(h]h ]h"]h$]h&]uh1jAhj $ubeh}(h]h ]h"]h$]h&]uh1jhj($hMBhj"ubj )}(hF``SLIM_PROTO_EXT_HALF_DUP`` Extended Asynchronous Protocol-Half-duplexh](j&)}(h``SLIM_PROTO_EXT_HALF_DUP``h]j,)}(hjL$h]hSLIM_PROTO_EXT_HALF_DUP}(hhhjN$hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjJ$ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMDhjF$ubjB)}(hhh]h)}(h*Extended Asynchronous Protocol-Half-duplexh]h*Extended Asynchronous Protocol-Half-duplex}(hjg$hje$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMEhjb$ubah}(h]h ]h"]h$]h&]uh1jAhjF$ubeh}(h]h ]h"]h$]h&]uh1jhja$hMDhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_stream_runtime (C struct)c.slim_stream_runtimehNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_stream_runtimeh]jJ)}(hstruct slim_stream_runtimeh](jP)}(hjSh]hstruct}(hhhj$hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj$hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMAubjb)}(h h]h }(hhhj$hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj$hhhj$hMAubjs)}(hslim_stream_runtimeh]jy)}(hj$h]hslim_stream_runtime}(hhhj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj$ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj$hhhj$hMAubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj$hhhj$hMAubah}(h]j$ah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMKhj$hhubj)}(hhh]h)}(hSLIMbus stream runtime instanceh]hSLIMbus stream runtime instance}(hj$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$hMAubeh}(h]h ](jstructeh"]h$]h&]jjjj%jj%juh1j>hhhjhNhNubj)}(hX **Definition**:: struct slim_stream_runtime { const char *name; struct slim_device *dev; int direction; enum slim_transport_protocol prot; unsigned int rate; unsigned int bps; unsigned int ratem; int num_ports; struct slim_port *ports; struct list_head node; }; **Members** ``name`` Name of the stream ``dev`` SLIM Device instance associated with this stream ``direction`` direction of stream ``prot`` Transport protocol used in this stream ``rate`` Data rate of samples * ``bps`` bits per sample ``ratem`` rate multipler which is super frame rate/data rate ``num_ports`` number of ports ``ports`` pointer to instance of ports ``node`` list head for stream associated with slim device.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hhhj %hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj %ubh:}(hjhj %hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMDhj%ubj)}(hXstruct slim_stream_runtime { const char *name; struct slim_device *dev; int direction; enum slim_transport_protocol prot; unsigned int rate; unsigned int bps; unsigned int ratem; int num_ports; struct slim_port *ports; struct list_head node; };h]hXstruct slim_stream_runtime { const char *name; struct slim_device *dev; int direction; enum slim_transport_protocol prot; unsigned int rate; unsigned int bps; unsigned int ratem; int num_ports; struct slim_port *ports; struct list_head node; };}(hhhj&%ubah}(h]h ]h"]h$]h&]jjuh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMFhj%ubh)}(h **Members**h]j)}(hj7%h]hMembers}(hhhj9%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5%ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMShj%ubj)}(hhh](j )}(h``name`` Name of the stream h](j&)}(h``name``h]j,)}(hjV%h]hname}(hhhjX%hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjT%ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMChjP%ubjB)}(hhh]h)}(hName of the streamh]hName of the stream}(hjq%hjo%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjk%hMChjl%ubah}(h]h ]h"]h$]h&]uh1jAhjP%ubeh}(h]h ]h"]h$]h&]uh1jhjk%hMChjM%ubj )}(h9``dev`` SLIM Device instance associated with this stream h](j&)}(h``dev``h]j,)}(hj%h]hdev}(hhhj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj%ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMDhj%ubjB)}(hhh]h)}(h0SLIM Device instance associated with this streamh]h0SLIM Device instance associated with this stream}(hj%hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMDhj%ubah}(h]h ]h"]h$]h&]uh1jAhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%hMDhjM%ubj )}(h"``direction`` direction of stream h](j&)}(h ``direction``h]j,)}(hj%h]h direction}(hhhj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj%ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMEhj%ubjB)}(hhh]h)}(hdirection of streamh]hdirection of stream}(hj%hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMEhj%ubah}(h]h ]h"]h$]h&]uh1jAhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%hMEhjM%ubj )}(h0``prot`` Transport protocol used in this stream h](j&)}(h``prot``h]j,)}(hj&h]hprot}(hhhj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj%ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMFhj%ubjB)}(hhh]h)}(h&Transport protocol used in this streamh]h&Transport protocol used in this stream}(hj&hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMFhj&ubah}(h]h ]h"]h$]h&]uh1jAhj%ubeh}(h]h ]h"]h$]h&]uh1jhj&hMFhjM%ubj )}(h ``rate`` Data rate of samples * h](j&)}(h``rate``h]j,)}(hj:&h]hrate}(hhhj<&hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj8&ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMGhj4&ubjB)}(hhh]h)}(hData rate of samples *h]hData rate of samples *}(hjU&hjS&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO&hMGhjP&ubah}(h]h ]h"]h$]h&]uh1jAhj4&ubeh}(h]h ]h"]h$]h&]uh1jhjO&hMGhjM%ubj )}(h``bps`` bits per sample h](j&)}(h``bps``h]j,)}(hjs&h]hbps}(hhhju&hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjq&ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMHhjm&ubjB)}(hhh]h)}(hbits per sampleh]hbits per sample}(hj&hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMHhj&ubah}(h]h ]h"]h$]h&]uh1jAhjm&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMHhjM%ubj )}(h=``ratem`` rate multipler which is super frame rate/data rate h](j&)}(h ``ratem``h]j,)}(hj&h]hratem}(hhhj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj&ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMIhj&ubjB)}(hhh]h)}(h2rate multipler which is super frame rate/data rateh]h2rate multipler which is super frame rate/data rate}(hj&hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMIhj&ubah}(h]h ]h"]h$]h&]uh1jAhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMIhjM%ubj )}(h``num_ports`` number of ports h](j&)}(h ``num_ports``h]j,)}(hj&h]h num_ports}(hhhj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj&ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMJhj&ubjB)}(hhh]h)}(hnumber of portsh]hnumber of ports}(hj'hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMJhj&ubah}(h]h ]h"]h$]h&]uh1jAhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMJhjM%ubj )}(h'``ports`` pointer to instance of ports h](j&)}(h ``ports``h]j,)}(hj'h]hports}(hhhj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj'ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMKhj'ubjB)}(hhh]h)}(hpointer to instance of portsh]hpointer to instance of ports}(hj9'hj7'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3'hMKhj4'ubah}(h]h ]h"]h$]h&]uh1jAhj'ubeh}(h]h ]h"]h$]h&]uh1jhj3'hMKhjM%ubj )}(h:``node`` list head for stream associated with slim device.h](j&)}(h``node``h]j,)}(hjW'h]hnode}(hhhjY'hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjU'ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMKhjQ'ubjB)}(hhh]h)}(h1list head for stream associated with slim device.h]h1list head for stream associated with slim device.}(hjr'hjp'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMLhjm'ubah}(h]h ]h"]h$]h&]uh1jAhjQ'ubeh}(h]h ]h"]h$]h&]uh1jhjl'hMKhjM%ubeh}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_controller (C struct)c.slim_controllerhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hslim_controllerh]jJ)}(hstruct slim_controllerh](jP)}(hjSh]hstruct}(hhhj'hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj'hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM\ubjb)}(h h]h }(hhhj'hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj'hhhj'hM\ubjs)}(hslim_controllerh]jy)}(hj'h]hslim_controller}(hhhj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj'ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj'hhhj'hM\ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj'hhhj'hM\ubah}(h]j'ah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMRhj'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'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'hM\ubeh}(h]h ](jstructeh"]h$]h&]jjjj (jj (juh1j>hhhjhNhNubj)}(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. '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. ``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}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubh:}(hjhj(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); };}(hhhj1(ubah}(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)}(hjB(h]hMembers}(hhhjD(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.hhMwhj(ubj)}(hhh](j )}(h(``dev`` Device interface to this driver h](j&)}(h``dev``h]j,)}(hja(h]hdev}(hhhjc(hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj_(ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM^hj[(ubjB)}(hhh]h)}(hDevice interface to this driverh]hDevice interface to this driver}(hj|(hjz(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjv(hM^hjw(ubah}(h]h ]h"]h$]h&]uh1jAhj[(ubeh}(h]h ]h"]h$]h&]uh1jhjv(hM^hjX(ubj )}(h@``id`` Board-specific number identifier for this controller/bus h](j&)}(h``id``h]j,)}(hj(h]hid}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj(ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM_hj(ubjB)}(hhh]h)}(h8Board-specific number identifier for this controller/bush]h8Board-specific number identifier for this controller/bus}(hj(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hM_hj(ubah}(h]h ]h"]h$]h&]uh1jAhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(hM_hjX(ubj )}(h"``name`` Name for this controller h](j&)}(h``name``h]j,)}(hj(h]hname}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj(ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM`hj(ubjB)}(hhh]h)}(hName for this controllerh]hName for this controller}(hj(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hM`hj(ubah}(h]h ]h"]h$]h&]uh1jAhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(hM`hjX(ubj )}(hN``min_cg`` Minimum clock gear supported by this controller (default value: 1) h](j&)}(h ``min_cg``h]j,)}(hj )h]hmin_cg}(hhhj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj )ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMahj)ubjB)}(hhh]h)}(hBMinimum clock gear supported by this controller (default value: 1)h]hBMinimum clock gear supported by this controller (default value: 1)}(hj')hj%)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!)hMahj")ubah}(h]h ]h"]h$]h&]uh1jAhj)ubeh}(h]h ]h"]h$]h&]uh1jhj!)hMahjX(ubj )}(hO``max_cg`` Maximum clock gear supported by this controller (default value: 10) h](j&)}(h ``max_cg``h]j,)}(hjE)h]hmax_cg}(hhhjG)hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjC)ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMbhj?)ubjB)}(hhh]h)}(hCMaximum clock gear supported by this controller (default value: 10)h]hCMaximum clock gear supported by this controller (default value: 10)}(hj`)hj^)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZ)hMbhj[)ubah}(h]h ]h"]h$]h&]uh1jAhj?)ubeh}(h]h ]h"]h$]h&]uh1jhjZ)hMbhjX(ubj )}(h<``clkgear`` Current clock gear in which this bus is running h](j&)}(h ``clkgear``h]j,)}(hj~)h]hclkgear}(hhhj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj|)ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMchjx)ubjB)}(hhh]h)}(h/Current clock gear in which this bus is runningh]h/Current clock gear in which this bus is running}(hj)hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMchj)ubah}(h]h ]h"]h$]h&]uh1jAhjx)ubeh}(h]h ]h"]h$]h&]uh1jhj)hMchjX(ubj )}(h+``laddr_ida`` logical address id allocator h](j&)}(h ``laddr_ida``h]j,)}(hj)h]h laddr_ida}(hhhj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj)ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMdhj)ubjB)}(hhh]h)}(hlogical address id allocatorh]hlogical address id allocator}(hj)hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMdhj)ubah}(h]h ]h"]h$]h&]uh1jAhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hMdhjX(ubj )}(hP``a_framer`` Active framer which is clocking the bus managed by this controller h](j&)}(h ``a_framer``h]j,)}(hj)h]ha_framer}(hhhj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj)ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMehj)ubjB)}(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 *hj *hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMehj*ubah}(h]h ]h"]h$]h&]uh1jAhj)ubeh}(h]h ]h"]h$]h&]uh1jhj*hMehjX(ubj )}(h5``lock`` Mutex protecting controller data structures h](j&)}(h``lock``h]j,)}(hj)*h]hlock}(hhhj+*hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj'*ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMfhj#*ubjB)}(hhh]h)}(h+Mutex protecting controller data structuresh]h+Mutex protecting controller data structures}(hjD*hjB*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>*hMfhj?*ubah}(h]h ]h"]h$]h&]uh1jAhj#*ubeh}(h]h ]h"]h$]h&]uh1jhj>*hMfhjX(ubj )}(h``devices`` Slim device list h](j&)}(h ``devices``h]j,)}(hjb*h]hdevices}(hhhjd*hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj`*ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMghj\*ubjB)}(hhh]h)}(hSlim device listh]hSlim device list}(hj}*hj{*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjw*hMghjx*ubah}(h]h ]h"]h$]h&]uh1jAhj\*ubeh}(h]h ]h"]h$]h&]uh1jhjw*hMghjX(ubj )}(h``tid_idr`` tid id allocator h](j&)}(h ``tid_idr``h]j,)}(hj*h]htid_idr}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj*ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhhj*ubjB)}(hhh]h)}(htid id allocatorh]htid id allocator}(hj*hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhhj*ubah}(h]h ]h"]h$]h&]uh1jAhj*ubeh}(h]h ]h"]h$]h&]uh1jhj*hMhhjX(ubj )}(h3``txn_lock`` Lock to protect table of transactions h](j&)}(h ``txn_lock``h]j,)}(hj*h]htxn_lock}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj*ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMihj*ubjB)}(hhh]h)}(h%Lock to protect table of transactionsh]h%Lock to protect table of transactions}(hj*hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMihj*ubah}(h]h ]h"]h$]h&]uh1jAhj*ubeh}(h]h ]h"]h$]h&]uh1jhj*hMihjX(ubj )}(h5``sched`` scheduler structure used by the controller h](j&)}(h ``sched``h]j,)}(hj +h]hsched}(hhhj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj +ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMjhj+ubjB)}(hhh]h)}(h*scheduler structure used by the controllerh]h*scheduler structure used by the controller}(hj(+hj&+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"+hMjhj#+ubah}(h]h ]h"]h$]h&]uh1jAhj+ubeh}(h]h ]h"]h$]h&]uh1jhj"+hMjhjX(ubj )}(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]j,)}(hjF+h]hxfer_msg}(hhhjH+hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjD+ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMmhj@+ubjB)}(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.}(hja+hj_+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&]uh1jAhj@+ubeh}(h]h ]h"]h$]h&]uh1jhj[+hMmhjX(ubj )}(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]j,)}(hj+h]h set_laddr}(hhhj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj~+ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMphjz+ubjB)}(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+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&]uh1jAhjz+ubeh}(h]h ]h"]h$]h&]uh1jhj+hMphjX(ubj )}(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]j,)}(hj+h]h get_laddr}(hhhj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj+ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMthj+ubjB)}(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+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&]uh1jAhj+ubeh}(h]h ]h"]h$]h&]uh1jhj+hMthjX(ubj )}(he``enable_stream`` This function pointer implements controller-specific procedure to enable a stream. h](j&)}(h``enable_stream``h]j,)}(hj+h]h enable_stream}(hhhj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj+ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMyhj+ubjB)}(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,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&]uh1jAhj+ubeh}(h]h ]h"]h$]h&]uh1jhj ,hMyhjX(ubj )}(hX``disable_stream`` This function pointer implements controller-specific procedure to disable stream. '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](j&)}(h``disable_stream``h]j,)}(hj.,h]hdisable_stream}(hhhj0,hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj,,ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhj(,ubjB)}(hhh](h)}(hQThis function pointer implements controller-specific procedure to disable stream.h]hQThis function pointer implements controller-specific procedure to disable stream.}(hjI,hjG,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMzhjD,ubh)}(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.}(hjX,hjV,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhM}hjD,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.}(hjg,hje,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMhjD,ubeh}(h]h ]h"]h$]h&]uh1jAhj(,ubeh}(h]h ]h"]h$]h&]uh1jhjC,hMhjX(ubj )}(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]j,)}(hj,h]hwakeup}(hhhj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj,ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:97: ./drivers/slimbus/slimbus.hhMvhj,ubjB)}(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,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&]uh1jAhj,ubeh}(h]h ]h"]h$]h&]uh1jhj,hMvhjX(ubeh}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:'slim_unregister_controller (C function)c.slim_unregister_controllerhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h=int slim_unregister_controller (struct slim_controller *ctrl)h]jJ)}(hhhhjhNhNubj)}(hK**Parameters** ``struct slim_controller *ctrl`` Controller to tear-down.h](h)}(h**Parameters**h]j)}(hj-h]h Parameters}(hhhj-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-ubj)}(hhh]j )}(h9``struct slim_controller *ctrl`` Controller to tear-down.h](j&)}(h ``struct slim_controller *ctrl``h]j,)}(hj-h]hstruct slim_controller *ctrl}(hhhj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj-ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM,hj-ubjB)}(hhh]h)}(hController to tear-down.h]hController to tear-down.}(hj.hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM(hj .ubah}(h]h ]h"]h$]h&]uh1jAhj-ubeh}(h]h ]h"]h$]h&]uh1jhj .hM,hj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_report_absent (C function)c.slim_report_absenthNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h3void slim_report_absent (struct slim_device *sbdev)h]jJ)}(h2void slim_report_absent(struct slim_device *sbdev)h](j,)}(hvoidh]hvoid}(hhhjO.hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjK.hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM6ubjb)}(h h]h }(hhhj^.hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjK.hhhj].hM6ubjs)}(hslim_report_absenth]jy)}(hslim_report_absenth]hslim_report_absent}(hhhjp.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjl.ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjK.hhhj].hM6ubj-)}(h(struct slim_device *sbdev)h]j-)}(hstruct slim_device *sbdevh](jP)}(hjSh]hstruct}(hhhj.hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj.ubjb)}(h h]h }(hhhj.hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj.ubh)}(hhh]jy)}(h slim_deviceh]h slim_device}(hhhj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj.modnameN classnameNj\-j_-)}jb-]je-)}jX-jr.sbc.slim_report_absentasbuh1hhj.ubjb)}(h h]h }(hhhj.hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj.ubjy-)}(hj|-h]h*}(hhhj.hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj.ubjy)}(hsbdevh]hsbdev}(hhhj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj.ubah}(h]h ]h"]h$]h&]jjuh1j-hjK.hhhj].hM6ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjG.hhhj].hM6ubah}(h]jB.ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM:hjD.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}(hj/hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM5hj /hhubah}(h]h ]h"]h$]h&]uh1jhjD.hhhj].hM6ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj(/jj(/juh1j>hhhjhNhNubj)}(hd**Parameters** ``struct slim_device *sbdev`` Device that cannot be reached, or sent report absenth](h)}(h**Parameters**h]j)}(hj2/h]h Parameters}(hhhj4/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0/ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM9hj,/ubj)}(hhh]j )}(hR``struct slim_device *sbdev`` Device that cannot be reached, or sent report absenth](j&)}(h``struct slim_device *sbdev``h]j,)}(hjQ/h]hstruct slim_device *sbdev}(hhhjS/hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjO/ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM;hjK/ubjB)}(hhh]h)}(h4Device that cannot be reached, or sent report absenth]h4Device that cannot be reached, or sent report absent}(hjl/hjj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM8hjg/ubah}(h]h ]h"]h$]h&]uh1jAhjK/ubeh}(h]h ]h"]h$]h&]uh1jhjf/hM;hjH/ubah}(h]h ]h"]h$]h&]uh1jhj,/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_get_device (C function)c.slim_get_devicehNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h^struct slim_device * slim_get_device (struct slim_controller *ctrl, struct slim_eaddr *e_addr)h]jJ)}(h\struct slim_device *slim_get_device(struct slim_controller *ctrl, struct slim_eaddr *e_addr)h](jP)}(hjSh]hstruct}(hhhj/hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj/hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMlubjb)}(h h]h }(hhhj/hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj/hhhj/hMlubh)}(hhh]jy)}(h slim_deviceh]h slim_device}(hhhj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj/ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj/modnameN classnameNj\-j_-)}jb-]je-)}jX-slim_get_devicesbc.slim_get_deviceasbuh1hhj/hhhj/hMlubjb)}(h h]h }(hhhj/hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj/hhhj/hMlubjy-)}(hj|-h]h*}(hhhj/hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj/hhhj/hMlubjs)}(hslim_get_deviceh]jy)}(hj/h]hslim_get_device}(hhhj 0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj0ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj/hhhj/hMlubj-)}(h9(struct slim_controller *ctrl, struct slim_eaddr *e_addr)h](j-)}(hstruct slim_controller *ctrlh](jP)}(hjSh]hstruct}(hhhj%0hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj!0ubjb)}(h h]h }(hhhj20hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj!0ubh)}(hhh]jy)}(hslim_controllerh]hslim_controller}(hhhjC0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj@0ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjE0modnameN classnameNj\-j_-)}jb-]j/c.slim_get_deviceasbuh1hhj!0ubjb)}(h h]h }(hhhja0hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj!0ubjy-)}(hj|-h]h*}(hhhjo0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj!0ubjy)}(hctrlh]hctrl}(hhhj|0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj!0ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj0ubj-)}(hstruct slim_eaddr *e_addrh](jP)}(hjSh]hstruct}(hhhj0hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj0ubjb)}(h h]h }(hhhj0hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj0ubh)}(hhh]jy)}(h slim_eaddrh]h slim_eaddr}(hhhj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj0modnameN classnameNj\-j_-)}jb-]j/c.slim_get_deviceasbuh1hhj0ubjb)}(h h]h }(hhhj0hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj0ubjy-)}(hj|-h]h*}(hhhj0hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj0ubjy)}(he_addrh]he_addr}(hhhj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj0ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj0ubeh}(h]h ]h"]h$]h&]jjuh1j-hj/hhhj/hMlubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj/hhhj/hMlubah}(h]j/ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMshj/hhubj)}(hhh]h)}(hget handle to a device.h]hget handle to a device.}(hj1hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMkhj1hhubah}(h]h ]h"]h$]h&]uh1jhj/hhhj/hMlubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/1jj/1juh1j>hhhjhNhNubj)}(hXK**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 **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)}(hj91h]h Parameters}(hhhj;1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj71ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMohj31ubj)}(hhh](j )}(hW``struct slim_controller *ctrl`` Controller on which this device will be added/queried h](j&)}(h ``struct slim_controller *ctrl``h]j,)}(hjX1h]hstruct slim_controller *ctrl}(hhhjZ1hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjV1ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMmhjR1ubjB)}(hhh]h)}(h5Controller on which this device will be added/queriedh]h5Controller on which this device will be added/queried}(hjs1hjq1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjm1hMmhjn1ubah}(h]h ]h"]h$]h&]uh1jAhjR1ubeh}(h]h ]h"]h$]h&]uh1jhjm1hMmhjO1ubj )}(hN``struct slim_eaddr *e_addr`` Enumeration address of the device to be queried h](j&)}(h``struct slim_eaddr *e_addr``h]j,)}(hj1h]hstruct slim_eaddr *e_addr}(hhhj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj1ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMnhj1ubjB)}(hhh]h)}(h/Enumeration address of the device to be queriedh]h/Enumeration address of the device to be queried}(hj1hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMnhj1ubah}(h]h ]h"]h$]h&]uh1jAhj1ubeh}(h]h ]h"]h$]h&]uh1jhj1hMnhjO1ubeh}(h]h ]h"]h$]h&]uh1jhj31ubh)}(h **Return**h]j)}(hj1h]hReturn}(hhhj1hhhNhNubah}(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.chMphj31ubh)}(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.}(hj1hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMphj31ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:of_slim_get_device (C function)c.of_slim_get_devicehNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h^struct slim_device * of_slim_get_device (struct slim_controller *ctrl, struct device_node *np)h]jJ)}(h\struct slim_device *of_slim_get_device(struct slim_controller *ctrl, struct device_node *np)h](jP)}(hjSh]hstruct}(hhhj2hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj 2hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMubjb)}(h h]h }(hhhj2hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj 2hhhj2hMubh)}(hhh]jy)}(h slim_deviceh]h slim_device}(hhhj02hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj-2ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj22modnameN classnameNj\-j_-)}jb-]je-)}jX-of_slim_get_devicesbc.of_slim_get_deviceasbuh1hhj 2hhhj2hMubjb)}(h h]h }(hhhjQ2hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj 2hhhj2hMubjy-)}(hj|-h]h*}(hhhj_2hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj 2hhhj2hMubjs)}(hof_slim_get_deviceh]jy)}(hjN2h]hof_slim_get_device}(hhhjp2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjl2ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj 2hhhj2hMubj-)}(h6(struct slim_controller *ctrl, struct device_node *np)h](j-)}(hstruct slim_controller *ctrlh](jP)}(hjSh]hstruct}(hhhj2hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj2ubjb)}(h h]h }(hhhj2hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj2ubh)}(hhh]jy)}(hslim_controllerh]hslim_controller}(hhhj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj2ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj2modnameN classnameNj\-j_-)}jb-]jL2c.of_slim_get_deviceasbuh1hhj2ubjb)}(h h]h }(hhhj2hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj2ubjy-)}(hj|-h]h*}(hhhj2hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj2ubjy)}(hctrlh]hctrl}(hhhj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj2ubj-)}(hstruct device_node *nph](jP)}(hjSh]hstruct}(hhhj2hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj2ubjb)}(h h]h }(hhhj3hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj2ubh)}(hhh]jy)}(h device_nodeh]h device_node}(hhhj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj3modnameN classnameNj\-j_-)}jb-]jL2c.of_slim_get_deviceasbuh1hhj2ubjb)}(h h]h }(hhhj73hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj2ubjy-)}(hj|-h]h*}(hhhjE3hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj2ubjy)}(hnph]hnp}(hhhjR3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj2ubeh}(h]h ]h"]h$]h&]jjuh1j-hj 2hhhj2hMubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj 2hhhj2hMubah}(h]j2ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj2hhubj)}(hhh]h)}(h%get handle to a device using dt node.h]h%get handle to a device using dt node.}(hj3hj}3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhjz3hhubah}(h]h ]h"]h$]h&]uh1jhj2hhhj2hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3jj3juh1j>hhhjhNhNubj)}(hX/**Parameters** ``struct slim_controller *ctrl`` Controller on which this device will be added/queried ``struct device_node *np`` node pointer to device **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)}(hj3h]h Parameters}(hhhj3hhhNhNubah}(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.chMhj3ubj)}(hhh](j )}(hW``struct slim_controller *ctrl`` Controller on which this device will be added/queried h](j&)}(h ``struct slim_controller *ctrl``h]j,)}(hj3h]hstruct slim_controller *ctrl}(hhhj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj3ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3ubjB)}(hhh]h)}(h5Controller on which this device will be added/queriedh]h5Controller on which this device will be added/queried}(hj3hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1jAhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hMhj3ubj )}(h2``struct device_node *np`` node pointer to device h](j&)}(h``struct device_node *np``h]j,)}(hj3h]hstruct device_node *np}(hhhj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj3ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3ubjB)}(hhh]h)}(hnode pointer to deviceh]hnode pointer to device}(hj4hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj 4hMhj 4ubah}(h]h ]h"]h$]h&]uh1jAhj3ubeh}(h]h ]h"]h$]h&]uh1jhj 4hMhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3ubh)}(h **Return**h]j)}(hj24h]hReturn}(hhhj44hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj04ubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj3ubh)}(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.}(hjJ4hjH4hhhNhNubah}(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&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:'slim_device_report_present (C function)c.slim_device_report_presenthNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(hcint slim_device_report_present (struct slim_controller *ctrl, struct slim_eaddr *e_addr, u8 *laddr)h]jJ)}(hbint slim_device_report_present(struct slim_controller *ctrl, struct slim_eaddr *e_addr, u8 *laddr)h](j,)}(hinth]hint}(hhhjw4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjs4hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMubjb)}(h h]h }(hhhj4hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjs4hhhj4hMubjs)}(hslim_device_report_presenth]jy)}(hslim_device_report_presenth]hslim_device_report_present}(hhhj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj4ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjs4hhhj4hMubj-)}(hD(struct slim_controller *ctrl, struct slim_eaddr *e_addr, u8 *laddr)h](j-)}(hstruct slim_controller *ctrlh](jP)}(hjSh]hstruct}(hhhj4hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj4ubjb)}(h h]h }(hhhj4hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj4ubh)}(hhh]jy)}(hslim_controllerh]hslim_controller}(hhhj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj4modnameN classnameNj\-j_-)}jb-]je-)}jX-j4sbc.slim_device_report_presentasbuh1hhj4ubjb)}(h h]h }(hhhj4hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj4ubjy-)}(hj|-h]h*}(hhhj5hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj4ubjy)}(hctrlh]hctrl}(hhhj 5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj4ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj4ubj-)}(hstruct slim_eaddr *e_addrh](jP)}(hjSh]hstruct}(hhhj&5hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj"5ubjb)}(h h]h }(hhhj35hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj"5ubh)}(hhh]jy)}(h slim_eaddrh]h slim_eaddr}(hhhjD5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjA5ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjF5modnameN classnameNj\-j_-)}jb-]j4c.slim_device_report_presentasbuh1hhj"5ubjb)}(h h]h }(hhhjb5hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj"5ubjy-)}(hj|-h]h*}(hhhjp5hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj"5ubjy)}(he_addrh]he_addr}(hhhj}5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj"5ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj4ubj-)}(h u8 *laddrh](h)}(hhh]jy)}(hu8h]hu8}(hhhj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj5modnameN classnameNj\-j_-)}jb-]j4c.slim_device_report_presentasbuh1hhj5ubjb)}(h h]h }(hhhj5hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj5ubjy-)}(hj|-h]h*}(hhhj5hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj5ubjy)}(hladdrh]hladdr}(hhhj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj5ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj4ubeh}(h]h ]h"]h$]h&]jjuh1j-hjs4hhhj4hMubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjo4hhhj4hMubah}(h]jj4ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhjl4hhubj)}(hhh]h)}(hReport enumerated device.h]hReport enumerated device.}(hj5hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj5hhubah}(h]h ]h"]h$]h&]uh1jhjl4hhhj4hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj6jj6juh1j>hhhjhNhNubj)}(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}(hhhj!6hhhNhNubah}(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.chMhj6ubj)}(hhh](j )}(hM``struct slim_controller *ctrl`` Controller with which device is enumerated. h](j&)}(h ``struct slim_controller *ctrl``h]j,)}(hj>6h]hstruct slim_controller *ctrl}(hhhj@6hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj<6ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj86ubjB)}(hhh]h)}(h+Controller with which device is enumerated.h]h+Controller with which device is enumerated.}(hjY6hjW6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS6hMhjT6ubah}(h]h ]h"]h$]h&]uh1jAhj86ubeh}(h]h ]h"]h$]h&]uh1jhjS6hMhj56ubj )}(hA``struct slim_eaddr *e_addr`` Enumeration address of the device. h](j&)}(h``struct slim_eaddr *e_addr``h]j,)}(hjw6h]hstruct slim_eaddr *e_addr}(hhhjy6hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hju6ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhjq6ubjB)}(hhh]h)}(h"Enumeration address of the device.h]h"Enumeration address of the device.}(hj6hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jAhjq6ubeh}(h]h ]h"]h$]h&]uh1jhj6hMhj56ubj )}(h>``u8 *laddr`` Return logical address (if valid flag is false) h](j&)}(h ``u8 *laddr``h]j,)}(hj6h]h u8 *laddr}(hhhj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj6ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj6ubjB)}(hhh]h)}(h/Return logical address (if valid flag is false)h]h/Return logical address (if valid flag is false)}(hj6hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jAhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hMhj56ubeh}(h]h ]h"]h$]h&]uh1jhj6ubh)}(h**Description**h]j)}(hj6h]h Description}(hhhj6hhhNhNubah}(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.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.}(hj7hj7hhhNhNubah}(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&]uh1jhjhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:"slim_get_logical_addr (C function)c.slim_get_logical_addrhNtauh1j-hjhhhNhNubj?)}(hhh](jD)}(h5int slim_get_logical_addr (struct slim_device *sbdev)h]jJ)}(h4int slim_get_logical_addr(struct slim_device *sbdev)h](j,)}(hinth]hint}(hhhj07hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj,7hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM ubjb)}(h h]h }(hhhj?7hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj,7hhhj>7hM ubjs)}(hslim_get_logical_addrh]jy)}(hslim_get_logical_addrh]hslim_get_logical_addr}(hhhjQ7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjM7ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj,7hhhj>7hM ubj-)}(h(struct slim_device *sbdev)h]j-)}(hstruct slim_device *sbdevh](jP)}(hjSh]hstruct}(hhhjm7hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhji7ubjb)}(h h]h }(hhhjz7hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahji7ubh)}(hhh]jy)}(h slim_deviceh]h slim_device}(hhhj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj7modnameN classnameNj\-j_-)}jb-]je-)}jX-jS7sbc.slim_get_logical_addrasbuh1hhji7ubjb)}(h h]h }(hhhj7hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahji7ubjy-)}(hj|-h]h*}(hhhj7hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hji7ubjy)}(hsbdevh]hsbdev}(hhhj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhji7ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hje7ubah}(h]h ]h"]h$]h&]jjuh1j-hj,7hhhj>7hM ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj(7hhhj>7hM ubah}(h]j#7ah ](jjeh"]h$]h&]juh1jChZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chMhj%7hhubj)}(hhh]h)}(h1get/allocate logical address of a SLIMbus device.h]h1get/allocate logical address of a SLIMbus device.}(hj7hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM hj7hhubah}(h]h ]h"]h$]h&]uh1jhj%7hhhj>7hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj 8jj 8juh1j>hhhjhNhNubj)}(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}(hhhj8hhhNhNubah}(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 8ubj)}(hhh]j )}(hD``struct slim_device *sbdev`` client handle requesting the address. h](j&)}(h``struct slim_device *sbdev``h]j,)}(hj28h]hstruct slim_device *sbdev}(hhhj48hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj08ubah}(h]h ]h"]h$]h&]uh1j%hZ/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:100: ./drivers/slimbus/core.chM hj,8ubjB)}(hhh]h)}(h%client handle requesting the address.h]h%client handle requesting the address.}(hjM8hjK8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG8hM hjH8ubah}(h]h ]h"]h$]h&]uh1jAhj,8ubeh}(h]h ]h"]h$]h&]uh1jhjG8hM hj)8ubah}(h]h ]h"]h$]h&]uh1jhj 8ubh)}(h **Return**h]j)}(hjm8h]hReturn}(hhhjo8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk8ubah}(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.}(hj8hj8hhhNhNubah}(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&]uh1jhjhhhNhNubeh}(h]driver-and-controller-apisah ]h"]driver and controller apis:ah$]h&]uh1hhhhhhhhK]ubh)}(hhh](h)}(h Clock-pause:h]h Clock-pause:}(hj8hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hhhhhKhubh)}(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).}(hj8hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihj8hhubh)}(hhh](h)}(hClock-pause APIs:h]hClock-pause APIs:}(hj8hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hhhhhKrubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j: slim_ctrl_clk_pause (C function)c.slim_ctrl_clk_pausehNtauh1j-hj8hhhNhNubj?)}(hhh](jD)}(hOint slim_ctrl_clk_pause (struct slim_controller *ctrl, bool wakeup, u8 restart)h]jJ)}(hNint slim_ctrl_clk_pause(struct slim_controller *ctrl, bool wakeup, u8 restart)h](j,)}(hinth]hint}(hhhj8hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj8hhh[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chK ubjb)}(h h]h }(hhhj8hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj8hhhj8hK ubjs)}(hslim_ctrl_clk_pauseh]jy)}(hslim_ctrl_clk_pauseh]hslim_ctrl_clk_pause}(hhhj 9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj9ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj8hhhj8hK ubj-)}(h7(struct slim_controller *ctrl, bool wakeup, u8 restart)h](j-)}(hstruct slim_controller *ctrlh](jP)}(hjSh]hstruct}(hhhj'9hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj#9ubjb)}(h h]h }(hhhj49hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj#9ubh)}(hhh]jy)}(hslim_controllerh]hslim_controller}(hhhjE9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjB9ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjG9modnameN classnameNj\-j_-)}jb-]je-)}jX-j 9sbc.slim_ctrl_clk_pauseasbuh1hhj#9ubjb)}(h h]h }(hhhje9hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj#9ubjy-)}(hj|-h]h*}(hhhjs9hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj#9ubjy)}(hctrlh]hctrl}(hhhj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj#9ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj9ubj-)}(h bool wakeuph](j,)}(hboolh]hbool}(hhhj9hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj9ubjb)}(h h]h }(hhhj9hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj9ubjy)}(hwakeuph]hwakeup}(hhhj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj9ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj9ubj-)}(h u8 restarth](h)}(hhh]jy)}(hu8h]hu8}(hhhj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj9ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj9modnameN classnameNj\-j_-)}jb-]ja9c.slim_ctrl_clk_pauseasbuh1hhj9ubjb)}(h h]h }(hhhj9hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj9ubjy)}(hrestarth]hrestart}(hhhj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj9ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj9ubeh}(h]h ]h"]h$]h&]jjuh1j-hj8hhhj8hK ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj8hhhj8hK ubah}(h]j8ah ](jjeh"]h$]h&]juh1jCh[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chKhj8hhubj)}(hhh]h)}(h8Called by slimbus controller to enter/exit 'clock pause'h]hhhhj8hNhNubj)}(hX**Parameters** ``struct slim_controller *ctrl`` controller requesting bus to be paused or woken up ``bool wakeup`` Wakeup this controller from clock pause. ``u8 restart`` Restart time value per spec used for clock pause. This value isn't used when controller is to be woken up. **Description** Slimbus specification needs this sequence to turn-off clocks for the bus. The sequence involves sending 3 broadcast messages (reconfiguration sequence) to inform all devices on the bus. To exit clock-pause, controller typically wakes up active framer device. This API executes clock pause reconfiguration sequence if wakeup is false. If wakeup is true, controller's wakeup is called. For entering clock-pause, -EBUSY is returned if a message txn in pending.h](h)}(h**Parameters**h]j)}(hjJ:h]h Parameters}(hhhjL:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH:ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chKhjD:ubj)}(hhh](j )}(hT``struct slim_controller *ctrl`` controller requesting bus to be paused or woken up h](j&)}(h ``struct slim_controller *ctrl``h]j,)}(hji:h]hstruct slim_controller *ctrl}(hhhjk:hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjg:ubah}(h]h ]h"]h$]h&]uh1j%h[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chK hjc:ubjB)}(hhh]h)}(h2controller requesting bus to be paused or woken uph]h2controller requesting bus to be paused or woken up}(hj:hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~:hK hj:ubah}(h]h ]h"]h$]h&]uh1jAhjc:ubeh}(h]h ]h"]h$]h&]uh1jhj~:hK hj`:ubj )}(h9``bool wakeup`` Wakeup this controller from clock pause. h](j&)}(h``bool wakeup``h]j,)}(hj:h]h bool wakeup}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj:ubah}(h]h ]h"]h$]h&]uh1j%h[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chK hj:ubjB)}(hhh]h)}(h(Wakeup this controller from clock pause.h]h(Wakeup this controller from clock pause.}(hj:hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hK hj:ubah}(h]h ]h"]h$]h&]uh1jAhj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hK hj`:ubj )}(hz``u8 restart`` Restart time value per spec used for clock pause. This value isn't used when controller is to be woken up. h](j&)}(h``u8 restart``h]j,)}(hj:h]h u8 restart}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj:ubah}(h]h ]h"]h$]h&]uh1j%h[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chKhj:ubjB)}(hhh]h)}(hjRestart time value per spec used for clock pause. This value isn't used when controller is to be woken up.h]hlRestart time value per spec used for clock pause. This value isn’t used when controller is to be woken up.}(hj:hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chKhj:ubah}(h]h ]h"]h$]h&]uh1jAhj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hKhj`:ubeh}(h]h ]h"]h$]h&]uh1jhjD:ubh)}(h**Description**h]j)}(hj;h]h Description}(hhhj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chKhjD:ubh)}(hXSlimbus specification needs this sequence to turn-off clocks for the bus. The sequence involves sending 3 broadcast messages (reconfiguration sequence) to inform all devices on the bus. To exit clock-pause, controller typically wakes up active framer device. This API executes clock pause reconfiguration sequence if wakeup is false. If wakeup is true, controller's wakeup is called. For entering clock-pause, -EBUSY is returned if a message txn in pending.h]hXSlimbus specification needs this sequence to turn-off clocks for the bus. The sequence involves sending 3 broadcast messages (reconfiguration sequence) to inform all devices on the bus. To exit clock-pause, controller typically wakes up active framer device. This API executes clock pause reconfiguration sequence if wakeup is false. If wakeup is true, controller’s wakeup is called. For entering clock-pause, -EBUSY is returned if a message txn in pending.}(hj/;hj-;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:115: ./drivers/slimbus/sched.chKhjD:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj8hhhNhNubeh}(h]clock-pause-apisah ]h"]clock-pause apis:ah$]h&]uh1hhj8hhhhhKrubeh}(h] clock-pauseah ]h"] clock-pause:ah$]h&]uh1hhhhhhhhKhubh)}(hhh](h)}(h Messaging:h]h Messaging:}(hjX;hjV;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS;hhhhhKwubh)}(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.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.}(hjf;hjd;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKxhjS;hhubh)}(hhh](h)}(hMessaging APIs:h]hMessaging APIs:}(hjw;hju;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr;hhhhhK}ubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_msg_response (C function)c.slim_msg_responsehNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(hPvoid slim_msg_response (struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len)h]jJ)}(hOvoid slim_msg_response(struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len)h](j,)}(hvoidh]hvoid}(hhhj;hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj;hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK ubjb)}(h h]h }(hhhj;hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj;hhhj;hK ubjs)}(hslim_msg_responseh]jy)}(hslim_msg_responseh]hslim_msg_response}(hhhj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj;ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj;hhhj;hK ubj-)}(h9(struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len)h](j-)}(hstruct slim_controller *ctrlh](jP)}(hjSh]hstruct}(hhhj;hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj;ubjb)}(h h]h }(hhhj;hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj;ubh)}(hhh]jy)}(hslim_controllerh]hslim_controller}(hhhj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj;ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj;modnameN classnameNj\-j_-)}jb-]je-)}jX-j;sbc.slim_msg_responseasbuh1hhj;ubjb)}(h h]h }(hhhj<hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj;ubjy-)}(hj|-h]h*}(hhhj%<hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj;ubjy)}(hctrlh]hctrl}(hhhj2<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj;ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj;ubj-)}(h u8 *replyh](h)}(hhh]jy)}(hu8h]hu8}(hhhjN<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjK<ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjP<modnameN classnameNj\-j_-)}jb-]j<c.slim_msg_responseasbuh1hhjG<ubjb)}(h h]h }(hhhjl<hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjG<ubjy-)}(hj|-h]h*}(hhhjz<hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjG<ubjy)}(hreplyh]hreply}(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjG<ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj;ubj-)}(hu8 tidh](h)}(hhh]jy)}(hu8h]hu8}(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj<modnameN classnameNj\-j_-)}jb-]j<c.slim_msg_responseasbuh1hhj<ubjb)}(h h]h }(hhhj<hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj<ubjy)}(htidh]htid}(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj;ubj-)}(hu8 lenh](h)}(hhh]jy)}(hu8h]hu8}(hhhj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj<modnameN classnameNj\-j_-)}jb-]j<c.slim_msg_responseasbuh1hhj<ubjb)}(h h]h }(hhhj =hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj<ubjy)}(hlenh]hlen}(hhhj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj;ubeh}(h]h ]h"]h$]h&]jjuh1j-hj;hhhj;hK ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj;hhhj;hK ubah}(h]j;ah ](jjeh"]h$]h&]juh1jCh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj;hhubj)}(hhh]h)}(hADeliver Message response received from a device to the framework.h]hADeliver Message response received from a device to the framework.}(hjD=hjB=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&]jjjjZ=jjZ=juh1j>hhhjr;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)}(hjd=h]h Parameters}(hhhjf=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb=ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj^=ubj)}(hhh](j )}(h3``struct slim_controller *ctrl`` Controller handle h](j&)}(h ``struct slim_controller *ctrl``h]j,)}(hj=h]hstruct slim_controller *ctrl}(hhhj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj=ubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj}=ubjB)}(hhh]h)}(hController handleh]hController handle}(hj=hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKhj=ubah}(h]h ]h"]h$]h&]uh1jAhj}=ubeh}(h]h ]h"]h$]h&]uh1jhj=hKhjz=ubj )}(h-``u8 *reply`` Reply received from the device h](j&)}(h ``u8 *reply``h]j,)}(hj=h]h u8 *reply}(hhhj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj=ubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj=ubjB)}(hhh]h)}(hReply received from the deviceh]hReply received from the device}(hj=hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKhj=ubah}(h]h ]h"]h$]h&]uh1jAhj=ubeh}(h]h ]h"]h$]h&]uh1jhj=hKhjz=ubj )}(hM``u8 tid`` Transaction ID received with which framework can associate reply. h](j&)}(h ``u8 tid``h]j,)}(hj=h]hu8 tid}(hhhj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj=ubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj=ubjB)}(hhh]h)}(hATransaction ID received with which framework can associate reply.h]hATransaction ID received with which framework can associate reply.}(hj>hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj >hKhj >ubah}(h]h ]h"]h$]h&]uh1jAhj=ubeh}(h]h ]h"]h$]h&]uh1jhj >hKhjz=ubj )}(h``u8 len`` Length of the reply h](j&)}(h ``u8 len``h]j,)}(hj.>h]hu8 len}(hhhj0>hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj,>ubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhj(>ubjB)}(hhh]h)}(hLength of the replyh]hLength of the reply}(hjI>hjG>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjC>hKhjD>ubah}(h]h ]h"]h$]h&]uh1jAhj(>ubeh}(h]h ]h"]h$]h&]uh1jhjC>hKhjz=ubeh}(h]h ]h"]h$]h&]uh1jhj^=ubh)}(h**Description**h]j)}(hji>h]h Description}(hhhjk>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjg>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>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&]uh1jhjr;hhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_alloc_txn_tid (C function)c.slim_alloc_txn_tidhNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(hOint slim_alloc_txn_tid (struct slim_controller *ctrl, struct slim_msg_txn *txn)h]jJ)}(hNint slim_alloc_txn_tid(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](j,)}(hinth]hint}(hhhj>hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj>hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK9ubjb)}(h h]h }(hhhj>hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj>hhhj>hK9ubjs)}(hslim_alloc_txn_tidh]jy)}(hslim_alloc_txn_tidh]hslim_alloc_txn_tid}(hhhj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj>ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj>hhhj>hK9ubj-)}(h8(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](j-)}(hstruct slim_controller *ctrlh](jP)}(hjSh]hstruct}(hhhj>hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj>ubjb)}(h h]h }(hhhj>hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj>ubh)}(hhh]jy)}(hslim_controllerh]hslim_controller}(hhhj ?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj?ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj ?modnameN classnameNj\-j_-)}jb-]je-)}jX-j>sbc.slim_alloc_txn_tidasbuh1hhj>ubjb)}(h h]h }(hhhj)?hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj>ubjy-)}(hj|-h]h*}(hhhj7?hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj>ubjy)}(hctrlh]hctrl}(hhhjD?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj>ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj>ubj-)}(hstruct slim_msg_txn *txnh](jP)}(hjSh]hstruct}(hhhj]?hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjY?ubjb)}(h h]h }(hhhjj?hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjY?ubh)}(hhh]jy)}(h slim_msg_txnh]h slim_msg_txn}(hhhj{?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjx?ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj}?modnameN classnameNj\-j_-)}jb-]j%?c.slim_alloc_txn_tidasbuh1hhjY?ubjb)}(h h]h }(hhhj?hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjY?ubjy-)}(hj|-h]h*}(hhhj?hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjY?ubjy)}(htxnh]htxn}(hhhj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjY?ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj>ubeh}(h]h ]h"]h$]h&]jjuh1j-hj>hhhj>hK9ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj>hhhj>hK9ubah}(h]j>ah ](jjeh"]h$]h&]juh1jCh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK?hj>hhubj)}(hhh]h)}(hAllocate a tid to txnh]hAllocate a tid to txn}(hj?hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK8hj?hhubah}(h]h ]h"]h$]h&]uh1jhj>hhhj>hK9ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj?jj?juh1j>hhhjr;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)}(hj@h]h Parameters}(hhhj@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.chKtid and error code on failures.h]h?zero on success with valid txn->tid and error code on failures.}(hj@hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chK=hj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjr;hhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_free_txn_tid (C function)c.slim_free_txn_tidhNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(hOvoid slim_free_txn_tid (struct slim_controller *ctrl, struct slim_msg_txn *txn)h]jJ)}(hNvoid slim_free_txn_tid(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](j,)}(hvoidh]hvoid}(hhhj@hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj@hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKSubjb)}(h h]h }(hhhj@hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj@hhhj@hKSubjs)}(hslim_free_txn_tidh]jy)}(hslim_free_txn_tidh]hslim_free_txn_tid}(hhhj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj@ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj@hhhj@hKSubj-)}(h8(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](j-)}(hstruct slim_controller *ctrlh](jP)}(hjSh]hstruct}(hhhjAhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjAubjb)}(h h]h }(hhhj#AhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjAubh)}(hhh]jy)}(hslim_controllerh]hslim_controller}(hhhj4AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj1Aubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj6AmodnameN classnameNj\-j_-)}jb-]je-)}jX-j@sbc.slim_free_txn_tidasbuh1hhjAubjb)}(h h]h }(hhhjTAhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjAubjy-)}(hj|-h]h*}(hhhjbAhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjAubjy)}(hctrlh]hctrl}(hhhjoAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjAubj-)}(hstruct slim_msg_txn *txnh](jP)}(hjSh]hstruct}(hhhjAhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjAubjb)}(h h]h }(hhhjAhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjAubh)}(hhh]jy)}(h slim_msg_txnh]h slim_msg_txn}(hhhjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjAubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjAmodnameN classnameNj\-j_-)}jb-]jPAc.slim_free_txn_tidasbuh1hhjAubjb)}(h h]h }(hhhjAhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjAubjy-)}(hj|-h]h*}(hhhjAhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjAubjy)}(htxnh]htxn}(hhhjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjAubeh}(h]h ]h"]h$]h&]jjuh1j-hj@hhhj@hKSubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj@hhhj@hKSubah}(h]j@ah ](jjeh"]h$]h&]juh1jCh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKWhj@hhubj)}(hhh]h)}(hFree tid of txnh]hFree tid of txn}(hj Bhj BhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKRhjBhhubah}(h]h ]h"]h$]h&]uh1jhj@hhhj@hKSubeh}(h]h ](jfunctioneh"]h$]h&]jjjj"Bjj"Bjuh1j>hhhjr;hNhNubj)}(h**Parameters** ``struct slim_controller *ctrl`` Controller handle ``struct slim_msg_txn *txn`` transaction whose tid should be freedh](h)}(h**Parameters**h]j)}(hj,Bh]h Parameters}(hhhj.BhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*Bubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKVhj&Bubj)}(hhh](j )}(h3``struct slim_controller *ctrl`` Controller handle h](j&)}(h ``struct slim_controller *ctrl``h]j,)}(hjKBh]hstruct slim_controller *ctrl}(hhhjMBhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjIBubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKThjEBubjB)}(hhh]h)}(hController handleh]hController handle}(hjfBhjdBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`BhKThjaBubah}(h]h ]h"]h$]h&]uh1jAhjEBubeh}(h]h ]h"]h$]h&]uh1jhj`BhKThjBBubj )}(hB``struct slim_msg_txn *txn`` transaction whose tid should be freedh](j&)}(h``struct slim_msg_txn *txn``h]j,)}(hjBh]hstruct slim_msg_txn *txn}(hhhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjBubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKVhj~BubjB)}(hhh]h)}(h%transaction whose tid should be freedh]h%transaction whose tid should be freed}(hjBhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKUhjBubah}(h]h ]h"]h$]h&]uh1jAhj~Bubeh}(h]h ]h"]h$]h&]uh1jhjBhKVhjBBubeh}(h]h ]h"]h$]h&]uh1jhj&Bubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjr;hhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_do_transfer (C function)c.slim_do_transferhNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(hMint slim_do_transfer (struct slim_controller *ctrl, struct slim_msg_txn *txn)h]jJ)}(hLint slim_do_transfer(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](j,)}(hinth]hint}(hhhjBhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjBhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKcubjb)}(h h]h }(hhhjBhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjBhhhjBhKcubjs)}(hslim_do_transferh]jy)}(hslim_do_transferh]hslim_do_transfer}(hhhjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjBubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjBhhhjBhKcubj-)}(h8(struct slim_controller *ctrl, struct slim_msg_txn *txn)h](j-)}(hstruct slim_controller *ctrlh](jP)}(hjSh]hstruct}(hhhjChhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCubjb)}(h h]h }(hhhj(ChhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjCubh)}(hhh]jy)}(hslim_controllerh]hslim_controller}(hhhj9ChhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj6Cubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj;CmodnameN classnameNj\-j_-)}jb-]je-)}jX-jCsbc.slim_do_transferasbuh1hhjCubjb)}(h h]h }(hhhjYChhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjCubjy-)}(hj|-h]h*}(hhhjgChhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjCubjy)}(hctrlh]hctrl}(hhhjtChhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjCubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjCubj-)}(hstruct slim_msg_txn *txnh](jP)}(hjSh]hstruct}(hhhjChhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCubjb)}(h h]h }(hhhjChhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjCubh)}(hhh]jy)}(h slim_msg_txnh]h slim_msg_txn}(hhhjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjCubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjCmodnameN classnameNj\-j_-)}jb-]jUCc.slim_do_transferasbuh1hhjCubjb)}(h h]h }(hhhjChhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjCubjy-)}(hj|-h]h*}(hhhjChhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjCubjy)}(htxnh]htxn}(hhhjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjCubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjCubeh}(h]h ]h"]h$]h&]jjuh1j-hjBhhhjBhKcubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjBhhhjBhKcubah}(h]jBah ](jjeh"]h$]h&]juh1jCh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKnhjBhhubj)}(hhh]h)}(h'Process a SLIMbus-messaging transactionh]h'Process a SLIMbus-messaging transaction}(hjDhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKbhj Dhhubah}(h]h ]h"]h$]h&]uh1jhjBhhhjBhKcubeh}(h]h ](jfunctioneh"]h$]h&]jjjj'Djj'Djuh1j>hhhjr;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)}(hj1Dh]h Parameters}(hhhj3DhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/Dubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKfhj+Dubj)}(hhh](j )}(h3``struct slim_controller *ctrl`` Controller handle h](j&)}(h ``struct slim_controller *ctrl``h]j,)}(hjPDh]hstruct slim_controller *ctrl}(hhhjRDhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjNDubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKdhjJDubjB)}(hhh]h)}(hController handleh]hController handle}(hjkDhjiDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeDhKdhjfDubah}(h]h ]h"]h$]h&]uh1jAhjJDubeh}(h]h ]h"]h$]h&]uh1jhjeDhKdhjGDubj )}(hA``struct slim_msg_txn *txn`` Transaction to be sent over SLIMbus h](j&)}(h``struct slim_msg_txn *txn``h]j,)}(hjDh]hstruct slim_msg_txn *txn}(hhhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjDubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKehjDubjB)}(hhh]h)}(h#Transaction to be sent over SLIMbush]h#Transaction to be sent over SLIMbus}(hjDhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKehjDubah}(h]h ]h"]h$]h&]uh1jAhjDubeh}(h]h ]h"]h$]h&]uh1jhjDhKehjGDubeh}(h]h ]h"]h$]h&]uh1jhj+Dubh)}(h**Description**h]j)}(hjDh]h Description}(hhhjDhhhNhNubah}(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.chKghj+Dubh)}(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}(hjDhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKghj+Dubh)}(h **Return**h]j)}(hjDh]hReturn}(hhhjDhhhNhNubah}(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.chKkhj+Dubj)}(hhh]j )}(hw-ETIMEDOUT: If transmission of this message timed out (e.g. due to bus lines not being clocked or driven by controller)h](j&)}(h5-ETIMEDOUT: If transmission of this message timed outh]h5-ETIMEDOUT: If transmission of this message timed out}(hj EhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKkhjEubjB)}(hhh]h)}(hA(e.g. due to bus lines not being clocked or driven by controller)h]hA(e.g. due to bus lines not being clocked or driven by controller)}(hjEhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKlhjEubah}(h]h ]h"]h$]h&]uh1jAhjEubeh}(h]h ]h"]h$]h&]uh1jhjEhKkhjEubah}(h]h ]h"]h$]h&]uh1jhj+Dubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjr;hhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_xfer_msg (C function)c.slim_xfer_msghNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(hNint slim_xfer_msg (struct slim_device *sbdev, struct slim_val_inf *msg, u8 mc)h]jJ)}(hMint slim_xfer_msg(struct slim_device *sbdev, struct slim_val_inf *msg, u8 mc)h](j,)}(hinth]hint}(hhhj[EhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjWEhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKubjb)}(h h]h }(hhhjjEhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjWEhhhjiEhKubjs)}(h slim_xfer_msgh]jy)}(h slim_xfer_msgh]h slim_xfer_msg}(hhhj|EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjxEubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjWEhhhjiEhKubj-)}(h<(struct slim_device *sbdev, struct slim_val_inf *msg, u8 mc)h](j-)}(hstruct slim_device *sbdevh](jP)}(hjSh]hstruct}(hhhjEhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjEubjb)}(h h]h }(hhhjEhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjEubh)}(hhh]jy)}(h slim_deviceh]h slim_device}(hhhjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjEubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjEmodnameN classnameNj\-j_-)}jb-]je-)}jX-j~Esbc.slim_xfer_msgasbuh1hhjEubjb)}(h h]h }(hhhjEhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjEubjy-)}(hj|-h]h*}(hhhjEhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjEubjy)}(hsbdevh]hsbdev}(hhhjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjEubj-)}(hstruct slim_val_inf *msgh](jP)}(hjSh]hstruct}(hhhj FhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjFubjb)}(h h]h }(hhhjFhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjFubh)}(hhh]jy)}(h slim_val_infh]h slim_val_inf}(hhhj(FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj%Fubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj*FmodnameN classnameNj\-j_-)}jb-]jEc.slim_xfer_msgasbuh1hhjFubjb)}(h h]h }(hhhjFFhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjFubjy-)}(hj|-h]h*}(hhhjTFhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjFubjy)}(hmsgh]hmsg}(hhhjaFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjFubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjEubj-)}(hu8 mch](h)}(hhh]jy)}(hu8h]hu8}(hhhj}FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjzFubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjFmodnameN classnameNj\-j_-)}jb-]jEc.slim_xfer_msgasbuh1hhjvFubjb)}(h h]h }(hhhjFhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjvFubjy)}(hmch]hmc}(hhhjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjvFubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjEubeh}(h]h ]h"]h$]h&]jjuh1j-hjWEhhhjiEhKubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjSEhhhjiEhKubah}(h]jNEah ](jjeh"]h$]h&]juh1jCh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjPEhhubj)}(hhh]h)}(h,Transfer a value info message on slim deviceh]h,Transfer a value info message on slim device}(hjFhjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjFhhubah}(h]h ]h"]h$]h&]uh1jhjPEhhhjiEhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjFjjFjuh1j>hhhjr;hNhNubj)}(hX^**Parameters** ``struct slim_device *sbdev`` slim device to which this msg has to be transfered ``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)}(hjFh]h Parameters}(hhhjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjFubj)}(hhh](j )}(hQ``struct slim_device *sbdev`` slim device to which this msg has to be transfered h](j&)}(h``struct slim_device *sbdev``h]j,)}(hjGh]hstruct slim_device *sbdev}(hhhjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjGubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjGubjB)}(hhh]h)}(h2slim device to which this msg has to be transferedh]h2slim device to which this msg has to be transfered}(hj0Ghj.GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*GhKhj+Gubah}(h]h ]h"]h$]h&]uh1jAhjGubeh}(h]h ]h"]h$]h&]uh1jhj*GhKhj Gubj )}(h8``struct slim_val_inf *msg`` value info message pointer h](j&)}(h``struct slim_val_inf *msg``h]j,)}(hjNGh]hstruct slim_val_inf *msg}(hhhjPGhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjLGubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjHGubjB)}(hhh]h)}(hvalue info message pointerh]hvalue info message pointer}(hjiGhjgGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcGhKhjdGubah}(h]h ]h"]h$]h&]uh1jAhjHGubeh}(h]h ]h"]h$]h&]uh1jhjcGhKhj Gubj )}(h&``u8 mc`` message code of the message h](j&)}(h ``u8 mc``h]j,)}(hjGh]hu8 mc}(hhhjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjGubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjGubjB)}(hhh]h)}(hmessage code of the messageh]hmessage code of the message}(hjGhjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhKhjGubah}(h]h ]h"]h$]h&]uh1jAhjGubeh}(h]h ]h"]h$]h&]uh1jhjGhKhj Gubeh}(h]h ]h"]h$]h&]uh1jhjFubh)}(h**Description**h]j)}(hjGh]h Description}(hhhjGhhhNhNubah}(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.chKhjFubh)}(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.}(hjGhjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjFubh)}(h **Return**h]j)}(hjGh]hReturn}(hhhjGhhhNhNubah}(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.chKhjFubh)}(h5-ETIMEDOUT: If transmission of this message timed outh]h5-ETIMEDOUT: If transmission of this message timed out}(hjHhjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chKhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjr;hhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_read (C function) c.slim_readhNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(hIint slim_read (struct slim_device *sdev, u32 addr, size_t count, u8 *val)h]jJ)}(hHint slim_read(struct slim_device *sdev, u32 addr, size_t count, u8 *val)h](j,)}(hinth]hint}(hhhj.HhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj*Hhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMubjb)}(h h]h }(hhhj=HhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj*Hhhhjhhhjr;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)}(hjIh]h Parameters}(hhhjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM!hjIubj)}(hhh](j )}(h,``struct slim_device *sdev`` client handle. h](j&)}(h``struct slim_device *sdev``h]j,)}(hjJh]hstruct slim_device *sdev}(hhhjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjJubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMhjJubjB)}(hhh]h)}(hclient handle.h]hclient handle.}(hj0Jhj.JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*JhMhj+Jubah}(h]h ]h"]h$]h&]uh1jAhjJubeh}(h]h ]h"]h$]h&]uh1jhj*JhMhj Jubj )}(h/``u32 addr`` address of value element to read. h](j&)}(h ``u32 addr``h]j,)}(hjNJh]hu32 addr}(hhhjPJhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjLJubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM hjHJubjB)}(hhh]h)}(h!address of value element to read.h]h!address of value element to read.}(hjiJhjgJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcJhM hjdJubah}(h]h ]h"]h$]h&]uh1jAhjHJubeh}(h]h ]h"]h$]h&]uh1jhjcJhM hj Jubj )}(hH``size_t count`` number of bytes to read. Maximum bytes allowed are 16. h](j&)}(h``size_t count``h]j,)}(hjJh]h size_t count}(hhhjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjJubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM!hjJubjB)}(hhh]h)}(h6number of bytes to read. Maximum bytes allowed are 16.h]h6number of bytes to read. Maximum bytes allowed are 16.}(hjJhjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM!hjJubah}(h]h ]h"]h$]h&]uh1jAhjJubeh}(h]h ]h"]h$]h&]uh1jhjJhM!hj Jubj )}(h9``u8 *val`` will return what the value element value was h](j&)}(h ``u8 *val``h]j,)}(hjJh]hu8 *val}(hhhjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjJubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM"hjJubjB)}(hhh]h)}(h,will return what the value element value wash]h,will return what the value element value was}(hjJhjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM"hjJubah}(h]h ]h"]h$]h&]uh1jAhjJubeh}(h]h ]h"]h$]h&]uh1jhjJhM"hj Jubeh}(h]h ]h"]h$]h&]uh1jhjIubh)}(h **Return**h]j)}(hjJh]hReturn}(hhhjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM$hjIubh)}(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)}(hjKhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM$hjIubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjr;hhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_readb (C function) c.slim_readbhNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(h3int slim_readb (struct slim_device *sdev, u32 addr)h]jJ)}(h2int slim_readb(struct slim_device *sdev, u32 addr)h](j,)}(hinth]hint}(hhhj@KhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjhhhjr;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)}(hjkLh]h Parameters}(hhhjmLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiLubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM7hjeLubj)}(hhh](j )}(h,``struct slim_device *sdev`` client handle. h](j&)}(h``struct slim_device *sdev``h]j,)}(hjLh]hstruct slim_device *sdev}(hhhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjLubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM5hjLubjB)}(hhh]h)}(hclient handle.h]hclient handle.}(hjLhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhM5hjLubah}(h]h ]h"]h$]h&]uh1jAhjLubeh}(h]h ]h"]h$]h&]uh1jhjLhM5hjLubj )}(h3``u32 addr`` address in the value element to read. h](j&)}(h ``u32 addr``h]j,)}(hjLh]hu32 addr}(hhhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjLubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM6hjLubjB)}(hhh]h)}(h%address in the value element to read.h]h%address in the value element to read.}(hjLhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhM6hjLubah}(h]h ]h"]h$]h&]uh1jAhjLubeh}(h]h ]h"]h$]h&]uh1jhjLhM6hjLubeh}(h]h ]h"]h$]h&]uh1jhjeLubh)}(h **Return**h]j)}(hjLh]hReturn}(hhhjMhhhNhNubah}(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.chM8hjeLubh)}(hbyte value of value element.h]hbyte value of value element.}(hjMhjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM8hjeLubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjr;hhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_write (C function) c.slim_writehNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(hJint slim_write (struct slim_device *sdev, u32 addr, size_t count, u8 *val)h]jJ)}(hIint slim_write(struct slim_device *sdev, u32 addr, size_t count, u8 *val)h](j,)}(hinth]hint}(hhhjCMhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj?Mhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMIubjb)}(h h]h }(hhhjRMhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj?MhhhjQMhMIubjs)}(h slim_writeh]jy)}(h slim_writeh]h slim_write}(hhhjdMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj`Mubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj?MhhhjQMhMIubj-)}(h;(struct slim_device *sdev, u32 addr, size_t count, u8 *val)h](j-)}(hstruct slim_device *sdevh](jP)}(hjSh]hstruct}(hhhjMhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj|Mubjb)}(h h]h }(hhhjMhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj|Mubh)}(hhh]jy)}(h slim_deviceh]h slim_device}(hhhjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjMubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjMmodnameN classnameNj\-j_-)}jb-]je-)}jX-jfMsb c.slim_writeasbuh1hhj|Mubjb)}(h h]h }(hhhjMhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj|Mubjy-)}(hj|-h]h*}(hhhjMhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj|Mubjy)}(hsdevh]hsdev}(hhhjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj|Mubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjxMubj-)}(hu32 addrh](h)}(hhh]jy)}(hu32h]hu32}(hhhjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjMubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjMmodnameN classnameNj\-j_-)}jb-]jM c.slim_writeasbuh1hhjMubjb)}(h h]h }(hhhjNhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjMubjy)}(haddrh]haddr}(hhhj!NhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjMubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjxMubj-)}(h size_t counth](h)}(hhh]jy)}(hsize_th]hsize_t}(hhhj=NhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj:Nubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj?NmodnameN classnameNj\-j_-)}jb-]jM c.slim_writeasbuh1hhj6Nubjb)}(h h]h }(hhhj[NhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj6Nubjy)}(hcounth]hcount}(hhhjiNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj6Nubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjxMubj-)}(hu8 *valh](h)}(hhh]jy)}(hu8h]hu8}(hhhjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjNubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjNmodnameN classnameNj\-j_-)}jb-]jM c.slim_writeasbuh1hhj~Nubjb)}(h h]h }(hhhjNhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj~Nubjy-)}(hj|-h]h*}(hhhjNhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj~Nubjy)}(hvalh]hval}(hhhjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj~Nubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjxMubeh}(h]h ]h"]h$]h&]jjuh1j-hj?MhhhjQMhMIubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj;MhhhjQMhMIubah}(h]j6Mah ](jjeh"]h$]h&]juh1jCh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMShj8Mhhubj)}(hhh]h)}(hWrite SLIMbus value elementh]hWrite SLIMbus value element}(hjNhjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMHhjNhhubah}(h]h ]h"]h$]h&]uh1jhj8MhhhjQMhMIubeh}(h]h ](jfunctioneh"]h$]h&]jjjjOjjOjuh1j>hhhjr;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)}(hj Oh]h Parameters}(hhhj OhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Oubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMLhjOubj)}(hhh](j )}(h,``struct slim_device *sdev`` client handle. h](j&)}(h``struct slim_device *sdev``h]j,)}(hj*Oh]hstruct slim_device *sdev}(hhhj,OhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj(Oubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMJhj$OubjB)}(hhh]h)}(hclient handle.h]hclient handle.}(hjEOhjCOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?OhMJhj@Oubah}(h]h ]h"]h$]h&]uh1jAhj$Oubeh}(h]h ]h"]h$]h&]uh1jhj?OhMJhj!Oubj )}(h4``u32 addr`` address in the value element to write. h](j&)}(h ``u32 addr``h]j,)}(hjcOh]hu32 addr}(hhhjeOhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjaOubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMKhj]OubjB)}(hhh]h)}(h&address in the value element to write.h]h&address in the value element to write.}(hj~Ohj|OhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxOhMKhjyOubah}(h]h ]h"]h$]h&]uh1jAhj]Oubeh}(h]h ]h"]h$]h&]uh1jhjxOhMKhj!Oubj )}(hI``size_t count`` number of bytes to write. Maximum bytes allowed are 16. h](j&)}(h``size_t count``h]j,)}(hjOh]h size_t count}(hhhjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjOubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMLhjOubjB)}(hhh]h)}(h7number of bytes to write. Maximum bytes allowed are 16.h]h7number of bytes to write. Maximum bytes allowed are 16.}(hjOhjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMLhjOubah}(h]h ]h"]h$]h&]uh1jAhjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMLhj!Oubj )}(h,``u8 *val`` value to write to value element h](j&)}(h ``u8 *val``h]j,)}(hjOh]hu8 *val}(hhhjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjOubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMMhjOubjB)}(hhh]h)}(hvalue to write to value elementh]hvalue to write to value element}(hjOhjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMMhjOubah}(h]h ]h"]h$]h&]uh1jAhjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMMhj!Oubeh}(h]h ]h"]h$]h&]uh1jhjOubh)}(h **Return**h]j)}(hjPh]hReturn}(hhhjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMOhjOubh)}(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(Phj&PhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMOhjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjr;hhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_writeb (C function) c.slim_writebhNtauh1j-hjr;hhhNhNubj?)}(hhh](jD)}(h>int slim_writeb (struct slim_device *sdev, u32 addr, u8 value)h]jJ)}(h=int slim_writeb(struct slim_device *sdev, u32 addr, u8 value)h](j,)}(hinth]hint}(hhhjUPhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjQPhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM_ubjb)}(h h]h }(hhhjdPhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjQPhhhjcPhM_ubjs)}(h slim_writebh]jy)}(h slim_writebh]h slim_writeb}(hhhjvPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjrPubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjQPhhhjcPhM_ubj-)}(h.(struct slim_device *sdev, u32 addr, u8 value)h](j-)}(hstruct slim_device *sdevh](jP)}(hjSh]hstruct}(hhhjPhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjPubjb)}(h h]h }(hhhjPhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjPubh)}(hhh]jy)}(h slim_deviceh]h slim_device}(hhhjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjPubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjPmodnameN classnameNj\-j_-)}jb-]je-)}jX-jxPsb c.slim_writebasbuh1hhjPubjb)}(h h]h }(hhhjPhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjPubjy-)}(hj|-h]h*}(hhhjPhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjPubjy)}(hsdevh]hsdev}(hhhjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjPubj-)}(hu32 addrh](h)}(hhh]jy)}(hu32h]hu32}(hhhjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjQubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj QmodnameN classnameNj\-j_-)}jb-]jP c.slim_writebasbuh1hhjQubjb)}(h h]h }(hhhj%QhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjQubjy)}(haddrh]haddr}(hhhj3QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjQubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjPubj-)}(hu8 valueh](h)}(hhh]jy)}(hu8h]hu8}(hhhjOQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjLQubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjQQmodnameN classnameNj\-j_-)}jb-]jP c.slim_writebasbuh1hhjHQubjb)}(h h]h }(hhhjmQhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjHQubjy)}(hvalueh]hvalue}(hhhj{QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjHQubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjPubeh}(h]h ]h"]h$]h&]jjuh1j-hjQPhhhjcPhM_ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjMPhhhjcPhM_ubah}(h]jHPah ](jjeh"]h$]h&]juh1jCh_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMihjJPhhubj)}(hhh]h)}(h#Write byte to SLIMbus value elementh]h#Write byte to SLIMbus value element}(hjQhjQhhhNhNubah}(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&]uh1jhjJPhhhjcPhM_ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQjjQjuh1j>hhhjr;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)}(hjQh]h Parameters}(hhhjQhhhNhNubah}(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.chMbhjQubj)}(hhh](j )}(h,``struct slim_device *sdev`` client handle. h](j&)}(h``struct slim_device *sdev``h]j,)}(hjQh]hstruct slim_device *sdev}(hhhjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjQubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chM`hjQubjB)}(hhh]h)}(hclient handle.h]hclient handle.}(hjRhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhM`hjQubah}(h]h ]h"]h$]h&]uh1jAhjQubeh}(h]h ]h"]h$]h&]uh1jhjQhM`hjQubj )}(h0``u32 addr`` address of value element to write. h](j&)}(h ``u32 addr``h]j,)}(hj Rh]hu32 addr}(hhhj"RhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjRubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMahjRubjB)}(hhh]h)}(h"address of value element to write.h]h"address of value element to write.}(hj;Rhj9RhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5RhMahj6Rubah}(h]h ]h"]h$]h&]uh1jAhjRubeh}(h]h ]h"]h$]h&]uh1jhj5RhMahjQubj )}(h-``u8 value`` value to write to value element h](j&)}(h ``u8 value``h]j,)}(hjYRh]hu8 value}(hhhj[RhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjWRubah}(h]h ]h"]h$]h&]uh1j%h_/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:126: ./drivers/slimbus/messaging.chMbhjSRubjB)}(hhh]h)}(hvalue to write to value elementh]hvalue to write to value element}(hjtRhjrRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnRhMbhjoRubah}(h]h ]h"]h$]h&]uh1jAhjSRubeh}(h]h ]h"]h$]h&]uh1jhjnRhMbhjQubeh}(h]h ]h"]h$]h&]uh1jhjQubh)}(h **Return**h]j)}(hjRh]hReturn}(hhhjRhhhNhNubah}(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)}(hjRhjRhhhNhNubah}(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&]uh1jhjr;hhhNhNubeh}(h]messaging-apisah ]h"]messaging apis:ah$]h&]uh1hhjS;hhhhhK}ubh)}(hhh](h)}(hStreaming APIs:h]hStreaming APIs:}(hjRhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhhhhhKubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:!slim_stream_allocate (C function)c.slim_stream_allocatehNtauh1j-hjRhhhNhNubj?)}(hhh](jD)}(h]struct slim_stream_runtime * slim_stream_allocate (struct slim_device *dev, const char *name)h]jJ)}(h[struct slim_stream_runtime *slim_stream_allocate(struct slim_device *dev, const char *name)h](jP)}(hjSh]hstruct}(hhhjRhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjRhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKYubjb)}(h h]h }(hhhjShhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjRhhhjRhKYubh)}(hhh]jy)}(hslim_stream_runtimeh]hslim_stream_runtime}(hhhjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjSubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjSmodnameN classnameNj\-j_-)}jb-]je-)}jX-slim_stream_allocatesbc.slim_stream_allocateasbuh1hhjRhhhjRhKYubjb)}(h h]h }(hhhj2ShhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjRhhhjRhKYubjy-)}(hj|-h]h*}(hhhj@ShhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjRhhhjRhKYubjs)}(hslim_stream_allocateh]jy)}(hj/Sh]hslim_stream_allocate}(hhhjQShhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjMSubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjRhhhjRhKYubj-)}(h+(struct slim_device *dev, const char *name)h](j-)}(hstruct slim_device *devh](jP)}(hjSh]hstruct}(hhhjlShhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhSubjb)}(h h]h }(hhhjyShhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjhSubh)}(hhh]jy)}(h slim_deviceh]h slim_device}(hhhjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjSubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjSmodnameN classnameNj\-j_-)}jb-]j-Sc.slim_stream_allocateasbuh1hhjhSubjb)}(h h]h }(hhhjShhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjhSubjy-)}(hj|-h]h*}(hhhjShhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjhSubjy)}(hdevh]hdev}(hhhjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjhSubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjdSubj-)}(hconst char *nameh](jP)}(hconsth]hconst}(hhhjShhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjSubjb)}(h h]h }(hhhjShhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjSubj,)}(hcharh]hchar}(hhhjShhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjSubjb)}(h h]h }(hhhjThhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjSubjy-)}(hj|-h]h*}(hhhjThhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjSubjy)}(hnameh]hname}(hhhj!ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjSubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjdSubeh}(h]h ]h"]h$]h&]jjuh1j-hjRhhhjRhKYubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjRhhhjRhKYubah}(h]jRah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKchjRhhubj)}(hhh]h)}(hAllocate a new SLIMbus Streamh]hAllocate a new SLIMbus Stream}(hjNThjLThhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKXhjIThhubah}(h]h ]h"]h$]h&]uh1jhjRhhhjRhKYubeh}(h]h ](jfunctioneh"]h$]h&]jjjjdTjjdTjuh1j>hhhjRhNhNubj)}(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)}(hjnTh]h Parameters}(hhhjpThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlTubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chK\hjhTubj)}(hhh](j )}(h>``struct slim_device *dev`` Slim device to be associated with h](j&)}(h``struct slim_device *dev``h]j,)}(hjTh]hstruct slim_device *dev}(hhhjThhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjTubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKYhjTubjB)}(hhh]h)}(h!Slim device to be associated withh]h!Slim device to be associated with}(hjThjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKYhjTubah}(h]h ]h"]h$]h&]uh1jAhjTubeh}(h]h ]h"]h$]h&]uh1jhjThKYhjTubj )}(h(``const char *name`` name of the stream h](j&)}(h``const char *name``h]j,)}(hjTh]hconst char *name}(hhhjThhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjTubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKZhjTubjB)}(hhh]h)}(hname of the streamh]hname of the stream}(hjThjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKZhjTubah}(h]h ]h"]h$]h&]uh1jAhjTubeh}(h]h ]h"]h$]h&]uh1jhjThKZhjTubeh}(h]h ]h"]h$]h&]uh1jhjhTubh)}(h**Description**h]j)}(hjUh]h Description}(hhhjUhhhNhNubah}(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\hjhTubh)}(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}(hjUhjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chK\hjhTubh)}(h **Return**h]j)}(hj(Uh]hReturn}(hhhj*UhhhNhNubah}(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.chK`hjhTubh)}(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.}(hj@Uhj>UhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chK`hjhTubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjRhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j: slim_stream_prepare (C function)c.slim_stream_preparehNtauh1j-hjRhhhNhNubj?)}(hhh](jD)}(hXint slim_stream_prepare (struct slim_stream_runtime *rt, struct slim_stream_config *cfg)h]jJ)}(hWint slim_stream_prepare(struct slim_stream_runtime *rt, struct slim_stream_config *cfg)h](j,)}(hinth]hint}(hhhjmUhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjiUhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKubjb)}(h h]h }(hhhj|UhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjiUhhhj{UhKubjs)}(hslim_stream_prepareh]jy)}(hslim_stream_prepareh]hslim_stream_prepare}(hhhjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjUubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjiUhhhj{UhKubj-)}(h@(struct slim_stream_runtime *rt, struct slim_stream_config *cfg)h](j-)}(hstruct slim_stream_runtime *rth](jP)}(hjSh]hstruct}(hhhjUhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjUubjb)}(h h]h }(hhhjUhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjUubh)}(hhh]jy)}(hslim_stream_runtimeh]hslim_stream_runtime}(hhhjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjUubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjUmodnameN classnameNj\-j_-)}jb-]je-)}jX-jUsbc.slim_stream_prepareasbuh1hhjUubjb)}(h h]h }(hhhjUhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjUubjy-)}(hj|-h]h*}(hhhjUhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjUubjy)}(hrth]hrt}(hhhjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjUubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjUubj-)}(hstruct slim_stream_config *cfgh](jP)}(hjSh]hstruct}(hhhjVhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjVubjb)}(h h]h }(hhhj)VhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjVubh)}(hhh]jy)}(hslim_stream_configh]hslim_stream_config}(hhhj:VhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj7Vubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjhhhjRhNhNubj)}(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}(hhhjVhhhNhNubah}(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.chKhjVubj)}(hhh](j )}(hP``struct slim_stream_runtime *rt`` instance of slim stream runtime to configure h](j&)}(h"``struct slim_stream_runtime *rt``h]j,)}(hjVh]hstruct slim_stream_runtime *rt}(hhhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjVubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKhjVubjB)}(hhh]h)}(h,instance of slim stream runtime to configureh]h,instance of slim stream runtime to configure}(hjVhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjVubah}(h]h ]h"]h$]h&]uh1jAhjVubeh}(h]h ]h"]h$]h&]uh1jhjVhKhjVubj )}(hD``struct slim_stream_config *cfg`` new configuration for the stream h](j&)}(h"``struct slim_stream_config *cfg``h]j,)}(hjWh]hstruct slim_stream_config *cfg}(hhhjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjWubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chKhjWubjB)}(hhh]h)}(h new configuration for the streamh]h new configuration for the stream}(hj3Whj1WhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-WhKhj.Wubah}(h]h ]h"]h$]h&]uh1jAhjWubeh}(h]h ]h"]h$]h&]uh1jhj-WhKhjVubeh}(h]h ]h"]h$]h&]uh1jhjVubh)}(h**Description**h]j)}(hjSWh]h Description}(hhhjUWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQWubah}(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.}(hjkWhjiWhhhNhNubah}(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&]uh1jhjRhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_stream_enable (C function)c.slim_stream_enablehNtauh1j-hjRhhhNhNubj?)}(hhh](jD)}(h;int slim_stream_enable (struct slim_stream_runtime *stream)h]jJ)}(h:int slim_stream_enable(struct slim_stream_runtime *stream)h](j,)}(hinth]hint}(hhhjWhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjWhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM\ubjb)}(h h]h }(hhhjWhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjWhhhjWhM\ubjs)}(hslim_stream_enableh]jy)}(hslim_stream_enableh]hslim_stream_enable}(hhhjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjWubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjWhhhjWhM\ubj-)}(h$(struct slim_stream_runtime *stream)h]j-)}(h"struct slim_stream_runtime *streamh](jP)}(hjSh]hstruct}(hhhjWhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjWubjb)}(h h]h }(hhhjWhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjWubh)}(hhh]jy)}(hslim_stream_runtimeh]hslim_stream_runtime}(hhhjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjWubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjWmodnameN classnameNj\-j_-)}jb-]je-)}jX-jWsbc.slim_stream_enableasbuh1hhjWubjb)}(h h]h }(hhhjXhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjWubjy-)}(hj|-h]h*}(hhhj!XhhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hjWubjy)}(hstreamh]hstream}(hhhj.XhhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjWubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hjWubah}(h]h ]h"]h$]h&]jjuh1j-hjWhhhjWhM\ubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjWhhhjWhM\ubah}(h]jWah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMehjWhhubj)}(hhh]h)}(h Enable a prepared SLIMbus Streamh]h Enable a prepared SLIMbus Stream}(hj[XhjYXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM[hjVXhhubah}(h]h ]h"]h$]h&]uh1jhjWhhhjWhM\ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjqXjjqXjuh1j>hhhjRhNhNubj)}(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)}(hj{Xh]h Parameters}(hhhj}XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyXubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM_hjuXubj)}(hhh]j )}(hQ``struct slim_stream_runtime *stream`` instance of slim stream runtime to enable h](j&)}(h&``struct slim_stream_runtime *stream``h]j,)}(hjXh]h"struct slim_stream_runtime *stream}(hhhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjXubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM]hjXubjB)}(hhh]h)}(h)instance of slim stream runtime to enableh]h)instance of slim stream runtime to enable}(hjXhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhM]hjXubah}(h]h ]h"]h$]h&]uh1jAhjXubeh}(h]h ]h"]h$]h&]uh1jhjXhM]hjXubah}(h]h ]h"]h$]h&]uh1jhjuXubh)}(h**Description**h]j)}(hjXh]h Description}(hhhjXhhhNhNubah}(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.chM_hjuXubh)}(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}(hjXhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chM_hjuXubh)}(h **Return**h]j)}(hjXh]hReturn}(hhhjXhhhNhNubah}(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.chMbhjuXubh)}(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.}(hjYhjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMbhjuXubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjRhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j: slim_stream_disable (C function)c.slim_stream_disablehNtauh1j-hjRhhhNhNubj?)}(hhh](jD)}(hhhhjRhNhNubj)}(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)}(hj$Zh]h Parameters}(hhhj&ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"Zubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjZubj)}(hhh]j )}(hR``struct slim_stream_runtime *stream`` instance of slim stream runtime to disable h](j&)}(h&``struct slim_stream_runtime *stream``h]j,)}(hjCZh]h"struct slim_stream_runtime *stream}(hhhjEZhhhNhNubah}(h]h ]h"]h$]h&]uh1j+hjAZubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj=ZubjB)}(hhh]h)}(h*instance of slim stream runtime to disableh]h*instance of slim stream runtime to disable}(hj^Zhj\ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXZhMhjYZubah}(h]h ]h"]h$]h&]uh1jAhj=Zubeh}(h]h ]h"]h$]h&]uh1jhjXZhMhj:Zubah}(h]h ]h"]h$]h&]uh1jhjZubh)}(h**Description**h]j)}(hj~Zh]h Description}(hhhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Zubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjZubh)}(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}(hjZhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjZubh)}(h **Return**h]j)}(hjZh]hReturn}(hhhjZhhhNhNubah}(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.chMhjZubh)}(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.}(hjZhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjRhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:"slim_stream_unprepare (C function)c.slim_stream_unpreparehNtauh1j-hjRhhhNhNubj?)}(hhh](jD)}(h>int slim_stream_unprepare (struct slim_stream_runtime *stream)h]jJ)}(h=int slim_stream_unprepare(struct slim_stream_runtime *stream)h](j,)}(hinth]hint}(hhhjZhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hjZhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMubjb)}(h h]h }(hhhjZhhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahjZhhhjZhMubjs)}(hslim_stream_unprepareh]jy)}(hslim_stream_unprepareh]hslim_stream_unprepare}(hhhj [hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj[ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhjZhhhjZhMubj-)}(h$(struct slim_stream_runtime *stream)h]j-)}(h"struct slim_stream_runtime *streamh](jP)}(hjSh]hstruct}(hhhj'[hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj#[ubjb)}(h h]h }(hhhj4[hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj#[ubh)}(hhh]jy)}(hslim_stream_runtimeh]hslim_stream_runtime}(hhhjE[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhjB[ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetjG[modnameN classnameNj\-j_-)}jb-]je-)}jX-j [sbc.slim_stream_unprepareasbuh1hhj#[ubjb)}(h h]h }(hhhje[hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj#[ubjy-)}(hj|-h]h*}(hhhjs[hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj#[ubjy)}(hstreamh]hstream}(hhhj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj#[ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj[ubah}(h]h ]h"]h$]h&]jjuh1j-hjZhhhjZhMubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhjZhhhjZhMubah}(h]jZah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjZhhubj)}(hhh]h)}(hUn-prepare a SLIMbus Streamh]hUn-prepare a SLIMbus Stream}(hj[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&]uh1jhjZhhhjZhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj[jj[juh1j>hhhjRhNhNubj)}(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}(hhhj[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[ubj)}(hhh]j )}(hT``struct slim_stream_runtime *stream`` instance of slim stream runtime to unprepare h](j&)}(h&``struct slim_stream_runtime *stream``h]j,)}(hj[h]h"struct slim_stream_runtime *stream}(hhhj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj[ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj[ubjB)}(hhh]h)}(h,instance of slim stream runtime to unprepareh]h,instance of slim stream runtime to unprepare}(hj\hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hMhj\ubah}(h]h ]h"]h$]h&]uh1jAhj[ubeh}(h]h ]h"]h$]h&]uh1jhj\hMhj[ubah}(h]h ]h"]h$]h&]uh1jhj[ubh)}(h**Description**h]j)}(hj'\h]h Description}(hhhj)\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)}(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}(hj?\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)}(hjN\h]hReturn}(hhhjP\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL\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.}(hjf\hjd\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&]uh1jhjRhhhNhNubj.)}(hhh]h}(h]h ]h"]h$]h&]entries](j:slim_stream_free (C function)c.slim_stream_freehNtauh1j-hjRhhhNhNubj?)}(hhh](jD)}(h9int slim_stream_free (struct slim_stream_runtime *stream)h]jJ)}(h8int slim_stream_free(struct slim_stream_runtime *stream)h](j,)}(hinth]hint}(hhhj\hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1j,hj\hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMubjb)}(h h]h }(hhhj\hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj\hhhj\hMubjs)}(hslim_stream_freeh]jy)}(hslim_stream_freeh]hslim_stream_free}(hhhj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj\ubah}(h]h ](jjeh"]h$]h&]jjuh1jrhj\hhhj\hMubj-)}(h$(struct slim_stream_runtime *stream)h]j-)}(h"struct slim_stream_runtime *streamh](jP)}(hjSh]hstruct}(hhhj\hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj\ubjb)}(h h]h }(hhhj\hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj\ubh)}(hhh]jy)}(hslim_stream_runtimeh]hslim_stream_runtime}(hhhj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj\ubah}(h]h ]h"]h$]h&] refdomainjreftypejX- reftargetj\modnameN classnameNj\-j_-)}jb-]je-)}jX-j\sbc.slim_stream_freeasbuh1hhj\ubjb)}(h h]h }(hhhj]hhhNhNubah}(h]h ]jnah"]h$]h&]uh1jahj\ubjy-)}(hj|-h]h*}(hhhj]hhhNhNubah}(h]h ]j-ah"]h$]h&]uh1jx-hj\ubjy)}(hstreamh]hstream}(hhhj)]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jxhj\ubeh}(h]h ]h"]h$]h&]noemphjjuh1j-hj\ubah}(h]h ]h"]h$]h&]jjuh1j-hj\hhhj\hMubeh}(h]h ]h"]h$]h&]jjjuh1jIjjhj\hhhj\hMubah}(h]j\ah ](jjeh"]h$]h&]juh1jCh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj\hhubj)}(hhh]h)}(hFree a SLIMbus Streamh]hFree a SLIMbus Stream}(hjV]hjT]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjQ]hhubah}(h]h ]h"]h$]h&]uh1jhj\hhhj\hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjl]jjl]juh1j>hhhjRhNhNubj)}(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)}(hjv]h]h Parameters}(hhhjx]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt]ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjp]ubj)}(hhh]j )}(hO``struct slim_stream_runtime *stream`` instance of slim stream runtime to free h](j&)}(h&``struct slim_stream_runtime *stream``h]j,)}(hj]h]h"struct slim_stream_runtime *stream}(hhhj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j+hj]ubah}(h]h ]h"]h$]h&]uh1j%h\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhj]ubjB)}(hhh]h)}(h'instance of slim stream runtime to freeh]h'instance of slim stream runtime to free}(hj]hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMhj]ubah}(h]h ]h"]h$]h&]uh1jAhj]ubeh}(h]h ]h"]h$]h&]uh1jhj]hMhj]ubah}(h]h ]h"]h$]h&]uh1jhjp]ubh)}(h**Description**h]j)}(hj]h]h Description}(hhhj]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.chMhjp]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]hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.chMhjp]ubh)}(h **Return**h]j)}(hj]h]hReturn}(hhhj]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.chMhjp]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^hj ^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/slimbus:131: ./drivers/slimbus/stream.c> hMhjp]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjRhhhNhNubeh}(h]streaming-apisah ]h"]streaming apis:ah$]h&]uh1hhjS;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_handlerjf^error_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confapep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacefile_insertion_enabled raw_enabledKline_length_limitM'syntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_link embed_imagesenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j@^j=^j8^j5^jjjjjjjjj8j8jP;jM;jH;jE;j0^j-^jRjRj(^j%^u nametypes}(j@^Nj8^NjNjNjNjNj8NjP;NjH;Nj0^NjRNj(^Nuh}(j=^hj5^hjhjjjjjjj8jj<jEj%j*jvj{j6j;j_ jd jN jS jtjyjjj6j;j jjZj_jjjjj@jEjtjyjjjMjRjt jy j)"j."j$j$j'j'j,j,jB.jG.j/j/j2j 2jj4jo4j#7j(7jM;j8jE;j8j8j8j-^jS;jRjr;j;j;j>j>j@j@jBjBjNEjSEj!Hj&Hj3Kj8Kj6Mj;MjHPjMPj%^jRjRjRj`UjeUjWjWj4Yj9YjZjZj\j\u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.