Charles Keepax
0a0eb567e1
ASoC: cs42l42: Minor error paths fixups
...
Correct some unchecked re-allocations of ret whilst reading the device
ID and ensure the hardware state is returned to off on the error
paths.
Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210510131357.17170-8-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-05-10 17:27:52 +01:00
Vitaly Rodionov
66df9477bd
ASoC: cs42l42: Add support for ACPI table match entry
...
Adding support for ACPI-based systems.
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210426155303.853236-3-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-05-10 17:06:10 +01:00
Richard Fitzgerald
ab78322a0d
ASoC: cs42l42: Use device_property API instead of of_property
...
Use the device_property APIs so that the code will work on devicetree
and ACPI systems.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com >
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210426155303.853236-2-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-05-10 17:06:09 +01:00
Lucas Tanure
c26a5289e8
ASoC: cs42l42: Add support for set_jack calls
...
Replace the internal jack creation by set_jack call, so users can map
buttons in their machine driver
Also only enable jack detection IRQ after set_jack call
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210426155303.853236-1-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-05-10 17:06:08 +01:00
Richard Fitzgerald
b7d00776eb
ASoC: cs42l42: Wait for PLL to lock before switching to it
...
The PLL should have locked before using it to supply MCLK.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com >
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-16-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:31 +00:00
Richard Fitzgerald
882589bb70
ASoC: cs42l42: Only start PLL if it is needed
...
The PLL is only needed for sclk < 11289600 Hz and cs42l42_pll_config()
will not configure it for higher rates. So it must only be enabled
when it is needed.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com >
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-15-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:30 +00:00
Richard Fitzgerald
0ea23660c7
ASoC: cs42l42: Wait at least 150us after writing SCLK_PRESENT
...
There must be a delay of at least 150us after writing SCLK_PRESENT
before issuing another I2C write.
This is done using struct reg_sequence because it can specify a delay
after the write and the whole sequence is written atomically.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com >
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-14-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:29 +00:00
Lucas Tanure
2cdba9b045
ASoC: cs42l42: Use bclk from hw_params if set_sysclk was not called
...
Add support for reading the source clock from snd_soc_params_to_bclk
so the machine driver is not required to call cs42l42_set_sysclk
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-13-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:28 +00:00
Lucas Tanure
c5b8ee0879
ASoC: cs42l42: Report jack and button detection
...
Report the Jack events to the user space through ALSA.
Also moves request_threaded_irq() to component_probe so it don't get
interrupts before the initialization the struct snd_soc_jack.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-12-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:27 +00:00
Lucas Tanure
585e7079de
ASoC: cs42l42: Add Capture Support
...
Add support for capture path on headseat pins
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-11-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:26 +00:00
Lucas Tanure
43fc357199
ASoC: cs42l42: Set clock source for both ways of stream
...
Move the enable/disable of clocks to cs42l42_mute_stream so the record
path also get clocks.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-10-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:25 +00:00
Lucas Tanure
621d65f3b8
ASoC: cs42l42: Provide finer control on playback path
...
Removing cs42l42_hpdrv_evt that enables the entire chain and replace by
a set of widgets that can better define the codec
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-9-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:24 +00:00
Lucas Tanure
1abca8e1c7
ASoC: cs42l42: Disable regulators if probe fails
...
In case of cs42l42_i2c_probe() fail, the regulators were left enabled.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-8-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:23 +00:00
Lucas Tanure
2b869e0ea5
ASoC: cs42l42: Remove power if the driver is being removed
...
Ensure the power supplies are turned off when removing the driver
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210306185553.62053-7-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 13:14:22 +00:00
Lucas Tanure
19325cfea0
ASoC: cs42l42: Always wait at least 3ms after reset
...
This delay is part of the power-up sequence defined in the datasheet.
A runtime_resume is a power-up so must also include the delay.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210305173442.195740-6-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 12:51:02 +00:00
Lucas Tanure
15013240fc
ASoC: cs42l42: Don't enable/disable regulator at Bias Level
...
dev_pm_ops already enable/disable the codec if not in use
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210305173442.195740-5-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 12:51:01 +00:00
Lucas Tanure
72d904763a
ASoC: cs42l42: Fix mixer volume control
...
The minimum value is 0x3f (-63dB), which also is mute
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210305173442.195740-4-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 12:50:59 +00:00
Lucas Tanure
2bdc4f5c68
ASoC: cs42l42: Fix channel width support
...
Remove the hard coded 32 bits width and replace with the correct width
calculated by params_width.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210305173442.195740-3-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 12:50:58 +00:00
Lucas Tanure
e793c96551
ASoC: cs42l42: Fix Bitclock polarity inversion
...
The driver was setting bit clock polarity opposite to intended polarity.
Also simplify the code by grouping ADC and DAC clock configurations into
a single field.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210305173442.195740-2-tanureal@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2021-03-10 12:50:56 +00:00
Kuninori Morimoto
03c0f1b5e1
ASoC: codecs: cs*: merge .digital_mute() into .mute_stream()
...
snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream
int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com >
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com >
Link: https://lore.kernel.org/r/87r1tlwiwe.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2020-07-16 23:06:19 +01:00
Pierre-Louis Bossart
5502ce4ea2
ASoC: codecs: cs42l42: remove always-true comparisons
...
Fix W=1 warnings:
cs42l42.c: In function 'cs42l42_handle_device_data':
cs42l42.c:1661:12: warning: comparison of unsigned expression >= 0 is
always true [-Wtype-limits]
1661 | if ((val >= CS42L42_BTN_DET_INIT_DBNCE_MIN) &&
| ^~
cs42l42.c:1679:12: warning: comparison of unsigned expression >= 0 is
always true [-Wtype-limits]
1679 | if ((val >= CS42L42_BTN_DET_EVENT_DBNCE_MIN) &&
| ^~
cs42l42.c:1698:23: warning: comparison of unsigned expression >= 0 is
always true [-Wtype-limits]
1698 | if ((thresholds[i] >= CS42L42_HS_DET_LEVEL_MIN) &&
| ^~
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20200701181320.80848-3-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2020-07-02 14:55:29 +01:00
Kuninori Morimoto
a11f8a1c33
ASoC: codecs: cs*: rename to snd_soc_component_read()
...
We need to use snd_soc_component_read()
instead of snd_soc_component_read32()
This patch renames _read32() to _read()
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com >
Link: https://lore.kernel.org/r/87a7134mc4.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2020-06-22 15:13:48 +01:00
Thomas Gleixner
d2912cb15b
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
...
Based on 2 normalized pattern(s):
this program is free software you can redistribute it and or modify
it under the terms of the gnu general public license version 2 as
published by the free software foundation
this program is free software you can redistribute it and or modify
it under the terms of the gnu general public license version 2 as
published by the free software foundation #
extracted by the scancode license scanner the SPDX license identifier
GPL-2.0-only
has been chosen to replace the boilerplate/reference in 4122 file(s).
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Enrico Weigelt <info@metux.net >
Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org >
Reviewed-by: Allison Randal <allison@lohutok.net >
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2019-06-19 17:09:55 +02:00
Kuninori Morimoto
c92614022c
ASoC: cs42l42: replace codec to component
...
Now we can replace Codec to Component. Let's do it.
Note:
xxx_codec_xxx() -> xxx_component_xxx()
.idle_bias_off = 0 -> .idle_bias_on = 1
.ignore_pmdown_time = 1 -> .use_pmdown_time = 0
- -> .endianness = 1
- -> .non_legacy_dai_naming = 1
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2018-02-12 09:47:35 +00:00
Gustavo A. R. Silva
72a63c6e78
ASoC: cs42l42: constify snd_soc_dai_ops structure
...
This structure is only stored in the ops field of a snd_soc_dai_driver
structure. That field is declared const, so snd_soc_dai_ops structures
that have this property can be declared as const also.
Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2017-07-17 16:48:51 +01:00
Fabio Estevam
205cbac065
ASoC: cs42l42: Remove unneeded gpiod NULL check
...
The gpiod API checks for NULL descriptors, so there is no need to
duplicate the check in the driver.
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2017-07-17 15:43:13 +01:00
kbuild test robot
45ee1d8555
ASoC: fix platform_no_drv_owner.cocci warnings
...
sound/soc/codecs/cs42l42.c:1972:3-8: No need to set .owner here. The core will do it.
Remove .owner field if calls are used which set it automatically
Generated by: scripts/coccinelle/api/platform_no_drv_owner.cocci
CC: James Schulman <james.schulman@cirrus.com >
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2016-11-10 16:13:57 +00:00
James Schulman
2c394ca796
ASoC: Add support for CS42L42 codec
...
Add support for Cirrus Logic CS42L42 codec. SoundWire support
is not enabled. Features support for I2C control and I2S audio.
Signed-off-by: James Schulman <james.schulman@cirrus.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2016-11-09 13:50:14 +00:00