brintos

brintos / linux-shallow public Read only

0
0
Text · 7.9 KiB · 6e37bf6 Raw
228 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * rt715.h -- RT715 ALSA SoC audio driver header4 *5 * Copyright(c) 2019 Realtek Semiconductor Corp.6 */7 8#ifndef __RT715_H__9#define __RT715_H__10 11#include <linux/regulator/consumer.h>12 13struct rt715_priv {14	struct regmap *regmap;15	struct regmap *sdw_regmap;16	struct snd_soc_codec *codec;17	struct sdw_slave *slave;18	int dbg_nid;19	int dbg_vid;20	int dbg_payload;21	struct sdw_bus_params params;22	bool hw_init;23	bool first_hw_init;24	unsigned int kctl_2ch_vol_ori[2];25	unsigned int kctl_8ch_switch_ori[8];26	unsigned int kctl_8ch_vol_ori[8];27};28 29/* NID */30#define RT715_AUDIO_FUNCTION_GROUP			0x0131#define RT715_MIC_ADC					0x0732#define RT715_LINE_ADC					0x0833#define RT715_MIX_ADC					0x0934#define RT715_DMIC1					0x1235#define RT715_DMIC2					0x1336#define RT715_MIC1					0x1837#define RT715_MIC2					0x1938#define RT715_LINE1					0x1a39#define RT715_LINE2					0x1b40#define RT715_DMIC3					0x1d41#define RT715_DMIC4					0x2942#define RT715_VENDOR_REGISTERS				0x2043#define RT715_MUX_IN1					0x2244#define RT715_MUX_IN2					0x2345#define RT715_MUX_IN3					0x2446#define RT715_MUX_IN4					0x2547#define RT715_MIX_ADC2					0x2748#define RT715_INLINE_CMD				0x5549 50/* Index (NID:20h) */51#define RT715_VD_CLEAR_CTRL				0x0152#define RT715_SDW_INPUT_SEL				0x3953#define RT715_EXT_DMIC_CLK_CTRL2			0x5454 55/* Verb */56#define RT715_VERB_SET_CONNECT_SEL			0x310057#define RT715_VERB_GET_CONNECT_SEL			0xb10058#define RT715_VERB_SET_EAPD_BTLENABLE			0x3c0059#define RT715_VERB_SET_POWER_STATE			0x350060#define RT715_VERB_SET_CHANNEL_STREAMID			0x360061#define RT715_VERB_SET_PIN_WIDGET_CONTROL		0x370062#define RT715_VERB_SET_CONFIG_DEFAULT1			0x4c0063#define RT715_VERB_SET_CONFIG_DEFAULT2			0x4d0064#define RT715_VERB_SET_CONFIG_DEFAULT3			0x4e0065#define RT715_VERB_SET_CONFIG_DEFAULT4			0x4f0066#define RT715_VERB_SET_UNSOLICITED_ENABLE		0x380067#define RT715_SET_AMP_GAIN_MUTE_H			0x730068#define RT715_SET_AMP_GAIN_MUTE_L			0x838069#define RT715_READ_HDA_3				0x201270#define RT715_READ_HDA_2				0x201371#define RT715_READ_HDA_1				0x201472#define RT715_READ_HDA_0				0x201573#define RT715_PRIV_INDEX_W_H				0x752074#define RT715_PRIV_INDEX_W_L				0x85a075#define RT715_PRIV_INDEX_W_H_2				0x750076#define RT715_PRIV_INDEX_W_L_2				0x858077#define RT715_PRIV_DATA_W_H				0x742078#define RT715_PRIV_DATA_W_L				0x84a079#define RT715_PRIV_INDEX_R_H				0x9d2080#define RT715_PRIV_INDEX_R_L				0xada081#define RT715_PRIV_DATA_R_H				0x9c2082#define RT715_PRIV_DATA_R_L				0xaca083#define RT715_MIC_ADC_FORMAT_H				0x720784#define RT715_MIC_ADC_FORMAT_L				0x828785#define RT715_MIC_LINE_FORMAT_H				0x720886#define RT715_MIC_LINE_FORMAT_L				0x828887#define RT715_MIX_ADC_FORMAT_H				0x720988#define RT715_MIX_ADC_FORMAT_L				0x828989#define RT715_MIX_ADC2_FORMAT_H				0x722790#define RT715_MIX_ADC2_FORMAT_L				0x82a791#define RT715_FUNC_RESET				0xff0192 93#define RT715_SET_AUDIO_POWER_STATE\94	(RT715_VERB_SET_POWER_STATE | RT715_AUDIO_FUNCTION_GROUP)95#define RT715_SET_PIN_DMIC1\96	(RT715_VERB_SET_PIN_WIDGET_CONTROL | RT715_DMIC1)97#define RT715_SET_PIN_DMIC2\98	(RT715_VERB_SET_PIN_WIDGET_CONTROL | RT715_DMIC2)99#define RT715_SET_PIN_DMIC3\100	(RT715_VERB_SET_PIN_WIDGET_CONTROL | RT715_DMIC3)101#define RT715_SET_PIN_DMIC4\102	(RT715_VERB_SET_PIN_WIDGET_CONTROL | RT715_DMIC4)103#define RT715_SET_PIN_MIC1\104	(RT715_VERB_SET_PIN_WIDGET_CONTROL | RT715_MIC1)105#define RT715_SET_PIN_MIC2\106	(RT715_VERB_SET_PIN_WIDGET_CONTROL | RT715_MIC2)107#define RT715_SET_PIN_LINE1\108	(RT715_VERB_SET_PIN_WIDGET_CONTROL | RT715_LINE1)109#define RT715_SET_PIN_LINE2\110	(RT715_VERB_SET_PIN_WIDGET_CONTROL | RT715_LINE2)111#define RT715_SET_MIC1_UNSOLICITED_ENABLE\112	(RT715_VERB_SET_UNSOLICITED_ENABLE | RT715_MIC1)113#define RT715_SET_MIC2_UNSOLICITED_ENABLE\114	(RT715_VERB_SET_UNSOLICITED_ENABLE | RT715_MIC2)115#define RT715_SET_STREAMID_MIC_ADC\116	(RT715_VERB_SET_CHANNEL_STREAMID | RT715_MIC_ADC)117#define RT715_SET_STREAMID_LINE_ADC\118	(RT715_VERB_SET_CHANNEL_STREAMID | RT715_LINE_ADC)119#define RT715_SET_STREAMID_MIX_ADC\120	(RT715_VERB_SET_CHANNEL_STREAMID | RT715_MIX_ADC)121#define RT715_SET_STREAMID_MIX_ADC2\122	(RT715_VERB_SET_CHANNEL_STREAMID | RT715_MIX_ADC2)123#define RT715_SET_GAIN_MIC_ADC_L\124	(RT715_SET_AMP_GAIN_MUTE_L | RT715_MIC_ADC)125#define RT715_SET_GAIN_MIC_ADC_H\126	(RT715_SET_AMP_GAIN_MUTE_H | RT715_MIC_ADC)127#define RT715_SET_GAIN_LINE_ADC_L\128	(RT715_SET_AMP_GAIN_MUTE_L | RT715_LINE_ADC)129#define RT715_SET_GAIN_LINE_ADC_H\130	(RT715_SET_AMP_GAIN_MUTE_H | RT715_LINE_ADC)131#define RT715_SET_GAIN_MIX_ADC_L\132	(RT715_SET_AMP_GAIN_MUTE_L | RT715_MIX_ADC)133#define RT715_SET_GAIN_MIX_ADC_H\134	(RT715_SET_AMP_GAIN_MUTE_H | RT715_MIX_ADC)135#define RT715_SET_GAIN_MIX_ADC2_L\136	(RT715_SET_AMP_GAIN_MUTE_L | RT715_MIX_ADC2)137#define RT715_SET_GAIN_MIX_ADC2_H\138	(RT715_SET_AMP_GAIN_MUTE_H | RT715_MIX_ADC2)139#define RT715_SET_GAIN_DMIC1_L\140	(RT715_SET_AMP_GAIN_MUTE_L | RT715_DMIC1)141#define RT715_SET_GAIN_DMIC1_H\142	(RT715_SET_AMP_GAIN_MUTE_H | RT715_DMIC1)143#define RT715_SET_GAIN_DMIC2_L\144	(RT715_SET_AMP_GAIN_MUTE_L | RT715_DMIC2)145#define RT715_SET_GAIN_DMIC2_H\146	(RT715_SET_AMP_GAIN_MUTE_H | RT715_DMIC2)147#define RT715_SET_GAIN_DMIC3_L\148	(RT715_SET_AMP_GAIN_MUTE_L | RT715_DMIC3)149#define RT715_SET_GAIN_DMIC3_H\150	(RT715_SET_AMP_GAIN_MUTE_H | RT715_DMIC3)151#define RT715_SET_GAIN_DMIC4_L\152	(RT715_SET_AMP_GAIN_MUTE_L | RT715_DMIC4)153#define RT715_SET_GAIN_DMIC4_H\154	(RT715_SET_AMP_GAIN_MUTE_H | RT715_DMIC4)155#define RT715_SET_GAIN_MIC1_L\156	(RT715_SET_AMP_GAIN_MUTE_L | RT715_MIC1)157#define RT715_SET_GAIN_MIC1_H\158	(RT715_SET_AMP_GAIN_MUTE_H | RT715_MIC1)159#define RT715_SET_GAIN_MIC2_L\160	(RT715_SET_AMP_GAIN_MUTE_L | RT715_MIC2)161#define RT715_SET_GAIN_MIC2_H\162	(RT715_SET_AMP_GAIN_MUTE_H | RT715_MIC2)163#define RT715_SET_GAIN_LINE1_L\164	(RT715_SET_AMP_GAIN_MUTE_L | RT715_LINE1)165#define RT715_SET_GAIN_LINE1_H\166	(RT715_SET_AMP_GAIN_MUTE_H | RT715_LINE1)167#define RT715_SET_GAIN_LINE2_L\168	(RT715_SET_AMP_GAIN_MUTE_L | RT715_LINE2)169#define RT715_SET_GAIN_LINE2_H\170	(RT715_SET_AMP_GAIN_MUTE_H | RT715_LINE2)171#define RT715_SET_DMIC1_CONFIG_DEFAULT1\172	(RT715_VERB_SET_CONFIG_DEFAULT1 | RT715_DMIC1)173#define RT715_SET_DMIC2_CONFIG_DEFAULT1\174	(RT715_VERB_SET_CONFIG_DEFAULT1 | RT715_DMIC2)175#define RT715_SET_DMIC1_CONFIG_DEFAULT2\176	(RT715_VERB_SET_CONFIG_DEFAULT2 | RT715_DMIC1)177#define RT715_SET_DMIC2_CONFIG_DEFAULT2\178	(RT715_VERB_SET_CONFIG_DEFAULT2 | RT715_DMIC2)179#define RT715_SET_DMIC1_CONFIG_DEFAULT3\180	(RT715_VERB_SET_CONFIG_DEFAULT3 | RT715_DMIC1)181#define RT715_SET_DMIC2_CONFIG_DEFAULT3\182	(RT715_VERB_SET_CONFIG_DEFAULT3 | RT715_DMIC2)183#define RT715_SET_DMIC1_CONFIG_DEFAULT4\184	(RT715_VERB_SET_CONFIG_DEFAULT4 | RT715_DMIC1)185#define RT715_SET_DMIC2_CONFIG_DEFAULT4\186	(RT715_VERB_SET_CONFIG_DEFAULT4 | RT715_DMIC2)187#define RT715_SET_DMIC3_CONFIG_DEFAULT1\188	(RT715_VERB_SET_CONFIG_DEFAULT1 | RT715_DMIC3)189#define RT715_SET_DMIC4_CONFIG_DEFAULT1\190	(RT715_VERB_SET_CONFIG_DEFAULT1 | RT715_DMIC4)191#define RT715_SET_DMIC3_CONFIG_DEFAULT2\192	(RT715_VERB_SET_CONFIG_DEFAULT2 | RT715_DMIC3)193#define RT715_SET_DMIC4_CONFIG_DEFAULT2\194	(RT715_VERB_SET_CONFIG_DEFAULT2 | RT715_DMIC4)195#define RT715_SET_DMIC3_CONFIG_DEFAULT3\196	(RT715_VERB_SET_CONFIG_DEFAULT3 | RT715_DMIC3)197#define RT715_SET_DMIC4_CONFIG_DEFAULT3\198	(RT715_VERB_SET_CONFIG_DEFAULT3 | RT715_DMIC4)199#define RT715_SET_DMIC3_CONFIG_DEFAULT4\200	(RT715_VERB_SET_CONFIG_DEFAULT4 | RT715_DMIC3)201#define RT715_SET_DMIC4_CONFIG_DEFAULT4\202	(RT715_VERB_SET_CONFIG_DEFAULT4 | RT715_DMIC4)203 204/* vendor register clear ctrl-1    (0x01)(NID:20h) */205#define RT715_CLEAR_HIDDEN_REG (0x1 << 15)206 207 208#define RT715_MUTE_SFT					7209#define RT715_DIR_IN_SFT				6210#define RT715_DIR_OUT_SFT				7211 212enum {213	RT715_AIF1,214	RT715_AIF2,215};216 217#define RT715_POWER_UP_DELAY_MS 400218 219int rt715_io_init(struct device *dev, struct sdw_slave *slave);220int rt715_init(struct device *dev, struct regmap *sdw_regmap,221	struct regmap *regmap, struct sdw_slave *slave);222 223int hda_to_sdw(unsigned int nid, unsigned int verb, unsigned int payload,224	       unsigned int *sdw_addr_h, unsigned int *sdw_data_h,225	       unsigned int *sdw_addr_l, unsigned int *sdw_data_l);226int rt715_clock_config(struct device *dev);227#endif /* __RT715_H__ */228