235 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Codec driver for ST STA350 2.1-channel high-efficiency digital audio system4 *5 * Copyright: 2011 Raumfeld GmbH6 * Author: Sven Brandau <info@brandau.biz>7 *8 * based on code from:9 * Raumfeld GmbH10 * Johannes Stezenbach <js@sig21.net>11 * Wolfson Microelectronics PLC.12 * Mark Brown <broonie@opensource.wolfsonmicro.com>13 */14#ifndef _ASOC_STA_350_H15#define _ASOC_STA_350_H16 17/* STA350 register addresses */18 19#define STA350_REGISTER_COUNT 0x4D20#define STA350_COEF_COUNT 6221 22#define STA350_CONFA 0x0023#define STA350_CONFB 0x0124#define STA350_CONFC 0x0225#define STA350_CONFD 0x0326#define STA350_CONFE 0x0427#define STA350_CONFF 0x0528#define STA350_MMUTE 0x0629#define STA350_MVOL 0x0730#define STA350_C1VOL 0x0831#define STA350_C2VOL 0x0932#define STA350_C3VOL 0x0a33#define STA350_AUTO1 0x0b34#define STA350_AUTO2 0x0c35#define STA350_AUTO3 0x0d36#define STA350_C1CFG 0x0e37#define STA350_C2CFG 0x0f38#define STA350_C3CFG 0x1039#define STA350_TONE 0x1140#define STA350_L1AR 0x1241#define STA350_L1ATRT 0x1342#define STA350_L2AR 0x1443#define STA350_L2ATRT 0x1544#define STA350_CFADDR2 0x1645#define STA350_B1CF1 0x1746#define STA350_B1CF2 0x1847#define STA350_B1CF3 0x1948#define STA350_B2CF1 0x1a49#define STA350_B2CF2 0x1b50#define STA350_B2CF3 0x1c51#define STA350_A1CF1 0x1d52#define STA350_A1CF2 0x1e53#define STA350_A1CF3 0x1f54#define STA350_A2CF1 0x2055#define STA350_A2CF2 0x2156#define STA350_A2CF3 0x2257#define STA350_B0CF1 0x2358#define STA350_B0CF2 0x2459#define STA350_B0CF3 0x2560#define STA350_CFUD 0x2661#define STA350_MPCC1 0x2762#define STA350_MPCC2 0x2863#define STA350_DCC1 0x2964#define STA350_DCC2 0x2a65#define STA350_FDRC1 0x2b66#define STA350_FDRC2 0x2c67#define STA350_STATUS 0x2d68/* reserved: 0x2d - 0x30 */69#define STA350_EQCFG 0x3170#define STA350_EATH1 0x3271#define STA350_ERTH1 0x3372#define STA350_EATH2 0x3473#define STA350_ERTH2 0x3574#define STA350_CONFX 0x3675#define STA350_SVCA 0x3776#define STA350_SVCB 0x3877#define STA350_RMS0A 0x3978#define STA350_RMS0B 0x3a79#define STA350_RMS0C 0x3b80#define STA350_RMS1A 0x3c81#define STA350_RMS1B 0x3d82#define STA350_RMS1C 0x3e83#define STA350_EVOLRES 0x3f84/* reserved: 0x40 - 0x47 */85#define STA350_NSHAPE 0x4886#define STA350_CTXB4B1 0x4987#define STA350_CTXB7B5 0x4a88#define STA350_MISC1 0x4b89#define STA350_MISC2 0x4c90 91/* 0x00 CONFA */92#define STA350_CONFA_MCS_MASK 0x0393#define STA350_CONFA_MCS_SHIFT 094#define STA350_CONFA_IR_MASK 0x1895#define STA350_CONFA_IR_SHIFT 396#define STA350_CONFA_TWRB BIT(5)97#define STA350_CONFA_TWAB BIT(6)98#define STA350_CONFA_FDRB BIT(7)99 100/* 0x01 CONFB */101#define STA350_CONFB_SAI_MASK 0x0f102#define STA350_CONFB_SAI_SHIFT 0103#define STA350_CONFB_SAIFB BIT(4)104#define STA350_CONFB_DSCKE BIT(5)105#define STA350_CONFB_C1IM BIT(6)106#define STA350_CONFB_C2IM BIT(7)107 108/* 0x02 CONFC */109#define STA350_CONFC_OM_MASK 0x03110#define STA350_CONFC_OM_SHIFT 0111#define STA350_CONFC_CSZ_MASK 0x3c112#define STA350_CONFC_CSZ_SHIFT 2113#define STA350_CONFC_OCRB BIT(7)114 115/* 0x03 CONFD */116#define STA350_CONFD_HPB_SHIFT 0117#define STA350_CONFD_DEMP_SHIFT 1118#define STA350_CONFD_DSPB_SHIFT 2119#define STA350_CONFD_PSL_SHIFT 3120#define STA350_CONFD_BQL_SHIFT 4121#define STA350_CONFD_DRC_SHIFT 5122#define STA350_CONFD_ZDE_SHIFT 6123#define STA350_CONFD_SME_SHIFT 7124 125/* 0x04 CONFE */126#define STA350_CONFE_MPCV BIT(0)127#define STA350_CONFE_MPCV_SHIFT 0128#define STA350_CONFE_MPC BIT(1)129#define STA350_CONFE_MPC_SHIFT 1130#define STA350_CONFE_NSBW BIT(2)131#define STA350_CONFE_NSBW_SHIFT 2132#define STA350_CONFE_AME BIT(3)133#define STA350_CONFE_AME_SHIFT 3134#define STA350_CONFE_PWMS BIT(4)135#define STA350_CONFE_PWMS_SHIFT 4136#define STA350_CONFE_DCCV BIT(5)137#define STA350_CONFE_DCCV_SHIFT 5138#define STA350_CONFE_ZCE BIT(6)139#define STA350_CONFE_ZCE_SHIFT 6140#define STA350_CONFE_SVE BIT(7)141#define STA350_CONFE_SVE_SHIFT 7142 143/* 0x05 CONFF */144#define STA350_CONFF_OCFG_MASK 0x03145#define STA350_CONFF_OCFG_SHIFT 0146#define STA350_CONFF_IDE BIT(2)147#define STA350_CONFF_BCLE BIT(3)148#define STA350_CONFF_LDTE BIT(4)149#define STA350_CONFF_ECLE BIT(5)150#define STA350_CONFF_PWDN BIT(6)151#define STA350_CONFF_EAPD BIT(7)152 153/* 0x06 MMUTE */154#define STA350_MMUTE_MMUTE 0x01155#define STA350_MMUTE_MMUTE_SHIFT 0156#define STA350_MMUTE_C1M 0x02157#define STA350_MMUTE_C1M_SHIFT 1158#define STA350_MMUTE_C2M 0x04159#define STA350_MMUTE_C2M_SHIFT 2160#define STA350_MMUTE_C3M 0x08161#define STA350_MMUTE_C3M_SHIFT 3162#define STA350_MMUTE_LOC_MASK 0xC0163#define STA350_MMUTE_LOC_SHIFT 6164 165/* 0x0b AUTO1 */166#define STA350_AUTO1_AMGC_MASK 0x30167#define STA350_AUTO1_AMGC_SHIFT 4168 169/* 0x0c AUTO2 */170#define STA350_AUTO2_AMAME 0x01171#define STA350_AUTO2_AMAM_MASK 0x0e172#define STA350_AUTO2_AMAM_SHIFT 1173#define STA350_AUTO2_XO_MASK 0xf0174#define STA350_AUTO2_XO_SHIFT 4175 176/* 0x0d AUTO3 */177#define STA350_AUTO3_PEQ_MASK 0x1f178#define STA350_AUTO3_PEQ_SHIFT 0179 180/* 0x0e 0x0f 0x10 CxCFG */181#define STA350_CxCFG_TCB_SHIFT 0182#define STA350_CxCFG_EQBP_SHIFT 1183#define STA350_CxCFG_VBP_SHIFT 2184#define STA350_CxCFG_BO_SHIFT 3185#define STA350_CxCFG_LS_SHIFT 4186#define STA350_CxCFG_OM_MASK 0xc0187#define STA350_CxCFG_OM_SHIFT 6188 189/* 0x11 TONE */190#define STA350_TONE_BTC_SHIFT 0191#define STA350_TONE_TTC_SHIFT 4192 193/* 0x12 0x13 0x14 0x15 limiter attack/release */194#define STA350_LxA_SHIFT 0195#define STA350_LxR_SHIFT 4196 197/* 0x26 CFUD */198#define STA350_CFUD_W1 0x01199#define STA350_CFUD_WA 0x02200#define STA350_CFUD_R1 0x04201#define STA350_CFUD_RA 0x08202 203 204/* biquad filter coefficient table offsets */205#define STA350_C1_BQ_BASE 0206#define STA350_C2_BQ_BASE 20207#define STA350_CH_BQ_NUM 4208#define STA350_BQ_NUM_COEF 5209#define STA350_XO_HP_BQ_BASE 40210#define STA350_XO_LP_BQ_BASE 45211#define STA350_C1_PRESCALE 50212#define STA350_C2_PRESCALE 51213#define STA350_C1_POSTSCALE 52214#define STA350_C2_POSTSCALE 53215#define STA350_C3_POSTSCALE 54216#define STA350_TW_POSTSCALE 55217#define STA350_C1_MIX1 56218#define STA350_C1_MIX2 57219#define STA350_C2_MIX1 58220#define STA350_C2_MIX2 59221#define STA350_C3_MIX1 60222#define STA350_C3_MIX2 61223 224/* miscellaneous register 1 */225#define STA350_MISC1_CPWMEN BIT(2)226#define STA350_MISC1_BRIDGOFF BIT(5)227#define STA350_MISC1_NSHHPEN BIT(6)228#define STA350_MISC1_RPDNEN BIT(7)229 230/* miscellaneous register 2 */231#define STA350_MISC2_PNDLSL_MASK 0x1c232#define STA350_MISC2_PNDLSL_SHIFT 2233 234#endif /* _ASOC_STA_350_H */235