1*4717636fSWeidong Wang // SPDX-License-Identifier: GPL-2.0-only 2*4717636fSWeidong Wang // 3*4717636fSWeidong Wang // aw87390.h -- aw87390 ALSA SoC Audio driver 4*4717636fSWeidong Wang // 5*4717636fSWeidong Wang // Copyright (c) 2023 awinic Technology CO., LTD 6*4717636fSWeidong Wang // 7*4717636fSWeidong Wang // Author: Weidong Wang <wangweidong.a@awinic.com> 8*4717636fSWeidong Wang // 9*4717636fSWeidong Wang 10*4717636fSWeidong Wang #ifndef __AW87390_H__ 11*4717636fSWeidong Wang #define __AW87390_H__ 12*4717636fSWeidong Wang 13*4717636fSWeidong Wang #define AW87390_ID_REG (0x00) 14*4717636fSWeidong Wang #define AW87390_SYSCTRL_REG (0x01) 15*4717636fSWeidong Wang #define AW87390_MDCTRL_REG (0x02) 16*4717636fSWeidong Wang #define AW87390_CPOVP_REG (0x03) 17*4717636fSWeidong Wang #define AW87390_CPP_REG (0x04) 18*4717636fSWeidong Wang #define AW87390_PAG_REG (0x05) 19*4717636fSWeidong Wang #define AW87390_AGC3P_REG (0x06) 20*4717636fSWeidong Wang #define AW87390_AGC3PA_REG (0x07) 21*4717636fSWeidong Wang #define AW87390_AGC2P_REG (0x08) 22*4717636fSWeidong Wang #define AW87390_AGC2PA_REG (0x09) 23*4717636fSWeidong Wang #define AW87390_AGC1PA_REG (0x0A) 24*4717636fSWeidong Wang #define AW87390_SYSST_REG (0x59) 25*4717636fSWeidong Wang #define AW87390_SYSINT_REG (0x60) 26*4717636fSWeidong Wang #define AW87390_DFT_SYSCTRL_REG (0x61) 27*4717636fSWeidong Wang #define AW87390_DFT_MDCTRL_REG (0x62) 28*4717636fSWeidong Wang #define AW87390_DFT_CPADP_REG (0x63) 29*4717636fSWeidong Wang #define AW87390_DFT_AGCPA_REG (0x64) 30*4717636fSWeidong Wang #define AW87390_DFT_POFR_REG (0x65) 31*4717636fSWeidong Wang #define AW87390_DFT_OC_REG (0x66) 32*4717636fSWeidong Wang #define AW87390_DFT_ADP1_REG (0x67) 33*4717636fSWeidong Wang #define AW87390_DFT_REF_REG (0x68) 34*4717636fSWeidong Wang #define AW87390_DFT_LDO_REG (0x69) 35*4717636fSWeidong Wang #define AW87390_ADP1_REG (0x70) 36*4717636fSWeidong Wang #define AW87390_ADP2_REG (0x71) 37*4717636fSWeidong Wang #define AW87390_NG1_REG (0x72) 38*4717636fSWeidong Wang #define AW87390_NG2_REG (0x73) 39*4717636fSWeidong Wang #define AW87390_NG3_REG (0x74) 40*4717636fSWeidong Wang #define AW87390_CP_REG (0x75) 41*4717636fSWeidong Wang #define AW87390_AB_REG (0x76) 42*4717636fSWeidong Wang #define AW87390_TEST_REG (0x77) 43*4717636fSWeidong Wang #define AW87390_ENCR_REG (0x78) 44*4717636fSWeidong Wang #define AW87390_DELAY_REG_ADDR (0xFE) 45*4717636fSWeidong Wang 46*4717636fSWeidong Wang #define AW87390_SOFT_RESET_VALUE (0xAA) 47*4717636fSWeidong Wang #define AW87390_POWER_DOWN_VALUE (0x00) 48*4717636fSWeidong Wang #define AW87390_REG_MAX (0xFF) 49*4717636fSWeidong Wang #define AW87390_DEV_DEFAULT_CH (0) 50*4717636fSWeidong Wang #define AW87390_INIT_PROFILE (0) 51*4717636fSWeidong Wang #define AW87390_REG_DELAY_TIME (1000) 52*4717636fSWeidong Wang #define AW87390_I2C_NAME "aw87390" 53*4717636fSWeidong Wang #define AW87390_ACF_FILE "aw87390_acf.bin" 54*4717636fSWeidong Wang 55*4717636fSWeidong Wang #define AW87390_PROFILE_EXT(xname, profile_info, profile_get, profile_set) \ 56*4717636fSWeidong Wang { \ 57*4717636fSWeidong Wang .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \ 58*4717636fSWeidong Wang .name = xname, \ 59*4717636fSWeidong Wang .info = profile_info, \ 60*4717636fSWeidong Wang .get = profile_get, \ 61*4717636fSWeidong Wang .put = profile_set, \ 62*4717636fSWeidong Wang } 63*4717636fSWeidong Wang 64*4717636fSWeidong Wang enum aw87390_id { 65*4717636fSWeidong Wang AW87390_CHIP_ID = 0x76, 66*4717636fSWeidong Wang }; 67*4717636fSWeidong Wang 68*4717636fSWeidong Wang enum { 69*4717636fSWeidong Wang AW87390_DEV_FW_FAILED = 0, 70*4717636fSWeidong Wang AW87390_DEV_FW_OK, 71*4717636fSWeidong Wang }; 72*4717636fSWeidong Wang 73*4717636fSWeidong Wang enum { 74*4717636fSWeidong Wang AW87390_DEV_PW_OFF = 0, 75*4717636fSWeidong Wang AW87390_DEV_PW_ON, 76*4717636fSWeidong Wang }; 77*4717636fSWeidong Wang 78*4717636fSWeidong Wang struct aw87390 { 79*4717636fSWeidong Wang struct aw_device *aw_pa; 80*4717636fSWeidong Wang struct mutex lock; 81*4717636fSWeidong Wang struct regmap *regmap; 82*4717636fSWeidong Wang struct aw_container *aw_cfg; 83*4717636fSWeidong Wang }; 84*4717636fSWeidong Wang 85*4717636fSWeidong Wang #endif 86