Age | Commit message (Collapse) | Author | Files | Lines |
|
There are some registers needed for enabling rt298 IRQ missed on
current driver.
Signed-off-by: Bard Liao <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Andreas Irestål <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Andreas Irestål <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Andreas Irestål <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
The debug logging of FLL calculations was confusing. Values were
printed in hex without indicating this by a leading 0x, and
despite these normally being required in decimal. Also where the
register value isn't the actual value (it s a power-of-two or
0 means 1, 1 means 2, ...) it was unclear whether the actual or
register value was shown.
This patch changes the log print so that all mathematical values
are shown in decimal, all register values are shown in hex with a
0x prefix, and where the register value isn't the actual integer
value the decimal integer value is shown in () after the hex
register value.
Signed-off-by: Richard Fitzgerald <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Axel Lin <[email protected]>
Acked-by: anish kumar <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
value variable can contain error values and is compared with zero.
Its type must be signed.
The problem has been detected using coccinelle script
scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
Signed-off-by: Andrzej Hajda <[email protected]>
Reviewed-by: Axel Lin <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
In the conversion to regmap, I assumed that the devm_() variant could be
used in the soc probe function.
As a mater of fact with the current code the regmap is freed twice
because of the devm_() call:
(mutex_lock) from [<c01f6624>] (debugfs_remove_recursive+0x50/0x1d0)
(debugfs_remove_recursive) from [<c02bf800>] (regmap_debugfs_exit+0x1c/0xd4)
(regmap_debugfs_exit) from [<c02ba1f8>] (regmap_exit+0x28/0xc8)
(regmap_exit) from [<c02aa258>] (release_nodes+0x18c/0x204)
(release_nodes) from [<c02a278c>] (device_release+0x18/0x90)
(device_release) from [<c0239030>] (kobject_release+0x90/0x1bc)
(kobject_release) from [<c0395c94>] (wm9713_soc_remove+0x1c/0x24)
(wm9713_soc_remove) from [<c0384884>] (soc_remove_component+0x50/0x7c)
(soc_remove_component) from [<c0386c28>] (soc_remove_dai_links+0x118/0x228)
(soc_remove_dai_links) from [<c038721c>] (snd_soc_register_card+0x4e4/0xdd4)
(snd_soc_register_card) from [<c0393c54>] (devm_snd_soc_register_card+0x34/0x70)
Fix this by replacing the devm_regmap initialization code with the non
devm_() variant.
Fixes: 700dadfefc3d ASoC: wm9713: convert to regmap
Signed-off-by: Robert Jarzmik <[email protected]>
Acked-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
The codec registers are reset during S3. So need to reconfigure
all pins and DP1.2 feature again after resume from S3. Also
reprogram the required registers if the S3 was triggered during
playback.
In suspended state ELD notify callback is not processed, So add
ELD check for all pins as well.
Also turn the codec power domain OFF which is kept ON during
controller resequencing and codec reenumeration.
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]>
|
|
Powering off codec immediately after sending D3 verb may not set
the node to D3 state. So wait for a confirmation response before
shutting down codec.
Signed-off-by: Subhransu S. Prusty <[email protected]>
Signed-off-by: Vinod Koul <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
enable/disable master clock when codec is active or not.
Signed-off-by: Sugar Zhang <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Axel Lin <[email protected]>
Acked-by: anish kumar <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Axel Lin <[email protected]>
Acked-by: anish kumar <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Axel Lin <[email protected]>
Acked-by: anish kumar <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Axel Lin <[email protected]>
Acked-by: anish kumar <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
wm_coeff_{read|write}_control were using the control length rather than
the length parameter passed to them. This is not causing any issues as
the two values are currently always the same, but this needs fixed to
allow future improvements.
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
In the case where the firmware does not tell us the access flags for the
control, we let ALSA select a default (READWRITE). But really we should
be applying the volatile flag in this case, as we will read the control
from the DSP if it is on in this case. This patch explicitly sets the
access flags in all cases.
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
There is a very small window between then wm_adsp_compr_free gets call
and when the DSP is actually powered down. If we get an IRQ from the DSP
in this window then the wm_adsp_compr pointer will be NULL. This patch
adds a check for this into the IRQ handler to avoid any issues when this
happens.
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
Signed-off-by: anish kumar <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: anish kumar <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
This patch uses i915 component framework to register for hotplug
notification.
In the hotplug notification, driver reads pin sense and ELD by
sending PIN_SENSE and ELD verbs over HDA bus. Once it identifies
valid pin sense and valid ELD, store the ELD into the
corresponding pin map buffer.
Also read the monitor present sense during resume and ignore the
ELD notify from graphics during PM as is done in legacy hda,
commit 8ae743e82f0b ("ALSA: hda - Skip ELD notification during
system suspend")
Signed-off-by: Subhransu S. Prusty <[email protected]>
Signed-off-by: Vinod Koul <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
'asoc/fix/simple', 'asoc/fix/wm5110' and 'asoc/fix/wm8960' into asoc-linus
|
|
'asoc/fix/mxs-saif', 'asoc/fix/qcom' and 'asoc/fix/rt286' into asoc-linus
|
|
'asoc/fix/dpcm', 'asoc/fix/dwc', 'asoc/fix/fsl' and 'asoc/fix/fsl-ssi' into asoc-linus
|
|
|
|
When the FLL is in pseudo-fractional mode there is an additional
limit on fref based on the fratio, to prevent aliasing around the
Nyquist frequency. If fref exceeds this limit the refclk divider
must be increased and the calculation tried again until a suitable
combination of fref and fratio is found or we have to fall back to
integer mode.
This patch also adds some debug log prints around this code.
Signed-off-by: Richard Fitzgerald <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Forwarding the return value of i2c_master_send, leads to errors
later on, since i2c_master_send returns the number of bytes
transmittet. Check for ret < 0 instead and return 0 otherwise.
Signed-off-by: Pascal Huerst <[email protected]>
Acked-by: Lars-Peter Clausen <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
In some configurations, the dai registers get written before the bias
level is changed in the codec driver. This leads to a situation where
an initial write to the serial port register gets ignored, and future
writes may as well, since regmap thinks that the codec already holds the
value. More specifically, configuring the codec as i2s master would in
fact result in the codec running as slave, a situation where no i2s
clocks are generated and hence no data is transferred.
This change makes sure that regmap only caches writes when the core
clock is disabled, and syncs regmap whenever enabling the core clock
again.
Signed-off-by: Andreas Irestål <[email protected]>
Acked-by: Lars-Peter Clausen <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
The Arizona CODECs support several rates that do not have simple defines
in ALSA. This patch adds support for SNDRV_PCM_RATE_KNOT so that users
can open stream at these rates. As part of this we should always set
constraints in arizona_startup, currently we only set the constraints if
we already have a clock to limit rates to that family of sample rates.
This patch updates this to set a constraint of all rates supported by
the chip if we do not already know which family of rates to limit to.
Finally we also reduce the list of rates supported in the constraints to
only include those that are supported on current parts.
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
When playback mono wav with record in background, there will be some
nosie in the right dac channel. It seems that the ADC data has been
routed to the dac channel.
The cs42888 have 8 dac channels, it's appropriate to mute the unused
dac channels, and the noise will disappear.
Steps to reproduce this issue:
arecord -D hw:0,0 -f S16_LE -r 48000 -c 1 a.wav &
aplay -Dhw:0,0 audio48k16M.wav
Signed-off-by: Zidan Wang <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
This is the initial codec driver for rt5514. The codec includes a low power
DSP for voice wake up. The register address is incremental by 4 in the DSP
memory map. In order to recover the codec settings in the codec mode and
manipulate the DSP mode for voice wake up, we use the multi-level register
map. One is for ALSA API in codec mode that can be recovered by cache
before recording. Another is for DSP related settings that can be accessed
with 32bit address of the DSP in the application of voice wake up.
Signed-off-by: Oder Chiou <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
We should return a valid sample rate from the pointer callback, this
patch adds this into the driver.
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
This patch adds firmware compressed stream capture support
and DAI hookups for voice control firmware (based on the wm5110
implementation.)
Signed-off-by: Richard Fitzgerald <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
wm5102 also supports the audio trace firmware, this patch adds support
for this into the wm5102 driver.
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|
|
Mainly this adds DAI links for the audio trace, however, it is also
necessary to update the data IRQ handler to check more cores. We have
the handler check every core so it should not be necessary to update
this function if more compressed firmwares are added in the future.
Signed-off-by: Charles Keepax <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
|