sound/soc/codecs/es8311.c

Source file repositories/reference/linux-study-clean/sound/soc/codecs/es8311.c

File Facts

System
Linux kernel
Corpus path
sound/soc/codecs/es8311.c
Extension
.c
Size
28068 bytes
Lines
985
Domain
Driver Families
Bucket
sound/soc
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct es8311_priv {
	struct regmap *regmap;
	struct clk *mclk;
	unsigned long mclk_freq;
	bool provider;
	unsigned int rates[ES8311_NUM_RATES];
	struct snd_pcm_hw_constraint_list constraints;
};

static const DECLARE_TLV_DB_SCALE(es8311_adc_vol_tlv, -9550, 50, 0);
static const DECLARE_TLV_DB_SCALE(es8311_pga_gain_tlv, 0, 300, 0);
static const DECLARE_TLV_DB_SCALE(es8311_adc_scale_tlv, 0, 600, 0);

#define ES8311_DB_LRCK_STEPS \
	"0.25db/4LRCK", \
	"0.25db/8LRCK", \
	"0.25db/16LRCK", \
	"0.25db/32LRCK", \
	"0.25db/64LRCK", \
	"0.25db/128LRCK", \
	"0.25db/256LRCK", \
	"0.25db/512LRCK", \
	"0.25db/1024LRCK", \
	"0.25db/2048LRCK", \
	"0.25db/4096LRCK", \
	"0.25db/8192LRCK", \
	"0.25db/16384LRCK", \
	"0.25db/32768LRCK", \
	"0.25db/65536LRCK",

static const char *const es8311_level_winsize_txt[] = {
	"0.25db/2LRCK",
	ES8311_DB_LRCK_STEPS
};

static SOC_ENUM_SINGLE_DECL(
	es8311_alc_winsize, ES8311_ADC4,
	ES8311_ADC4_ALC_WINSIZE_SHIFT, es8311_level_winsize_txt);
static const DECLARE_TLV_DB_RANGE(es8311_level_tlv,
	0, 1, TLV_DB_SCALE_ITEM(-3010, 600, 0),
	2, 3, TLV_DB_SCALE_ITEM(-2060, 250, 0),
	4, 5, TLV_DB_SCALE_ITEM(-1610, 160, 0),
	6, 7, TLV_DB_SCALE_ITEM(-1320, 120, 0),
	8, 9, TLV_DB_SCALE_ITEM(-1100, 90, 0),
	10, 11, TLV_DB_SCALE_ITEM(-930, 80, 0),
	12, 15, TLV_DB_SCALE_ITEM(-780, 60, 0),
);

static const char *const es8311_ramprate_txt[] = {
	"Disabled",
	ES8311_DB_LRCK_STEPS
};
static SOC_ENUM_SINGLE_DECL(
	es8311_adc_ramprate, ES8311_ADC1,
	ES8311_ADC1_RAMPRATE_SHIFT, es8311_ramprate_txt);

static const char *const es8311_automute_winsize_txt[] = {
	"2048 samples",
	"4096 samples",
	"6144 samples",
	"8192 samples",
	"10240 samples",
	"12288 samples",
	"14336 samples",
	"16384 samples",
	"18432 samples",
	"20480 samples",
	"22528 samples",
	"24576 samples",
	"26624 samples",
	"28672 samples",
	"30720 samples",
	"32768 samples",
};
static SOC_ENUM_SINGLE_DECL(
	es8311_automute_winsize, ES8311_ADC6,
	ES8311_ADC6_AUTOMUTE_WS_SHIFT, es8311_automute_winsize_txt);
static const DECLARE_TLV_DB_RANGE(es8311_automute_ng_tlv,
	0, 7, TLV_DB_SCALE_ITEM(-9600, 600, 0),
	8, 15, TLV_DB_SCALE_ITEM(-5100, 300, 0),
);
static const DECLARE_TLV_DB_SCALE(es8311_automute_vol_tlv, -2800, 400, 0);

static const DECLARE_TLV_DB_SCALE(es8311_dac_vol_tlv, -9550, 50, 0);
static SOC_ENUM_SINGLE_DECL(
	es8311_drc_winsize, ES8311_DAC4,
	ES8311_DAC4_DRC_WINSIZE_SHIFT, es8311_level_winsize_txt);
static SOC_ENUM_SINGLE_DECL(
	es8311_dac_ramprate, ES8311_DAC6,
	ES8311_DAC6_RAMPRATE_SHIFT, es8311_ramprate_txt);

Annotation

Implementation Notes