ASoC: dapm: Add a few supply widget sanity checks
authorLars-Peter Clausen <lars@metafoo.de>
Sat, 25 Oct 2014 15:42:02 +0000 (17:42 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 28 Oct 2014 00:19:59 +0000 (00:19 +0000)
commite409dfbfccf9a49409197afc677a21e1c11ba015
treed6a6a29be0475aa5aa8d42ab8fc918f802e5af18
parent8be4da29cf5b8ec65e974c36e7ae4d90b381ac5e
ASoC: dapm: Add a few supply widget sanity checks

Supply widgets are somewhat special and not all kinds of paths to or from
supply widgets make sense. This patch adds a few sanity checks that errors
out during the path instantiation for those invalid paths. This will prevent
drivers to depend on weird behavior resulting from such paths as well as
will allow the DAPM algorithms to assume that they never see such paths.

This patch adds checks for the following three invalid types of paths:
* A path with a non-supply widget as a source connected to a supply
  widget as a sink. Such a path has no effect on either of the two
  connected widgets.
* Paths with a connected() callback that have a non-supply widget as the
  source. The DAPM algorithm only uses the conneceted() callback for
  supply widget power checks. And since it prevents caching of the DAPM
  state there is no intention to make it more generic as it has
  negative performance implications.
* Paths which connect a supply to a mixer or mux via a control. Controls
  are only meant to affect the routing of audio data.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-dapm.c