1// SPDX-License-Identifier: GPL-2.0 2// 3// rt1015.h -- RT1015 ALSA SoC audio amplifier driver 4// 5// Copyright 2019 Realtek Semiconductor Corp. 6// Author: Jack Yu <jack.yu@realtek.com> 7// 8// This program is free software; you can redistribute it and/or modify 9// it under the terms of the GNU General Public License version 2 as 10// published by the Free Software Foundation. 11// 12 13#ifndef __RT1015_H__ 14#define __RT1015_H__ 15#include <sound/rt1015.h> 16 17#define RT1015_DEVICE_ID_VAL 0x1011 18#define RT1015_DEVICE_ID_VAL2 0x1015 19 20#define RT1015_RESET 0x0000 21#define RT1015_CLK2 0x0004 22#define RT1015_CLK3 0x0006 23#define RT1015_PLL1 0x000a 24#define RT1015_PLL2 0x000c 25#define RT1015_DUM_RW1 0x000e 26#define RT1015_DUM_RW2 0x0010 27#define RT1015_DUM_RW3 0x0012 28#define RT1015_DUM_RW4 0x0014 29#define RT1015_DUM_RW5 0x0016 30#define RT1015_DUM_RW6 0x0018 31#define RT1015_CLK_DET 0x0020 32#define RT1015_SIL_DET 0x0022 33#define RT1015_CUSTOMER_ID 0x0076 34#define RT1015_PCODE_FWVER 0x0078 35#define RT1015_VER_ID 0x007a 36#define RT1015_VENDOR_ID 0x007c 37#define RT1015_DEVICE_ID 0x007d 38#define RT1015_PAD_DRV1 0x00f0 39#define RT1015_PAD_DRV2 0x00f2 40#define RT1015_GAT_BOOST 0x00f3 41#define RT1015_PRO_ALT 0x00f4 42#define RT1015_OSCK_STA 0x00f6 43#define RT1015_MAN_I2C 0x0100 44#define RT1015_DAC1 0x0102 45#define RT1015_DAC2 0x0104 46#define RT1015_DAC3 0x0106 47#define RT1015_ADC1 0x010c 48#define RT1015_ADC2 0x010e 49#define RT1015_TDM_MASTER 0x0111 50#define RT1015_TDM_TCON 0x0112 51#define RT1015_TDM1_1 0x0114 52#define RT1015_TDM1_2 0x0116 53#define RT1015_TDM1_3 0x0118 54#define RT1015_TDM1_4 0x011a 55#define RT1015_TDM1_5 0x011c 56#define RT1015_MIXER1 0x0300 57#define RT1015_MIXER2 0x0302 58#define RT1015_ANA_PROTECT1 0x0311 59#define RT1015_ANA_CTRL_SEQ1 0x0313 60#define RT1015_ANA_CTRL_SEQ2 0x0314 61#define RT1015_VBAT_DET_DEB 0x031a 62#define RT1015_VBAT_VOLT_DET1 0x031c 63#define RT1015_VBAT_VOLT_DET2 0x031d 64#define RT1015_VBAT_TEST_OUT1 0x031e 65#define RT1015_VBAT_TEST_OUT2 0x031f 66#define RT1015_VBAT_PROT_ATT 0x0320 67#define RT1015_VBAT_DET_CODE 0x0321 68#define RT1015_PWR1 0x0322 69#define RT1015_PWR4 0x0328 70#define RT1015_PWR5 0x0329 71#define RT1015_PWR6 0x032a 72#define RT1015_PWR7 0x032b 73#define RT1015_PWR8 0x032c 74#define RT1015_PWR9 0x032d 75#define RT1015_CLASSD_SEQ 0x032e 76#define RT1015_SMART_BST_CTRL1 0x0330 77#define RT1015_SMART_BST_CTRL2 0x0332 78#define RT1015_ANA_CTRL1 0x0334 79#define RT1015_ANA_CTRL2 0x0336 80#define RT1015_PWR_STATE_CTRL 0x0338 81#define RT1015_MONO_DYNA_CTRL 0x04fa 82#define RT1015_MONO_DYNA_CTRL1 0x04fc 83#define RT1015_MONO_DYNA_CTRL2 0x04fe 84#define RT1015_MONO_DYNA_CTRL3 0x0500 85#define RT1015_MONO_DYNA_CTRL4 0x0502 86#define RT1015_MONO_DYNA_CTRL5 0x0504 87#define RT1015_SPK_VOL 0x0506 88#define RT1015_SHORT_DETTOP1 0x0508 89#define RT1015_SHORT_DETTOP2 0x050a 90#define RT1015_SPK_DC_DETECT1 0x0519 91#define RT1015_SPK_DC_DETECT2 0x051a 92#define RT1015_SPK_DC_DETECT3 0x051b 93#define RT1015_SPK_DC_DETECT4 0x051d 94#define RT1015_SPK_DC_DETECT5 0x051f 95#define RT1015_BAT_RPO_STEP1 0x0536 96#define RT1015_BAT_RPO_STEP2 0x0538 97#define RT1015_BAT_RPO_STEP3 0x053a 98#define RT1015_BAT_RPO_STEP4 0x053c 99#define RT1015_BAT_RPO_STEP5 0x053d 100#define RT1015_BAT_RPO_STEP6 0x053e 101#define RT1015_BAT_RPO_STEP7 0x053f 102#define RT1015_BAT_RPO_STEP8 0x0540 103#define RT1015_BAT_RPO_STEP9 0x0541 104#define RT1015_BAT_RPO_STEP10 0x0542 105#define RT1015_BAT_RPO_STEP11 0x0543 106#define RT1015_BAT_RPO_STEP12 0x0544 107#define RT1015_SPREAD_SPEC1 0x0568 108#define RT1015_SPREAD_SPEC2 0x056a 109#define RT1015_PAD_STATUS 0x1000 110#define RT1015_PADS_PULLING_CTRL1 0x1002 111#define RT1015_PADS_DRIVING 0x1006 112#define RT1015_SYS_RST1 0x1007 113#define RT1015_SYS_RST2 0x1009 114#define RT1015_SYS_GATING1 0x100a 115#define RT1015_TEST_MODE1 0x100c 116#define RT1015_TEST_MODE2 0x100d 117#define RT1015_TIMING_CTRL1 0x100e 118#define RT1015_PLL_INT 0x1010 119#define RT1015_TEST_OUT1 0x1020 120#define RT1015_DC_CALIB_CLSD1 0x1200 121#define RT1015_DC_CALIB_CLSD2 0x1202 122#define RT1015_DC_CALIB_CLSD3 0x1204 123#define RT1015_DC_CALIB_CLSD4 0x1206 124#define RT1015_DC_CALIB_CLSD5 0x1208 125#define RT1015_DC_CALIB_CLSD6 0x120a 126#define RT1015_DC_CALIB_CLSD7 0x120c 127#define RT1015_DC_CALIB_CLSD8 0x120e 128#define RT1015_DC_CALIB_CLSD9 0x1210 129#define RT1015_DC_CALIB_CLSD10 0x1212 130#define RT1015_CLSD_INTERNAL1 0x1300 131#define RT1015_CLSD_INTERNAL2 0x1302 132#define RT1015_CLSD_INTERNAL3 0x1304 133#define RT1015_CLSD_INTERNAL4 0x1305 134#define RT1015_CLSD_INTERNAL5 0x1306 135#define RT1015_CLSD_INTERNAL6 0x1308 136#define RT1015_CLSD_INTERNAL7 0x130a 137#define RT1015_CLSD_INTERNAL8 0x130c 138#define RT1015_CLSD_INTERNAL9 0x130e 139#define RT1015_CLSD_OCP_CTRL 0x130f 140#define RT1015_VREF_LV 0x1310 141#define RT1015_MBIAS1 0x1312 142#define RT1015_MBIAS2 0x1314 143#define RT1015_MBIAS3 0x1316 144#define RT1015_MBIAS4 0x1318 145#define RT1015_VREF_LV1 0x131a 146#define RT1015_S_BST_TIMING_INTER1 0x1322 147#define RT1015_S_BST_TIMING_INTER2 0x1323 148#define RT1015_S_BST_TIMING_INTER3 0x1324 149#define RT1015_S_BST_TIMING_INTER4 0x1325 150#define RT1015_S_BST_TIMING_INTER5 0x1326 151#define RT1015_S_BST_TIMING_INTER6 0x1327 152#define RT1015_S_BST_TIMING_INTER7 0x1328 153#define RT1015_S_BST_TIMING_INTER8 0x1329 154#define RT1015_S_BST_TIMING_INTER9 0x132a 155#define RT1015_S_BST_TIMING_INTER10 0x132b 156#define RT1015_S_BST_TIMING_INTER11 0x1330 157#define RT1015_S_BST_TIMING_INTER12 0x1331 158#define RT1015_S_BST_TIMING_INTER13 0x1332 159#define RT1015_S_BST_TIMING_INTER14 0x1333 160#define RT1015_S_BST_TIMING_INTER15 0x1334 161#define RT1015_S_BST_TIMING_INTER16 0x1335 162#define RT1015_S_BST_TIMING_INTER17 0x1336 163#define RT1015_S_BST_TIMING_INTER18 0x1337 164#define RT1015_S_BST_TIMING_INTER19 0x1338 165#define RT1015_S_BST_TIMING_INTER20 0x1339 166#define RT1015_S_BST_TIMING_INTER21 0x133a 167#define RT1015_S_BST_TIMING_INTER22 0x133b 168#define RT1015_S_BST_TIMING_INTER23 0x133c 169#define RT1015_S_BST_TIMING_INTER24 0x133d 170#define RT1015_S_BST_TIMING_INTER25 0x133e 171#define RT1015_S_BST_TIMING_INTER26 0x133f 172#define RT1015_S_BST_TIMING_INTER27 0x1340 173#define RT1015_S_BST_TIMING_INTER28 0x1341 174#define RT1015_S_BST_TIMING_INTER29 0x1342 175#define RT1015_S_BST_TIMING_INTER30 0x1343 176#define RT1015_S_BST_TIMING_INTER31 0x1344 177#define RT1015_S_BST_TIMING_INTER32 0x1345 178#define RT1015_S_BST_TIMING_INTER33 0x1346 179#define RT1015_S_BST_TIMING_INTER34 0x1347 180#define RT1015_S_BST_TIMING_INTER35 0x1348 181#define RT1015_S_BST_TIMING_INTER36 0x1349 182 183/* 0x0004 */ 184#define RT1015_CLK_SYS_PRE_SEL_MASK (0x3 << 14) 185#define RT1015_CLK_SYS_PRE_SEL_SFT 14 186#define RT1015_CLK_SYS_PRE_SEL_MCLK (0x0 << 14) 187#define RT1015_CLK_SYS_PRE_SEL_PLL (0x2 << 14) 188#define RT1015_PLL_SEL_MASK (0x1 << 13) 189#define RT1015_PLL_SEL_SFT 13 190#define RT1015_PLL_SEL_PLL_SRC2 (0x0 << 13) 191#define RT1015_PLL_SEL_BCLK (0x1 << 13) 192#define RT1015_FS_PD_MASK (0x7 << 4) 193#define RT1015_FS_PD_SFT 4 194 195/* 0x000a */ 196#define RT1015_PLL_M_MAX 0xf 197#define RT1015_PLL_M_MASK (RT1015_PLL_M_MAX << 12) 198#define RT1015_PLL_M_SFT 12 199#define RT1015_PLL_M_BP (0x1 << 11) 200#define RT1015_PLL_M_BP_SFT 11 201#define RT1015_PLL_N_MAX 0x1ff 202#define RT1015_PLL_N_MASK (RT1015_PLL_N_MAX << 0) 203#define RT1015_PLL_N_SFT 0 204 205/* 0x000c */ 206#define RT1015_PLL_BPK_MASK (0x1 << 5) 207#define RT1015_PLL_BPK (0x0 << 5) 208#define RT1015_PLL_K_MAX 0x1f 209#define RT1015_PLL_K_MASK (RT1015_PLL_K_MAX) 210#define RT1015_PLL_K_SFT 0 211 212/* 0x007a */ 213#define RT1015_ID_MASK 0xff 214#define RT1015_ID_VERA 0x0 215#define RT1015_ID_VERB 0x1 216 217/* 0x0102 */ 218#define RT1015_DAC_VOL_MASK (0x7f << 9) 219#define RT1015_DAC_VOL_SFT 9 220 221/* 0x0104 */ 222#define RT1015_DAC_CLK (0x1 << 13) 223#define RT1015_DAC_CLK_BIT 13 224 225/* 0x0106 */ 226#define RT1015_DAC_MUTE_MASK (0x1 << 15) 227#define RT1015_DA_MUTE_SFT 15 228#define RT1015_DVOL_MUTE_FLAG_SFT 12 229 230/* 0x0111 */ 231#define RT1015_TCON_TDM_MS_MASK (0x1 << 14) 232#define RT1015_TCON_TDM_MS_SFT 14 233#define RT1015_TCON_TDM_MS_S (0x0 << 14) 234#define RT1015_TCON_TDM_MS_M (0x1 << 14) 235#define RT1015_I2S_DL_MASK (0x7 << 8) 236#define RT1015_I2S_DL_SFT 8 237#define RT1015_I2S_DL_16 (0x0 << 8) 238#define RT1015_I2S_DL_20 (0x1 << 8) 239#define RT1015_I2S_DL_24 (0x2 << 8) 240#define RT1015_I2S_DL_8 (0x3 << 8) 241#define RT1015_I2S_M_DF_MASK (0x7 << 0) 242#define RT1015_I2S_M_DF_SFT 0 243#define RT1015_I2S_M_DF_I2S (0x0) 244#define RT1015_I2S_M_DF_LEFT (0x1) 245#define RT1015_I2S_M_DF_PCM_A (0x2) 246#define RT1015_I2S_M_DF_PCM_B (0x3) 247#define RT1015_I2S_M_DF_PCM_A_N (0x6) 248#define RT1015_I2S_M_DF_PCM_B_N (0x7) 249 250/* TDM_tcon Setting (0x0112) */ 251#define RT1015_I2S_TCON_DF_MASK (0x7 << 13) 252#define RT1015_I2S_TCON_DF_SFT 13 253#define RT1015_I2S_TCON_DF_I2S (0x0 << 13) 254#define RT1015_I2S_TCON_DF_LEFT (0x1 << 13) 255#define RT1015_I2S_TCON_DF_PCM_A (0x2 << 13) 256#define RT1015_I2S_TCON_DF_PCM_B (0x3 << 13) 257#define RT1015_I2S_TCON_DF_PCM_A_N (0x6 << 13) 258#define RT1015_I2S_TCON_DF_PCM_B_N (0x7 << 13) 259#define RT1015_TCON_BCLK_SEL_MASK (0x3 << 10) 260#define RT1015_TCON_BCLK_SEL_SFT 10 261#define RT1015_TCON_BCLK_SEL_32FS (0x0 << 10) 262#define RT1015_TCON_BCLK_SEL_64FS (0x1 << 10) 263#define RT1015_TCON_BCLK_SEL_128FS (0x2 << 10) 264#define RT1015_TCON_BCLK_SEL_256FS (0x3 << 10) 265#define RT1015_TCON_CH_LEN_MASK (0x3 << 5) 266#define RT1015_TCON_CH_LEN_SFT 5 267#define RT1015_TCON_CH_LEN_16B (0x0 << 5) 268#define RT1015_TCON_CH_LEN_20B (0x1 << 5) 269#define RT1015_TCON_CH_LEN_24B (0x2 << 5) 270#define RT1015_TCON_CH_LEN_32B (0x3 << 5) 271#define RT1015_TCON_BCLK_MST_MASK (0x1 << 4) 272#define RT1015_TCON_BCLK_MST_SFT 4 273#define RT1015_TCON_BCLK_MST_INV (0x1 << 4) 274 275/* TDM1 Setting-1 (0x0114) */ 276#define RT1015_TDM_INV_BCLK_MASK (0x1 << 15) 277#define RT1015_TDM_INV_BCLK_SFT 15 278#define RT1015_TDM_INV_BCLK (0x1 << 15) 279 280/* 0x0330 */ 281#define RT1015_ABST_AUTO_EN_MASK (0x1 << 13) 282#define RT1015_ABST_AUTO_MODE (0x1 << 13) 283#define RT1015_ABST_REG_MODE (0x0 << 13) 284#define RT1015_ABST_FIX_TGT_MASK (0x1 << 12) 285#define RT1015_ABST_FIX_TGT_EN (0x1 << 12) 286#define RT1015_ABST_FIX_TGT_DIS (0x0 << 12) 287#define RT1015_BYPASS_SWR_REG_MASK (0x1 << 7) 288#define RT1015_BYPASS_SWRREG_BYPASS (0x1 << 7) 289#define RT1015_BYPASS_SWRREG_PASS (0x0 << 7) 290 291/* 0x0322 */ 292#define RT1015_PWR_LDO2 (0x1 << 15) 293#define RT1015_PWR_LDO2_BIT 15 294#define RT1015_PWR_DAC (0x1 << 14) 295#define RT1015_PWR_DAC_BIT 14 296#define RT1015_PWR_INTCLK (0x1 << 13) 297#define RT1015_PWR_INTCLK_BIT 13 298#define RT1015_PWR_ISENSE (0x1 << 12) 299#define RT1015_PWR_ISENSE_BIT 12 300#define RT1015_PWR_VSENSE (0x1 << 10) 301#define RT1015_PWR_VSENSE_BIT 10 302#define RT1015_PWR_PLL (0x1 << 9) 303#define RT1015_PWR_PLL_BIT 9 304#define RT1015_PWR_BG_1_2 (0x1 << 8) 305#define RT1015_PWR_BG_1_2_BIT 8 306#define RT1015_PWR_MBIAS_BG (0x1 << 7) 307#define RT1015_PWR_MBIAS_BG_BIT 7 308#define RT1015_PWR_VBAT (0x1 << 6) 309#define RT1015_PWR_VBAT_BIT 6 310#define RT1015_PWR_MBIAS (0x1 << 4) 311#define RT1015_PWR_MBIAS_BIT 4 312#define RT1015_PWR_ADCV (0x1 << 3) 313#define RT1015_PWR_ADCV_BIT 3 314#define RT1015_PWR_MIXERV (0x1 << 2) 315#define RT1015_PWR_MIXERV_BIT 2 316#define RT1015_PWR_SUMV (0x1 << 1) 317#define RT1015_PWR_SUMV_BIT 1 318#define RT1015_PWR_VREFLV (0x1 << 0) 319#define RT1015_PWR_VREFLV_BIT 0 320 321/* 0x0324 */ 322#define RT1015_PWR_BASIC (0x1 << 15) 323#define RT1015_PWR_BASIC_BIT 15 324#define RT1015_PWR_SD (0x1 << 14) 325#define RT1015_PWR_SD_BIT 14 326#define RT1015_PWR_IBIAS (0x1 << 13) 327#define RT1015_PWR_IBIAS_BIT 13 328#define RT1015_PWR_VCM (0x1 << 11) 329#define RT1015_PWR_VCM_BIT 11 330 331/* 0x0328 */ 332#define RT1015_PWR_SWR (0x1 << 12) 333#define RT1015_PWR_SWR_BIT 12 334 335/* 0x1300 */ 336#define RT1015_PWR_CLSD (0x1 << 12) 337#define RT1015_PWR_CLSD_BIT 12 338 339/* 0x007a */ 340#define RT1015_ID_MASK 0xff 341#define RT1015_ID_VERA 0x0 342#define RT1015_ID_VERB 0x1 343 344/* System Clock Source */ 345enum { 346 RT1015_SCLK_S_MCLK, 347 RT1015_SCLK_S_PLL, 348}; 349 350/* PLL1 Source */ 351enum { 352 RT1015_PLL_S_MCLK, 353 RT1015_PLL_S_BCLK, 354}; 355 356enum { 357 RT1015_AIF1, 358 RT1015_AIFS, 359}; 360 361enum { 362 RT1015_VERA, 363 RT1015_VERB, 364}; 365 366enum { 367 BYPASS, 368 ADAPTIVE, 369 FIXED_ADAPTIVE, 370}; 371 372enum { 373 RT1015_Enable_Boost = 0, 374 RT1015_Bypass_Boost, 375}; 376 377enum { 378 RT1015_HW_28 = 0, 379 RT1015_HW_29, 380}; 381 382struct rt1015_priv { 383 struct snd_soc_component *component; 384 struct rt1015_platform_data pdata; 385 struct regmap *regmap; 386 int sysclk; 387 int sysclk_src; 388 int lrck; 389 int bclk; 390 int bclk_ratio; 391 int id; 392 int pll_src; 393 int pll_in; 394 int pll_out; 395 int boost_mode; 396 int bypass_boost; 397 int amp_ver; 398 int dac_is_used; 399 int cali_done; 400 int hw_config; 401 struct delayed_work flush_work; 402}; 403 404#endif /* __RT1015_H__ */ 405