mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
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:
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"
|
||||
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
|
||||
tristate "Build Conexant HD-audio codec support"
|
||||
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-si3054-objs := patch_si3054.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-ca0132-objs := patch_ca0132.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_SI3054) += snd-hda-codec-si3054.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_CA0132) += snd-hda-codec-ca0132.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
|
Loading…
Reference in New Issue
Block a user