OSDN Git Service

ASoC: dapm: Only power up active channels from a DAI
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Thu, 31 Jan 2019 13:30:18 +0000 (13:30 +0000)
committerMark Brown <broonie@kernel.org>
Sat, 2 Feb 2019 16:15:17 +0000 (17:15 +0100)
commit078a85f2806f0ffd11289009462a6a390f9adb5c
tree5d662d9731d94e08c3d4a2b532cfacebc4f53465
parent199ed3e81c49a621ce6fcb630ab9f30d92db6718
ASoC: dapm: Only power up active channels from a DAI

Currently all widgets attached to a DAI link will be powered
up when the DAI is active, however this may include routes
that are not actually in use if there are unused channels
available on the DAI.

The macros for creating AIF widgets already include an entry for
slot, it is proposed to change that to channel. The effective
difference here being respresenting the logical channel index
rather than the physical slot index. The CODECs currently
using the slot entry on the DAPM_AIF macros are using it in
a manner consistent with this, the CODECs not using it just
have the field set to zero.

A variable is added to snd_soc_dapm_widget to represent
this channel index and then for each AIF widget attached to
a DAI this is compared against the number of channels on
the stream. Enabling the links for those which will be in
use. This has the nice property that the CODECs which haven't
used the slot/channel entry in the macro will function exactly
as before due to all the AIF widgets having a channel of zero
and a stream by definition having at least one channel.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc-dapm.h
sound/soc/soc-dapm.c
sound/soc/soc-pcm.c