17fa44519SMarco Giunta /* SPDX-License-Identifier: GPL-2.0-only 27fa44519SMarco Giunta * 37fa44519SMarco Giunta * linux/sound/aw88399.h -- Platform data for AW88399 47fa44519SMarco Giunta * 57fa44519SMarco Giunta * Copyright (c) 2023 AWINIC Technology CO., LTD 67fa44519SMarco Giunta * 77fa44519SMarco Giunta * Author: Weidong Wang <wangweidong.a@awinic.com> 87fa44519SMarco Giunta */ 97fa44519SMarco Giunta 107fa44519SMarco Giunta #ifndef __SOUND_AW88399_H 117fa44519SMarco Giunta #define __SOUND_AW88399_H 127fa44519SMarco Giunta 137fa44519SMarco Giunta #include <linux/mutex.h> 147fa44519SMarco Giunta #include <linux/workqueue.h> 157fa44519SMarco Giunta 167fa44519SMarco Giunta /* registers list */ 177fa44519SMarco Giunta #define AW88399_ID_REG (0x00) 187fa44519SMarco Giunta #define AW88399_SYSST_REG (0x01) 197fa44519SMarco Giunta #define AW88399_SYSINT_REG (0x02) 207fa44519SMarco Giunta #define AW88399_SYSINTM_REG (0x03) 217fa44519SMarco Giunta #define AW88399_SYSCTRL_REG (0x04) 227fa44519SMarco Giunta #define AW88399_SYSCTRL2_REG (0x05) 237fa44519SMarco Giunta #define AW88399_I2SCTRL1_REG (0x06) 247fa44519SMarco Giunta #define AW88399_I2SCTRL2_REG (0x07) 257fa44519SMarco Giunta #define AW88399_I2SCTRL3_REG (0x08) 267fa44519SMarco Giunta #define AW88399_DACCFG1_REG (0x09) 277fa44519SMarco Giunta #define AW88399_DACCFG2_REG (0x0A) 287fa44519SMarco Giunta #define AW88399_DACCFG3_REG (0x0B) 297fa44519SMarco Giunta #define AW88399_DACCFG4_REG (0x0C) 307fa44519SMarco Giunta #define AW88399_DACCFG5_REG (0x0D) 317fa44519SMarco Giunta #define AW88399_DACCFG6_REG (0x0E) 327fa44519SMarco Giunta #define AW88399_DACCFG7_REG (0x0F) 337fa44519SMarco Giunta #define AW88399_MPDCFG1_REG (0x10) 347fa44519SMarco Giunta #define AW88399_MPDCFG2_REG (0x11) 357fa44519SMarco Giunta #define AW88399_MPDCFG3_REG (0x12) 367fa44519SMarco Giunta #define AW88399_MPDCFG4_REG (0x13) 377fa44519SMarco Giunta #define AW88399_PWMCTRL1_REG (0x14) 387fa44519SMarco Giunta #define AW88399_PWMCTRL2_REG (0x15) 397fa44519SMarco Giunta #define AW88399_PWMCTRL3_REG (0x16) 407fa44519SMarco Giunta #define AW88399_I2SCFG1_REG (0x17) 417fa44519SMarco Giunta #define AW88399_DBGCTRL_REG (0x18) 427fa44519SMarco Giunta #define AW88399_HAGCST_REG (0x20) 437fa44519SMarco Giunta #define AW88399_VBAT_REG (0x21) 447fa44519SMarco Giunta #define AW88399_TEMP_REG (0x22) 457fa44519SMarco Giunta #define AW88399_PVDD_REG (0x23) 467fa44519SMarco Giunta #define AW88399_ISNDAT_REG (0x24) 477fa44519SMarco Giunta #define AW88399_VSNDAT_REG (0x25) 487fa44519SMarco Giunta #define AW88399_I2SINT_REG (0x26) 497fa44519SMarco Giunta #define AW88399_I2SCAPCNT_REG (0x27) 507fa44519SMarco Giunta #define AW88399_ANASTA1_REG (0x28) 517fa44519SMarco Giunta #define AW88399_ANASTA2_REG (0x29) 527fa44519SMarco Giunta #define AW88399_ANASTA3_REG (0x2A) 537fa44519SMarco Giunta #define AW88399_TESTDET_REG (0x2B) 547fa44519SMarco Giunta #define AW88399_DSMCFG1_REG (0x30) 557fa44519SMarco Giunta #define AW88399_DSMCFG2_REG (0x31) 567fa44519SMarco Giunta #define AW88399_DSMCFG3_REG (0x32) 577fa44519SMarco Giunta #define AW88399_DSMCFG4_REG (0x33) 587fa44519SMarco Giunta #define AW88399_DSMCFG5_REG (0x34) 597fa44519SMarco Giunta #define AW88399_DSMCFG6_REG (0x35) 607fa44519SMarco Giunta #define AW88399_DSMCFG7_REG (0x36) 617fa44519SMarco Giunta #define AW88399_DSMCFG8_REG (0x37) 627fa44519SMarco Giunta #define AW88399_TESTIN_REG (0x38) 637fa44519SMarco Giunta #define AW88399_TESTOUT_REG (0x39) 647fa44519SMarco Giunta #define AW88399_MEMTEST_REG (0x3A) 657fa44519SMarco Giunta #define AW88399_VSNCTRL1_REG (0x3B) 667fa44519SMarco Giunta #define AW88399_ISNCTRL1_REG (0x3C) 677fa44519SMarco Giunta #define AW88399_ISNCTRL2_REG (0x3D) 687fa44519SMarco Giunta #define AW88399_DSPMADD_REG (0x40) 697fa44519SMarco Giunta #define AW88399_DSPMDAT_REG (0x41) 707fa44519SMarco Giunta #define AW88399_WDT_REG (0x42) 717fa44519SMarco Giunta #define AW88399_ACR1_REG (0x43) 727fa44519SMarco Giunta #define AW88399_ACR2_REG (0x44) 737fa44519SMarco Giunta #define AW88399_ASR1_REG (0x45) 747fa44519SMarco Giunta #define AW88399_ASR2_REG (0x46) 757fa44519SMarco Giunta #define AW88399_DSPCFG_REG (0x47) 767fa44519SMarco Giunta #define AW88399_ASR3_REG (0x48) 777fa44519SMarco Giunta #define AW88399_ASR4_REG (0x49) 787fa44519SMarco Giunta #define AW88399_DSPVCALB_REG (0x4A) 797fa44519SMarco Giunta #define AW88399_CRCCTRL_REG (0x4B) 807fa44519SMarco Giunta #define AW88399_DSPDBG1_REG (0x4C) 817fa44519SMarco Giunta #define AW88399_DSPDBG2_REG (0x4D) 827fa44519SMarco Giunta #define AW88399_DSPDBG3_REG (0x4E) 837fa44519SMarco Giunta #define AW88399_PLLCTRL1_REG (0x50) 847fa44519SMarco Giunta #define AW88399_PLLCTRL2_REG (0x51) 857fa44519SMarco Giunta #define AW88399_PLLCTRL3_REG (0x52) 867fa44519SMarco Giunta #define AW88399_CDACTRL1_REG (0x53) 877fa44519SMarco Giunta #define AW88399_CDACTRL2_REG (0x54) 887fa44519SMarco Giunta #define AW88399_CDACTRL3_REG (0x55) 897fa44519SMarco Giunta #define AW88399_SADCCTRL1_REG (0x56) 907fa44519SMarco Giunta #define AW88399_SADCCTRL2_REG (0x57) 917fa44519SMarco Giunta #define AW88399_BOPCTRL1_REG (0x58) 927fa44519SMarco Giunta #define AW88399_BOPCTRL2_REG (0x5A) 937fa44519SMarco Giunta #define AW88399_BOPCTRL3_REG (0x5B) 947fa44519SMarco Giunta #define AW88399_BOPCTRL4_REG (0x5C) 957fa44519SMarco Giunta #define AW88399_BOPCTRL5_REG (0x5D) 967fa44519SMarco Giunta #define AW88399_BOPCTRL6_REG (0x5E) 977fa44519SMarco Giunta #define AW88399_BOPCTRL7_REG (0x5F) 987fa44519SMarco Giunta #define AW88399_BSTCTRL1_REG (0x60) 997fa44519SMarco Giunta #define AW88399_BSTCTRL2_REG (0x61) 1007fa44519SMarco Giunta #define AW88399_BSTCTRL3_REG (0x62) 1017fa44519SMarco Giunta #define AW88399_BSTCTRL4_REG (0x63) 1027fa44519SMarco Giunta #define AW88399_BSTCTRL5_REG (0x64) 1037fa44519SMarco Giunta #define AW88399_BSTCTRL6_REG (0x65) 1047fa44519SMarco Giunta #define AW88399_BSTCTRL7_REG (0x66) 1057fa44519SMarco Giunta #define AW88399_BSTCTRL8_REG (0x67) 1067fa44519SMarco Giunta #define AW88399_BSTCTRL9_REG (0x68) 1077fa44519SMarco Giunta #define AW88399_BSTCTRL10_REG (0x69) 1087fa44519SMarco Giunta #define AW88399_CPCTRL_REG (0x6A) 1097fa44519SMarco Giunta #define AW88399_EFWH_REG (0x6C) 1107fa44519SMarco Giunta #define AW88399_EFWM2_REG (0x6D) 1117fa44519SMarco Giunta #define AW88399_EFWM1_REG (0x6E) 1127fa44519SMarco Giunta #define AW88399_EFWL_REG (0x6F) 1137fa44519SMarco Giunta #define AW88399_TESTCTRL1_REG (0x70) 1147fa44519SMarco Giunta #define AW88399_TESTCTRL2_REG (0x71) 1157fa44519SMarco Giunta #define AW88399_EFCTRL1_REG (0x72) 1167fa44519SMarco Giunta #define AW88399_EFCTRL2_REG (0x73) 1177fa44519SMarco Giunta #define AW88399_EFRH4_REG (0x74) 1187fa44519SMarco Giunta #define AW88399_EFRH3_REG (0x75) 1197fa44519SMarco Giunta #define AW88399_EFRH2_REG (0x76) 1207fa44519SMarco Giunta #define AW88399_EFRH1_REG (0x77) 1217fa44519SMarco Giunta #define AW88399_EFRL4_REG (0x78) 1227fa44519SMarco Giunta #define AW88399_EFRL3_REG (0x79) 1237fa44519SMarco Giunta #define AW88399_EFRL2_REG (0x7A) 1247fa44519SMarco Giunta #define AW88399_EFRL1_REG (0x7B) 1257fa44519SMarco Giunta #define AW88399_TM_REG (0x7C) 1267fa44519SMarco Giunta #define AW88399_TM2_REG (0x7D) 1277fa44519SMarco Giunta 1287fa44519SMarco Giunta #define AW88399_REG_MAX (0x7E) 1297fa44519SMarco Giunta #define AW88399_MUTE_VOL (1023) 1307fa44519SMarco Giunta 1317fa44519SMarco Giunta #define AW88399_DSP_CFG_ADDR (0x9B00) 1327fa44519SMarco Giunta #define AW88399_DSP_REG_CFG_ADPZ_RA (0x9B68) 1337fa44519SMarco Giunta #define AW88399_DSP_FW_ADDR (0x8980) 1347fa44519SMarco Giunta #define AW88399_DSP_ROM_CHECK_ADDR (0x1F40) 1357fa44519SMarco Giunta #define AW88399_DSP_ROM_CHECK_DATA (0x4638) 1367fa44519SMarco Giunta 1377fa44519SMarco Giunta #define AW88399_CALI_RE_HBITS_MASK (~(0xFFFF0000)) 1387fa44519SMarco Giunta #define AW88399_CALI_RE_HBITS_SHIFT (16) 1397fa44519SMarco Giunta 1407fa44519SMarco Giunta #define AW88399_CALI_RE_LBITS_MASK (~(0xFFFF)) 1417fa44519SMarco Giunta #define AW88399_CALI_RE_LBITS_SHIFT (0) 1427fa44519SMarco Giunta 1437fa44519SMarco Giunta #define AW88399_I2STXEN_START_BIT (9) 1447fa44519SMarco Giunta #define AW88399_I2STXEN_BITS_LEN (1) 1457fa44519SMarco Giunta #define AW88399_I2STXEN_MASK \ 1467fa44519SMarco Giunta (~(((1<<AW88399_I2STXEN_BITS_LEN)-1) << AW88399_I2STXEN_START_BIT)) 1477fa44519SMarco Giunta 1487fa44519SMarco Giunta #define AW88399_I2STXEN_DISABLE (0) 1497fa44519SMarco Giunta #define AW88399_I2STXEN_DISABLE_VALUE \ 1507fa44519SMarco Giunta (AW88399_I2STXEN_DISABLE << AW88399_I2STXEN_START_BIT) 1517fa44519SMarco Giunta 1527fa44519SMarco Giunta #define AW88399_I2STXEN_ENABLE (1) 1537fa44519SMarco Giunta #define AW88399_I2STXEN_ENABLE_VALUE \ 1547fa44519SMarco Giunta (AW88399_I2STXEN_ENABLE << AW88399_I2STXEN_START_BIT) 1557fa44519SMarco Giunta 1567fa44519SMarco Giunta #define AW88399_VOL_START_BIT (0) 1577fa44519SMarco Giunta #define AW88399_VOL_BITS_LEN (10) 1587fa44519SMarco Giunta #define AW88399_VOL_MASK \ 1597fa44519SMarco Giunta (~(((1<<AW88399_VOL_BITS_LEN)-1) << AW88399_VOL_START_BIT)) 1607fa44519SMarco Giunta 1617fa44519SMarco Giunta #define AW88399_PWDN_START_BIT (0) 1627fa44519SMarco Giunta #define AW88399_PWDN_BITS_LEN (1) 1637fa44519SMarco Giunta #define AW88399_PWDN_MASK \ 1647fa44519SMarco Giunta (~(((1<<AW88399_PWDN_BITS_LEN)-1) << AW88399_PWDN_START_BIT)) 1657fa44519SMarco Giunta 1667fa44519SMarco Giunta #define AW88399_PWDN_POWER_DOWN (1) 1677fa44519SMarco Giunta #define AW88399_PWDN_POWER_DOWN_VALUE \ 1687fa44519SMarco Giunta (AW88399_PWDN_POWER_DOWN << AW88399_PWDN_START_BIT) 1697fa44519SMarco Giunta 1707fa44519SMarco Giunta #define AW88399_PWDN_WORKING (0) 1717fa44519SMarco Giunta #define AW88399_PWDN_WORKING_VALUE \ 1727fa44519SMarco Giunta (AW88399_PWDN_WORKING << AW88399_PWDN_START_BIT) 1737fa44519SMarco Giunta 1747fa44519SMarco Giunta #define AW88399_DSPBY_START_BIT (2) 1757fa44519SMarco Giunta #define AW88399_DSPBY_BITS_LEN (1) 1767fa44519SMarco Giunta #define AW88399_DSPBY_MASK \ 1777fa44519SMarco Giunta (~(((1<<AW88399_DSPBY_BITS_LEN)-1) << AW88399_DSPBY_START_BIT)) 1787fa44519SMarco Giunta 1797fa44519SMarco Giunta #define AW88399_DSPBY_WORKING (0) 1807fa44519SMarco Giunta #define AW88399_DSPBY_WORKING_VALUE \ 1817fa44519SMarco Giunta (AW88399_DSPBY_WORKING << AW88399_DSPBY_START_BIT) 1827fa44519SMarco Giunta 1837fa44519SMarco Giunta #define AW88399_DSPBY_BYPASS (1) 1847fa44519SMarco Giunta #define AW88399_DSPBY_BYPASS_VALUE \ 1857fa44519SMarco Giunta (AW88399_DSPBY_BYPASS << AW88399_DSPBY_START_BIT) 1867fa44519SMarco Giunta 1877fa44519SMarco Giunta #define AW88399_MEM_CLKSEL_START_BIT (3) 1887fa44519SMarco Giunta #define AW88399_MEM_CLKSEL_BITS_LEN (1) 1897fa44519SMarco Giunta #define AW88399_MEM_CLKSEL_MASK \ 1907fa44519SMarco Giunta (~(((1<<AW88399_MEM_CLKSEL_BITS_LEN)-1) << AW88399_MEM_CLKSEL_START_BIT)) 1917fa44519SMarco Giunta 1927fa44519SMarco Giunta #define AW88399_MEM_CLKSEL_OSCCLK (0) 1937fa44519SMarco Giunta #define AW88399_MEM_CLKSEL_OSCCLK_VALUE \ 1947fa44519SMarco Giunta (AW88399_MEM_CLKSEL_OSCCLK << AW88399_MEM_CLKSEL_START_BIT) 1957fa44519SMarco Giunta 1967fa44519SMarco Giunta #define AW88399_MEM_CLKSEL_DAPHCLK (1) 1977fa44519SMarco Giunta #define AW88399_MEM_CLKSEL_DAPHCLK_VALUE \ 1987fa44519SMarco Giunta (AW88399_MEM_CLKSEL_DAPHCLK << AW88399_MEM_CLKSEL_START_BIT) 1997fa44519SMarco Giunta 2007fa44519SMarco Giunta #define AW88399_DITHER_EN_START_BIT (15) 2017fa44519SMarco Giunta #define AW88399_DITHER_EN_BITS_LEN (1) 2027fa44519SMarco Giunta #define AW88399_DITHER_EN_MASK \ 2037fa44519SMarco Giunta (~(((1<<AW88399_DITHER_EN_BITS_LEN)-1) << AW88399_DITHER_EN_START_BIT)) 2047fa44519SMarco Giunta 2057fa44519SMarco Giunta #define AW88399_DITHER_EN_DISABLE (0) 2067fa44519SMarco Giunta #define AW88399_DITHER_EN_DISABLE_VALUE \ 2077fa44519SMarco Giunta (AW88399_DITHER_EN_DISABLE << AW88399_DITHER_EN_START_BIT) 2087fa44519SMarco Giunta 2097fa44519SMarco Giunta #define AW88399_DITHER_EN_ENABLE (1) 2107fa44519SMarco Giunta #define AW88399_DITHER_EN_ENABLE_VALUE \ 2117fa44519SMarco Giunta (AW88399_DITHER_EN_ENABLE << AW88399_DITHER_EN_START_BIT) 2127fa44519SMarco Giunta 2137fa44519SMarco Giunta #define AW88399_HMUTE_START_BIT (8) 2147fa44519SMarco Giunta #define AW88399_HMUTE_BITS_LEN (1) 2157fa44519SMarco Giunta #define AW88399_HMUTE_MASK \ 2167fa44519SMarco Giunta (~(((1<<AW88399_HMUTE_BITS_LEN)-1) << AW88399_HMUTE_START_BIT)) 2177fa44519SMarco Giunta 2187fa44519SMarco Giunta #define AW88399_HMUTE_DISABLE (0) 2197fa44519SMarco Giunta #define AW88399_HMUTE_DISABLE_VALUE \ 2207fa44519SMarco Giunta (AW88399_HMUTE_DISABLE << AW88399_HMUTE_START_BIT) 2217fa44519SMarco Giunta 2227fa44519SMarco Giunta #define AW88399_HMUTE_ENABLE (1) 2237fa44519SMarco Giunta #define AW88399_HMUTE_ENABLE_VALUE \ 2247fa44519SMarco Giunta (AW88399_HMUTE_ENABLE << AW88399_HMUTE_START_BIT) 2257fa44519SMarco Giunta 2267fa44519SMarco Giunta #define AW88399_EF_DBMD_START_BIT (2) 2277fa44519SMarco Giunta #define AW88399_EF_DBMD_BITS_LEN (1) 2287fa44519SMarco Giunta #define AW88399_EF_DBMD_MASK \ 2297fa44519SMarco Giunta (~(((1<<AW88399_EF_DBMD_BITS_LEN)-1) << AW88399_EF_DBMD_START_BIT)) 2307fa44519SMarco Giunta 2317fa44519SMarco Giunta #define AW88399_EF_DBMD_OR (1) 2327fa44519SMarco Giunta #define AW88399_EF_DBMD_OR_VALUE \ 2337fa44519SMarco Giunta (AW88399_EF_DBMD_OR << AW88399_EF_DBMD_START_BIT) 2347fa44519SMarco Giunta 2357fa44519SMarco Giunta #define AW88399_VDSEL_START_BIT (5) 2367fa44519SMarco Giunta #define AW88399_VDSEL_BITS_LEN (1) 2377fa44519SMarco Giunta #define AW88399_VDSEL_MASK \ 2387fa44519SMarco Giunta (~(((1<<AW88399_VDSEL_BITS_LEN)-1) << AW88399_VDSEL_START_BIT)) 2397fa44519SMarco Giunta 2407fa44519SMarco Giunta #define AW88399_EF_ISN_GESLP_H_START_BIT (0) 2417fa44519SMarco Giunta #define AW88399_EF_ISN_GESLP_H_BITS_LEN (10) 2427fa44519SMarco Giunta #define AW88399_EF_ISN_GESLP_H_MASK \ 2437fa44519SMarco Giunta (~(((1<<AW88399_EF_ISN_GESLP_H_BITS_LEN)-1) << AW88399_EF_ISN_GESLP_H_START_BIT)) 2447fa44519SMarco Giunta 2457fa44519SMarco Giunta /* EF_VSN_GESLP_H bit 9:0 (EFRH3 0x75) */ 2467fa44519SMarco Giunta #define AW88399_EF_VSN_GESLP_H_START_BIT (0) 2477fa44519SMarco Giunta #define AW88399_EF_VSN_GESLP_H_BITS_LEN (10) 2487fa44519SMarco Giunta #define AW88399_EF_VSN_GESLP_H_MASK \ 2497fa44519SMarco Giunta (~(((1<<AW88399_EF_VSN_GESLP_H_BITS_LEN)-1) << AW88399_EF_VSN_GESLP_H_START_BIT)) 2507fa44519SMarco Giunta 2517fa44519SMarco Giunta #define AW88399_EF_ISN_GESLP_L_START_BIT (0) 2527fa44519SMarco Giunta #define AW88399_EF_ISN_GESLP_L_BITS_LEN (10) 2537fa44519SMarco Giunta #define AW88399_EF_ISN_GESLP_L_MASK \ 2547fa44519SMarco Giunta (~(((1<<AW88399_EF_ISN_GESLP_L_BITS_LEN)-1) << AW88399_EF_ISN_GESLP_L_START_BIT)) 2557fa44519SMarco Giunta 2567fa44519SMarco Giunta /* EF_VSN_GESLP_L bit 9:0 (EFRL3 0x79) */ 2577fa44519SMarco Giunta #define AW88399_EF_VSN_GESLP_L_START_BIT (0) 2587fa44519SMarco Giunta #define AW88399_EF_VSN_GESLP_L_BITS_LEN (10) 2597fa44519SMarco Giunta #define AW88399_EF_VSN_GESLP_L_MASK \ 2607fa44519SMarco Giunta (~(((1<<AW88399_EF_VSN_GESLP_L_BITS_LEN)-1) << AW88399_EF_VSN_GESLP_L_START_BIT)) 2617fa44519SMarco Giunta 2627fa44519SMarco Giunta #define AW88399_INTERNAL_VSN_TRIM_H_START_BIT (9) 2637fa44519SMarco Giunta #define AW88399_INTERNAL_VSN_TRIM_H_BITS_LEN (6) 2647fa44519SMarco Giunta #define AW88399_INTERNAL_VSN_TRIM_H_MASK \ 2657fa44519SMarco Giunta (~(((1<<AW88399_INTERNAL_VSN_TRIM_H_BITS_LEN)-1) << AW88399_INTERNAL_VSN_TRIM_H_START_BIT)) 2667fa44519SMarco Giunta 2677fa44519SMarco Giunta #define AW88399_INTERNAL_VSN_TRIM_L_START_BIT (9) 2687fa44519SMarco Giunta #define AW88399_INTERNAL_VSN_TRIM_L_BITS_LEN (6) 2697fa44519SMarco Giunta #define AW88399_INTERNAL_VSN_TRIM_L_MASK \ 2707fa44519SMarco Giunta (~(((1<<AW88399_INTERNAL_VSN_TRIM_L_BITS_LEN)-1) << AW88399_INTERNAL_VSN_TRIM_L_START_BIT)) 2717fa44519SMarco Giunta 2727fa44519SMarco Giunta #define AW88399_RCV_MODE_START_BIT (7) 2737fa44519SMarco Giunta #define AW88399_RCV_MODE_BITS_LEN (1) 2747fa44519SMarco Giunta #define AW88399_RCV_MODE_MASK \ 2757fa44519SMarco Giunta (~(((1<<AW88399_RCV_MODE_BITS_LEN)-1) << AW88399_RCV_MODE_START_BIT)) 2767fa44519SMarco Giunta 2777fa44519SMarco Giunta #define AW88399_CLKI_START_BIT (4) 2787fa44519SMarco Giunta #define AW88399_NOCLKI_START_BIT (5) 2797fa44519SMarco Giunta #define AW88399_PLLI_START_BIT (0) 2807fa44519SMarco Giunta #define AW88399_PLLI_INT_VALUE (1) 2817fa44519SMarco Giunta #define AW88399_PLLI_INT_INTERRUPT \ 2827fa44519SMarco Giunta (AW88399_PLLI_INT_VALUE << AW88399_PLLI_START_BIT) 2837fa44519SMarco Giunta 2847fa44519SMarco Giunta #define AW88399_CLKI_INT_VALUE (1) 2857fa44519SMarco Giunta #define AW88399_CLKI_INT_INTERRUPT \ 2867fa44519SMarco Giunta (AW88399_CLKI_INT_VALUE << AW88399_CLKI_START_BIT) 2877fa44519SMarco Giunta 2887fa44519SMarco Giunta #define AW88399_NOCLKI_INT_VALUE (1) 2897fa44519SMarco Giunta #define AW88399_NOCLKI_INT_INTERRUPT \ 2907fa44519SMarco Giunta (AW88399_NOCLKI_INT_VALUE << AW88399_NOCLKI_START_BIT) 2917fa44519SMarco Giunta 2927fa44519SMarco Giunta #define AW88399_BIT_SYSINT_CHECK \ 2937fa44519SMarco Giunta (AW88399_PLLI_INT_INTERRUPT | \ 2947fa44519SMarco Giunta AW88399_CLKI_INT_INTERRUPT | \ 2957fa44519SMarco Giunta AW88399_NOCLKI_INT_INTERRUPT) 2967fa44519SMarco Giunta 2977fa44519SMarco Giunta #define AW88399_CRC_CHECK_START_BIT (12) 2987fa44519SMarco Giunta #define AW88399_CRC_CHECK_BITS_LEN (3) 2997fa44519SMarco Giunta #define AW88399_CRC_CHECK_BITS_MASK \ 3007fa44519SMarco Giunta (~(((1<<AW88399_CRC_CHECK_BITS_LEN)-1) << AW88399_CRC_CHECK_START_BIT)) 3017fa44519SMarco Giunta 3027fa44519SMarco Giunta #define AW88399_RCV_MODE_RECEIVER (1) 3037fa44519SMarco Giunta #define AW88399_RCV_MODE_RECEIVER_VALUE \ 3047fa44519SMarco Giunta (AW88399_RCV_MODE_RECEIVER << AW88399_RCV_MODE_START_BIT) 3057fa44519SMarco Giunta 3067fa44519SMarco Giunta #define AW88399_AMPPD_START_BIT (1) 3077fa44519SMarco Giunta #define AW88399_AMPPD_BITS_LEN (1) 3087fa44519SMarco Giunta #define AW88399_AMPPD_MASK \ 3097fa44519SMarco Giunta (~(((1<<AW88399_AMPPD_BITS_LEN)-1) << AW88399_AMPPD_START_BIT)) 3107fa44519SMarco Giunta 3117fa44519SMarco Giunta #define AW88399_AMPPD_WORKING (0) 3127fa44519SMarco Giunta #define AW88399_AMPPD_WORKING_VALUE \ 3137fa44519SMarco Giunta (AW88399_AMPPD_WORKING << AW88399_AMPPD_START_BIT) 3147fa44519SMarco Giunta 3157fa44519SMarco Giunta #define AW88399_AMPPD_POWER_DOWN (1) 3167fa44519SMarco Giunta #define AW88399_AMPPD_POWER_DOWN_VALUE \ 3177fa44519SMarco Giunta (AW88399_AMPPD_POWER_DOWN << AW88399_AMPPD_START_BIT) 3187fa44519SMarco Giunta 3197fa44519SMarco Giunta #define AW88399_RAM_CG_BYP_START_BIT (0) 3207fa44519SMarco Giunta #define AW88399_RAM_CG_BYP_BITS_LEN (1) 3217fa44519SMarco Giunta #define AW88399_RAM_CG_BYP_MASK \ 3227fa44519SMarco Giunta (~(((1<<AW88399_RAM_CG_BYP_BITS_LEN)-1) << AW88399_RAM_CG_BYP_START_BIT)) 3237fa44519SMarco Giunta 3247fa44519SMarco Giunta #define AW88399_RAM_CG_BYP_WORK (0) 3257fa44519SMarco Giunta #define AW88399_RAM_CG_BYP_WORK_VALUE \ 3267fa44519SMarco Giunta (AW88399_RAM_CG_BYP_WORK << AW88399_RAM_CG_BYP_START_BIT) 3277fa44519SMarco Giunta 3287fa44519SMarco Giunta #define AW88399_RAM_CG_BYP_BYPASS (1) 3297fa44519SMarco Giunta #define AW88399_RAM_CG_BYP_BYPASS_VALUE \ 3307fa44519SMarco Giunta (AW88399_RAM_CG_BYP_BYPASS << AW88399_RAM_CG_BYP_START_BIT) 3317fa44519SMarco Giunta 3327fa44519SMarco Giunta #define AW88399_CRC_END_ADDR_START_BIT (0) 3337fa44519SMarco Giunta #define AW88399_CRC_END_ADDR_BITS_LEN (12) 3347fa44519SMarco Giunta #define AW88399_CRC_END_ADDR_MASK \ 3357fa44519SMarco Giunta (~(((1<<AW88399_CRC_END_ADDR_BITS_LEN)-1) << AW88399_CRC_END_ADDR_START_BIT)) 3367fa44519SMarco Giunta 3377fa44519SMarco Giunta #define AW88399_CRC_CODE_EN_START_BIT (13) 3387fa44519SMarco Giunta #define AW88399_CRC_CODE_EN_BITS_LEN (1) 3397fa44519SMarco Giunta #define AW88399_CRC_CODE_EN_MASK \ 3407fa44519SMarco Giunta (~(((1<<AW88399_CRC_CODE_EN_BITS_LEN)-1) << AW88399_CRC_CODE_EN_START_BIT)) 3417fa44519SMarco Giunta 3427fa44519SMarco Giunta #define AW88399_CRC_CODE_EN_DISABLE (0) 3437fa44519SMarco Giunta #define AW88399_CRC_CODE_EN_DISABLE_VALUE \ 3447fa44519SMarco Giunta (AW88399_CRC_CODE_EN_DISABLE << AW88399_CRC_CODE_EN_START_BIT) 3457fa44519SMarco Giunta 3467fa44519SMarco Giunta #define AW88399_CRC_CODE_EN_ENABLE (1) 3477fa44519SMarco Giunta #define AW88399_CRC_CODE_EN_ENABLE_VALUE \ 3487fa44519SMarco Giunta (AW88399_CRC_CODE_EN_ENABLE << AW88399_CRC_CODE_EN_START_BIT) 3497fa44519SMarco Giunta 3507fa44519SMarco Giunta #define AW88399_CRC_CFG_EN_START_BIT (12) 3517fa44519SMarco Giunta #define AW88399_CRC_CFG_EN_BITS_LEN (1) 3527fa44519SMarco Giunta #define AW88399_CRC_CFG_EN_MASK \ 3537fa44519SMarco Giunta (~(((1<<AW88399_CRC_CFG_EN_BITS_LEN)-1) << AW88399_CRC_CFG_EN_START_BIT)) 3547fa44519SMarco Giunta 3557fa44519SMarco Giunta #define AW88399_CRC_CFG_EN_DISABLE (0) 3567fa44519SMarco Giunta #define AW88399_CRC_CFG_EN_DISABLE_VALUE \ 3577fa44519SMarco Giunta (AW88399_CRC_CFG_EN_DISABLE << AW88399_CRC_CFG_EN_START_BIT) 3587fa44519SMarco Giunta 3597fa44519SMarco Giunta #define AW88399_CRC_CFG_EN_ENABLE (1) 3607fa44519SMarco Giunta #define AW88399_CRC_CFG_EN_ENABLE_VALUE \ 3617fa44519SMarco Giunta (AW88399_CRC_CFG_EN_ENABLE << AW88399_CRC_CFG_EN_START_BIT) 3627fa44519SMarco Giunta 3637fa44519SMarco Giunta #define AW88399_OCDS_START_BIT (3) 3647fa44519SMarco Giunta #define AW88399_OCDS_OC (1) 3657fa44519SMarco Giunta #define AW88399_OCDS_OC_VALUE \ 3667fa44519SMarco Giunta (AW88399_OCDS_OC << AW88399_OCDS_START_BIT) 3677fa44519SMarco Giunta 3687fa44519SMarco Giunta #define AW88399_NOCLKS_START_BIT (5) 3697fa44519SMarco Giunta #define AW88399_NOCLKS_NO_CLOCK (1) 3707fa44519SMarco Giunta #define AW88399_NOCLKS_NO_CLOCK_VALUE \ 3717fa44519SMarco Giunta (AW88399_NOCLKS_NO_CLOCK << AW88399_NOCLKS_START_BIT) 3727fa44519SMarco Giunta 3737fa44519SMarco Giunta #define AW88399_SWS_START_BIT (8) 3747fa44519SMarco Giunta #define AW88399_SWS_SWITCHING (1) 3757fa44519SMarco Giunta #define AW88399_SWS_SWITCHING_VALUE \ 3767fa44519SMarco Giunta (AW88399_SWS_SWITCHING << AW88399_SWS_START_BIT) 3777fa44519SMarco Giunta 3787fa44519SMarco Giunta #define AW88399_BSTS_START_BIT (9) 3797fa44519SMarco Giunta #define AW88399_BSTS_FINISHED (1) 3807fa44519SMarco Giunta #define AW88399_BSTS_FINISHED_VALUE \ 3817fa44519SMarco Giunta (AW88399_BSTS_FINISHED << AW88399_BSTS_START_BIT) 3827fa44519SMarco Giunta 3837fa44519SMarco Giunta #define AW88399_UVLS_START_BIT (14) 3847fa44519SMarco Giunta #define AW88399_UVLS_NORMAL (0) 3857fa44519SMarco Giunta #define AW88399_UVLS_NORMAL_VALUE \ 3867fa44519SMarco Giunta (AW88399_UVLS_NORMAL << AW88399_UVLS_START_BIT) 3877fa44519SMarco Giunta 3887fa44519SMarco Giunta #define AW88399_BSTOCS_START_BIT (11) 3897fa44519SMarco Giunta #define AW88399_BSTOCS_OVER_CURRENT (1) 3907fa44519SMarco Giunta #define AW88399_BSTOCS_OVER_CURRENT_VALUE \ 3917fa44519SMarco Giunta (AW88399_BSTOCS_OVER_CURRENT << AW88399_BSTOCS_START_BIT) 3927fa44519SMarco Giunta 3937fa44519SMarco Giunta #define AW88399_OTHS_START_BIT (1) 3947fa44519SMarco Giunta #define AW88399_OTHS_OT (1) 3957fa44519SMarco Giunta #define AW88399_OTHS_OT_VALUE \ 3967fa44519SMarco Giunta (AW88399_OTHS_OT << AW88399_OTHS_START_BIT) 3977fa44519SMarco Giunta 3987fa44519SMarco Giunta #define AW88399_PLLS_START_BIT (0) 3997fa44519SMarco Giunta #define AW88399_PLLS_LOCKED (1) 4007fa44519SMarco Giunta #define AW88399_PLLS_LOCKED_VALUE \ 4017fa44519SMarco Giunta (AW88399_PLLS_LOCKED << AW88399_PLLS_START_BIT) 4027fa44519SMarco Giunta 4037fa44519SMarco Giunta #define AW88399_CLKS_START_BIT (4) 4047fa44519SMarco Giunta #define AW88399_CLKS_STABLE (1) 4057fa44519SMarco Giunta #define AW88399_CLKS_STABLE_VALUE \ 4067fa44519SMarco Giunta (AW88399_CLKS_STABLE << AW88399_CLKS_START_BIT) 4077fa44519SMarco Giunta 4087fa44519SMarco Giunta #define AW88399_BIT_PLL_CHECK \ 4097fa44519SMarco Giunta (AW88399_CLKS_STABLE_VALUE | \ 4107fa44519SMarco Giunta AW88399_PLLS_LOCKED_VALUE) 4117fa44519SMarco Giunta 4127fa44519SMarco Giunta #define AW88399_BIT_SYSST_CHECK_MASK \ 4137fa44519SMarco Giunta (~(AW88399_UVLS_NORMAL_VALUE | \ 4147fa44519SMarco Giunta AW88399_BSTOCS_OVER_CURRENT_VALUE | \ 4157fa44519SMarco Giunta AW88399_BSTS_FINISHED_VALUE | \ 4167fa44519SMarco Giunta AW88399_SWS_SWITCHING_VALUE | \ 4177fa44519SMarco Giunta AW88399_NOCLKS_NO_CLOCK_VALUE | \ 4187fa44519SMarco Giunta AW88399_CLKS_STABLE_VALUE | \ 4197fa44519SMarco Giunta AW88399_OCDS_OC_VALUE | \ 4207fa44519SMarco Giunta AW88399_OTHS_OT_VALUE | \ 4217fa44519SMarco Giunta AW88399_PLLS_LOCKED_VALUE)) 4227fa44519SMarco Giunta 4237fa44519SMarco Giunta #define AW88399_BIT_SYSST_NOSWS_CHECK \ 4247fa44519SMarco Giunta (AW88399_BSTS_FINISHED_VALUE | \ 4257fa44519SMarco Giunta AW88399_CLKS_STABLE_VALUE | \ 4267fa44519SMarco Giunta AW88399_PLLS_LOCKED_VALUE) 4277fa44519SMarco Giunta 4287fa44519SMarco Giunta #define AW88399_BIT_SYSST_SWS_CHECK \ 4297fa44519SMarco Giunta (AW88399_BSTS_FINISHED_VALUE | \ 4307fa44519SMarco Giunta AW88399_CLKS_STABLE_VALUE | \ 4317fa44519SMarco Giunta AW88399_PLLS_LOCKED_VALUE | \ 4327fa44519SMarco Giunta AW88399_SWS_SWITCHING_VALUE) 4337fa44519SMarco Giunta 4347fa44519SMarco Giunta #define AW88399_CCO_MUX_START_BIT (14) 4357fa44519SMarco Giunta #define AW88399_CCO_MUX_BITS_LEN (1) 4367fa44519SMarco Giunta #define AW88399_CCO_MUX_MASK \ 4377fa44519SMarco Giunta (~(((1<<AW88399_CCO_MUX_BITS_LEN)-1) << AW88399_CCO_MUX_START_BIT)) 4387fa44519SMarco Giunta 4397fa44519SMarco Giunta #define AW88399_CCO_MUX_DIVIDED (0) 4407fa44519SMarco Giunta #define AW88399_CCO_MUX_DIVIDED_VALUE \ 4417fa44519SMarco Giunta (AW88399_CCO_MUX_DIVIDED << AW88399_CCO_MUX_START_BIT) 4427fa44519SMarco Giunta 4437fa44519SMarco Giunta #define AW88399_CCO_MUX_BYPASS (1) 4447fa44519SMarco Giunta #define AW88399_CCO_MUX_BYPASS_VALUE \ 4457fa44519SMarco Giunta (AW88399_CCO_MUX_BYPASS << AW88399_CCO_MUX_START_BIT) 4467fa44519SMarco Giunta 4477fa44519SMarco Giunta #define AW88399_NOISE_GATE_EN_START_BIT (13) 4487fa44519SMarco Giunta #define AW88399_NOISE_GATE_EN_BITS_LEN (1) 4497fa44519SMarco Giunta #define AW88399_NOISE_GATE_EN_MASK \ 4507fa44519SMarco Giunta (~(((1<<AW88399_NOISE_GATE_EN_BITS_LEN)-1) << AW88399_NOISE_GATE_EN_START_BIT)) 4517fa44519SMarco Giunta 4527fa44519SMarco Giunta #define AW88399_WDT_CNT_START_BIT (0) 4537fa44519SMarco Giunta #define AW88399_WDT_CNT_BITS_LEN (8) 4547fa44519SMarco Giunta #define AW88399_WDT_CNT_MASK \ 4557fa44519SMarco Giunta (~(((1<<AW88399_WDT_CNT_BITS_LEN)-1) << AW88399_WDT_CNT_START_BIT)) 4567fa44519SMarco Giunta 4577fa44519SMarco Giunta #define AW88399_REABS_START_BIT (3) 4587fa44519SMarco Giunta #define AW88399_REABS_BITS_LEN (1) 4597fa44519SMarco Giunta #define AW88399_REABS_MASK \ 4607fa44519SMarco Giunta (~(((1<<AW88399_REABS_BITS_LEN)-1) << AW88399_REABS_START_BIT)) 4617fa44519SMarco Giunta 4627fa44519SMarco Giunta #define AW88399_DSP_VOL_START_BIT (8) 4637fa44519SMarco Giunta #define AW88399_DSP_VOL_BITS_LEN (8) 4647fa44519SMarco Giunta #define AW88399_DSP_VOL_MASK \ 4657fa44519SMarco Giunta (~(((1<<AW88399_DSP_VOL_BITS_LEN)-1) << AW88399_DSP_VOL_START_BIT)) 4667fa44519SMarco Giunta 4677fa44519SMarco Giunta #define AW883XX_DSP_NG_EN_START (13) 4687fa44519SMarco Giunta #define AW883XX_DSP_NG_EN_LEN (1) 4697fa44519SMarco Giunta #define AW883XX_DSP_NG_EN_MASK \ 4707fa44519SMarco Giunta (~(((1 << AW883XX_DSP_NG_EN_LEN) - 1) << AW883XX_DSP_NG_EN_START)) 4717fa44519SMarco Giunta #define AW883XX_DSP_NG_EN_DISABLE (0) 4727fa44519SMarco Giunta #define AW883XX_DSP_NG_EN_DISABLE_VALUE \ 4737fa44519SMarco Giunta (AW883XX_DSP_NG_EN_DISABLE << AW883XX_DSP_NG_EN_START) 4747fa44519SMarco Giunta 4757fa44519SMarco Giunta #define AW88399_VOLUME_STEP_DB (64) 4767fa44519SMarco Giunta #define AW88399_VOL_DEFAULT_VALUE (0) 4777fa44519SMarco Giunta #define AW88399_DSP_ODD_NUM_BIT_TEST (0x5555) 4787fa44519SMarco Giunta #define AW88399_EF_ISN_GESLP_SIGN_MASK (~(1 << 9)) 4797fa44519SMarco Giunta #define AW88399_EF_ISN_GESLP_SIGN_NEG (0xfe00) 4807fa44519SMarco Giunta 4817fa44519SMarco Giunta #define AW88399_EF_VSN_GESLP_SIGN_MASK (~(1 << 9)) 4827fa44519SMarco Giunta #define AW88399_EF_VSN_GESLP_SIGN_NEG (0xfe00) 4837fa44519SMarco Giunta 4847fa44519SMarco Giunta #define AW88399_TEM4_SIGN_MASK (~(1 << 5)) 4857fa44519SMarco Giunta #define AW88399_TEM4_SIGN_NEG (0xffc0) 4867fa44519SMarco Giunta 4877fa44519SMarco Giunta #define AW88399_ICABLK_FACTOR (1) 4887fa44519SMarco Giunta #define AW88399_VCABLK_FACTOR (1) 4897fa44519SMarco Giunta #define AW88399_VCABLK_DAC_FACTOR (2) 4907fa44519SMarco Giunta 4917fa44519SMarco Giunta #define AW88399_VCALB_ADJ_FACTOR (12) 4927fa44519SMarco Giunta #define AW88399_VCALB_ACCURACY (1 << 12) 4937fa44519SMarco Giunta 4947fa44519SMarco Giunta #define AW88399_ISCAL_FACTOR (3125) 4957fa44519SMarco Giunta #define AW88399_VSCAL_FACTOR (18875) 4967fa44519SMarco Giunta #define AW88399_ISCAL_DAC_FACTOR (3125) 4977fa44519SMarco Giunta #define AW88399_VSCAL_DAC_FACTOR (12600) 4987fa44519SMarco Giunta #define AW88399_CABL_BASE_VALUE (1000) 4997fa44519SMarco Giunta 5007fa44519SMarco Giunta #define AW88399_DEV_DEFAULT_CH (0) 5017fa44519SMarco Giunta #define AW88399_DEV_DSP_CHECK_MAX (5) 5027fa44519SMarco Giunta #define AW88399_MAX_RAM_WRITE_BYTE_SIZE (128) 5037fa44519SMarco Giunta #define AW88399_DSP_RE_SHIFT (12) 5047fa44519SMarco Giunta #define AW88399_CALI_RE_MAX (15000) 5057fa44519SMarco Giunta #define AW88399_CALI_RE_MIN (4000) 5067fa44519SMarco Giunta #define AW_FW_ADDR_LEN (4) 5077fa44519SMarco Giunta #define AW88399_DSP_RE_TO_SHOW_RE(re, shift) (((re) * (1000)) >> (shift)) 5087fa44519SMarco Giunta #define AW88399_SHOW_RE_TO_DSP_RE(re, shift) (((re) << shift) / (1000)) 5097fa44519SMarco Giunta #define AW88399_CRC_CHECK_PASS_VAL (0x4) 5107fa44519SMarco Giunta 5117fa44519SMarco Giunta #define AW88399_CRC_CFG_BASE_ADDR (0xD80) 5127fa44519SMarco Giunta #define AW88399_CRC_FW_BASE_ADDR (0x4C0) 5137fa44519SMarco Giunta #define AW88399_ACF_FILE "aw88399_acf.bin" 5147fa44519SMarco Giunta #define AW88399_DEV_SYSST_CHECK_MAX (10) 5157fa44519SMarco Giunta #define AW88399_CHIP_ID 0x2183 5167fa44519SMarco Giunta 5177fa44519SMarco Giunta #define AW88399_START_RETRIES (5) 5187fa44519SMarco Giunta #define AW88399_START_WORK_DELAY_MS (0) 5197fa44519SMarco Giunta 5207fa44519SMarco Giunta enum { 5217fa44519SMarco Giunta AW_EF_AND_CHECK = 0, 5227fa44519SMarco Giunta AW_EF_OR_CHECK, 5237fa44519SMarco Giunta }; 5247fa44519SMarco Giunta 5257fa44519SMarco Giunta enum { 5267fa44519SMarco Giunta AW88399_DEV_VDSEL_DAC = 0, 5277fa44519SMarco Giunta AW88399_DEV_VDSEL_VSENSE = 32, 5287fa44519SMarco Giunta }; 5297fa44519SMarco Giunta 5307fa44519SMarco Giunta enum { 5317fa44519SMarco Giunta AW88399_DSP_CRC_NA = 0, 5327fa44519SMarco Giunta AW88399_DSP_CRC_OK = 1, 5337fa44519SMarco Giunta }; 5347fa44519SMarco Giunta 5357fa44519SMarco Giunta enum { 5367fa44519SMarco Giunta AW88399_DSP_FW_UPDATE_OFF = 0, 5377fa44519SMarco Giunta AW88399_DSP_FW_UPDATE_ON = 1, 5387fa44519SMarco Giunta }; 5397fa44519SMarco Giunta 5407fa44519SMarco Giunta enum { 5417fa44519SMarco Giunta AW88399_FORCE_UPDATE_OFF = 0, 5427fa44519SMarco Giunta AW88399_FORCE_UPDATE_ON = 1, 5437fa44519SMarco Giunta }; 5447fa44519SMarco Giunta 5457fa44519SMarco Giunta enum { 5467fa44519SMarco Giunta AW88399_1000_US = 1000, 5477fa44519SMarco Giunta AW88399_2000_US = 2000, 5487fa44519SMarco Giunta AW88399_3000_US = 3000, 5497fa44519SMarco Giunta AW88399_4000_US = 4000, 5507fa44519SMarco Giunta }; 5517fa44519SMarco Giunta 5527fa44519SMarco Giunta enum AW88399_DEV_STATUS { 5537fa44519SMarco Giunta AW88399_DEV_PW_OFF = 0, 5547fa44519SMarco Giunta AW88399_DEV_PW_ON, 5557fa44519SMarco Giunta }; 5567fa44519SMarco Giunta 5577fa44519SMarco Giunta enum AW88399_DEV_FW_STATUS { 5587fa44519SMarco Giunta AW88399_DEV_FW_FAILED = 0, 5597fa44519SMarco Giunta AW88399_DEV_FW_OK, 5607fa44519SMarco Giunta }; 5617fa44519SMarco Giunta 5627fa44519SMarco Giunta enum AW88399_DEV_MEMCLK { 5637fa44519SMarco Giunta AW88399_DEV_MEMCLK_OSC = 0, 5647fa44519SMarco Giunta AW88399_DEV_MEMCLK_PLL = 1, 5657fa44519SMarco Giunta }; 5667fa44519SMarco Giunta 5677fa44519SMarco Giunta enum AW88399_DEV_DSP_CFG { 5687fa44519SMarco Giunta AW88399_DEV_DSP_WORK = 0, 5697fa44519SMarco Giunta AW88399_DEV_DSP_BYPASS = 1, 5707fa44519SMarco Giunta }; 5717fa44519SMarco Giunta 5727fa44519SMarco Giunta enum { 5737fa44519SMarco Giunta AW88399_NOT_RCV_MODE = 0, 5747fa44519SMarco Giunta AW88399_RCV_MODE = 1, 5757fa44519SMarco Giunta }; 5767fa44519SMarco Giunta 5777fa44519SMarco Giunta enum { 5787fa44519SMarco Giunta AW88399_SYNC_START = 0, 5797fa44519SMarco Giunta AW88399_ASYNC_START, 5807fa44519SMarco Giunta }; 5817fa44519SMarco Giunta 5827fa44519SMarco Giunta struct aw_device; 5837fa44519SMarco Giunta struct aw_container; 5847fa44519SMarco Giunta struct aw_cali_desc; 5857fa44519SMarco Giunta struct gpio_desc; 5867fa44519SMarco Giunta struct i2c_client; 5877fa44519SMarco Giunta struct regmap; 5887fa44519SMarco Giunta 5897fa44519SMarco Giunta struct aw88399 { 5907fa44519SMarco Giunta struct aw_device *aw_pa; 5917fa44519SMarco Giunta struct mutex lock; 5927fa44519SMarco Giunta struct gpio_desc *reset_gpio; 5937fa44519SMarco Giunta struct delayed_work start_work; 5947fa44519SMarco Giunta struct regmap *regmap; 5957fa44519SMarco Giunta struct aw_container *aw_cfg; 5967fa44519SMarco Giunta 5977fa44519SMarco Giunta unsigned int check_val; 5987fa44519SMarco Giunta unsigned int crc_init_val; 5997fa44519SMarco Giunta unsigned int vcalb_init_val; 6007fa44519SMarco Giunta unsigned int dither_st; 601b4530a3eSMarco Giunta bool bsts_unreliable; 602b5e1d685SMarco Giunta bool fw_needs_reload; 6037fa44519SMarco Giunta }; 6047fa44519SMarco Giunta 6057fa44519SMarco Giunta int aw_dev_check_syspll(struct aw_device *aw_dev); 6067fa44519SMarco Giunta void aw_dev_dsp_enable(struct aw_device *aw_dev, bool is_enable); 6077fa44519SMarco Giunta int aw_dev_get_dsp_status(struct aw_device *aw_dev); 6087fa44519SMarco Giunta int aw_dev_set_volume(struct aw_device *aw_dev, unsigned int value); 6097fa44519SMarco Giunta int aw_dev_update_cali_re(struct aw_cali_desc *cali_desc); 6107fa44519SMarco Giunta int aw88399_dev_get_prof_name(struct aw_device *aw_dev, int index, char **prof_name); 6117fa44519SMarco Giunta void aw88399_dev_mute(struct aw_device *aw_dev, bool is_mute); 612*15c9fdb3SMarco Giunta void aw88399_dev_set_channel(struct aw88399 *aw88399, int channel); 6137fa44519SMarco Giunta void aw88399_hw_reset(struct aw88399 *aw88399); 6147fa44519SMarco Giunta int aw88399_init(struct aw88399 *aw88399, struct i2c_client *i2c, struct regmap *regmap); 6157fa44519SMarco Giunta extern const struct regmap_config aw88399_remap_config; 6167fa44519SMarco Giunta int aw88399_request_firmware_file(struct aw88399 *aw88399); 6177fa44519SMarco Giunta void aw88399_start(struct aw88399 *aw88399, bool sync_start); 6187fa44519SMarco Giunta void aw88399_startup_work(struct work_struct *work); 6197fa44519SMarco Giunta int aw88399_stop(struct aw_device *aw_dev); 6207fa44519SMarco Giunta 6217fa44519SMarco Giunta #endif /* __SOUND_AW88399_H */ 622