summaryrefslogtreecommitdiff
path: root/sound/soc/codecs
AgeCommit message (Collapse)Author
2016-12-14ASoC: max98090: Add extcon support for jack detection notificationDongwoo Lee
This patch applies extcon for jack detection notification. Changes in jack state is reported to input driver with snd-soc framework, as well as to extcon framework. Change-Id: Id46f10320b18258472521fad57cbbfc98547bb6d Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
2016-12-14ASoC: max98090: fix interrupt handling problemDongwoo Lee
The max98090_interrupt handler currently will read the device status register. After that, it will act only when the JDET bit is set. However, when max98090_interrupt handler is triggered and jack status register has really changed, the JDET bit of device status register is not set as expected for unknown reason. Because of this, the jack status cannot be reported. This patch adds a workaround solution for jack detection, by adding the second chance to recognize the reason of interrupt generation. If the interrupt is generated without setting any values on device status register, jack status register is compared to the current jack states. If the jack status is changed, the JDET bit is manually set. Change-Id: I74f6fb54fb9cc47e292f1f8e116032faae89c063 Reported-by: Huang Chao <chao7.huang@samsung.com> Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
2016-12-14ASoC: max98504A: fix build warningInki Dae
This patch fixes below build warnings, sound/soc/codecs/max98504a.c:271:1: warning: label 'err_access' defined but not used [-Wunused-label] sound/soc/codecs/max98504a.c:173:15: warning: unused variable 'value' [-Wunused-variable] Change-Id: I74bbe99e44591052daa05eadcbfaa795fb0e99d4 Signed-off-by: Inki Dae <inki.dae@samsung.com>
2016-12-14ASoC: ymu831: remove IRQF_DISABLEDSeung-Woo Kim
After mainline commit "d8bf368 genirq: Remove the deprecated 'IRQF_DISABLED' request_irq() flag entirely", IRQF_DISABLED is removed. The flags is deprecated in early kernel, so it can be replaced with 0x0 like other drivers. This patch fixes following build error: sound/soc/codecs/ymu831/ymu831.c: In function 'init_irq': sound/soc/codecs/ymu831/ymu831.c:8525:54: error: 'IRQF_DISABLED' undeclared (first use in this function) err = request_irq(mc_asoc->pdata->irq, irq_handler, IRQF_DISABLED, ^ Change-Id: Id06d964fbe2a62f8c9c642d13479782b9663e7cc Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
2016-12-14ASoC: ymu831: replace snd_soc_jack_new() to snd_soc_card_jack_new()Seung-Woo Kim
After mainline commit "77c7176 ASoC: Remove snd_soc_jack_new()", snd_soc_jack_new() should be replaced with snd_soc_card_jack_new(). This patch fixes following build error: sound/soc/codecs/ymu831/ymu831.c:8525:54: note: each undeclared identifier is reported only once for each function it appears in sound/soc/codecs/ymu831/ymu831.c: In function 'mc_asoc_probe': sound/soc/codecs/ymu831/ymu831.c:8787:2: error: implicit declaration of function 'snd_soc_jack_new' [-Werror=implicit-function-declaration] snd_soc_jack_new(codec, "Headset", ^ Change-Id: Ic043abca5a0dc55eacaf60830b760b95d06551cf Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
2016-12-14ASoC: ymu831: Fix memory corruption by exceeding too small reg_cacheKrzysztof Kozlowski
The driver allocated reg_cache of word size int16 but accessed it by integers. So allocated memory was (MC_ASOC_N_REG * sizeof(int16)) but referenced (read and write) was (MC_ASOC_N_REG * sizeof(int)). This lead to memory corruption of kernel and multiple NULL pointer exceptions in different places. One common NULL pointer caused by this was during freezing workqueues in suspend to RAM: [ 39.782297] PM: Preparing system for mem sleep [ 39.783612] Freezing user space processes ... (elapsed 0.004 seconds) done. [ 39.791994] Freezing remaining freezable tasks ... [ 39.917890] freeze_workqueues_begin: WQ: Freeze mkdeten db2fa200 [ 39.924005] freeze_workqueues_begin:4752 db2fa400 [ 39.928575] freeze_workqueues_begin: WQ: Freeze mb4 db2fa400 [ 39.934307] Unable to handle kernel NULL pointer dereference at virtual address 00000001 ... [ 40.186412] [<c02bc1ac>] (__list_add) from [<c0667a54>] (mutex_lock_nested+0x138/0x474) [ 40.194395] [<c0667a54>] (mutex_lock_nested) from [<c00465e0>] (freeze_workqueues_begin+0xec/0x260) [ 40.203421] [<c00465e0>] (freeze_workqueues_begin) from [<c0086690>] (try_to_freeze_tasks+0x2a4/0x474) [ 40.212706] [<c0086690>] (try_to_freeze_tasks) from [<c0087148>] (freeze_kernel_threads+0x20/0x90) [ 40.221645] [<c0087148>] (freeze_kernel_threads) from [<c0089038>] (enter_state+0xa20/0xf58) [ 40.230064] [<c0089038>] (enter_state) from [<c0089584>] (pm_suspend+0x14/0x70) [ 40.237354] [<c0089584>] (pm_suspend) from [<c008611c>] (state_store+0x6c/0xbc) [ 40.244649] [<c008611c>] (state_store) from [<c02a31f8>] (kobj_attr_store+0x14/0x20) [ 40.252376] [<c02a31f8>] (kobj_attr_store) from [<c01c50e0>] (sysfs_kf_write+0x4c/0x50) [ 40.260359] [<c01c50e0>] (sysfs_kf_write) from [<c01c44c4>] (kernfs_fop_write+0xbc/0x198) [ 40.268519] [<c01c44c4>] (kernfs_fop_write) from [<c0158a54>] (vfs_write+0xa0/0x1a8) [ 40.276244] [<c0158a54>] (vfs_write) from [<c0158d74>] (SyS_write+0x40/0x8c) [ 40.283276] [<c0158d74>] (SyS_write) from [<c000f220>] (ret_fast_syscall+0x0/0x58) [ 40.290823] Code: e1a05001 e1a04000 e1530001 1a00000b (e5953000) Switch to sizeof(int) as size of reg_cache word because the that is the internal driver representation. Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
2016-12-14ASoC: ymu831: Remove unneeded castsKrzysztof Kozlowski
Remove useless casts from/to the same type. They may actually introduce errors if type changes by mistake. Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
2016-12-14ASoC: ymu831: Fix workqueues double destroyKrzysztof Kozlowski
Do not destroy the mb4 and mkdeten workqueues on IRQ termination. IRQ termination routine is called during: 1. driver removal - the workqueues are destroyed by removal function; 2. driver suspend - the workqueues are not allocated during resume. Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
2016-12-14ASoC: ymu831: Fix -ERRNO casted to unsigned intigerKrzysztof Kozlowski
The load_file() returns int (size or -ERRNO for erros) so it cannot be assigned to UINT32 because ERRNO will be lost. Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
2016-12-14ASoC: ymu831: Do not dereference pointer before checking it for non-NULLKrzysztof Kozlowski
Fix warnings: sound/soc/codecs/ymu831/ymu831.c:5278 mc_asoc_hw_params() warn: variable dereferenced before check 'substream' (see line 5268) sound/soc/codecs/ymu831/ymu831.c:5475 mc_asoc_hw_free() warn: variable dereferenced before check 'substream' (see line 5470) Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
2016-12-14ASoC: ymu831: Fix overflow when casting int to uint8Krzysztof Kozlowski
The value returned by get_incall_mic() is always used as int and it may be -ERRNO, so it should not be returned as uint8: sound/soc/codecs/ymu831/ymu831.c:1652 get_incall_mic() warn: signedness bug returning '(-5)' Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
2016-12-14ASoC: ymu831: Add Yamaha YMU831 codec supportInha Song
This patch add support for ymu831 codec. Signed-off-by: Inha Song <ideal.song@samsung.com>
2016-12-14LOCAL / ASoC: max98504A: Add max98504A Speaker amplifier driverInha Song
This patch add MAX98504A Class D Speaker Amplifier driver. The MAX98504A is a high efficiency mono Class D audio amplifier that features an integrated boost converter with voltage and current sensing ADCs for dynamic speaker management solutions. Signed-off-by: Inha Song <ideal.song@samsung.com> [k.kozlowski: rebased on 4.1] Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
2016-07-10ASoC: ssm4567: Reset device before regcache_sync()Lars-Peter Clausen
[ Upstream commit 712a8038cc24dba668afe82f0413714ca87184e0 ] When the ssm4567 is powered up the driver calles regcache_sync() to restore the register map content. regcache_sync() assumes that the device is in its power-on reset state. Make sure that this is the case by explicitly resetting the ssm4567 register map before calling regcache_sync() otherwise we might end up with a incorrect register map which leads to undefined behaviour. One such undefined behaviour was observed when returning from system suspend while a playback stream is active, in that case the ssm4567 was kept muted after resume. Fixes: 1ee44ce03011 ("ASoC: ssm4567: Add driver for Analog Devices SSM4567 amplifier") Reported-by: Harsha Priya <harshapriya.n@intel.com> Tested-by: Fang, Yang A <yang.a.fang@intel.com> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-06-06ASoC: ak4642: Enable cache usage to fix crashes on resumeMark Brown
[ Upstream commit d3030d11961a8c103cf07aed59905276ddfc06c2 ] The ak4642 driver is using a regmap cache sync to restore the configuration of the chip on resume but (as Peter observed) does not actually define a register cache which means that the resume is never going to work and we trigger asserts in regmap. Fix this by enabling caching. Reported-by: Geert Uytterhoeven <geert@linux-m68k.org> Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Tested-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-06-06ASoC: ak4642: Fix up max_register settingAxel Lin
[ Upstream commit f8ea6cebcfa6499949392da71fc427567c9e5a0e ] The max_register setting for ak4642, ak4643 and ak4648 are wrong, fix it. According to the datasheet: the maximum valid register for ak4642 is 0x1f the maximum valid register for ak4643 is 0x24 the maximum valid register for ak4648 is 0x27 The default settings for ak4642 and ak4643 are the same for 0x0 ~ 0x1f registers, so it's fine to use the same reg_default table with differnt num_reg_defaults setting. Signed-off-by: Axel Lin <axel.lin@ingics.com> Tested-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-05-16ASoC: rt5640: Correct the digital interface data selectSugar Zhang
[ Upstream commit 653aa4645244042826f105aab1be3d01b3d493ca ] this patch corrects the interface adc/dac control register definition according to datasheet. Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-03-22ASoC: wm_adsp: Fix enum ctl accesses in a wrong typeTakashi Iwai
[ Upstream commit 15c665700bf6f4543f003ac0fbb1e9ec692e93f2 ] The firmware ctls like "DSP1 Firmware" in wm_adsp codec driver are enum, while the current driver accesses wrongly via value.integer.value[]. They have to be via value.enumerated.item[] instead. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-03-17ASoC: wm8994: Fix enum ctl accesses in a wrong typeTakashi Iwai
[ Upstream commit 8019c0b37cd5a87107808300a496388b777225bf ] The DRC Mode like "AIF1DRC1 Mode" and EQ Mode like "AIF1.1 EQ Mode" in wm8994 codec driver are enum ctls, while the current driver accesses wrongly via value.integer.value[]. They have to be via value.enumerated.item[] instead. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-03-17ASoC: wm8958: Fix enum ctl accesses in a wrong typeTakashi Iwai
[ Upstream commit d0784829ae3b0beeb69b476f017d5c8a2eb95198 ] "MBC Mode", "VSS Mode", "VSS HPF Mode" and "Enhanced EQ Mode" ctls in wm8958 codec driver are enum, while the current driver accesses wrongly via value.integer.value[]. They have to be via value.enumerated.item[] instead. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-02-23ASoC: rt5645: fix the shift bit of IN1 boostBard Liao
[ Upstream commit b28785fa9cede0d4f47310ca0dd2a4e1d50478b5 ] The shift bit of IN1 boost gain control is 12. Signed-off-by: Bard Liao <bardliao@realtek.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
2016-01-31ASoC: arizona: Fix bclk for sample rates that are multiple of 4kHzNikesh Oswal
commit e73694d871867cae8471d2350ce89acb38bc2b63 upstream. For a sample rate of 12kHz the bclk was taken from the 44.1kHz table as we test for a multiple of 8kHz. This patch fixes this issue by testing for multiples of 4kHz instead. Signed-off-by: Nikesh Oswal <Nikesh.Oswal@cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-01-31ASoC: wm8974: set cache type for regmapMans Rullgard
commit 1ea5998afe903384ddc16391d4c023cd4c867bea upstream. Attempting to use this codec driver triggers a BUG() in regcache_sync() since no cache type is set. The register map of this device is fairly small and has few holes so a flat cache is suitable. Signed-off-by: Mans Rullgard <mans@mansr.com> Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-01-31ASoC: es8328: Fix deemphasis valuesJohn Keeping
commit 84ebac4d04d25ac5c1b1dc3ae621fd465eb38f4e upstream. This is using completely the wrong mask and value when updating the register. Since the correct values are already defined in the header, switch to using a table with explicit constants rather than shifting the array index. Signed-off-by: John Keeping <john@metanate.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-01-31ASoC: wm8962: correct addresses for HPF_C_0/1Sachin Pandhare
commit e9f96bc53c1b959859599cb30ce6fd4fbb4448c2 upstream. From datasheet: R17408 (4400h) HPF_C_1 R17409 (4401h) HPF_C_0 17048 -> 17408 (0x4400) 17049 -> 17409 (0x4401) Signed-off-by: Sachin Pandhare <sachinpandhare@gmail.com> Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-10-22ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probeGianluca Renzi
commit e256da84a04ea31c3c215997c847609af224e8f4 upstream. Signed-off-by: Gianluca Renzi <gianlucarenzi@eurekelettronica.it> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-09-21ASoC: arizona: Poll for FLL clock OK rather than use interruptsCharles Keepax
commit 0e7659712836ca59b4735bc5cc94de38698a5e01 upstream. The extcon driver takes the DAPM mutex from within the interrupt thread in several places, which makes it possible to get into a situation where the interrupt thread is blocked waiting on the DAPM mutex whilst a DAPM sequence is running which is attempting to configure the FLL. In this case the FLL completion can't be completed as as the IRQ handler is ONE_SHOT, which cause the FLL lock to use the full time out (250mS) and report that the process timed out. It is not really practical to make the extcon driver not take the DAPM mutex from within the interrupt thread, at least not without extensive modification. So this patch fixes the issue by switching the wait for the FLL lock to polling. A few fast polls are done first as the FLL should lock quickly for a good quality reference clock, (indeed it hits on the first poll on my system) and it will poll every 20mS after that until it times out. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-09-21ASoC: arizona: Fix gain settings of FLL in free-run modeNikesh Oswal
commit 1cf5a330c05ae37a0a98ac7c9800a6f50d5579ec upstream. The wrong register was used to set the gain of ref loop, when changing the FLL output on an active FLL. This patch corrects the offset of the gain register. Signed-off-by: Nikesh Oswal <Nikesh.Oswal@wolfsonmicro.com> Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-09-21ASoC: adav80x: Remove .read_flag_mask setting from adav80x_regmap_configAxel Lin
commit 9d8352864907f0ad76124c5b28f65b5a382d7d7c upstream. Don't set .read_flag_mask for adav803, it's for adav801 only. Fixes: 0c2d69645628 ("ASoC: adav80x: Split SPI and I2C code into different modules") Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-09-21ASoC: rt5640: fix line out no sound issueJohn Lin
commit 9b850ca4f1c5acd7fcbbd4b38a2d27132801a8d5 upstream. The power for line out was not turned on when line out is enabled. So we add "LOUT amp" widget to turn on the power for line out. Signed-off-by: John Lin <john.lin@realtek.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-16ASoC: pcm1681: Fix setting de-emphasis sampling rate selectionAxel Lin
commit fa8173a3ef0570affde7da352de202190b3786c2 upstream. The de-emphasis sampling rate selection is controlled by BIT[3:4] of PCM1681_DEEMPH_CONTROL register. Do proper left shift to set it. Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Marek Belisko <marek.belisko@streamunlimited.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-16ASoC: ssm4567: Keep TDM_BCLKS in ssm4567_set_dai_fmtBen Zhang
commit a6c2a32ac83567f15e9af3dcbc73148ce68b2ced upstream. The regmap_write in ssm4567_set_dai_fmt accidentally clears the TDM_BCLKS field which was set earlier by ssm4567_set_tdm_slot. This patch fixes it by using regmap_update_bits with proper mask. Signed-off-by: Ben Zhang <benzh@chromium.org> Acked-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Anatol Pomozov <anatol.pomozov@gmail.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: tas2552: Fix kernel crash caused by wrong kcontrol entryPeter Ujfalusi
commit 1cf0f44811b754b64283b11ef0e60cb0de07b29c upstream. SOC_DAPM_SINGLE("Playback AMP", ..) should not be under kcontrols. It causes kernel crash (NULL pointer) when the mixers are listed. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: tas2552: Fix kernel crash when the codec is loaded but not part of a cardPeter Ujfalusi
commit 80ba2669ec8c3e6517aa935001f6cb8809bf3df4 upstream. If the card is not part of any card the tas_data->codec is NULL since it is set only during snd_soc_codec_driver.probe, which is not yet called. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: wm8960: the enum of "DAC Polarity" should be wm8960_enum[1]Zidan Wang
commit a077e81ec61e07a7f86997d045109f06719fbffe upstream. the enum of "DAC Polarity" should be wm8960_enum[1]. Signed-off-by: Zidan Wang <zidan.wang@freescale.com> Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: wm8903: Fix define for WM8903_VMID_RES_250KAxel Lin
commit ebb6ad73e645b8f2d098dd3c41d2ff0da4146a02 upstream. VMID Control 0 BIT[2:1] is VMID Divider Enable and Select 00 = VMID disabled (for OFF mode) 01 = 2 x 50kΩ divider (for normal operation) 10 = 2 x 250kΩ divider (for low power standby) 11 = 2 x 5kΩ divider (for fast start-up) So WM8903_VMID_RES_250K should be 2 << 1, which is 4. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: wm8955: Fix setting wrong register for WM8955_K_8_0_MASK bitsAxel Lin
commit 12c350050538c7dc779c083b7342bfd20f74949c upstream. WM8955_K_8_0_MASK bits is controlled by WM8955_PLL_CONTROL_3 rather than WM8955_PLL_CONTROL_2. Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: wm8737: Fixup setting VMID Impedance control registerAxel Lin
commit 14ba3ec1de043260cecd9e828ea2e3a0ad302893 upstream. According to the datasheet: R10 (0Ah) VMID Impedance Control BIT 3:2 VMIDSEL DEFAULT 00 DESCRIPTION: VMID impedance selection control 00: 75kΩ output 01: 300kΩ output 10: 2.5kΩ output WM8737_VMIDSEL_MASK is 0xC (VMIDSEL - [3:2]), so it needs to left shift WM8737_VMIDSEL_SHIFT bits for setting these bits. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: max98925: Fix mask for setting DAI invert modeAxel Lin
commit 0b51601d4504f46f585eed823485101390f0b588 upstream. The M98925_DAI_WCI_MASK bit is not updated with current code. To properly set the DAI invert mode, the mask should be M98925_DAI_BCI_MASK | M98925_DAI_WCI_MASK. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: rt5645: Init jack_detect_work before registering irqNicolas Boichat
commit 7ea3470a7277380248135a592a849e1c27960b2f upstream. Prevents frequent panic on boot, if the irq handler rt5645_irq gets called before the workqueue rt5645_jack_detect_work is initialized. Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03ASoC: arizona: Fix noise generator gain TLVRichard Fitzgerald
commit 15575ed544910464715df5c45a44b9732e415b93 upstream. The Arizona codec drivers had an incorrect dB scaling for the noise generator gain that started at 0dB and went upwards. Actually the highest setting is 0dB. Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-05-12Merge remote-tracking branches 'asoc/fix/davinci', 'asoc/fix/mc13783', ↵Mark Brown
'asoc/fix/uda1380', 'asoc/fix/wm8960' and 'asoc/fix/wm8994' into asoc-linus
2015-05-12ASoC: wm8994: correct BCLK DIV 348 to 384Zidan Wang
According to the RM of wm8958, BCLK DIV 348 doesn't exist, correct it to 384. Signed-off-by: Zidan Wang <zidan.wang@freescale.com> Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
2015-05-12ASoC: wm8960: fix "RINPUT3" audio route errorZidan Wang
It should be "RINPUT3" instead of "LINPUT3" route to "Right Input Mixer". Signed-off-by: Zidan Wang <zidan.wang@freescale.com> Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
2015-05-04ASoC: uda1380: Avoid accessing i2c bus when codec is disabledVasily Khoruzhick
set_dai_fmt_both() callback is called from snd_soc_runtime_set_dai_fmt() which is called from snd_soc_register_card(), but at this time codec is not powered on yet. Replace direct i2c write with regcache write. Fixes: 5f0acedddf533c (ASoC: rx1950_uda1380: Use static DAI format setup) Fixes: 5cc10b9b77c234 (ASoC: h1940_uda1380: Use static DAI format setup) Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
2015-05-01ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() callsAxel Lin
mc13xxx_reg_rmw() won't change any bit if passing 0 to the mask field. Pass AUDIO_SSI_SEL instead of 0 for the mask field to set AUDIO_SSI_SEL bit. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
2015-04-29Merge remote-tracking branches 'asoc/fix/rt5677', 'asoc/fix/samsung' and ↵Mark Brown
'asoc/fix/tfa9879' into asoc-linus
2015-04-29Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-linusMark Brown
2015-04-29ASoC: rt5677: fixed wrong DMIC ref clockBard Liao
DMIC clock source is not from codec system clock directly. it is generated from the division of system clock. And it should be 256 * sample rate of AIF1. Signed-off-by: Bard Liao <bardliao@realtek.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
2015-04-27ASoC: rt5645: Fix mask for setting RT5645_DMIC_2_DP_GPIO12 bitAxel Lin
Current code uses wrong mask when setting RT5645_DMIC_2_DP_GPIO12 bit, fix it. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@kernel.org>