On 8/5/19 11:57 AM, Sanyog Kale wrote:
On Thu, Jul 25, 2019 at 06:40:20PM -0500, Pierre-Louis Bossart wrote:
On most hardware platforms, SoundWire interfaces are pin-muxed with other interfaces (typically DMIC or I2S) and the status of each link needs to be checked at boot time.
For Intel platforms, the BIOS provides a menu to enable/disable the links separately, and the information is provided to the OS with an Intel-specific _DSD property. The same capability will be added to revisions of the MIPI DisCo specification.
[snip]
diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index c7dfc824be80..f78b076a8782 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -380,6 +380,7 @@ struct sdw_slave_prop {
- @err_threshold: Number of times that software may retry sending a single
- command
- @mclk_freq: clock reference passed to SoundWire Master, in Hz.
*/ struct sdw_master_prop { u32 revision;
- @hw_disabled: if true, the Master is not functional, typically due to pin-mux
@@ -395,6 +396,7 @@ struct sdw_master_prop { bool dynamic_frame; u32 err_threshold; u32 mclk_freq;
- bool hw_disabled;
Do we have such cases where some of SoundWire links are disabled and some enabled?
Yes, by default my ICL test board uses HDaudio for the codec so the SoundWire link0 is disabled. If I rework the board and change the BIOS advanced menu then SoundWire link0 is enabled. This information is dynamically provided to the OS after the _INI step. SoundWire-2/3 are used typically for attached DMICs or for a combination of SoundWire amplifier and mic capture. It's really platform-specific.
};
int sdw_master_read_prop(struct sdw_bus *bus);
2.20.1