€•¸fŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ0/translations/zh_CN/driver-api/soundwire/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/zh_TW/driver-api/soundwire/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/it_IT/driver-api/soundwire/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/ja_JP/driver-api/soundwire/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/ko_KR/driver-api/soundwire/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/pt_BR/driver-api/soundwire/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/sp_SP/driver-api/soundwire/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒSoundWire Subsystem Summary”h]”hŒSoundWire Subsystem Summary”…””}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒJ/var/lib/git/docbuild/linux/Documentation/driver-api/soundwire/summary.rst”h´KubhŒ paragraph”“”)”}”(hŒóSoundWire is a new interface ratified in 2015 by the MIPI Alliance. SoundWire is used for transporting data typically related to audio functions. SoundWire interface is optimized to integrate audio devices in mobile or mobile inspired systems.”h]”hŒóSoundWire is a new interface ratified in 2015 by the MIPI Alliance. SoundWire is used for transporting data typically related to audio functions. SoundWire interface is optimized to integrate audio devices in mobile or mobile inspired systems.”…””}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hŒÉSoundWire is a 2-pin multi-drop interface with data and clock line. It facilitates development of low cost, efficient, high performance systems. Broad level key features of SoundWire interface include:”h]”hŒÉSoundWire is a 2-pin multi-drop interface with data and clock line. It facilitates development of low cost, efficient, high performance systems. Broad level key features of SoundWire interface include:”…””}”(hhÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubhŒ block_quote”“”)”}”(hX¼(1) Transporting all of payload data channels, control information, and setup commands over a single two-pin interface. (2) Lower clock frequency, and hence lower power consumption, by use of DDR (Dual Data Rate) data transmission. (3) Clock scaling and optional multiple data lanes to give wide flexibility in data rate to match system requirements. (4) Device status monitoring, including interrupt-style alerts to the Master. ”h]”hŒenumerated_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒtTransporting all of payload data channels, control information, and setup commands over a single two-pin interface. ”h]”hÌ)”}”(hŒsTransporting all of payload data channels, control information, and setup commands over a single two-pin interface.”h]”hŒsTransporting all of payload data channels, control information, and setup commands over a single two-pin interface.”…””}”(hhúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhöubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhhñubhõ)”}”(hŒlLower clock frequency, and hence lower power consumption, by use of DDR (Dual Data Rate) data transmission. ”h]”hÌ)”}”(hŒkLower clock frequency, and hence lower power consumption, by use of DDR (Dual Data Rate) data transmission.”h]”hŒkLower clock frequency, and hence lower power consumption, by use of DDR (Dual Data Rate) data transmission.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhhñubhõ)”}”(hŒsClock scaling and optional multiple data lanes to give wide flexibility in data rate to match system requirements. ”h]”hÌ)”}”(hŒrClock scaling and optional multiple data lanes to give wide flexibility in data rate to match system requirements.”h]”hŒrClock scaling and optional multiple data lanes to give wide flexibility in data rate to match system requirements.”…””}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhhñubhõ)”}”(hŒJDevice status monitoring, including interrupt-style alerts to the Master. ”h]”hÌ)”}”(hŒIDevice status monitoring, including interrupt-style alerts to the Master.”h]”hŒIDevice status monitoring, including interrupt-style alerts to the Master.”…””}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhhñubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”Œ(”Œsuffix”Œ)”uh1hïhhëubah}”(h]”h ]”h"]”h$]”h&]”uh1héh³hÊh´Khh·h²hubhÌ)”}”(hX_The SoundWire protocol supports up to eleven Slave interfaces. All the interfaces share the common Bus containing data and clock line. Each of the Slaves can support up to 14 Data Ports. 13 Data Ports are dedicated to audio transport. Data Port0 is dedicated to transport of Bulk control information, each of the audio Data Ports (1..14) can support up to 8 Channels in transmit or receiving mode (typically fixed direction but configurable direction is enabled by the specification). Bandwidth restrictions to ~19.2..24.576Mbits/s don't however allow for 11*13*8 channels to be transmitted simultaneously.”h]”hXaThe SoundWire protocol supports up to eleven Slave interfaces. All the interfaces share the common Bus containing data and clock line. Each of the Slaves can support up to 14 Data Ports. 13 Data Ports are dedicated to audio transport. Data Port0 is dedicated to transport of Bulk control information, each of the audio Data Ports (1..14) can support up to 8 Channels in transmit or receiving mode (typically fixed direction but configurable direction is enabled by the specification). Bandwidth restrictions to ~19.2..24.576Mbits/s don’t however allow for 11*13*8 channels to be transmitted simultaneously.”…””}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hŒbBelow figure shows an example of connectivity between a SoundWire Master and two Slave devices. ::”h]”hŒ_Below figure shows an example of connectivity between a SoundWire Master and two Slave devices.”…””}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K#hh·h²hubhŒ literal_block”“”)”}”(hXÿ+---------------+ +---------------+ | | Clock Signal | | | Master |-------+-------------------------------| Slave | | Interface | | Data Signal | Interface 1 | | |-------|-------+-----------------------| | +---------------+ | | +---------------+ | | | | | | +--+-------+--+ | | | Slave | | Interface 2 | | | +-------------+”h]”hXÿ+---------------+ +---------------+ | | Clock Signal | | | Master |-------+-------------------------------| Slave | | Interface | | Data Signal | Interface 1 | | |-------|-------+-----------------------| | +---------------+ | | +---------------+ | | | | | | +--+-------+--+ | | | Slave | | Interface 2 | | | +-------------+”…””}”hj†sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j„h³hÊh´K&hh·h²hubh¶)”}”(hhh]”(h»)”}”(hŒ Terminology”h]”hŒ Terminology”…””}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj–h²hh³hÊh´K8ubhÌ)”}”(hXBThe MIPI SoundWire specification uses the term 'device' to refer to a Master or Slave interface, which of course can be confusing. In this summary and code we use the term interface only to refer to the hardware. We follow the Linux device model by mapping each Slave interface connected on the bus as a device managed by a specific driver. The Linux SoundWire subsystem provides a framework to implement a SoundWire Slave driver with an API allowing 3rd-party vendors to enable implementation-defined functionality while common setup/configuration tasks are handled by the bus.”h]”hXFThe MIPI SoundWire specification uses the term ‘device’ to refer to a Master or Slave interface, which of course can be confusing. In this summary and code we use the term interface only to refer to the hardware. We follow the Linux device model by mapping each Slave interface connected on the bus as a device managed by a specific driver. The Linux SoundWire subsystem provides a framework to implement a SoundWire Slave driver with an API allowing 3rd-party vendors to enable implementation-defined functionality while common setup/configuration tasks are handled by the bus.”…””}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K:hj–h²hubhÌ)”}”(hŒÍBus: Implements SoundWire Linux Bus which handles the SoundWire protocol. Programs all the MIPI-defined Slave registers. Represents a SoundWire Master. Multiple instances of Bus may be present in a system.”h]”hŒÍBus: Implements SoundWire Linux Bus which handles the SoundWire protocol. Programs all the MIPI-defined Slave registers. Represents a SoundWire Master. Multiple instances of Bus may be present in a system.”…””}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KChj–h²hubhÌ)”}”(hŒqSlave: Registers as SoundWire Slave device (Linux Device). Multiple Slave devices can register to a Bus instance.”h]”hŒqSlave: Registers as SoundWire Slave device (Linux Device). Multiple Slave devices can register to a Bus instance.”…””}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KHhj–h²hubhÌ)”}”(hX^Slave driver: Driver controlling the Slave device. MIPI-specified registers are controlled directly by the Bus (and transmitted through the Master driver/interface). Any implementation-defined Slave register is controlled by Slave driver. In practice, it is expected that the Slave driver relies on regmap and does not request direct register access.”h]”hX^Slave driver: Driver controlling the Slave device. MIPI-specified registers are controlled directly by the Bus (and transmitted through the Master driver/interface). Any implementation-defined Slave register is controlled by Slave driver. In practice, it is expected that the Slave driver relies on regmap and does not request direct register access.”…””}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KLhj–h²hubeh}”(h]”Œ terminology”ah ]”h"]”Œ terminology”ah$]”h&]”uh1hµhh·h²hh³hÊh´K8ubh¶)”}”(hhh]”(h»)”}”(hŒ:Programming interfaces (SoundWire Master interface Driver)”h]”hŒ:Programming interfaces (SoundWire Master interface Driver)”…””}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjçh²hh³hÊh´KTubhÌ)”}”(hŒËSoundWire Bus supports programming interfaces for the SoundWire Master implementation and SoundWire Slave devices. All the code uses the "sdw" prefix commonly used by SoC designers and 3rd party vendors.”h]”hŒÏSoundWire Bus supports programming interfaces for the SoundWire Master implementation and SoundWire Slave devices. All the code uses the “sdw†prefix commonly used by SoC designers and 3rd party vendors.”…””}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KVhjçh²hubhÌ)”}”(hX‘Each of the SoundWire Master interfaces needs to be registered to the Bus. Bus implements API to read standard Master MIPI properties and also provides callback in Master ops for Master driver to implement its own functions that provides capabilities information. DT support is not implemented at this time but should be trivial to add since capabilities are enabled with the ``device_property_`` API.”h]”(hXxEach of the SoundWire Master interfaces needs to be registered to the Bus. Bus implements API to read standard Master MIPI properties and also provides callback in Master ops for Master driver to implement its own functions that provides capabilities information. DT support is not implemented at this time but should be trivial to add since capabilities are enabled with the ”…””}”(hjh²hh³Nh´NubhŒliteral”“”)”}”(hŒ``device_property_``”h]”hŒdevice_property_”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ API.”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KZhjçh²hubhÌ)”}”(hŒqThe Master interface along with the Master interface capabilities are registered based on board file, DT or ACPI.”h]”hŒqThe Master interface along with the Master interface capabilities are registered based on board file, DT or ACPI.”…””}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kahjçh²hubhÌ)”}”(hŒ7Following is the Bus API to register the SoundWire Bus:”h]”hŒ7Following is the Bus API to register the SoundWire Bus:”…””}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kdhjçh²hubj…)”}”(hX´int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent, struct fwnode_handle) { sdw_master_device_add(bus, parent, fwnode); mutex_init(&bus->lock); INIT_LIST_HEAD(&bus->slaves); /* Check ACPI for Slave devices */ sdw_acpi_find_slaves(bus); /* Check DT for Slave devices */ sdw_of_find_slaves(bus); return 0; }”h]”hX´int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent, struct fwnode_handle) { sdw_master_device_add(bus, parent, fwnode); mutex_init(&bus->lock); INIT_LIST_HEAD(&bus->slaves); /* Check ACPI for Slave devices */ sdw_acpi_find_slaves(bus); /* Check DT for Slave devices */ sdw_of_find_slaves(bus); return 0; }”…””}”hjDsbah}”(h]”h ]”h"]”h$]”h&]”j”j•Œforce”‰Œlanguage”Œc”Œhighlight_args”}”uh1j„h³hÊh´Kfhjçh²hubhÌ)”}”(hŒThis will initialize sdw_bus object for Master device. "sdw_master_ops" and "sdw_master_port_ops" callback functions are provided to the Bus.”h]”hŒ•This will initialize sdw_bus object for Master device. “sdw_master_ops†and “sdw_master_port_ops†callback functions are provided to the Bus.”…””}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kzhjçh²hubhÌ)”}”(hXG"sdw_master_ops" is used by Bus to control the Bus in the hardware specific way. It includes Bus control functions such as sending the SoundWire read/write messages on Bus, setting up clock frequency & Stream Synchronization Point (SSP). The "sdw_master_ops" structure abstracts the hardware details of the Master from the Bus.”h]”hXO“sdw_master_ops†is used by Bus to control the Bus in the hardware specific way. It includes Bus control functions such as sending the SoundWire read/write messages on Bus, setting up clock frequency & Stream Synchronization Point (SSP). The “sdw_master_ops†structure abstracts the hardware details of the Master from the Bus.”…””}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K}hjçh²hubhÌ)”}”(hXŸ"sdw_master_port_ops" is used by Bus to setup the Port parameters of the Master interface Port. Master interface Port register map is not defined by MIPI specification, so Bus calls the "sdw_master_port_ops" callback function to do Port operations like "Port Prepare", "Port Transport params set", "Port enable and disable". The implementation of the Master driver can then perform hardware-specific configurations.”h]”hX³“sdw_master_port_ops†is used by Bus to setup the Port parameters of the Master interface Port. Master interface Port register map is not defined by MIPI specification, so Bus calls the “sdw_master_port_ops†callback function to do Port operations like “Port Prepareâ€, “Port Transport params setâ€, “Port enable and disableâ€. The implementation of the Master driver can then perform hardware-specific configurations.”…””}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kƒhjçh²hubeh}”(h]”Œ8programming-interfaces-soundwire-master-interface-driver”ah ]”h"]”Œ:programming interfaces (soundwire master interface driver)”ah$]”h&]”uh1hµhh·h²hh³hÊh´KTubh¶)”}”(hhh]”(h»)”}”(hŒ/Programming interfaces (SoundWire Slave Driver)”h]”hŒ/Programming interfaces (SoundWire Slave Driver)”…””}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj‰h²hh³hÊh´K‹ubhÌ)”}”(hXáThe MIPI specification requires each Slave interface to expose a unique 48-bit identifier, stored in 6 read-only dev_id registers. This dev_id identifier contains vendor and part information, as well as a field enabling to differentiate between identical components. An additional class field is currently unused. Slave driver is written for a specific vendor and part identifier, Bus enumerates the Slave device based on these two ids. Slave device and driver match is done based on these two ids . Probe of the Slave driver is called by Bus on successful match between device and driver id. A parent/child relationship is enforced between Master and Slave devices (the logical representation is aligned with the physical connectivity).”h]”hXáThe MIPI specification requires each Slave interface to expose a unique 48-bit identifier, stored in 6 read-only dev_id registers. This dev_id identifier contains vendor and part information, as well as a field enabling to differentiate between identical components. An additional class field is currently unused. Slave driver is written for a specific vendor and part identifier, Bus enumerates the Slave device based on these two ids. Slave device and driver match is done based on these two ids . Probe of the Slave driver is called by Bus on successful match between device and driver id. A parent/child relationship is enforced between Master and Slave devices (the logical representation is aligned with the physical connectivity).”…””}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj‰h²hubhÌ)”}”(hXÒThe information on Master/Slave dependencies is stored in platform data, board-file, ACPI or DT. The MIPI Software specification defines additional link_id parameters for controllers that have multiple Master interfaces. The dev_id registers are only unique in the scope of a link, and the link_id unique in the scope of a controller. Both dev_id and link_id are not necessarily unique at the system level but the parent/child information is used to avoid ambiguity.”h]”hXÒThe information on Master/Slave dependencies is stored in platform data, board-file, ACPI or DT. The MIPI Software specification defines additional link_id parameters for controllers that have multiple Master interfaces. The dev_id registers are only unique in the scope of a link, and the link_id unique in the scope of a controller. Both dev_id and link_id are not necessarily unique at the system level but the parent/child information is used to avoid ambiguity.”…””}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K™hj‰h²hubj…)”}”(hXÃstatic const struct sdw_device_id slave_id[] = { SDW_SLAVE_ENTRY(0x025d, 0x700, 0), {}, }; MODULE_DEVICE_TABLE(sdw, slave_id); static struct sdw_driver slave_sdw_driver = { .driver = { .name = "slave_xxx", .pm = &slave_runtime_pm, }, .probe = slave_sdw_probe, .remove = slave_sdw_remove, .ops = &slave_slave_ops, .id_table = slave_id, };”h]”hXÃstatic const struct sdw_device_id slave_id[] = { SDW_SLAVE_ENTRY(0x025d, 0x700, 0), {}, }; MODULE_DEVICE_TABLE(sdw, slave_id); static struct sdw_driver slave_sdw_driver = { .driver = { .name = "slave_xxx", .pm = &slave_runtime_pm, }, .probe = slave_sdw_probe, .remove = slave_sdw_remove, .ops = &slave_slave_ops, .id_table = slave_id, };”…””}”hj¶sbah}”(h]”h ]”h"]”h$]”h&]”j”j•jR‰jSjTjU}”uh1j„h³hÊh´K¡hj‰h²hubhÌ)”}”(hX8For capabilities, Bus implements API to read standard Slave MIPI properties and also provides callback in Slave ops for Slave driver to implement own function that provides capabilities information. Bus needs to know a set of Slave capabilities to program Slave registers and to control the Bus reconfigurations.”h]”hX8For capabilities, Bus implements API to read standard Slave MIPI properties and also provides callback in Slave ops for Slave driver to implement own function that provides capabilities information. Bus needs to know a set of Slave capabilities to program Slave registers and to control the Bus reconfigurations.”…””}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kµhj‰h²hubeh}”(h]”Œ-programming-interfaces-soundwire-slave-driver”ah ]”h"]”Œ/programming interfaces (soundwire slave driver)”ah$]”h&]”uh1hµhh·h²hh³hÊh´K‹ubh¶)”}”(hhh]”(h»)”}”(hŒLinks”h]”hŒLinks”…””}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÛh²hh³hÊh´K¼ubhÌ)”}”(hŒhSoundWire MIPI specification 1.1 is available at: https://members.mipi.org/wg/All-Members/document/70290”h]”(hŒ2SoundWire MIPI specification 1.1 is available at: ”…””}”(hjìh²hh³Nh´NubhŒ reference”“”)”}”(hŒ6https://members.mipi.org/wg/All-Members/document/70290”h]”hŒ6https://members.mipi.org/wg/All-Members/document/70290”…””}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jøuh1jôhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¾hjÛh²hubhÌ)”}”(hŒŠSoundWire MIPI DisCo (Discovery and Configuration) specification is available at: https://www.mipi.org/specifications/mipi-disco-soundwire”h]”(hŒRSoundWire MIPI DisCo (Discovery and Configuration) specification is available at: ”…””}”(hj h²hh³Nh´Nubjõ)”}”(hŒ8https://www.mipi.org/specifications/mipi-disco-soundwire”h]”hŒ8https://www.mipi.org/specifications/mipi-disco-soundwire”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1jôhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KÁhjÛh²hubhÌ)”}”(hŒN(publicly accessible with registration or directly accessible to MIPI members)”h]”hŒN(publicly accessible with registration or directly accessible to MIPI members)”…””}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KÅhjÛh²hubhÌ)”}”(hŒ0MIPI Alliance Manufacturer ID Page: mid.mipi.org”h]”hŒ0MIPI Alliance Manufacturer ID Page: mid.mipi.org”…””}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KÈhjÛh²hubeh}”(h]”Œlinks”ah ]”h"]”Œlinks”ah$]”h&]”uh1hµhh·h²hh³hÊh´K¼ubeh}”(h]”Œsoundwire-subsystem-summary”ah ]”h"]”Œsoundwire subsystem summary”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jwŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jQjNjäjáj†jƒjØjÕjIjFuŒ nametypes”}”(jQ‰jä‰j†‰j؉jI‰uh}”(jNh·jáj–jƒjçjÕj‰jFjÛuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.