sound/soc/codecs/rt5677.h

Source file repositories/reference/linux-study-clean/sound/soc/codecs/rt5677.h

File Facts

System
Linux kernel
Corpus path
sound/soc/codecs/rt5677.h
Extension
.h
Size
63841 bytes
Lines
1809
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 rt5677_platform_data {
	/* IN1/IN2/LOUT1/LOUT2/LOUT3 can optionally be differential */
	bool in1_diff;
	bool in2_diff;
	bool lout1_diff;
	bool lout2_diff;
	bool lout3_diff;
	/* DMIC2 clock source selection */
	enum rt5677_dmic2_clk dmic2_clk_pin;

	/* configures GPIO, 0 - floating, 1 - pulldown, 2 - pullup */
	u8 gpio_config[6];

	/* jd1 can select 0 ~ 3 as OFF, GPIO1, GPIO2 and GPIO3 respectively */
	unsigned int jd1_gpio;
	/* jd2 and jd3 can select 0 ~ 3 as
		OFF, GPIO4, GPIO5 and GPIO6 respectively */
	unsigned int jd2_gpio;
	unsigned int jd3_gpio;

	/* Set MICBIAS1 VDD 1v8 or 3v3 */
	bool micbias1_vdd_3v3;
};

struct rt5677_priv {
	struct snd_soc_component *component;
	struct device *dev;
	struct rt5677_platform_data pdata;
	struct regmap *regmap, *regmap_physical;
	const struct firmware *fw1, *fw2;
	struct mutex dsp_cmd_lock, dsp_pri_lock;

	int sysclk;
	int sysclk_src;
	int lrck[RT5677_AIFS];
	int bclk[RT5677_AIFS];
	int master[RT5677_AIFS];
	int pll_src;
	int pll_in;
	int pll_out;
	struct gpio_desc *pow_ldo2; /* POW_LDO2 pin */
	struct gpio_desc *reset_pin; /* RESET pin */
	enum rt5677_type type;
#ifdef CONFIG_GPIOLIB
	struct gpio_chip gpio_chip;
#endif
	bool dsp_vad_en_request; /* DSP VAD enable/disable request */
	bool dsp_vad_en; /* dsp_work parameter */
	bool is_dsp_mode;
	bool is_vref_slow;
	struct delayed_work dsp_work;

	/* Interrupt handling */
	struct irq_domain *domain;
	struct mutex irq_lock;
	unsigned int irq_en;
	struct delayed_work resume_irq_check;
	int irq;

	int (*set_dsp_vad)(struct snd_soc_component *component, bool on);
};

int rt5677_sel_asrc_clk_src(struct snd_soc_component *component,
		unsigned int filter_mask, unsigned int clk_src);

#endif /* __RT5677_H__ */

Annotation

Implementation Notes