summaryrefslogtreecommitdiff
path: root/sound/soc
AgeCommit message (Collapse)AuthorFilesLines
2017-11-06ASoC: rsnd: return -EIO if rsnd_dmaen_request_channel() failedKuninori Morimoto1-3/+1
PTR_ERR(NULL) is success. Normally when a function returns both NULL and error pointers, it means that NULL is not a error. But, rsnd_dmaen_request_channel() returns NULL if requested resource was failed. Let's return -EIO if rsnd_dmaen_request_channel() was failed on rsnd_dmaen_nolock_start(). This patch fixes commit edce5c496c6a ("ASoC: rsnd: Request/Release DMA channel eachtime") Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-11-01ASoC: rsnd: remove NULL check from rsnd_mod_name()/rsnd_mod_id()Kuninori Morimoto3-17/+21
Current rsnd driver has rsnd_mod_id() which returns mod ID, and it returns -1 if mod was NULL. In the same time, this driver has rsnd_mod_name() which returns mod name, and it returns "unknown" if mod or mod->ops was NULL. Basically these "mod" never be NULL, but the reason why rsnd driver has such behavior is that DMA path finder is assuming memory as "mod == NULL". Thus, current DMA path debug code prints like below. Here "unknown[-1]" means it was memory. ... rcar_sound ec500000.sound: unknown[-1] from rcar_sound ec500000.sound: src[0] to rcar_sound ec500000.sound: ctu[2] rcar_sound ec500000.sound: mix[0] rcar_sound ec500000.sound: dvc[0] rcar_sound ec500000.sound: ssi[0] rcar_sound ec500000.sound: audmac[0] unknown[-1] -> src[0] ... 1st issue is that it is confusable for user. 2nd issue is rsnd driver has something like below code. mask |= 1 << rsnd_mod_id(mod); Because of this kind of code, some statically code checker will reports "Shifting by a negative value is undefined behaviour". But this "mod" never be NULL, thus negative shift never happen. To avoid these issues, this patch adds new dummy "mem" to indicate memory, and use it to indicate debug information, and, remove unneeded "NULL mod" behavior from rsnd_mod_id() and rsnd_mod_name(). The debug information will be like below by this patch ... rcar_sound ec500000.sound: mem[0] from rcar_sound ec500000.sound: src[0] to rcar_sound ec500000.sound: ctu[2] rcar_sound ec500000.sound: mix[0] rcar_sound ec500000.sound: dvc[0] rcar_sound ec500000.sound: ssi[0] rcar_sound ec500000.sound: audmac[0] mem[0] -> src[0] ... Reported-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-11-01ASoC: rsnd: rsnd_ssi_run_mods() needs to care ssi_parent_modKuninori Morimoto1-3/+8
SSI parent mod might be NULL. ssi_parent_mod() needs to care about it. Otherwise, it uses negative shift. This patch fixes it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-31ASoC: rsnd: Don't check SSISR::DIRQ when CaptureKuninori Morimoto1-6/+9
When stop case, it was Playback, it need to check all data were completely sent. But in Capture case, it might not receive data anymore. SSISR::DIRQ check is not need for Capture case. Reported-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-31ASoC: rsnd: use snd_pcm_running() in rsnd_io_is_working()Kuninori Morimoto1-1/+4
Let's use more common style to checking running/working Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-31ASoC: rsnd: NULL check is not needed for clk_unprepare()Kuninori Morimoto1-2/+1
clk_unprepare() is checking parameter by IS_ERR_OR_NULL(). clk NULL check is not needed on rsnd_mod_quit() Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-31ASoC: rsnd: tidyup rsnd_mod_next() for loop methodKuninori Morimoto1-4/+2
Let's remove point less "continue" Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-31ASoC: rsnd: don't use io->mod[] directlyKuninori Morimoto1-1/+1
We have rsnd_io_to_mod() macro. Let's use it Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-13ASoC: rsnd: more clear ADG clock debug infoKuninori Morimoto1-18/+41
ADG inputs clock from CLK{A,B,C,I} and outputs clock from CLKOUT{0,1,2,3} which is selected by BRG{A,B}. Now, ADG is assuming BRGA is for 44100Hz related clocks, BRGB is for 48000Hz related clocks. Clock related debug is very difficult/confusable. This patch cleanups clock related debug info. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-11ASoC: rsnd: add rsnd_kctrl_xxx() macroKuninori Morimoto4-54/+59
Current CTU/MIX/DVC are directly using rsnd_kctrl_cfg_m/s to control val etc, but it is difficult to read/understand. And there was no uniformity in access method. This patch adds new rsnd_kctrl_xxx() and implements uniformed access method. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-04ASoC: rsnd: add MIX Volume Ramp supportKuninori Morimoto3-7/+154
Both DVC/MIX have Volume Ramp Control. This patch supprts MIX Volume Ramp. One note is that main purpose of MIX Volume Ramp is to reduce noise, thus, MIX Ramp range is very few if you compare to DVC Volume Ramp (DVC = 5bit, MIX = 4bit). You can use MIX Volume Ranp like below amixer set "MIX Ramp Up Rate" "0.125 dB/1 step" amixer set "MIX Ramp Down Rate" "0.125 dB/1 step" amixer set "MIX Ramp" on aplay xxx.wav & amixer set "MIX",0 80% // DAI0 Volume Down amixer set "MIX",1 100% // DAI1 Volume Up Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-04ASoC: rsnd: makes volume ramp rate list genericKuninori Morimoto3-31/+36
DVC is supporting Volume Ramp Rate, and MIX has Volume Ramp but not yet supported. To support MIX Volume Ramp, we want to share Rate List since DVC/MIX are using almost same list. This patch move DVC specific Volume Ramp Rate List to core.c. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-04ASoC: rsnd: CTU kctrl sets onceKuninori Morimoto1-0/+8
Same CTU might be used few times if system/platform is using MIX. For example below case. DAI0 playback = <&src0 &ctu02 &mix0 &dvc0 &ssi0>; DAI1 playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>; This case, ALSA will have CTU,0 and CTU,1 kcontrol interfaces, but these are same CTU. This is confusing. This patch adds new flags and avoid such case. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-04ASoC: rsnd: DVC kctrl sets onceKuninori Morimoto1-0/+8
Same DVC might be used few times if system/platform is using MIX. For example below case. DAI0 playback = <&src0 &ctu02 &mix0 &dvc0 &ssi0>; DAI1 playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>; This case, ALSA will have DVC,0 and DVC,1 kcontrol interfaces, but these are same DVC. This is confusing. This patch adds new flags and avoid such case. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-04ASoC: rsnd: use generic rsnd_flags_xxx() macro on ADGKuninori Morimoto1-7/+6
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-10-04ASoC: rsnd: add generic rsnd_flags_xxx() macroKuninori Morimoto2-15/+16
SSI is using rsnd_ssi_flags_xxx() macro to control flags. But it is useful macro not only for SSI. This patch replace it to more generic rsnd_flags_xxx(). Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-09-21ASoC: rsnd: add rsnd_dma_alloc()Kuninori Morimoto1-27/+33
R-Car sound DMA will be used from SSI/SRC. dma.c doesn't alloc DMA handler in .probe timing, because we don't know what kind of DMA transfer will be used then. Thus, SSI/SRC have *rsnd_mod for DMA. rsnd_dma_attach() will allocate it and attach it to system. It will be PIO mode if it can't alloc DMA handler. In case of MIX is used, rsnd_dma_attach() will be called twice from SSI. To avoid duplicate allocation, current rsnd_dma_attach() is checking allocated DMA handler. This DMA related operation is a little bit difficult to understand. This patch adds new rsnd_dma_alloc() and separates allocation and attach for readable code. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-09-13ASoC: rsnd: fix ADG flagsKuninori Morimoto1-2/+2
Current ADG driver is over-writing flags. This patch fixes it. Reported-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-09-01Merge remote-tracking branches 'asoc/topic/wm8524', 'asoc/topic/wm8804' and ↵Mark Brown8-6/+273
'asoc/topic/zte' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/twl6040', 'asoc/topic/txx9', ↵Mark Brown6-10/+9
'asoc/topic/utils', 'asoc/topic/ux500' and 'asoc/topic/wm8523' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/tas2552', 'asoc/topic/tas5720', ↵Mark Brown19-44/+290
'asoc/topic/tegra', 'asoc/topic/tlv320aic32x4' and 'asoc/topic/tlv320aic3x' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/simple', 'asoc/topic/spear', ↵Mark Brown14-94/+435
'asoc/topic/sta32x', 'asoc/topic/stm32' and 'asoc/topic/sunxi' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/rt5665', 'asoc/topic/rt5670', ↵Mark Brown19-126/+287
'asoc/topic/rt5677' and 'asoc/topic/samsung' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/rt5563', 'asoc/topic/rt5616', ↵Mark Brown4-50/+257
'asoc/topic/rt5645', 'asoc/topic/rt5659' and 'asoc/topic/rt5663' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/rk3036', 'asoc/topic/rockchip', ↵Mark Brown10-196/+432
'asoc/topic/rt274' and 'asoc/topic/rt5514' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/omap', 'asoc/topic/psc-ac97' and ↵Mark Brown5-8/+8
'asoc/topic/pxa' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/mtk', 'asoc/topic/mxs', ↵Mark Brown9-31/+34
'asoc/topic/nau8825', 'asoc/topic/nuc900' and 'asoc/topic/of-graph' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/kirkwood', 'asoc/topic/max9867', ↵Mark Brown4-33/+70
'asoc/topic/max98926' and 'asoc/topic/max98927' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/hisi', 'asoc/topic/img', ↵Mark Brown23-183/+65
'asoc/topic/jack' and 'asoc/topic/jz4740' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/dwc', 'asoc/topic/es8316', ↵Mark Brown14-45/+33
'asoc/topic/fsi', 'asoc/topic/fsl' and 'asoc/topic/hdmi' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/cs43130', 'asoc/topic/cs53l30', ↵Mark Brown8-196/+3309
'asoc/topic/cygnus' and 'asoc/topic/davinci' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/cs35l33', 'asoc/topic/cs35l34' ↵Mark Brown3-16/+8
and 'asoc/topic/cs42l42' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/blackfin', 'asoc/topic/build', ↵Mark Brown9-45/+37
'asoc/topic/cirrus' and 'asoc/topic/compress' into asoc-next
2017-09-01Merge remote-tracking branches 'asoc/topic/adau1977', 'asoc/topic/arizona', ↵Mark Brown11-14/+10
'asoc/topic/atmel', 'asoc/topic/au1x' and 'asoc/topic/bcm' into asoc-next
2017-09-01Merge remote-tracking branch 'asoc/topic/rcar' into asoc-nextMark Brown16-127/+136
2017-09-01Merge remote-tracking branch 'asoc/topic/intel' into asoc-nextMark Brown29-276/+2328
2017-09-01Merge remote-tracking branch 'asoc/topic/core' into asoc-nextMark Brown3-67/+119
2017-09-01Merge remote-tracking branch 'asoc/topic/const' into asoc-nextMark Brown10-10/+9
2017-09-01Merge remote-tracking branch 'asoc/topic/component' into asoc-nextMark Brown2-48/+153
2017-09-01Merge remote-tracking branch 'asoc/topic/msm8916' into asoc-nextMark Brown120-167/+2120
2017-09-01Merge remote-tracking branches 'asoc/fix/arizona' and 'asoc/fix/mtk' into ↵Mark Brown2-3/+3
asoc-linus
2017-09-01Merge remote-tracking branch 'asoc/fix/rcar' into asoc-linusMark Brown3-16/+44
2017-09-01Merge remote-tracking branch 'asoc/fix/intel' into asoc-linusMark Brown1-2/+2
2017-09-01Merge tag 'asoc-fix-v4.13-rc7' into asoc-linusMark Brown3-2/+12
ASoC: Fixes for v4.13 A couple of fixes, one for a regression in simple-card introduced during the merge window that was only reported this week and another for a regression in registration of ACPI GPIOs. # gpg: Signature made Thu 31 Aug 2017 12:50:29 BST # gpg: using RSA key ADE668AA675718B59FE29FEA24D68B725D5487D0 # gpg: issuer "broonie@kernel.org" # gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>" [unknown] # gpg: aka "Mark Brown <broonie@debian.org>" [unknown] # gpg: aka "Mark Brown <broonie@kernel.org>" [unknown] # gpg: aka "Mark Brown <broonie@tardis.ed.ac.uk>" [unknown] # gpg: aka "Mark Brown <broonie@linaro.org>" [unknown] # gpg: aka "Mark Brown <Mark.Brown@linaro.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 3F25 68AA C269 98F9 E813 A1C5 C3F4 36CA 30F5 D8EB # Subkey fingerprint: ADE6 68AA 6757 18B5 9FE2 9FEA 24D6 8B72 5D54 87D0
2017-09-01ASoC: Intel: Skylake: Add IPC to configure the copier secondary pinsPradeep Tewani2-5/+53
Copier can support upto 4 output pins. However, only pin 0 is configured as a part of copier initialization. Configuring rest of pins require the separate IPC to be sent to fw. Signed-off-by: Pradeep Tewani <pradeep.d.tewani@intel.com> Acked-By: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-09-01ASoC: add missing compile rule for max98371Kuninori Morimoto2-6/+9
It is still using old driver style, this patch also fixup it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-09-01ASoC: add missing compile rule for sirf-audio-codecKuninori Morimoto2-4/+7
It is still using old driver style, this patch also fixup it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-09-01ASoC: add missing compile rule for max98371Kuninori Morimoto2-6/+9
It is still using old driver style, this patch also fixup it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-09-01ASoC: cs43130: Add support for CS43130 codecLi Xu4-0/+3244
Add support for Cirrus Logic CS43130 codec. Support: I2S/DSP PCM playback. DoP/DSD playback. HP detection and DC/AC impedance measurement. Signed-off-by: Li Xu <li.xu@cirrus.com> Acked-by: Brian Austin <brian.austin@cirrus.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2017-09-01ASoC: make clock direction configurable in asoc-simpleVitaly Wool1-2/+7
Some CPU drivers (e. g. davinci-mcasp) may require the system clock to be configured as OUT, while there's no good way currently to set SND_SOC_CLK_OUT in simple-soc driver if the clock is fixed-rate. This patch makes asoc_simple_card_init_dai() initialize clock to SND_SOCK_CLK_OUT if explicitly stated in the relevant dts file. This change is transparent and doesn't change the default behavior. Signed-off-by: Vitaly Wool <vitaly.wool@konsulko.com> Signed-off-by: Mark Brown <broonie@kernel.org>