1*86ce355cSJack Yu /* SPDX-License-Identifier: GPL-2.0-only */ 2*86ce355cSJack Yu /* 3*86ce355cSJack Yu * rt721-sdca-sdw.h -- RT721 SDCA ALSA SoC audio driver header 4*86ce355cSJack Yu * 5*86ce355cSJack Yu * Copyright(c) 2024 Realtek Semiconductor Corp. 6*86ce355cSJack Yu */ 7*86ce355cSJack Yu 8*86ce355cSJack Yu #ifndef __RT721_SDW_H__ 9*86ce355cSJack Yu #define __RT721_SDW_H__ 10*86ce355cSJack Yu 11*86ce355cSJack Yu #include <linux/regmap.h> 12*86ce355cSJack Yu #include <linux/soundwire/sdw_registers.h> 13*86ce355cSJack Yu 14*86ce355cSJack Yu static const struct reg_default rt721_sdca_reg_defaults[] = { 15*86ce355cSJack Yu { 0x202d, 0x00 }, 16*86ce355cSJack Yu { 0x2f01, 0x00 }, 17*86ce355cSJack Yu { 0x2f02, 0x09 }, 18*86ce355cSJack Yu { 0x2f03, 0x08 }, 19*86ce355cSJack Yu { 0x2f04, 0x00 }, 20*86ce355cSJack Yu { 0x2f05, 0x0e }, 21*86ce355cSJack Yu { 0x2f06, 0x01 }, 22*86ce355cSJack Yu { 0x2f09, 0x00 }, 23*86ce355cSJack Yu { 0x2f0a, 0x00 }, 24*86ce355cSJack Yu { 0x2f35, 0x00 }, 25*86ce355cSJack Yu { 0x2f50, 0xf0 }, 26*86ce355cSJack Yu { 0x2f58, 0x07 }, 27*86ce355cSJack Yu { 0x2f59, 0x07 }, 28*86ce355cSJack Yu { 0x2f5a, 0x00 }, 29*86ce355cSJack Yu { 0x2f5b, 0x07 }, 30*86ce355cSJack Yu { 0x2f5c, 0x27 }, 31*86ce355cSJack Yu { 0x2f5d, 0x07 }, 32*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_CS01, 33*86ce355cSJack Yu RT721_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 0x09 }, 34*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_CS11, 35*86ce355cSJack Yu RT721_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 0x09 }, 36*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_PDE12, 37*86ce355cSJack Yu RT721_SDCA_CTL_REQ_POWER_STATE, 0), 0x03 }, 38*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_PDE40, 39*86ce355cSJack Yu RT721_SDCA_CTL_REQ_POWER_STATE, 0), 0x03 }, 40*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_USER_FU05, 41*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_L), 0x01 }, 42*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_USER_FU05, 43*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_R), 0x01 }, 44*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_USER_FU0F, 45*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_L), 0x01 }, 46*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_USER_FU0F, 47*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_R), 0x01 }, 48*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_USER_FU1E, 49*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_01), 0x01 }, 50*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_USER_FU1E, 51*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_02), 0x01 }, 52*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_USER_FU1E, 53*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_03), 0x01 }, 54*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_USER_FU1E, 55*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_04), 0x01 }, 56*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_CS1F, 57*86ce355cSJack Yu RT721_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 0x09 }, 58*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_IT26, 59*86ce355cSJack Yu RT721_SDCA_CTL_VENDOR_DEF, 0), 0x00 }, 60*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_PDE2A, 61*86ce355cSJack Yu RT721_SDCA_CTL_REQ_POWER_STATE, 0), 0x03 }, 62*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_CS31, 63*86ce355cSJack Yu RT721_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 0x09 }, 64*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_USER_FU06, 65*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_L), 0x01 }, 66*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_USER_FU06, 67*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_R), 0x01 }, 68*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_PDE23, 69*86ce355cSJack Yu RT721_SDCA_CTL_REQ_POWER_STATE, 0), 0x03 }, 70*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_OT23, 71*86ce355cSJack Yu RT721_SDCA_CTL_VENDOR_DEF, 0), 0x00 }, 72*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_PDE23, 73*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_01), 0x01 }, 74*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_PDE23, 75*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_02), 0x01 }, 76*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_FU55, 77*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_01), 0x01 }, 78*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_FU55, 79*86ce355cSJack Yu RT721_SDCA_CTL_FU_MUTE, CH_02), 0x01 }, 80*86ce355cSJack Yu }; 81*86ce355cSJack Yu 82*86ce355cSJack Yu static const struct reg_default rt721_sdca_mbq_defaults[] = { 83*86ce355cSJack Yu { 0x0900007, 0xc004 }, 84*86ce355cSJack Yu { 0x2000001, 0x0000 }, 85*86ce355cSJack Yu { 0x2000002, 0x0000 }, 86*86ce355cSJack Yu { 0x2000003, 0x0000 }, 87*86ce355cSJack Yu { 0x2000013, 0x8001 }, 88*86ce355cSJack Yu { 0x200003c, 0x0000 }, 89*86ce355cSJack Yu { 0x2000046, 0x3400 }, 90*86ce355cSJack Yu { 0x5f00044, 0x6040 }, 91*86ce355cSJack Yu { 0x5f00045, 0x3333 }, 92*86ce355cSJack Yu { 0x5f00048, 0x0000 }, 93*86ce355cSJack Yu { 0x6100005, 0x0005 }, 94*86ce355cSJack Yu { 0x6100006, 0x0000 }, 95*86ce355cSJack Yu { 0x610000d, 0x0051 }, 96*86ce355cSJack Yu { 0x6100010, 0x0180 }, 97*86ce355cSJack Yu { 0x6100011, 0x0000 }, 98*86ce355cSJack Yu { 0x6100013, 0x0000 }, 99*86ce355cSJack Yu { 0x6100015, 0x0000 }, 100*86ce355cSJack Yu { 0x6100017, 0x8049 }, 101*86ce355cSJack Yu { 0x6100025, 0x1000 }, 102*86ce355cSJack Yu { 0x6100029, 0x0809 }, 103*86ce355cSJack Yu { 0x610002c, 0x2828 }, 104*86ce355cSJack Yu { 0x610002d, 0x2929 }, 105*86ce355cSJack Yu { 0x610002e, 0x3529 }, 106*86ce355cSJack Yu { 0x610002f, 0x2901 }, 107*86ce355cSJack Yu { 0x6100053, 0x2630 }, 108*86ce355cSJack Yu { 0x6100054, 0x2a2a }, 109*86ce355cSJack Yu { 0x6100055, 0x152f }, 110*86ce355cSJack Yu { 0x6100057, 0x2200 }, 111*86ce355cSJack Yu { 0x610005a, 0x2a4b }, 112*86ce355cSJack Yu { 0x610005b, 0x2a00 }, 113*86ce355cSJack Yu { 0x610006a, 0x0102 }, 114*86ce355cSJack Yu { 0x610006d, 0x0102 }, 115*86ce355cSJack Yu { 0x6100092, 0x4f61 }, 116*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_USER_FU05, RT721_SDCA_CTL_FU_VOLUME, 117*86ce355cSJack Yu CH_L), 0x0000 }, 118*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_USER_FU05, RT721_SDCA_CTL_FU_VOLUME, 119*86ce355cSJack Yu CH_R), 0x0000 }, 120*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_USER_FU0F, RT721_SDCA_CTL_FU_VOLUME, 121*86ce355cSJack Yu CH_L), 0x0000 }, 122*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_USER_FU0F, RT721_SDCA_CTL_FU_VOLUME, 123*86ce355cSJack Yu CH_R), 0x0000 }, 124*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_PLATFORM_FU44, RT721_SDCA_CTL_FU_CH_GAIN, 125*86ce355cSJack Yu CH_L), 0xfe00 }, 126*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_PLATFORM_FU44, RT721_SDCA_CTL_FU_CH_GAIN, 127*86ce355cSJack Yu CH_R), 0xfe00 }, 128*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_FU15, RT721_SDCA_CTL_FU_CH_GAIN, CH_01), 129*86ce355cSJack Yu 0x0000 }, 130*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_FU15, RT721_SDCA_CTL_FU_CH_GAIN, CH_02), 131*86ce355cSJack Yu 0x0000 }, 132*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_FU15, RT721_SDCA_CTL_FU_CH_GAIN, CH_03), 133*86ce355cSJack Yu 0x0000 }, 134*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_FU15, RT721_SDCA_CTL_FU_CH_GAIN, CH_04), 135*86ce355cSJack Yu 0x0000 }, 136*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_USER_FU1E, RT721_SDCA_CTL_FU_VOLUME, 137*86ce355cSJack Yu CH_01), 0x0000 }, 138*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_USER_FU1E, RT721_SDCA_CTL_FU_VOLUME, 139*86ce355cSJack Yu CH_02), 0x0000 }, 140*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_USER_FU1E, RT721_SDCA_CTL_FU_VOLUME, 141*86ce355cSJack Yu CH_03), 0x0000 }, 142*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT721_SDCA_ENT_USER_FU1E, RT721_SDCA_CTL_FU_VOLUME, 143*86ce355cSJack Yu CH_04), 0x0000 }, 144*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_USER_FU06, RT721_SDCA_CTL_FU_VOLUME, CH_L), 145*86ce355cSJack Yu 0x0000 }, 146*86ce355cSJack Yu { SDW_SDCA_CTL(FUNC_NUM_AMP, RT721_SDCA_ENT_USER_FU06, RT721_SDCA_CTL_FU_VOLUME, CH_R), 147*86ce355cSJack Yu 0x0000 }, 148*86ce355cSJack Yu }; 149*86ce355cSJack Yu 150*86ce355cSJack Yu #endif /* __RT721_SDW_H__ */ 151