aboutsummaryrefslogtreecommitdiff
path: root/sound
AgeCommit message (Collapse)AuthorFilesLines
2016-02-20ASoC: qcom: add mic supportSrinivas Kandagatla2-76/+204
This patch adds mic support to the lpass driver, most of the driver is reused as it is, only the register level access is changed depending on te direction of the stream. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: apq8016: set the correct max register for regmapSrinivas Kandagatla1-2/+31
Now that we are ready to access wrdma registers, set the max register and other regmap related configs to use correct values. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: add generic bit masks for RDMA and WRDMASrinivas Kandagatla2-58/+79
This patch adds generic masks for accessing bits in rdma/wrdma registers. Doing this would simplify the driver and adding capture support would be much simpler. Also there is no point in having same bit masks for bits in both rdma and wrdma registers. This patch also deletes the RDMA specific bit masks and makes the code use the generic bit masks. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: add wrdma register definitionsSrinivas Kandagatla1-0/+11
This patch adds wrdma registers into the lpaif-reg.h. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: add mic related i2s control register definesSrinivas Kandagatla1-0/+22
This patch adds mic related bitmasks and offsets in the i2c control register. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: ipq806x: add wrdma related register offsetsSrinivas Kandagatla1-0/+4
This patch adds wrdma related register offsets to the lpass variant data of ipq806x. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: rename rdma_ch_bit_map to dma_ch_bit_mapSrinivas Kandagatla2-4/+4
rdma_ch_bit_map can be reused for wrdma channel allocations as wrdma channel numbering start after rdma channel numbers. With capture support referring rdma_ch_bit_map for wrdma channel allocation is confusing, so renaming rdma_ch_bit_map to dma_ch_bit_map makes sense. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: ipq806x: add error in dma allocation.Srinivas Kandagatla1-1/+4
ipq806x is only ever tested for playback so return error in dma allocation if the stream direction is capture. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: pass direction to dma allocationSrinivas Kandagatla4-4/+6
This patch updates the internal dma allocation callbacks to take the stream direction so that it can allocate channels suitable for that stream direction. Before the capture support this was not necessary. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: rename rdmactl_audif_start to dmactrl_audif_startSrinivas Kandagatla3-4/+4
This patch renames rdmactl_audif_start to dmactrl_audif_start as this is common for both rdma and wrdma. Without this patch the name would be bit misleading to the readers. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: add wrdma register details to lpass_variantSrinivas Kandagatla1-0/+4
This patch adds wrdma related register offsets, wrdma channel start and shifts into lpass variant structure. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: qcom: use snd_dma_alloc/free* apisSrinivas Kandagatla1-36/+6
There is no point in having local allocation functions when the driver can use snd_dma_alloc/free() apis. This patch replaces the local versions of the dma allocation apis with the snd_dma_alloc/free() apis. Signed-off-by: Srinivas Kandagatla <[email protected]> Acked-by: Kenneth Westfield <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20Merge tag 'asoc-fix-v4.5-rc4' into asoc-qcomMark Brown50-335/+759
ASoC: Fixes for v4.5 A rather large batch of fixes here, almost all in the Intel driver. The changes that got merged in this merge window for Skylake were rather large and as well as issues that you'd expect in a large block of new code there were some problems created for older processors which needed fixing up. Things are largely settling down now hopefully.
2016-02-20ASoC: Intel: Skylake: Add HDMI FE and BE cpu daisSubhransu S. Prusty1-3/+75
This patch enables HDMI support in passthrough mode in skylake. Skylake supports 3 pin widgets in HDMI codec, so add 3 FE and 3 BE dais Add required hw info, formats, rates to support HDMI. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Jeeja KP <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: Intel: Skylake: Add i915 enabling in skl probeVinod Koul2-0/+52
The SKL also supports HDMI output so in probe we need to enable the HDMI using common i915 APIs to ensure it gets probed on the bus After S3 during the controller resequencing the codec domain need to be kept ON for successful reconfiguration of Codec. Once configured it will be turned OFF in codec driver. Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: Intel: Skylake: Fix possible memory corruption in codec dai dma paramsSubhransu S. Prusty1-4/+2
Set required parameters for hdac_ext_dma_params object instead of skl_dma_params. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: hdac_hdmi: Fix to reconfigure registers in runtime resumeSubhransu S. Prusty1-13/+16
The register are reset during the D3 to D0 transition. So reconfigure them. Also as all DAIs are now supported, remove the dai id check in prepare. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: hdac_hdmi: Fix to keep codec power active during enumeration.Ramesh Babu1-0/+12
The codec power is turned OFF in the first explicit call to pm_runtime_suspend to keep the i915 refcount balanced. During regular operation, the power is turned ON/OFF in runtime PM handlers. Signed-off-by: Ramesh Babu <[email protected]> Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: hdac_hdmi: Don't fail in dai startup to make userland happySubhransu S. Prusty1-13/+35
In dai startup, driver was checking for ELD and would fail if no monitor is connected. This causes userland like PA, CRAS to be unhappy as they scan the device list at bootup. So move the ELD check to hw_params and fail if valid ELD is not found. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: hdac_hdmi: Fix possible memory leak in hw_paramsSubhransu S. Prusty1-5/+11
It's possible for hw_params to be called two times. So add NULL check to prevent memory leak. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: judge work SSI in runtimeKuninori Morimoto1-0/+27
Current rsnd supports multi SSI (maximum 4 SSI for 8ch), and, it should determine whether using each SSI or not in runtime. All SSIs are not used even if there are 4 SSI in case of stereo. Current driver setups un-used SSI in such case. It is no problem, but not needed. This patch judges it. Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: judge multi SSI in runtimeKuninori Morimoto4-7/+18
Current rsnd supports multi SSI (maximum 4 SSI for 8ch), and, it should determine whether using each SSI or not in runtime. Current judgement is vague, and had broken by c308abe45e2("ASoC: rsnd: rsnd_ssi_is_multi_slave() macro uses rsnd_ssi_multi_slaves()") This patch makes clean it, and solve this issue. Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: move rsnd_ssi_irq() positionKuninori Morimoto1-21/+21
prepare for runtime judging for SSI work Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: Parent SSI attach is not needed if not clock masterKuninori Morimoto1-3/+27
Parent SSI is needed if it is PIN sharing and clock master, otherwise, not needed. But, whether clockk master is judged on .set_fmt, thus, it can't call rsnd_ssi_parent_attach() on .probe. Now, .pcm_new will be called after .set_fmt, so this patch reuses it at this point. Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: tidyup SSI init/start sequenceKuninori Morimoto1-20/+16
SSI want to have SSIWSR settings and SSICR settings without EN bit when init, and SSICR EN bit only when start timing. Otherwise, SSI output signal might be unstable. Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: add missing .irq callback for DMAKuninori Morimoto1-0/+1
commit b5b442abd9d5 ("ASoC: rsnd: add .irq callback") added .irq callback but SSI DMA is missing it. This patch adds it. Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: fixup forever loop bug on SSIKuninori Morimoto1-2/+1
commit b5b442abd9 ("ASoC: rsnd: add .irq callback") added .irq support, and it cares both parent SSI and normal SSI. But it should care only normal SSI. Otherwise SSI might be forever loop if SSI is used as both parent SSI and normal SSI (= 2 users), and if under/over run error happen. Because irq disable do nothing in such case. This patch solve this issue. Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: SSI function parameter uses "mod" instead of "ssi"Kuninori Morimoto1-9/+10
To reduce confusion, SSI uses "mod" instead of "ssi" as function parameter Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: indicates status failed SSIKuninori Morimoto1-1/+2
Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: setup SRC_ROUTE_MODE0 before SRC_SRCIRKuninori Morimoto1-1/+2
SRC_ROUTE_MODE0 determines whether to use SRC. Thus, it should be setup before SRC_SRCIR. Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: rsnd: rename RSND_DVC_CHANNELS to RSND_MAX_CHANNELSKuninori Morimoto3-6/+6
The channels number is not only for DVC. Let's rename it. Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: Intel: Skylake: Generate topology name for NHLT table headerVinod Koul4-3/+49
NHLT table [1] header has fields like oem_id, oem_table_id and oem_revision. Use that to load a unique topology binary specific to that platform NHLT Table is documented at: [1]: https://01.org/blogs/2016/intel-smart-sound-technology-audio-dsp Signed-off-by: Yang A Fang <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: Intel: Skylake: fix pointer scalingAlan1-1/+1
skl_tplg_tlv_control_set does pointer maths on data but forgets that data is not uint8_t so the maths is already scaled in the pointer type. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-20ASoC: samsung: Use IRQ safe spin lock callsCharles Keepax1-9/+12
Lockdep warns of a potential lock inversion, i2s->lock is held numerous times whilst we are under the substream lock (snd_pcm_stream_lock). If we use the IRQ unsafe spin lock calls, you can also end up locking snd_pcm_stream_lock whilst under i2s->lock (if an IRQ happens whilst we are holding i2s->lock). This could result in deadlock. [ 18.147001] CPU0 CPU1 [ 18.151509] ---- ---- [ 18.156022] lock(&(&pri_dai->spinlock)->rlock); [ 18.160701] local_irq_disable(); [ 18.166622] lock(&(&substream->self_group.lock)->rlock); [ 18.174595] lock(&(&pri_dai->spinlock)->rlock); [ 18.181806] <Interrupt> [ 18.184408] lock(&(&substream->self_group.lock)->rlock); [ 18.190045] [ 18.190045] *** DEADLOCK *** This patch changes to using the irq safe spinlock calls, to avoid this issue. Fixes: ce8bcdbb61d9 ("ASoC: samsung: i2s: Protect more registers with a spinlock") Signed-off-by: Charles Keepax <[email protected]> Tested-by: Anand Moon <[email protected]> Signed-off-by: Mark Brown <[email protected]> Cc: [email protected]
2016-02-19ALSA: hda - hdmi get jack from hda_jack_tbl when not dyn_pcm_assignLibin Yang1-4/+26
On Intel platform, if !dyn_pcm_assign, spec->pcm_rec[].jack is not NULL even after snd_hda_jack_tbl_clear() is called to free snd_jack. This may cause access invalid memory when calling snd_jack_report. Fixes: 25e4abb33df3 ('ALSA: hda - hdmi jack created based on pcm') Signed-off-by: Libin Yang <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2016-02-18ASoC: max9867: Changed the if-else case to switch caseanish kumar1-6/+12
Signed-off-by: anish kumar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-18ALSA: oxfw: use workqueue instead of tasklet for scs1xTakashi Sakamoto1-6/+6
This commit replaces tasklet with workqueue for scs1x functionality of ALSA oxfw driver. This driver transfers MIDI message specific for SCS.1m and SCS.1d. This task is currently done in software IRQ context of tasklet. In a view of system, this context is limited resources and some important drivers (at least, more important than ALSA oxfw driver) use the context as its bottom-harf. If the work to transfer MIDI messages is done within a time, it's better to use the other context for the work. Actually, with recent CPUs, the work will be scheduled within a time. This is a reason of this commit. Signed-off-by: Takashi Sakamoto <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2016-02-18ASoC: Add max9867 codec driveranish kumar4-0/+625
Signed-off-by: anish kumar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-18ALSA: pcm: Fix rwsem deadlock for non-atomic PCM streamTakashi Iwai1-2/+14
A non-atomic PCM stream may take snd_pcm_link_rwsem rw semaphore twice in the same code path, e.g. one in snd_pcm_action_nonatomic() and another in snd_pcm_stream_lock(). Usually this is OK, but when a write lock is issued between these two read locks, the problem happens: the write lock is blocked due to the first reade lock, and the second read lock is also blocked by the write lock. This eventually deadlocks. The reason is the way rwsem manages waiters; it's queued like FIFO, so even if the writer itself doesn't take the lock yet, it blocks all the waiters (including reads) queued after it. As a workaround, in this patch, we replace the standard down_write() with an spinning loop. This is far from optimal, but it's good enough, as the spinning time is supposed to be relatively short for normal PCM operations, and the code paths requiring the write lock aren't called so often. Reported-by: Vinod Koul <[email protected]> Tested-by: Ramesh Babu <[email protected]> Cc: <[email protected]> # v3.18+ Signed-off-by: Takashi Iwai <[email protected]>
2016-02-18ALSA: portman2x4 - use new parport device modelSudip Mukherjee1-51/+42
Modify portman driver to use the new parallel port device model. The advantage of using the device model is that the device gets binded to the hardware, we get the feature of hotplug, we can bind/unbind the driver at runtime. The changes are in the way the driver gets registered with the parallel port subsystem and the temporary device to probe portman card is removed and portman_probe() is used in the probe callback. Signed-off-by: Sudip Mukherjee <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2016-02-17ASoC: max98926: Fix blr_clk_ratio calculationAxel Lin1-2/+4
Current code calculates blr_clk_ratio before setting max98926->ch_size, fix it. Signed-off-by: Axel Lin <[email protected]> Acked-by: anish kumar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-17ASoC: hdac_hdmi: Remove 'edev' NULL checkFabio Estevam1-3/+0
Commit 4a3478debf36 ("ASoC: hdac_hdmi: Add jack reporting") leads to the following Smatch complaint: sound/soc/codecs/hdac_hdmi.c:971 hdac_hdmi_present_sense() warn: variable dereferenced before check 'edev' (see line 967) As explained by Subhransu S. Prusty: "This NULL check is not required, can be removed. edev object is expected to be present when the present_sense is called. This is called from places where this edev object is already available." So remove the evdev NULL check. Reported-by: Dan Carpenter <[email protected]> Signed-off-by: Fabio Estevam <[email protected]> Acked-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-16ALSA: seq: Fix double port list deletionTakashi Iwai1-5/+8
The commit [7f0973e973cd: ALSA: seq: Fix lockdep warnings due to double mutex locks] split the management of two linked lists (source and destination) into two individual calls for avoiding the AB/BA deadlock. However, this may leave the possible double deletion of one of two lists when the counterpart is being deleted concurrently. It ends up with a list corruption, as revealed by syzkaller fuzzer. This patch fixes it by checking the list emptiness and skipping the deletion and the following process. BugLink: http://lkml.kernel.org/r/CACT4Y+bay9qsrz6dQu31EcGaH9XwfW7o3oBzSQUG9fMszoh=Sg@mail.gmail.com Fixes: 7f0973e973cd ('ALSA: seq: Fix lockdep warnings due to 'double mutex locks) Reported-by: Dmitry Vyukov <[email protected]> Tested-by: Dmitry Vyukov <[email protected]> Cc: <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2016-02-15ASoC: hdac_hdmi: Add infoframe support for dp audioSubhransu S. Prusty1-10/+64
For DP audio support, infoframe needs to be different. Based on get_conn_type result we pack either HDMI or DP infoframe. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-15ASoC: hdac_hdmi: Enable playback on all enumerated portsSubhransu S. Prusty1-42/+132
Last patch added infrastructure to render over all the ports, PCM<->cvt<- pin mapping and user selection of controls. But we still have restriction of playback on the default port alone, so remove that. This patch removes the hardcoding of cvt<->pin map from the dai. Cvt and pin for a dai are now derived from the already stored pcm list of device opened. We query connection list of a pin from codec to validate the cvt<->pin map. If connection list returns zero, then monitor is not connected so fail playback. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Jeeja KP <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-15ASoC: hdac_hdmi: Add jack reportingJeeja KP2-3/+163
Jack is created based on pcm devices enumerated, so we will create Jack as "HDMI/DP, pcm=x Jack". This style is expected by current usermode like PulseAudio and CRAS. This patch exports an API which can be used to register Jack based on PCM. This API also establishes the map between PCM and cvt. Further cvt to pin mapping is established with the help of usermode selection based on the board topology. During device probe as the PCMs may not be registered, initial pin sense don't report jack events. So, first time jack reporting is done during user selection of mux control. Signed-off-by: Jeeja KP <[email protected]> Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-15ASoC: hdac_hdmi: Create widget/route based on nodes enumeratedSubhransu S. Prusty1-22/+219
In skylake, HDMI codec enumerates 3 pins and 3 cvts. Stream can be routed from any cvt to any pin based on the connection list queried from the pin. This patch removes the static modelling of widget/route and creates it dynamically based on the codec widgets enumerated. Mux widgets are added to represent the map between a cvt and pin. Ideally the mux widgets should be created based on the connection list queried from the pin widget. But due to HW behavior, if an external display is not connected on a port, querying the connection list returns zero. So create mux widgets to map all the cvt to all pins. At runtime, playback support on a pin can be verified based on the connection list query. Few function in driver have additional arguments now to support this. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-15ASoC: hdac_hdmi: create dais based on number of cvtsSubhransu S. Prusty1-32/+91
After enabling all pins/cvts, Skylake HDMI codec enumerates 3 converters. Three independent streams can be supported with 3 cvts. This patch removes the static dai creation and creates dais based on the number of cvts queried. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-15ASoC: hdac_hdmi: Enable DP1.2 and all converters/pinsSubhransu S. Prusty1-0/+43
Skylake supports 3 pin and 3 converter widgets. But by default only one converter and pin widget are enabled. In skylake platform the DP port is on a different port which is not enabled by default. To enable playback on DP port, enable all pin and converter widget by sending a vendor VERB for a vendor widget to set required bits. As we are enabling the DP support enable the DP1.2 feature as well. Enabling DP1.2 and all widget changes are copied from patch_hdmi.c. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2016-02-15ASoC: hdac_hdmi: Apply constraints based on ELDSubhransu S. Prusty2-3/+49
Uses the drm ELD core framework to apply rate and channel Also compute the format to be set based on ELD. Even though the channel constraint is based on ELD, infoframe is set with stereo only. Multichannel support will be added later. Signed-off-by: Subhransu S. Prusty <[email protected]> Signed-off-by: Vinod Koul <[email protected]> Signed-off-by: Mark Brown <[email protected]>