On 8/6/21 8:24 AM, Vinod Koul wrote:
On 02-08-21, 08:59, Pierre-Louis Bossart wrote:
On some HDaudio platforms, SoundWire devices are described in the DSDT but never used. This patch adds a boolean status flag to skip all suspend/resume/wake sequences for this configuration.
Why are the sdw devices created in this case then? I would assume you are detecting this configuration and should skip device creation?
The SDW Linux devices are created during the probe step, based on information extracted from platform firmware. Since we see a matching driver, there will be a probe and that driver also contains pm ops.
We only know if the physical peripherals described in ACPI are real or not during the startup() phase. After the bus reset, SoundWire peripherals will report as ATTACHED as Device0 and the enumeration starts.
So in these HDaudio cases, we create the Linux devices based on incorrect ACPI information, but since we detect an HDaudio configuration we never start the links and the suspend-resume fails.
For a bit of historical context, the decision to handle devices in this way was not the original proposal from Intel. In the initial patches, the Linux devices were created when their matching physical peripheral was showing signs of activity and attached after synchronizing. We modified this behavior so that a device driver could use out-of-band signaling to power-up a peripheral so that it could attach. That wasn't a bad idea, but that also exposes a number of 'ghost devices' that are not real. And unfortunately the Intel BIOS reference keeps using those invalid _ADR values...
Does this answer to the question?
Yes it does thanks, very helpful.
Can we add this to the changelog, am sure down the line people might forget why it was added.
yes, will do.