brintos

brintos / linux-shallow public Read only

0
0
Text · 5.7 KiB · 491774d Raw
172 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * rt700.h -- RT700 ALSA SoC audio driver header4 *5 * Copyright(c) 2019 Realtek Semiconductor Corp.6 */7 8#ifndef __RT700_H__9#define __RT700_H__10 11extern const struct dev_pm_ops rt700_runtime_pm;12 13struct  rt700_priv {14	struct snd_soc_component *component;15	struct regmap *regmap;16	struct regmap *sdw_regmap;17	struct sdw_slave *slave;18	struct sdw_bus_params params;19	bool hw_init;20	bool first_hw_init;21	struct snd_soc_jack *hs_jack;22	struct delayed_work jack_detect_work;23	struct delayed_work jack_btn_check_work;24	int jack_type;25	struct mutex disable_irq_lock; /* imp-def irq lock protection */26	bool disable_irq;27};28 29/* NID */30#define RT700_AUDIO_FUNCTION_GROUP			0x0131#define RT700_DAC_OUT1					0x0232#define RT700_DAC_OUT2					0x0333#define RT700_ADC_IN1					0x0934#define RT700_ADC_IN2					0x0835#define RT700_DMIC1					0x1236#define RT700_DMIC2					0x1337#define RT700_SPK_OUT					0x1438#define RT700_MIC2					0x1939#define RT700_LINE1					0x1a40#define RT700_LINE2					0x1b41#define RT700_BEEP					0x1d42#define RT700_SPDIF					0x1e43#define RT700_VENDOR_REGISTERS				0x2044#define RT700_HP_OUT					0x2145#define RT700_MIXER_IN1					0x2246#define RT700_MIXER_IN2					0x2347#define RT700_INLINE_CMD				0x5548 49/* Index (NID:20h) */50#define RT700_DAC_DC_CALI_CTL1				0x0051#define RT700_PARA_VERB_CTL				0x1a52#define RT700_COMBO_JACK_AUTO_CTL1				0x4553#define RT700_COMBO_JACK_AUTO_CTL2				0x4654#define RT700_INLINE_CMD_CTL				0x4855#define RT700_DIGITAL_MISC_CTRL4			0x4a56#define RT700_VREFOUT_CTL				0x6b57#define RT700_FSM_CTL				0x6f58#define RT700_IRQ_FLAG_TABLE1				0x8059#define RT700_IRQ_FLAG_TABLE2				0x8160#define RT700_IRQ_FLAG_TABLE3				0x8261 62/* Verb */63#define RT700_VERB_SET_CONNECT_SEL			0x310064#define RT700_VERB_SET_EAPD_BTLENABLE			0x3c0065#define RT700_VERB_GET_CONNECT_SEL			0xb10066#define RT700_VERB_SET_POWER_STATE			0x350067#define RT700_VERB_SET_CHANNEL_STREAMID			0x360068#define RT700_VERB_SET_PIN_WIDGET_CONTROL		0x370069#define RT700_VERB_SET_UNSOLICITED_ENABLE		0x380070#define RT700_SET_AMP_GAIN_MUTE_H			0x730071#define RT700_SET_AMP_GAIN_MUTE_L			0x838072#define RT700_VERB_GET_PIN_SENSE			0xb90073 74#define RT700_READ_HDA_3				0x201275#define RT700_READ_HDA_2				0x201376#define RT700_READ_HDA_1				0x201477#define RT700_READ_HDA_0				0x201578#define RT700_PRIV_INDEX_W_H				0x752079#define RT700_PRIV_INDEX_W_L				0x85a080#define RT700_PRIV_DATA_W_H				0x742081#define RT700_PRIV_DATA_W_L				0x84a082#define RT700_PRIV_INDEX_R_H				0x9d2083#define RT700_PRIV_INDEX_R_L				0xada084#define RT700_PRIV_DATA_R_H				0x9c2085#define RT700_PRIV_DATA_R_L				0xaca086#define RT700_DAC_FORMAT_H				0x720387#define RT700_DAC_FORMAT_L				0x828388#define RT700_ADC_FORMAT_H				0x720989#define RT700_ADC_FORMAT_L				0x828990#define RT700_SET_AUDIO_POWER_STATE\91	(RT700_VERB_SET_POWER_STATE | RT700_AUDIO_FUNCTION_GROUP)92#define RT700_SET_PIN_DMIC1\93	(RT700_VERB_SET_PIN_WIDGET_CONTROL | RT700_DMIC1)94#define RT700_SET_PIN_DMIC2\95	(RT700_VERB_SET_PIN_WIDGET_CONTROL | RT700_DMIC2)96#define RT700_SET_PIN_SPK\97	(RT700_VERB_SET_PIN_WIDGET_CONTROL | RT700_SPK_OUT)98#define RT700_SET_PIN_HP\99	(RT700_VERB_SET_PIN_WIDGET_CONTROL | RT700_HP_OUT)100#define RT700_SET_PIN_MIC2\101	(RT700_VERB_SET_PIN_WIDGET_CONTROL | RT700_MIC2)102#define RT700_SET_PIN_LINE1\103	(RT700_VERB_SET_PIN_WIDGET_CONTROL | RT700_LINE1)104#define RT700_SET_PIN_LINE2\105	(RT700_VERB_SET_PIN_WIDGET_CONTROL | RT700_LINE2)106#define RT700_SET_MIC2_UNSOLICITED_ENABLE\107	(RT700_VERB_SET_UNSOLICITED_ENABLE | RT700_MIC2)108#define RT700_SET_HP_UNSOLICITED_ENABLE\109	(RT700_VERB_SET_UNSOLICITED_ENABLE | RT700_HP_OUT)110#define RT700_SET_INLINE_UNSOLICITED_ENABLE\111	(RT700_VERB_SET_UNSOLICITED_ENABLE | RT700_INLINE_CMD)112#define RT700_SET_STREAMID_DAC1\113	(RT700_VERB_SET_CHANNEL_STREAMID | RT700_DAC_OUT1)114#define RT700_SET_STREAMID_DAC2\115	(RT700_VERB_SET_CHANNEL_STREAMID | RT700_DAC_OUT2)116#define RT700_SET_STREAMID_ADC1\117	(RT700_VERB_SET_CHANNEL_STREAMID | RT700_ADC_IN1)118#define RT700_SET_STREAMID_ADC2\119	(RT700_VERB_SET_CHANNEL_STREAMID | RT700_ADC_IN2)120#define RT700_SET_GAIN_DAC1_L\121	(RT700_SET_AMP_GAIN_MUTE_L | RT700_DAC_OUT1)122#define RT700_SET_GAIN_DAC1_H\123	(RT700_SET_AMP_GAIN_MUTE_H | RT700_DAC_OUT1)124#define RT700_SET_GAIN_ADC1_L\125	(RT700_SET_AMP_GAIN_MUTE_L | RT700_ADC_IN1)126#define RT700_SET_GAIN_ADC1_H\127	(RT700_SET_AMP_GAIN_MUTE_H | RT700_ADC_IN1)128#define RT700_SET_GAIN_ADC2_L\129	(RT700_SET_AMP_GAIN_MUTE_L | RT700_ADC_IN2)130#define RT700_SET_GAIN_ADC2_H\131	(RT700_SET_AMP_GAIN_MUTE_H | RT700_ADC_IN2)132#define RT700_SET_GAIN_AMIC_L\133	(RT700_SET_AMP_GAIN_MUTE_L | RT700_MIC2)134#define RT700_SET_GAIN_AMIC_H\135	(RT700_SET_AMP_GAIN_MUTE_H | RT700_MIC2)136#define RT700_SET_GAIN_HP_L\137	(RT700_SET_AMP_GAIN_MUTE_L | RT700_HP_OUT)138#define RT700_SET_GAIN_HP_H\139	(RT700_SET_AMP_GAIN_MUTE_H | RT700_HP_OUT)140#define RT700_SET_GAIN_SPK_L\141	(RT700_SET_AMP_GAIN_MUTE_L | RT700_SPK_OUT)142#define RT700_SET_GAIN_SPK_H\143	(RT700_SET_AMP_GAIN_MUTE_H | RT700_SPK_OUT)144#define RT700_SET_EAPD_SPK\145	(RT700_VERB_SET_EAPD_BTLENABLE | RT700_SPK_OUT)146 147/* combo jack auto switch control 2 (0x46)(NID:20h) */148#define RT700_COMBOJACK_AUTO_DET_STATUS			(0x1 << 11)149#define RT700_COMBOJACK_AUTO_DET_TRS			(0x1 << 10)150#define RT700_COMBOJACK_AUTO_DET_CTIA			(0x1 << 9)151#define RT700_COMBOJACK_AUTO_DET_OMTP			(0x1 << 8)152 153#define RT700_EAPD_HIGH					0x2154#define RT700_EAPD_LOW					0x0155#define RT700_MUTE_SFT					7156#define RT700_DIR_IN_SFT				6157#define RT700_DIR_OUT_SFT				7158 159enum {160	RT700_AIF1,161	RT700_AIF2,162	RT700_AIFS,163};164 165int rt700_io_init(struct device *dev, struct sdw_slave *slave);166int rt700_init(struct device *dev, struct regmap *sdw_regmap,167	       struct regmap *regmap, struct sdw_slave *slave);168 169int rt700_jack_detect(struct rt700_priv *rt700, bool *hp, bool *mic);170int rt700_clock_config(struct device *dev);171#endif /* __RT700_H__ */172