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>
This commit is contained in:
committed by
Takashi Iwai
parent
ca4c5b334f
commit
8c70461bbb
@@ -157,6 +157,16 @@ config SND_HDA_CODEC_CIRRUS
|
|||||||
comment "Set to Y if you want auto-loading the codec driver"
|
comment "Set to Y if you want auto-loading the codec driver"
|
||||||
depends on SND_HDA=y && SND_HDA_CODEC_CIRRUS=m
|
depends on SND_HDA=y && SND_HDA_CODEC_CIRRUS=m
|
||||||
|
|
||||||
|
config SND_HDA_CODEC_CS8409
|
||||||
|
tristate "Build Cirrus Logic HDA bridge support"
|
||||||
|
select SND_HDA_GENERIC
|
||||||
|
help
|
||||||
|
Say Y or M here to include Cirrus Logic HDA bridge support in
|
||||||
|
snd-hda-intel driver, such as CS8409.
|
||||||
|
|
||||||
|
comment "Set to Y if you want auto-loading the codec driver"
|
||||||
|
depends on SND_HDA=y && SND_HDA_CODEC_CS8409=m
|
||||||
|
|
||||||
config SND_HDA_CODEC_CONEXANT
|
config SND_HDA_CODEC_CONEXANT
|
||||||
tristate "Build Conexant HD-audio codec support"
|
tristate "Build Conexant HD-audio codec support"
|
||||||
select SND_HDA_GENERIC
|
select SND_HDA_GENERIC
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ snd-hda-codec-analog-objs := patch_analog.o
|
|||||||
snd-hda-codec-idt-objs := patch_sigmatel.o
|
snd-hda-codec-idt-objs := patch_sigmatel.o
|
||||||
snd-hda-codec-si3054-objs := patch_si3054.o
|
snd-hda-codec-si3054-objs := patch_si3054.o
|
||||||
snd-hda-codec-cirrus-objs := patch_cirrus.o
|
snd-hda-codec-cirrus-objs := patch_cirrus.o
|
||||||
|
snd-hda-codec-cs8409-objs := patch_cs8409.o
|
||||||
snd-hda-codec-ca0110-objs := patch_ca0110.o
|
snd-hda-codec-ca0110-objs := patch_ca0110.o
|
||||||
snd-hda-codec-ca0132-objs := patch_ca0132.o
|
snd-hda-codec-ca0132-objs := patch_ca0132.o
|
||||||
snd-hda-codec-conexant-objs := patch_conexant.o
|
snd-hda-codec-conexant-objs := patch_conexant.o
|
||||||
@@ -37,6 +38,7 @@ obj-$(CONFIG_SND_HDA_CODEC_ANALOG) += snd-hda-codec-analog.o
|
|||||||
obj-$(CONFIG_SND_HDA_CODEC_SIGMATEL) += snd-hda-codec-idt.o
|
obj-$(CONFIG_SND_HDA_CODEC_SIGMATEL) += snd-hda-codec-idt.o
|
||||||
obj-$(CONFIG_SND_HDA_CODEC_SI3054) += snd-hda-codec-si3054.o
|
obj-$(CONFIG_SND_HDA_CODEC_SI3054) += snd-hda-codec-si3054.o
|
||||||
obj-$(CONFIG_SND_HDA_CODEC_CIRRUS) += snd-hda-codec-cirrus.o
|
obj-$(CONFIG_SND_HDA_CODEC_CIRRUS) += snd-hda-codec-cirrus.o
|
||||||
|
obj-$(CONFIG_SND_HDA_CODEC_CS8409) += snd-hda-codec-cs8409.o
|
||||||
obj-$(CONFIG_SND_HDA_CODEC_CA0110) += snd-hda-codec-ca0110.o
|
obj-$(CONFIG_SND_HDA_CODEC_CA0110) += snd-hda-codec-ca0110.o
|
||||||
obj-$(CONFIG_SND_HDA_CODEC_CA0132) += snd-hda-codec-ca0132.o
|
obj-$(CONFIG_SND_HDA_CODEC_CA0132) += snd-hda-codec-ca0132.o
|
||||||
obj-$(CONFIG_SND_HDA_CODEC_CONEXANT) += snd-hda-codec-conexant.o
|
obj-$(CONFIG_SND_HDA_CODEC_CONEXANT) += snd-hda-codec-conexant.o
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
1060
sound/pci/hda/patch_cs8409.c
Normal file
1060
sound/pci/hda/patch_cs8409.c
Normal file
File diff suppressed because it is too large
Load Diff
91
sound/pci/hda/patch_cs8409.h
Normal file
91
sound/pci/hda/patch_cs8409.h
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
/*
|
||||||
|
* HD audio interface patch for Cirrus Logic CS8409 HDA bridge chip
|
||||||
|
*
|
||||||
|
* Copyright (C) 2021 Cirrus Logic, Inc. and
|
||||||
|
* Cirrus Logic International Semiconductor Ltd.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __CS8409_PATCH_H
|
||||||
|
#define __CS8409_PATCH_H
|
||||||
|
|
||||||
|
/* Cirrus Logic CS8409 HDA bridge with
|
||||||
|
* companion codec CS42L42
|
||||||
|
*/
|
||||||
|
#define CS42L42_HP_CH (2U)
|
||||||
|
#define CS42L42_HS_MIC_CH (1U)
|
||||||
|
|
||||||
|
#define CS8409_VENDOR_NID 0x47
|
||||||
|
|
||||||
|
#define CS8409_CS42L42_HP_PIN_NID 0x24
|
||||||
|
#define CS8409_CS42L42_SPK_PIN_NID 0x2c
|
||||||
|
#define CS8409_CS42L42_AMIC_PIN_NID 0x34
|
||||||
|
#define CS8409_CS42L42_DMIC_PIN_NID 0x44
|
||||||
|
#define CS8409_CS42L42_DMIC_ADC_PIN_NID 0x22
|
||||||
|
|
||||||
|
#define CS42L42_HSDET_AUTO_DONE 0x02
|
||||||
|
#define CS42L42_HSTYPE_MASK 0x03
|
||||||
|
|
||||||
|
#define CS42L42_JACK_INSERTED 0x0C
|
||||||
|
#define CS42L42_JACK_REMOVED 0x00
|
||||||
|
|
||||||
|
#define GPIO3_INT (1 << 3)
|
||||||
|
#define GPIO4_INT (1 << 4)
|
||||||
|
#define GPIO5_INT (1 << 5)
|
||||||
|
|
||||||
|
#define CS42L42_I2C_ADDR (0x48 << 1)
|
||||||
|
|
||||||
|
#define CIR_I2C_ADDR 0x0059
|
||||||
|
#define CIR_I2C_DATA 0x005A
|
||||||
|
#define CIR_I2C_CTRL 0x005B
|
||||||
|
#define CIR_I2C_STATUS 0x005C
|
||||||
|
#define CIR_I2C_QWRITE 0x005D
|
||||||
|
#define CIR_I2C_QREAD 0x005E
|
||||||
|
|
||||||
|
#define CS8409_CS42L42_HP_VOL_REAL_MIN (-63)
|
||||||
|
#define CS8409_CS42L42_HP_VOL_REAL_MAX (0)
|
||||||
|
#define CS8409_CS42L42_AMIC_VOL_REAL_MIN (-97)
|
||||||
|
#define CS8409_CS42L42_AMIC_VOL_REAL_MAX (12)
|
||||||
|
#define CS8409_CS42L42_REG_HS_VOLUME_CHA (0x2301)
|
||||||
|
#define CS8409_CS42L42_REG_HS_VOLUME_CHB (0x2303)
|
||||||
|
#define CS8409_CS42L42_REG_AMIC_VOLUME (0x1D03)
|
||||||
|
|
||||||
|
enum {
|
||||||
|
CS8409_BULLSEYE,
|
||||||
|
CS8409_WARLOCK,
|
||||||
|
CS8409_CYBORG,
|
||||||
|
CS8409_FIXUPS,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct cs8409_i2c_param {
|
||||||
|
unsigned int addr;
|
||||||
|
unsigned int reg;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct cs8409_cir_param {
|
||||||
|
unsigned int nid;
|
||||||
|
unsigned int cir;
|
||||||
|
unsigned int coeff;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct cs8409_spec {
|
||||||
|
struct hda_gen_spec gen;
|
||||||
|
|
||||||
|
unsigned int gpio_mask;
|
||||||
|
unsigned int gpio_dir;
|
||||||
|
unsigned int gpio_data;
|
||||||
|
|
||||||
|
unsigned int cs42l42_hp_jack_in:1;
|
||||||
|
unsigned int cs42l42_mic_jack_in:1;
|
||||||
|
unsigned int cs42l42_volume_init:1;
|
||||||
|
char cs42l42_hp_volume[CS42L42_HP_CH];
|
||||||
|
char cs42l42_hs_mic_volume[CS42L42_HS_MIC_CH];
|
||||||
|
|
||||||
|
struct mutex cs8409_i2c_mux;
|
||||||
|
|
||||||
|
/* verb exec op override */
|
||||||
|
int (*exec_verb)(struct hdac_device *dev, unsigned int cmd, unsigned int flags,
|
||||||
|
unsigned int *res);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user