/* SPDX-License-Identifier: GPL-2.0-only */
/*
* rt712-sdca-dmic.h -- RT712 SDCA DMIC ALSA SoC audio driver header
*
* Copyright(c) 2023 Realtek Semiconductor Corp.
*/
#ifndef __RT712_SDW_DMIC_H__
#define __RT712_SDW_DMIC_H__
#include <linux/regmap.h>
#include <linux/soundwire/sdw_registers.h>
struct rt712_sdca_dmic_priv {
struct regmap *regmap;
struct regmap *mbq_regmap;
struct snd_soc_component *component;
struct sdw_slave *slave;
struct sdw_bus_params params;
bool hw_init;
bool first_hw_init;
bool fu1e_dapm_mute;
bool fu1e_mixer_mute[4 ];
};
struct rt712_sdca_dmic_kctrl_priv {
unsigned int reg_base;
unsigned int count;
unsigned int max;
unsigned int invert;
};
/* SDCA (Channel) */
#define CH_01 0 x01
#define CH_02 0 x02
#define CH_03 0 x03
#define CH_04 0 x04
static const struct reg_default rt712_sdca_dmic_reg_defaults[] = {
{ 0 x201a, 0 x00 },
{ 0 x201b, 0 x00 },
{ 0 x201c, 0 x00 },
{ 0 x201d, 0 x00 },
{ 0 x201e, 0 x00 },
{ 0 x201f, 0 x00 },
{ 0 x2029, 0 x00 },
{ 0 x202a, 0 x00 },
{ 0 x202d, 0 x00 },
{ 0 x202e, 0 x00 },
{ 0 x202f, 0 x00 },
{ 0 x2030, 0 x00 },
{ 0 x2031, 0 x00 },
{ 0 x2032, 0 x00 },
{ 0 x2033, 0 x00 },
{ 0 x2034, 0 x00 },
{ 0 x2230, 0 x00 },
{ 0 x2231, 0 x2f },
{ 0 x2232, 0 x80 },
{ 0 x2f01, 0 x00 },
{ 0 x2f02, 0 x09 },
{ 0 x2f03, 0 x00 },
{ 0 x2f04, 0 x00 },
{ 0 x2f05, 0 x0b },
{ 0 x2f06, 0 x01 },
{ 0 x2f08, 0 x00 },
{ 0 x2f09, 0 x00 },
{ 0 x2f0a, 0 x01 },
{ 0 x2f35, 0 x02 },
{ 0 x2f36, 0 xcf },
{ 0 x2f52, 0 x08 },
{ 0 x2f58, 0 x07 },
{ 0 x2f59, 0 x07 },
{ 0 x3201, 0 x01 },
{ 0 x320c, 0 x00 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_IT26, RT712_SDCA_CTL_VENDOR_DEF, 0 ), 0 x00 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_MUTE, CH_01), 0 x01 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_MUTE, CH_02), 0 x01 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_MUTE, CH_03), 0 x01 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_MUTE, CH_04), 0 x01 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_CS1F, RT712_SDCA_CTL_SAMPLE_FREQ_INDEX, 0 ), 0 x09 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_CS1C, RT712_SDCA_CTL_SAMPLE_FREQ_INDEX, 0 ), 0 x09 },
};
static const struct reg_default rt712_sdca_dmic_mbq_defaults[] = {
{ 0 x0590001e, 0 x0020 },
{ 0 x06100000, 0 x0010 },
{ 0 x06100006, 0 x0055 },
{ 0 x06100010, 0 x2630 },
{ 0 x06100011, 0 x152f },
{ 0 x06100013, 0 x0102 },
{ 0 x06100015, 0 x2219 },
{ 0 x06100018, 0 x0102 },
{ 0 x06100026, 0 x2c29 },
{ 0 x06100027, 0 x2d2b },
{ 0 x0610002b, 0 x2a32 },
{ 0 x0610002f, 0 x3355 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_PLATFORM_FU15, RT712_SDCA_CTL_FU_CH_GAIN, CH_01), 0 x0000 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_PLATFORM_FU15, RT712_SDCA_CTL_FU_CH_GAIN, CH_02), 0 x0000 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_PLATFORM_FU15, RT712_SDCA_CTL_FU_CH_GAIN, CH_03), 0 x0000 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_PLATFORM_FU15, RT712_SDCA_CTL_FU_CH_GAIN, CH_04), 0 x0000 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_VOLUME, CH_01), 0 x0000 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_VOLUME, CH_02), 0 x0000 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_VOLUME, CH_03), 0 x0000 },
{ SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT712_SDCA_ENT_USER_FU1E, RT712_SDCA_CTL_FU_VOLUME, CH_04), 0 x0000 },
};
#endif /* __RT712_SDW_DMIC_H__ */
Messung V0.5 in Prozent C=95 H=55 G=77
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland