Takashi Iwai
f81483aaeb
Merge branch 'for-next' into for-linus
...
Pull 5.17 materials.
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-01-05 15:38:34 +01:00
Christian A. Ehrhardt
57f234248f
ALSA: hda/cs8409: Fix Jack detection after resume
...
The suspend code unconditionally sets ->hp_jack_in and ->mic_jack_in
to zero but without reporting this status change to the HDA core.
To compensate for this, always assume a status change on the
first unsol event after boot or resume.
Fixes: 424e531b47 ("ALSA: hda/cs8409: Ensure Type Detection is only run on startup when necessary")
Signed-off-by: Christian A. Ehrhardt <lk@c--e.de >
Link: https://lore.kernel.org/r/20211231134432.atwmuzeceqiklcoa@cae.in-ulm.de
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-01-04 17:05:50 +01:00
Christian A. Ehrhardt
8cd0765717
ALSA: hda/cs8409: Increase delay during jack detection
...
Commit c8b4f0865e reduced delays related to cs42l42 jack
detection. However, the change was too aggressive. As a result
internal speakers on DELL Inspirion 3501 are not detected.
Increase the delay in cs42l42_run_jack_detect() a bit.
Fixes: c8b4f0865e ("ALSA: hda/cs8409: Remove unnecessary delays")
Signed-off-by: Christian A. Ehrhardt <lk@c--e.de >
Link: https://lore.kernel.org/r/20211231131221.itwotyfk5qomn7n6@cae.in-ulm.de
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-01-04 17:05:37 +01:00
Stefan Binding
65cc4ad62a
ALSA: hda/cs8409: Set PMSG_ON earlier inside cs8409 driver
...
For cs8409, it is required to run Jack Detect on resume.
Jack Detect on cs8409+cs42l42 requires an interrupt from
cs42l42 to be sent to cs8409 which is propogated to the driver
via an unsolicited event.
However, the hda_codec drops unsolicited events if the power_state
is not set to PMSG_ON. Which is set at the end of the resume call.
This means there is a race condition between setting power_state
to PMSG_ON and receiving the interrupt.
To solve this, we can add an API to set the power_state earlier
and call that before we start Jack Detect.
This does not cause issues, since we know inside our driver that
we are already initialized, and ready to handle the unsolicited
events.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Cc: <stable@vger.kernel.org > # v5.15+
Link: https://lore.kernel.org/r/20211128115558.71683-1-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-11-29 09:22:56 +01:00
Stefan Binding
94d508fa31
ALSA: hda/cs8409: Setup Dolphin Headset Mic as Phantom Jack
...
Dell's requirement to have headset mic as phantom jack on this
specific dolphin hardware platform.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210916095646.7631-1-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-09-16 12:24:46 +02:00
Stefan Binding
ea41a498cc
ALSA: hda/cs8409: Initialize Codec only in init fixup.
...
It is not necessary to initialize the codec during both probe and inside
the init fixup.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210827110252.5361-2-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-27 22:35:50 +02:00
Stefan Binding
424e531b47
ALSA: hda/cs8409: Ensure Type Detection is only run on startup when necessary
...
Type Detection should only be run after init and when the controls have been
built. There is no need to run it multiple times.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210827110252.5361-1-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-27 22:35:34 +02:00
Stefan Binding
1a04830169
ALSA: hda/cs8409: Prevent pops and clicks during suspend
...
Some of the register values set for type detection cause pops during suspend,
ensure these are cleaned up after type detection completes, as well
ensuring that these are cleared when we suspend.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210812183433.6330-1-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-13 08:07:59 +02:00
Stefan Binding
7482ec7111
ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops
...
Codec is muted on init, and then unmuted when the stream starts.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-28-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:42:01 +02:00
Stefan Binding
4ff2ae3a13
ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for suspend
...
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-27-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:42:00 +02:00
Stefan Binding
c8b4f0865e
ALSA: hda/cs8409: Remove unnecessary delays
...
Since delays when starting jack detection after initialization
have been reduced/removed, it is necessary to add back in an extra
20ms delay after the init sequence to allow the CS42L42 to power up
correctly.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-26-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:59 +02:00
Stefan Binding
928adf0ebc
ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction waits
...
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-25-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:58 +02:00
Stefan Binding
fed0aaca0b
ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42
...
CS42L42 is configured to use a fixed sample rate of 48kHz.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-24-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:57 +02:00
Lucas Tanure
20e5077241
ALSA: hda/cs8409: Add support for dolphin
...
Dolphin devices have CS8409 HDA Bridge connected to two CS42L42 codecs.
Codec 1 supports Headphone and Headset Mic.
Codec 2 supports Line Out.
Features:
- Front and Read Jacks appear as separate jacks; Removal or connection
of on jack should not affect the connection of the other.
- Front Jack only shows up on jack detection.
- Rear Jack is Phantom Jack.
- Separate Volume Controls for each Jack
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-22-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:55 +02:00
Stefan Binding
404e770a9c
ALSA: hda/cs8409: Add Support to disable jack type detection for CS42L42
...
Some hardware configurations do not support jack type detection.
Instead, for those configurations, only tip detection is supported.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-21-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:54 +02:00
Stefan Binding
c076e201d5
ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol events
...
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-20-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:54 +02:00
Lucas Tanure
24f7ac3d3b
ALSA: hda/cs8409: Move codec properties to its own struct
...
To accommodate move, cs42l42_resume has been added to mirror
the existing function cs42l42_suspend.
Function cs42l42_reset is no longer required, since cs42l42_resume
and cs42l42_suspend perform the same operations.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-19-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:53 +02:00
Lucas Tanure
636eb9d26f
ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions
...
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-18-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:51 +02:00
Lucas Tanure
165b81c4ac
ALSA: hda/cs8409: Support i2c bulk read/write functions
...
This allows mutex locks to be moved into i2c functions, as
the bulk read/write functions can lock/unlock themselves to
prevent interruption of sequence reads/writes.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-17-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:50 +02:00
Lucas Tanure
8de4e5a668
ALSA: hda/cs8409: Avoid re-setting the same page as the last access
...
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-16-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:49 +02:00
Lucas Tanure
d395fd7864
ALSA: hda/cs8409: Avoid setting the same I2C address for every access
...
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-15-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:48 +02:00
Lucas Tanure
647d50a0c3
ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses
...
Only disable I2C clock 25 ms after not being used.
The current implementation enables and disables the I2C clock for each
I2C transaction. Each enable/disable call requires two verb transactions.
This means each I2C transaction requires a total of four verb transactions
to enable and disable the clock.
However, if there are multiple consecutive I2C transactions, it is not
necessary to enable and disable the clock each time, instead it is more
efficient to enable the clock for the first transaction, and disable it
after the final transaction, which would improve performance.
This is achieved by using a timeout which disables the clock if no request
to enable the clock has occurred for 25 ms.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-14-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:48 +02:00
Lucas Tanure
b2a887748e
ALSA: hda/cs8409: Generalize volume controls
...
Use amp offsets as indexes for saved volumes.
Remove dependencies on NID inside volume control functions.
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-13-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:47 +02:00
Lucas Tanure
a1a6c7df2b
ALSA: hda/cs8409: Prevent I2C access during suspend time
...
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-12-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:46 +02:00
Stefan Binding
db0ae848a9
ALSA: hda/cs8409: Simplify CS42L42 jack detect.
...
Cleanup interrupt masks.
Remove unnecessary read/writes.
Ensure Tip Sense/Type Detection interrupts are enabled/disabled
when needed.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-11-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:45 +02:00
Stefan Binding
1e0a975a8a
ALSA: hda/cs8409: Mask CS42L42 wake events
...
Wake events are not needed for jack detect.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-10-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:44 +02:00
Lucas Tanure
134ae782c4
ALSA: hda/cs8409: Disable unsolicited response for the first boot
...
The subsequence suspend and remuse have their enable/disable
unsolicited responses at the correct place already
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-9-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:44 +02:00
Stefan Binding
cc7df1623c
ALSA: hda/cs8409: Disable unsolicited responses during suspend
...
Ensure unsolicited responses cannot occur whilst the sub codecs are
being disabled.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-8-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:43 +02:00
Stefan Binding
29dbb9bcd3
ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg
...
Enable HSBIAS_SENSE_EN for Cyborg during jack detect to reduce
pops and clicks.
Do not enable this for Warlock/Bullseye, as it causes ESD issues.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-6-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:42 +02:00
Stefan Binding
ccff0064a7
ALSA: hda/cs8409: Use enums for register names and coefficients
...
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-4-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:40 +02:00
Lucas Tanure
9e7647b507
ALSA: hda/cs8409: Move arrays of configuration to a new file
...
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-3-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:39 +02:00
Lucas Tanure
8c70461bbb
ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module
...
Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20210811185654.6837-2-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2021-08-12 13:41:36 +02:00