6e7cf6702c
ALSA: hda/cs8409: Add Speaker Playback Switch for Warlock
...
Add support for a Speaker Playback Switch, which disables
the Amp connected to cs8409. The Switch is not added
automatically because cs8409 does not have an output amp
for the speaker NID.
Note: This switch uses a different GPIO to Cyborg/Odin variants
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20220511100207.1268321-4-sbinding@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-05-12 11:52:36 +02:00
f129f26f76
ALSA: hda/cs8409: Add Speaker Playback Switch for Cyborg
...
Add support for a Speaker Playback Switch, which disables
the Amp connected to cs8409. The Switch is not added
automatically because cs8409 does not have an output amp
for the speaker NID.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20220511100207.1268321-3-sbinding@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-05-12 11:52:35 +02:00
22bb82264c
ALSA: hda/cs8409: Support new Odin Variants
...
Odin Variants have the internal mic connected
directly to the CPU rather than codec.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20220511100207.1268321-2-sbinding@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-05-12 11:52:34 +02:00
ec6a8aaafb
ALSA: hda/cs8409: Support manual mode detection for CS42L42
...
For Jack detection on CS42L42, detection is normally done using
"auto" mode, which automatically detects what type of jack is
connected to the device. However, some headsets are not
automatically detected, and as such and alternative detection
method "manual mode" can be used to detect these headsets.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Tested-by: Chris Chiu <chris.chiu@canonical.com >
Link: https://lore.kernel.org/r/20220504161236.2490532-4-sbinding@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-05-09 10:46:14 +02:00
9cd8273813
ALSA: hda/cs8409: Use general cs42l42 include in cs8409 hda driver
...
This is to improve maintainability of the driver.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20220504161236.2490532-3-sbinding@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-05-09 10:45:07 +02:00
6581a045d5
ALSA: hda/cs8409: Support new Warlock MLK Variants
...
Added 15 new laptops, with 2 variants:
Warlock MLK and Warlock MLK with Dual Mic
The only difference between the variants, is the
the dual Mic variants use a stereo DMIC.
These variants do no use reduce volume (Full Scale Volume)
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20220328115614.15761-5-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-03-28 18:32:36 +02:00
342b6b610a
ALSA: hda/cs8409: Fix Full Scale Volume setting for all variants
...
All current variants (Bullseye/Warlock/Cyborg) should be using
reduced volume (-6dB) for better speaker protection.
Refactor to make more explicit the meaning and setting of
Full Scale Volume setting to avoid future confusion.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com >
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com >
Link: https://lore.kernel.org/r/20220328115614.15761-4-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-03-28 18:32:16 +02:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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