Re: [alsa-devel] [RFC PATCH 28/40] soundwire: intel: handle disabled links

From: Pierre-Louis Bossart
Date: Mon Aug 05 2019 - 15:18:58 EST




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.
+ * @hw_disabled: if true, the Master is not functional, typically due to pin-mux
*/
struct sdw_master_prop {
u32 revision;
@@ -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