1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * rt1308-sdw.h -- RT1308 ALSA SoC audio driver header 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright(c) 2019 Realtek Semiconductor Corp. 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef __RT1308_SDW_H__ 9*4882a593Smuzhiyun #define __RT1308_SDW_H__ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun static const struct reg_default rt1308_reg_defaults[] = { 12*4882a593Smuzhiyun { 0x0000, 0x00 }, 13*4882a593Smuzhiyun { 0x0001, 0x00 }, 14*4882a593Smuzhiyun { 0x0002, 0x00 }, 15*4882a593Smuzhiyun { 0x0003, 0x00 }, 16*4882a593Smuzhiyun { 0x0004, 0x00 }, 17*4882a593Smuzhiyun { 0x0005, 0x01 }, 18*4882a593Smuzhiyun { 0x0020, 0x00 }, 19*4882a593Smuzhiyun { 0x0022, 0x00 }, 20*4882a593Smuzhiyun { 0x0023, 0x00 }, 21*4882a593Smuzhiyun { 0x0024, 0x00 }, 22*4882a593Smuzhiyun { 0x0025, 0x00 }, 23*4882a593Smuzhiyun { 0x0026, 0x00 }, 24*4882a593Smuzhiyun { 0x0030, 0x00 }, 25*4882a593Smuzhiyun { 0x0032, 0x00 }, 26*4882a593Smuzhiyun { 0x0033, 0x00 }, 27*4882a593Smuzhiyun { 0x0034, 0x00 }, 28*4882a593Smuzhiyun { 0x0035, 0x00 }, 29*4882a593Smuzhiyun { 0x0036, 0x00 }, 30*4882a593Smuzhiyun { 0x0040, 0x00 }, 31*4882a593Smuzhiyun { 0x0041, 0x00 }, 32*4882a593Smuzhiyun { 0x0042, 0x00 }, 33*4882a593Smuzhiyun { 0x0043, 0x00 }, 34*4882a593Smuzhiyun { 0x0044, 0x20 }, 35*4882a593Smuzhiyun { 0x0045, 0x01 }, 36*4882a593Smuzhiyun { 0x0046, 0x01 }, 37*4882a593Smuzhiyun { 0x0048, 0x00 }, 38*4882a593Smuzhiyun { 0x0049, 0x00 }, 39*4882a593Smuzhiyun { 0x0050, 0x20 }, 40*4882a593Smuzhiyun { 0x0051, 0x02 }, 41*4882a593Smuzhiyun { 0x0052, 0x5D }, 42*4882a593Smuzhiyun { 0x0053, 0x13 }, 43*4882a593Smuzhiyun { 0x0054, 0x08 }, 44*4882a593Smuzhiyun { 0x0055, 0x00 }, 45*4882a593Smuzhiyun { 0x0060, 0x00 }, 46*4882a593Smuzhiyun { 0x0070, 0x00 }, 47*4882a593Smuzhiyun { 0x00E0, 0x00 }, 48*4882a593Smuzhiyun { 0x00F0, 0x00 }, 49*4882a593Smuzhiyun { 0x0100, 0x00 }, 50*4882a593Smuzhiyun { 0x0101, 0x00 }, 51*4882a593Smuzhiyun { 0x0102, 0x20 }, 52*4882a593Smuzhiyun { 0x0103, 0x00 }, 53*4882a593Smuzhiyun { 0x0104, 0x00 }, 54*4882a593Smuzhiyun { 0x0105, 0x03 }, 55*4882a593Smuzhiyun { 0x0120, 0x00 }, 56*4882a593Smuzhiyun { 0x0122, 0x00 }, 57*4882a593Smuzhiyun { 0x0123, 0x00 }, 58*4882a593Smuzhiyun { 0x0124, 0x00 }, 59*4882a593Smuzhiyun { 0x0125, 0x00 }, 60*4882a593Smuzhiyun { 0x0126, 0x00 }, 61*4882a593Smuzhiyun { 0x0127, 0x00 }, 62*4882a593Smuzhiyun { 0x0130, 0x00 }, 63*4882a593Smuzhiyun { 0x0132, 0x00 }, 64*4882a593Smuzhiyun { 0x0133, 0x00 }, 65*4882a593Smuzhiyun { 0x0134, 0x00 }, 66*4882a593Smuzhiyun { 0x0135, 0x00 }, 67*4882a593Smuzhiyun { 0x0136, 0x00 }, 68*4882a593Smuzhiyun { 0x0137, 0x00 }, 69*4882a593Smuzhiyun { 0x0200, 0x00 }, 70*4882a593Smuzhiyun { 0x0201, 0x00 }, 71*4882a593Smuzhiyun { 0x0202, 0x00 }, 72*4882a593Smuzhiyun { 0x0203, 0x00 }, 73*4882a593Smuzhiyun { 0x0204, 0x00 }, 74*4882a593Smuzhiyun { 0x0205, 0x03 }, 75*4882a593Smuzhiyun { 0x0220, 0x00 }, 76*4882a593Smuzhiyun { 0x0222, 0x00 }, 77*4882a593Smuzhiyun { 0x0223, 0x00 }, 78*4882a593Smuzhiyun { 0x0224, 0x00 }, 79*4882a593Smuzhiyun { 0x0225, 0x00 }, 80*4882a593Smuzhiyun { 0x0226, 0x00 }, 81*4882a593Smuzhiyun { 0x0227, 0x00 }, 82*4882a593Smuzhiyun { 0x0230, 0x00 }, 83*4882a593Smuzhiyun { 0x0232, 0x00 }, 84*4882a593Smuzhiyun { 0x0233, 0x00 }, 85*4882a593Smuzhiyun { 0x0234, 0x00 }, 86*4882a593Smuzhiyun { 0x0235, 0x00 }, 87*4882a593Smuzhiyun { 0x0236, 0x00 }, 88*4882a593Smuzhiyun { 0x0237, 0x00 }, 89*4882a593Smuzhiyun { 0x0400, 0x00 }, 90*4882a593Smuzhiyun { 0x0401, 0x00 }, 91*4882a593Smuzhiyun { 0x0402, 0x00 }, 92*4882a593Smuzhiyun { 0x0403, 0x00 }, 93*4882a593Smuzhiyun { 0x0404, 0x00 }, 94*4882a593Smuzhiyun { 0x0405, 0x03 }, 95*4882a593Smuzhiyun { 0x0420, 0x00 }, 96*4882a593Smuzhiyun { 0x0422, 0x00 }, 97*4882a593Smuzhiyun { 0x0423, 0x00 }, 98*4882a593Smuzhiyun { 0x0424, 0x00 }, 99*4882a593Smuzhiyun { 0x0425, 0x00 }, 100*4882a593Smuzhiyun { 0x0426, 0x00 }, 101*4882a593Smuzhiyun { 0x0427, 0x00 }, 102*4882a593Smuzhiyun { 0x0430, 0x00 }, 103*4882a593Smuzhiyun { 0x0432, 0x00 }, 104*4882a593Smuzhiyun { 0x0433, 0x00 }, 105*4882a593Smuzhiyun { 0x0434, 0x00 }, 106*4882a593Smuzhiyun { 0x0435, 0x00 }, 107*4882a593Smuzhiyun { 0x0436, 0x00 }, 108*4882a593Smuzhiyun { 0x0437, 0x00 }, 109*4882a593Smuzhiyun { 0x0f00, 0x00 }, 110*4882a593Smuzhiyun { 0x0f01, 0x00 }, 111*4882a593Smuzhiyun { 0x0f02, 0x00 }, 112*4882a593Smuzhiyun { 0x0f03, 0x00 }, 113*4882a593Smuzhiyun { 0x0f04, 0x00 }, 114*4882a593Smuzhiyun { 0x0f05, 0x00 }, 115*4882a593Smuzhiyun { 0x0f20, 0x00 }, 116*4882a593Smuzhiyun { 0x0f22, 0x00 }, 117*4882a593Smuzhiyun { 0x0f23, 0x00 }, 118*4882a593Smuzhiyun { 0x0f24, 0x00 }, 119*4882a593Smuzhiyun { 0x0f25, 0x00 }, 120*4882a593Smuzhiyun { 0x0f26, 0x00 }, 121*4882a593Smuzhiyun { 0x0f27, 0x00 }, 122*4882a593Smuzhiyun { 0x0f30, 0x00 }, 123*4882a593Smuzhiyun { 0x0f32, 0x00 }, 124*4882a593Smuzhiyun { 0x0f33, 0x00 }, 125*4882a593Smuzhiyun { 0x0f34, 0x00 }, 126*4882a593Smuzhiyun { 0x0f35, 0x00 }, 127*4882a593Smuzhiyun { 0x0f36, 0x00 }, 128*4882a593Smuzhiyun { 0x0f37, 0x00 }, 129*4882a593Smuzhiyun { 0x2f01, 0x01 }, 130*4882a593Smuzhiyun { 0x2f02, 0x09 }, 131*4882a593Smuzhiyun { 0x2f03, 0x00 }, 132*4882a593Smuzhiyun { 0x2f04, 0x0f }, 133*4882a593Smuzhiyun { 0x2f05, 0x0b }, 134*4882a593Smuzhiyun { 0x2f06, 0x01 }, 135*4882a593Smuzhiyun { 0x2f07, 0x8e }, 136*4882a593Smuzhiyun { 0x3000, 0x00 }, 137*4882a593Smuzhiyun { 0x3001, 0x00 }, 138*4882a593Smuzhiyun { 0x3004, 0x01 }, 139*4882a593Smuzhiyun { 0x3005, 0x23 }, 140*4882a593Smuzhiyun { 0x3008, 0x02 }, 141*4882a593Smuzhiyun { 0x300a, 0x00 }, 142*4882a593Smuzhiyun { 0xc000 | (RT1308_DATA_PATH << 4), 0x00 }, 143*4882a593Smuzhiyun { 0xc003 | (RT1308_DAC_SET << 4), 0x00 }, 144*4882a593Smuzhiyun { 0xc001 | (RT1308_POWER << 4), 0x00 }, 145*4882a593Smuzhiyun { 0xc002 | (RT1308_POWER << 4), 0x00 }, 146*4882a593Smuzhiyun { 0xc000 | (RT1308_POWER_STATUS << 4), 0x00 }, 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #define RT1308_SDW_OFFSET 0xc000 150*4882a593Smuzhiyun #define RT1308_SDW_OFFSET_BYTE0 0xc000 151*4882a593Smuzhiyun #define RT1308_SDW_OFFSET_BYTE1 0xc001 152*4882a593Smuzhiyun #define RT1308_SDW_OFFSET_BYTE2 0xc002 153*4882a593Smuzhiyun #define RT1308_SDW_OFFSET_BYTE3 0xc003 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun #define RT1308_SDW_RESET (RT1308_SDW_OFFSET | (RT1308_RESET << 4)) 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun struct rt1308_sdw_priv { 158*4882a593Smuzhiyun struct snd_soc_component *component; 159*4882a593Smuzhiyun struct regmap *regmap; 160*4882a593Smuzhiyun struct sdw_slave *sdw_slave; 161*4882a593Smuzhiyun enum sdw_slave_status status; 162*4882a593Smuzhiyun struct sdw_bus_params params; 163*4882a593Smuzhiyun bool hw_init; 164*4882a593Smuzhiyun bool first_hw_init; 165*4882a593Smuzhiyun int rx_mask; 166*4882a593Smuzhiyun int slots; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun struct sdw_stream_data { 170*4882a593Smuzhiyun struct sdw_stream_runtime *sdw_stream; 171*4882a593Smuzhiyun }; 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun #endif /* __RT1308_SDW_H__ */ 174