1*133c81f8SSen Wang /* SPDX-License-Identifier: GPL-2.0 */ 2*133c81f8SSen Wang /* 3*133c81f8SSen Wang * ALSA SoC Texas Instruments TAS675x Quad-Channel Audio Amplifier 4*133c81f8SSen Wang * 5*133c81f8SSen Wang * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/ 6*133c81f8SSen Wang * Author: Sen Wang <sen@ti.com> 7*133c81f8SSen Wang */ 8*133c81f8SSen Wang 9*133c81f8SSen Wang #ifndef __TAS675X_H__ 10*133c81f8SSen Wang #define __TAS675X_H__ 11*133c81f8SSen Wang 12*133c81f8SSen Wang /* 13*133c81f8SSen Wang * Book 0, Page 0 — Register Addresses 14*133c81f8SSen Wang */ 15*133c81f8SSen Wang 16*133c81f8SSen Wang #define TAS675X_PAGE_SIZE 256 17*133c81f8SSen Wang #define TAS675X_PAGE_REG(page, reg) ((page) * TAS675X_PAGE_SIZE + (reg)) 18*133c81f8SSen Wang 19*133c81f8SSen Wang /* Page Control & Basic Config */ 20*133c81f8SSen Wang #define TAS675X_PAGE_CTRL_REG 0x00 21*133c81f8SSen Wang #define TAS675X_RESET_REG 0x01 22*133c81f8SSen Wang #define TAS675X_OUTPUT_CTRL_REG 0x02 23*133c81f8SSen Wang #define TAS675X_STATE_CTRL_CH1_CH2_REG 0x03 24*133c81f8SSen Wang #define TAS675X_STATE_CTRL_CH3_CH4_REG 0x04 25*133c81f8SSen Wang #define TAS675X_ISENSE_CTRL_REG 0x05 26*133c81f8SSen Wang #define TAS675X_DC_DETECT_CTRL_REG 0x06 27*133c81f8SSen Wang 28*133c81f8SSen Wang /* Serial Audio Port */ 29*133c81f8SSen Wang #define TAS675X_SCLK_INV_CTRL_REG 0x20 30*133c81f8SSen Wang #define TAS675X_AUDIO_IF_CTRL_REG 0x21 31*133c81f8SSen Wang #define TAS675X_SDIN_CTRL_REG 0x23 32*133c81f8SSen Wang #define TAS675X_SDOUT_CTRL_REG 0x25 33*133c81f8SSen Wang #define TAS675X_SDIN_OFFSET_MSB_REG 0x27 34*133c81f8SSen Wang #define TAS675X_SDIN_AUDIO_OFFSET_REG 0x28 35*133c81f8SSen Wang #define TAS675X_SDIN_LL_OFFSET_REG 0x29 36*133c81f8SSen Wang #define TAS675X_SDIN_CH_SWAP_REG 0x2A 37*133c81f8SSen Wang #define TAS675X_SDOUT_OFFSET_MSB_REG 0x2C 38*133c81f8SSen Wang #define TAS675X_VPREDICT_OFFSET_REG 0x2D 39*133c81f8SSen Wang #define TAS675X_ISENSE_OFFSET_REG 0x2E 40*133c81f8SSen Wang #define TAS675X_SDOUT_EN_REG 0x31 41*133c81f8SSen Wang #define TAS675X_LL_EN_REG 0x32 42*133c81f8SSen Wang 43*133c81f8SSen Wang /* DSP & Core Audio Control */ 44*133c81f8SSen Wang #define TAS675X_RTLDG_EN_REG 0x37 45*133c81f8SSen Wang #define TAS675X_DC_BLOCK_BYP_REG 0x39 46*133c81f8SSen Wang #define TAS675X_DSP_CTRL_REG 0x3A 47*133c81f8SSen Wang #define TAS675X_PAGE_AUTO_INC_REG 0x3B 48*133c81f8SSen Wang 49*133c81f8SSen Wang /* Volume & Mute */ 50*133c81f8SSen Wang #define TAS675X_DIG_VOL_CH1_REG 0x40 51*133c81f8SSen Wang #define TAS675X_DIG_VOL_CH2_REG 0x41 52*133c81f8SSen Wang #define TAS675X_DIG_VOL_CH3_REG 0x42 53*133c81f8SSen Wang #define TAS675X_DIG_VOL_CH4_REG 0x43 54*133c81f8SSen Wang #define TAS675X_DIG_VOL_RAMP_CTRL_REG 0x44 55*133c81f8SSen Wang #define TAS675X_DIG_VOL_COMBINE_CTRL_REG 0x46 56*133c81f8SSen Wang #define TAS675X_AUTO_MUTE_EN_REG 0x47 57*133c81f8SSen Wang #define TAS675X_AUTO_MUTE_TIMING_CH1_CH2_REG 0x48 58*133c81f8SSen Wang #define TAS675X_AUTO_MUTE_TIMING_CH3_CH4_REG 0x49 59*133c81f8SSen Wang 60*133c81f8SSen Wang /* Analog Gain & Power Stage */ 61*133c81f8SSen Wang #define TAS675X_ANALOG_GAIN_CH1_CH2_REG 0x4A 62*133c81f8SSen Wang #define TAS675X_ANALOG_GAIN_CH3_CH4_REG 0x4B 63*133c81f8SSen Wang #define TAS675X_ANALOG_GAIN_RAMP_CTRL_REG 0x4E 64*133c81f8SSen Wang #define TAS675X_PULSE_INJECTION_EN_REG 0x52 65*133c81f8SSen Wang #define TAS675X_CBC_CTRL_REG 0x54 66*133c81f8SSen Wang #define TAS675X_CURRENT_LIMIT_CTRL_REG 0x55 67*133c81f8SSen Wang #define TAS675X_DAC_CLK_REG 0x5A 68*133c81f8SSen Wang #define TAS675X_ISENSE_CAL_REG 0x5B 69*133c81f8SSen Wang 70*133c81f8SSen Wang /* Spread Spectrum & PWM Phase */ 71*133c81f8SSen Wang #define TAS675X_PWM_PHASE_CTRL_REG 0x60 72*133c81f8SSen Wang #define TAS675X_SS_CTRL_REG 0x61 73*133c81f8SSen Wang #define TAS675X_SS_RANGE_CTRL_REG 0x62 74*133c81f8SSen Wang #define TAS675X_SS_DWELL_CTRL_REG 0x66 75*133c81f8SSen Wang #define TAS675X_RAMP_PHASE_CTRL_GPO_REG 0x68 76*133c81f8SSen Wang #define TAS675X_PWM_PHASE_M_CTRL_CH1_REG 0x69 77*133c81f8SSen Wang #define TAS675X_PWM_PHASE_M_CTRL_CH2_REG 0x6A 78*133c81f8SSen Wang #define TAS675X_PWM_PHASE_M_CTRL_CH3_REG 0x6B 79*133c81f8SSen Wang #define TAS675X_PWM_PHASE_M_CTRL_CH4_REG 0x6C 80*133c81f8SSen Wang 81*133c81f8SSen Wang /* Status & Reporting */ 82*133c81f8SSen Wang #define TAS675X_AUTO_MUTE_STATUS_REG 0x71 83*133c81f8SSen Wang #define TAS675X_STATE_REPORT_CH1_CH2_REG 0x72 84*133c81f8SSen Wang #define TAS675X_STATE_REPORT_CH3_CH4_REG 0x73 85*133c81f8SSen Wang #define TAS675X_PVDD_SENSE_REG 0x74 86*133c81f8SSen Wang #define TAS675X_TEMP_GLOBAL_REG 0x75 87*133c81f8SSen Wang #define TAS675X_FS_MON_REG 0x76 88*133c81f8SSen Wang #define TAS675X_SCLK_MON_REG 0x77 89*133c81f8SSen Wang #define TAS675X_REPORT_ROUTING_1_REG 0x7C 90*133c81f8SSen Wang 91*133c81f8SSen Wang /* Memory Paging & Book Control */ 92*133c81f8SSen Wang #define TAS675X_SETUP_REG1 0x7D 93*133c81f8SSen Wang #define TAS675X_SETUP_REG2 0x7E 94*133c81f8SSen Wang #define TAS675X_BOOK_CTRL_REG 0x7F 95*133c81f8SSen Wang 96*133c81f8SSen Wang /* Fault Status */ 97*133c81f8SSen Wang #define TAS675X_POWER_FAULT_STATUS_1_REG 0x7D 98*133c81f8SSen Wang #define TAS675X_POWER_FAULT_STATUS_2_REG 0x80 99*133c81f8SSen Wang #define TAS675X_OT_FAULT_REG 0x81 100*133c81f8SSen Wang #define TAS675X_OTW_STATUS_REG 0x82 101*133c81f8SSen Wang #define TAS675X_CLIP_WARN_STATUS_REG 0x83 102*133c81f8SSen Wang #define TAS675X_CBC_WARNING_STATUS_REG 0x85 103*133c81f8SSen Wang 104*133c81f8SSen Wang /* Latched Fault Registers */ 105*133c81f8SSen Wang #define TAS675X_POWER_FAULT_LATCHED_REG 0x86 106*133c81f8SSen Wang #define TAS675X_OTSD_LATCHED_REG 0x87 107*133c81f8SSen Wang #define TAS675X_OTW_LATCHED_REG 0x88 108*133c81f8SSen Wang #define TAS675X_CLIP_WARN_LATCHED_REG 0x89 109*133c81f8SSen Wang #define TAS675X_CLK_FAULT_LATCHED_REG 0x8A 110*133c81f8SSen Wang #define TAS675X_RTLDG_OL_SL_FAULT_LATCHED_REG 0x8B 111*133c81f8SSen Wang #define TAS675X_CBC_FAULT_WARN_LATCHED_REG 0x8D 112*133c81f8SSen Wang #define TAS675X_OC_DC_FAULT_LATCHED_REG 0x8E 113*133c81f8SSen Wang #define TAS675X_OTSD_RECOVERY_EN_REG 0x8F 114*133c81f8SSen Wang 115*133c81f8SSen Wang /* Protection & Routing Controls */ 116*133c81f8SSen Wang #define TAS675X_REPORT_ROUTING_2_REG 0x90 117*133c81f8SSen Wang #define TAS675X_REPORT_ROUTING_3_REG 0x91 118*133c81f8SSen Wang #define TAS675X_REPORT_ROUTING_4_REG 0x92 119*133c81f8SSen Wang #define TAS675X_CLIP_DETECT_CTRL_REG 0x93 120*133c81f8SSen Wang #define TAS675X_REPORT_ROUTING_5_REG 0x94 121*133c81f8SSen Wang 122*133c81f8SSen Wang /* GPIO Pin Configuration */ 123*133c81f8SSen Wang #define TAS675X_GPIO1_OUTPUT_SEL_REG 0x95 124*133c81f8SSen Wang #define TAS675X_GPIO2_OUTPUT_SEL_REG 0x96 125*133c81f8SSen Wang #define TAS675X_GPIO_INPUT_SLEEP_HIZ_REG 0x9B 126*133c81f8SSen Wang #define TAS675X_GPIO_INPUT_PLAY_SLEEP_REG 0x9C 127*133c81f8SSen Wang #define TAS675X_GPIO_INPUT_MUTE_REG 0x9D 128*133c81f8SSen Wang #define TAS675X_GPIO_INPUT_SYNC_REG 0x9E 129*133c81f8SSen Wang #define TAS675X_GPIO_INPUT_SDIN2_REG 0x9F 130*133c81f8SSen Wang #define TAS675X_GPIO_CTRL_REG 0xA0 131*133c81f8SSen Wang #define TAS675X_GPIO_INVERT_REG 0xA1 132*133c81f8SSen Wang 133*133c81f8SSen Wang /* Load Diagnostics Config */ 134*133c81f8SSen Wang #define TAS675X_DC_LDG_CTRL_REG 0xB0 135*133c81f8SSen Wang #define TAS675X_DC_LDG_LO_CTRL_REG 0xB1 136*133c81f8SSen Wang #define TAS675X_DC_LDG_TIME_CTRL_REG 0xB2 137*133c81f8SSen Wang #define TAS675X_DC_LDG_SL_CH1_CH2_CTRL_REG 0xB3 138*133c81f8SSen Wang #define TAS675X_DC_LDG_SL_CH3_CH4_CTRL_REG 0xB4 139*133c81f8SSen Wang #define TAS675X_AC_LDG_CTRL_REG 0xB5 140*133c81f8SSen Wang #define TAS675X_TWEETER_DETECT_CTRL_REG 0xB6 141*133c81f8SSen Wang #define TAS675X_TWEETER_DETECT_THRESH_REG 0xB7 142*133c81f8SSen Wang #define TAS675X_AC_LDG_FREQ_CTRL_REG 0xB8 143*133c81f8SSen Wang #define TAS675X_TEMP_CH1_CH2_REG 0xBB 144*133c81f8SSen Wang #define TAS675X_TEMP_CH3_CH4_REG 0xBC 145*133c81f8SSen Wang #define TAS675X_WARN_OT_MAX_FLAG_REG 0xBD 146*133c81f8SSen Wang 147*133c81f8SSen Wang /* DC Load Diagnostic Reports */ 148*133c81f8SSen Wang #define TAS675X_DC_LDG_REPORT_CH1_CH2_REG 0xC0 149*133c81f8SSen Wang #define TAS675X_DC_LDG_REPORT_CH3_CH4_REG 0xC1 150*133c81f8SSen Wang #define TAS675X_DC_LDG_RESULT_REG 0xC2 151*133c81f8SSen Wang #define TAS675X_AC_LDG_REPORT_CH1_R_REG 0xC3 152*133c81f8SSen Wang #define TAS675X_AC_LDG_REPORT_CH1_I_REG 0xC4 153*133c81f8SSen Wang #define TAS675X_AC_LDG_REPORT_CH2_R_REG 0xC5 154*133c81f8SSen Wang #define TAS675X_AC_LDG_REPORT_CH2_I_REG 0xC6 155*133c81f8SSen Wang #define TAS675X_AC_LDG_REPORT_CH3_R_REG 0xC7 156*133c81f8SSen Wang #define TAS675X_AC_LDG_REPORT_CH3_I_REG 0xC8 157*133c81f8SSen Wang #define TAS675X_AC_LDG_REPORT_CH4_R_REG 0xC9 158*133c81f8SSen Wang #define TAS675X_AC_LDG_REPORT_CH4_I_REG 0xCA 159*133c81f8SSen Wang #define TAS675X_TWEETER_REPORT_REG 0xCB 160*133c81f8SSen Wang 161*133c81f8SSen Wang /* RTLDG Impedance */ 162*133c81f8SSen Wang #define TAS675X_CH1_RTLDG_IMP_MSB_REG 0xD1 163*133c81f8SSen Wang #define TAS675X_CH1_RTLDG_IMP_LSB_REG 0xD2 164*133c81f8SSen Wang #define TAS675X_CH2_RTLDG_IMP_MSB_REG 0xD3 165*133c81f8SSen Wang #define TAS675X_CH2_RTLDG_IMP_LSB_REG 0xD4 166*133c81f8SSen Wang #define TAS675X_CH3_RTLDG_IMP_MSB_REG 0xD5 167*133c81f8SSen Wang #define TAS675X_CH3_RTLDG_IMP_LSB_REG 0xD6 168*133c81f8SSen Wang #define TAS675X_CH4_RTLDG_IMP_MSB_REG 0xD7 169*133c81f8SSen Wang #define TAS675X_CH4_RTLDG_IMP_LSB_REG 0xD8 170*133c81f8SSen Wang 171*133c81f8SSen Wang /* DC Load Diagnostic Resistance */ 172*133c81f8SSen Wang #define TAS675X_DC_LDG_DCR_MSB_REG 0xD9 173*133c81f8SSen Wang #define TAS675X_CH1_DC_LDG_DCR_LSB_REG 0xDA 174*133c81f8SSen Wang #define TAS675X_CH2_DC_LDG_DCR_LSB_REG 0xDB 175*133c81f8SSen Wang #define TAS675X_CH3_DC_LDG_DCR_LSB_REG 0xDC 176*133c81f8SSen Wang #define TAS675X_CH4_DC_LDG_DCR_LSB_REG 0xDD 177*133c81f8SSen Wang 178*133c81f8SSen Wang /* Over-Temperature Warning */ 179*133c81f8SSen Wang #define TAS675X_OTW_CTRL_CH1_CH2_REG 0xE2 180*133c81f8SSen Wang #define TAS675X_OTW_CTRL_CH3_CH4_REG 0xE3 181*133c81f8SSen Wang 182*133c81f8SSen Wang /* RESET_REG (all bits auto-clear) */ 183*133c81f8SSen Wang #define TAS675X_DEVICE_RESET BIT(4) 184*133c81f8SSen Wang #define TAS675X_FAULT_CLEAR BIT(3) 185*133c81f8SSen Wang #define TAS675X_REGISTER_RESET BIT(0) 186*133c81f8SSen Wang 187*133c81f8SSen Wang /* STATE_CTRL and STATE_REPORT — Channel state values */ 188*133c81f8SSen Wang #define TAS675X_STATE_DEEPSLEEP 0x00 189*133c81f8SSen Wang #define TAS675X_STATE_LOAD_DIAG 0x01 190*133c81f8SSen Wang #define TAS675X_STATE_SLEEP 0x02 191*133c81f8SSen Wang #define TAS675X_STATE_HIZ 0x03 192*133c81f8SSen Wang #define TAS675X_STATE_PLAY 0x04 193*133c81f8SSen Wang 194*133c81f8SSen Wang /* Additional STATE_REPORT values */ 195*133c81f8SSen Wang #define TAS675X_STATE_FAULT 0x05 196*133c81f8SSen Wang #define TAS675X_STATE_AUTOREC 0x06 197*133c81f8SSen Wang 198*133c81f8SSen Wang /* Combined values for both channel pairs in one register */ 199*133c81f8SSen Wang #define TAS675X_STATE_DEEPSLEEP_BOTH \ 200*133c81f8SSen Wang (TAS675X_STATE_DEEPSLEEP | (TAS675X_STATE_DEEPSLEEP << 4)) 201*133c81f8SSen Wang #define TAS675X_STATE_LOAD_DIAG_BOTH \ 202*133c81f8SSen Wang (TAS675X_STATE_LOAD_DIAG | (TAS675X_STATE_LOAD_DIAG << 4)) 203*133c81f8SSen Wang #define TAS675X_STATE_SLEEP_BOTH \ 204*133c81f8SSen Wang (TAS675X_STATE_SLEEP | (TAS675X_STATE_SLEEP << 4)) 205*133c81f8SSen Wang #define TAS675X_STATE_HIZ_BOTH \ 206*133c81f8SSen Wang (TAS675X_STATE_HIZ | (TAS675X_STATE_HIZ << 4)) 207*133c81f8SSen Wang #define TAS675X_STATE_PLAY_BOTH \ 208*133c81f8SSen Wang (TAS675X_STATE_PLAY | (TAS675X_STATE_PLAY << 4)) 209*133c81f8SSen Wang #define TAS675X_STATE_FAULT_BOTH \ 210*133c81f8SSen Wang (TAS675X_STATE_FAULT | (TAS675X_STATE_FAULT << 4)) 211*133c81f8SSen Wang 212*133c81f8SSen Wang /* STATE_CTRL_CH1_CH2 / STATE_CTRL_CH3_CH4 — mute bits */ 213*133c81f8SSen Wang #define TAS675X_CH1_MUTE_BIT BIT(7) 214*133c81f8SSen Wang #define TAS675X_CH2_MUTE_BIT BIT(3) 215*133c81f8SSen Wang #define TAS675X_CH_MUTE_BOTH (TAS675X_CH1_MUTE_BIT | TAS675X_CH2_MUTE_BIT) 216*133c81f8SSen Wang 217*133c81f8SSen Wang /* SCLK_INV_CTRL_REG */ 218*133c81f8SSen Wang #define TAS675X_SCLK_INV_TX_BIT BIT(5) 219*133c81f8SSen Wang #define TAS675X_SCLK_INV_RX_BIT BIT(4) 220*133c81f8SSen Wang #define TAS675X_SCLK_INV_MASK (TAS675X_SCLK_INV_TX_BIT | TAS675X_SCLK_INV_RX_BIT) 221*133c81f8SSen Wang 222*133c81f8SSen Wang /* AUDIO_IF_CTRL_REG */ 223*133c81f8SSen Wang #define TAS675X_TDM_EN_BIT BIT(4) 224*133c81f8SSen Wang #define TAS675X_SAP_FMT_MASK GENMASK(3, 2) 225*133c81f8SSen Wang #define TAS675X_SAP_FMT_I2S (0x00 << 2) 226*133c81f8SSen Wang #define TAS675X_SAP_FMT_TDM (0x01 << 2) 227*133c81f8SSen Wang #define TAS675X_SAP_FMT_RIGHT_J (0x02 << 2) 228*133c81f8SSen Wang #define TAS675X_SAP_FMT_LEFT_J (0x03 << 2) 229*133c81f8SSen Wang #define TAS675X_FS_PULSE_MASK GENMASK(1, 0) 230*133c81f8SSen Wang #define TAS675X_FS_PULSE_SHORT 0x01 231*133c81f8SSen Wang 232*133c81f8SSen Wang /* SDIN_CTRL_REG */ 233*133c81f8SSen Wang #define TAS675X_SDIN_AUDIO_WL_MASK GENMASK(3, 2) 234*133c81f8SSen Wang #define TAS675X_SDIN_LL_WL_MASK GENMASK(1, 0) 235*133c81f8SSen Wang #define TAS675X_SDIN_WL_MASK (TAS675X_SDIN_AUDIO_WL_MASK | TAS675X_SDIN_LL_WL_MASK) 236*133c81f8SSen Wang 237*133c81f8SSen Wang /* SDOUT_CTRL_REG */ 238*133c81f8SSen Wang #define TAS675X_SDOUT_SELECT_MASK GENMASK(7, 4) 239*133c81f8SSen Wang #define TAS675X_SDOUT_SELECT_TDM_SDOUT1 0x00 240*133c81f8SSen Wang #define TAS675X_SDOUT_SELECT_NON_TDM 0x10 241*133c81f8SSen Wang #define TAS675X_SDOUT_VP_WL_MASK GENMASK(3, 2) 242*133c81f8SSen Wang #define TAS675X_SDOUT_IS_WL_MASK GENMASK(1, 0) 243*133c81f8SSen Wang #define TAS675X_SDOUT_WL_MASK (TAS675X_SDOUT_VP_WL_MASK | TAS675X_SDOUT_IS_WL_MASK) 244*133c81f8SSen Wang 245*133c81f8SSen Wang /* SDOUT_EN_REG */ 246*133c81f8SSen Wang #define TAS675X_SDOUT_NON_TDM_SEL_MASK GENMASK(5, 4) 247*133c81f8SSen Wang #define TAS675X_SDOUT_NON_TDM_SEL_VPREDICT (0x0 << 4) 248*133c81f8SSen Wang #define TAS675X_SDOUT_NON_TDM_SEL_ISENSE (0x1 << 4) 249*133c81f8SSen Wang #define TAS675X_SDOUT_EN_VPREDICT BIT(0) 250*133c81f8SSen Wang #define TAS675X_SDOUT_EN_ISENSE BIT(1) 251*133c81f8SSen Wang #define TAS675X_SDOUT_EN_NON_TDM_ALL GENMASK(1, 0) 252*133c81f8SSen Wang 253*133c81f8SSen Wang /* Word length values (shared by SDIN_CTRL and SDOUT_CTRL) */ 254*133c81f8SSen Wang #define TAS675X_WL_16BIT 0x00 255*133c81f8SSen Wang #define TAS675X_WL_20BIT 0x01 256*133c81f8SSen Wang #define TAS675X_WL_24BIT 0x02 257*133c81f8SSen Wang #define TAS675X_WL_32BIT 0x03 258*133c81f8SSen Wang 259*133c81f8SSen Wang /* SDIN_OFFSET_MSB_REG */ 260*133c81f8SSen Wang #define TAS675X_SDIN_AUDIO_OFF_MSB_MASK GENMASK(7, 6) 261*133c81f8SSen Wang #define TAS675X_SDIN_LL_OFF_MSB_MASK GENMASK(5, 4) 262*133c81f8SSen Wang 263*133c81f8SSen Wang /* SDOUT_OFFSET_MSB_REG */ 264*133c81f8SSen Wang #define TAS675X_SDOUT_VP_OFF_MSB_MASK GENMASK(7, 6) 265*133c81f8SSen Wang #define TAS675X_SDOUT_IS_OFF_MSB_MASK GENMASK(5, 4) 266*133c81f8SSen Wang 267*133c81f8SSen Wang /* RTLDG_EN_REG */ 268*133c81f8SSen Wang #define TAS675X_RTLDG_CLIP_MASK_BIT BIT(4) 269*133c81f8SSen Wang #define TAS675X_RTLDG_CH_EN_MASK GENMASK(3, 0) 270*133c81f8SSen Wang 271*133c81f8SSen Wang /* DC_LDG_CTRL_REG */ 272*133c81f8SSen Wang #define TAS675X_LDG_ABORT_BIT BIT(7) 273*133c81f8SSen Wang #define TAS675X_LDG_BUFFER_WAIT_MASK GENMASK(6, 5) 274*133c81f8SSen Wang #define TAS675X_LDG_WAIT_BYPASS_BIT BIT(2) 275*133c81f8SSen Wang #define TAS675X_SLOL_DISABLE_BIT BIT(1) 276*133c81f8SSen Wang #define TAS675X_LDG_BYPASS_BIT BIT(0) 277*133c81f8SSen Wang 278*133c81f8SSen Wang /* DC_LDG_TIME_CTRL_REG */ 279*133c81f8SSen Wang #define TAS675X_LDG_RAMP_SLOL_MASK GENMASK(7, 6) 280*133c81f8SSen Wang #define TAS675X_LDG_SETTLING_SLOL_MASK GENMASK(5, 4) 281*133c81f8SSen Wang #define TAS675X_LDG_RAMP_S2PG_MASK GENMASK(3, 2) 282*133c81f8SSen Wang #define TAS675X_LDG_SETTLING_S2PG_MASK GENMASK(1, 0) 283*133c81f8SSen Wang 284*133c81f8SSen Wang /* AC_LDG_CTRL_REG */ 285*133c81f8SSen Wang #define TAS675X_AC_DIAG_GAIN_BIT BIT(4) 286*133c81f8SSen Wang #define TAS675X_AC_DIAG_START_MASK GENMASK(3, 0) 287*133c81f8SSen Wang 288*133c81f8SSen Wang /* DC_LDG_RESULT_REG */ 289*133c81f8SSen Wang #define TAS675X_DC_LDG_LO_RESULT_MASK GENMASK(7, 4) 290*133c81f8SSen Wang #define TAS675X_DC_LDG_PASS_MASK GENMASK(3, 0) 291*133c81f8SSen Wang 292*133c81f8SSen Wang /* Load Diagnostics Timing Constants */ 293*133c81f8SSen Wang #define TAS675X_POLL_INTERVAL_US 10000 294*133c81f8SSen Wang #define TAS675X_STATE_TRANSITION_TIMEOUT_US 50000 295*133c81f8SSen Wang #define TAS675X_DC_LDG_TIMEOUT_US 300000 296*133c81f8SSen Wang #define TAS675X_AC_LDG_TIMEOUT_US 400000 297*133c81f8SSen Wang 298*133c81f8SSen Wang /* GPIO_CTRL_REG */ 299*133c81f8SSen Wang #define TAS675X_GPIO1_OUTPUT_EN BIT(7) 300*133c81f8SSen Wang #define TAS675X_GPIO2_OUTPUT_EN BIT(6) 301*133c81f8SSen Wang #define TAS675X_GPIO_CTRL_RSTVAL 0x22 302*133c81f8SSen Wang 303*133c81f8SSen Wang /* GPIO output select values */ 304*133c81f8SSen Wang #define TAS675X_GPIO_SEL_LOW 0x00 305*133c81f8SSen Wang #define TAS675X_GPIO_SEL_AUTO_MUTE_ALL 0x02 306*133c81f8SSen Wang #define TAS675X_GPIO_SEL_AUTO_MUTE_CH4 0x03 307*133c81f8SSen Wang #define TAS675X_GPIO_SEL_AUTO_MUTE_CH3 0x04 308*133c81f8SSen Wang #define TAS675X_GPIO_SEL_AUTO_MUTE_CH2 0x05 309*133c81f8SSen Wang #define TAS675X_GPIO_SEL_AUTO_MUTE_CH1 0x06 310*133c81f8SSen Wang #define TAS675X_GPIO_SEL_SDOUT2 0x08 311*133c81f8SSen Wang #define TAS675X_GPIO_SEL_SDOUT1 0x09 312*133c81f8SSen Wang #define TAS675X_GPIO_SEL_WARN 0x0A 313*133c81f8SSen Wang #define TAS675X_GPIO_SEL_FAULT 0x0B 314*133c81f8SSen Wang #define TAS675X_GPIO_SEL_CLOCK_SYNC 0x0E 315*133c81f8SSen Wang #define TAS675X_GPIO_SEL_INVALID_CLK 0x0F 316*133c81f8SSen Wang #define TAS675X_GPIO_SEL_HIGH 0x13 317*133c81f8SSen Wang 318*133c81f8SSen Wang /* GPIO input function encoding (flag bit | function ID) */ 319*133c81f8SSen Wang #define TAS675X_GPIO_FUNC_INPUT 0x100 320*133c81f8SSen Wang 321*133c81f8SSen Wang /* Input Function IDs */ 322*133c81f8SSen Wang #define TAS675X_GPIO_IN_ID_MUTE 0 323*133c81f8SSen Wang #define TAS675X_GPIO_IN_ID_PHASE_SYNC 1 324*133c81f8SSen Wang #define TAS675X_GPIO_IN_ID_SDIN2 2 325*133c81f8SSen Wang #define TAS675X_GPIO_IN_ID_DEEP_SLEEP 3 326*133c81f8SSen Wang #define TAS675X_GPIO_IN_ID_HIZ 4 327*133c81f8SSen Wang #define TAS675X_GPIO_IN_ID_PLAY 5 328*133c81f8SSen Wang #define TAS675X_GPIO_IN_ID_SLEEP 6 329*133c81f8SSen Wang #define TAS675X_GPIO_IN_NUM 7 330*133c81f8SSen Wang 331*133c81f8SSen Wang #define TAS675X_GPIO_IN_MUTE (TAS675X_GPIO_FUNC_INPUT | TAS675X_GPIO_IN_ID_MUTE) 332*133c81f8SSen Wang #define TAS675X_GPIO_IN_PHASE_SYNC \ 333*133c81f8SSen Wang (TAS675X_GPIO_FUNC_INPUT | TAS675X_GPIO_IN_ID_PHASE_SYNC) 334*133c81f8SSen Wang #define TAS675X_GPIO_IN_SDIN2 (TAS675X_GPIO_FUNC_INPUT | TAS675X_GPIO_IN_ID_SDIN2) 335*133c81f8SSen Wang #define TAS675X_GPIO_IN_DEEP_SLEEP \ 336*133c81f8SSen Wang (TAS675X_GPIO_FUNC_INPUT | TAS675X_GPIO_IN_ID_DEEP_SLEEP) 337*133c81f8SSen Wang #define TAS675X_GPIO_IN_HIZ (TAS675X_GPIO_FUNC_INPUT | TAS675X_GPIO_IN_ID_HIZ) 338*133c81f8SSen Wang #define TAS675X_GPIO_IN_PLAY (TAS675X_GPIO_FUNC_INPUT | TAS675X_GPIO_IN_ID_PLAY) 339*133c81f8SSen Wang #define TAS675X_GPIO_IN_SLEEP (TAS675X_GPIO_FUNC_INPUT | TAS675X_GPIO_IN_ID_SLEEP) 340*133c81f8SSen Wang 341*133c81f8SSen Wang /* GPIO input 3-bit mux field masks */ 342*133c81f8SSen Wang #define TAS675X_GPIO_IN_MUTE_MASK GENMASK(2, 0) 343*133c81f8SSen Wang #define TAS675X_GPIO_IN_SYNC_MASK GENMASK(2, 0) 344*133c81f8SSen Wang #define TAS675X_GPIO_IN_SDIN2_MASK GENMASK(6, 4) 345*133c81f8SSen Wang #define TAS675X_GPIO_IN_DEEP_SLEEP_MASK GENMASK(6, 4) 346*133c81f8SSen Wang #define TAS675X_GPIO_IN_HIZ_MASK GENMASK(2, 0) 347*133c81f8SSen Wang #define TAS675X_GPIO_IN_PLAY_MASK GENMASK(6, 4) 348*133c81f8SSen Wang #define TAS675X_GPIO_IN_SLEEP_MASK GENMASK(2, 0) 349*133c81f8SSen Wang 350*133c81f8SSen Wang /* Book addresses for tas675x_select_book() */ 351*133c81f8SSen Wang #define TAS675X_BOOK_DEFAULT 0x00 352*133c81f8SSen Wang #define TAS675X_BOOK_DSP 0x8C 353*133c81f8SSen Wang 354*133c81f8SSen Wang /* DSP memory addresses (DSP Book) */ 355*133c81f8SSen Wang #define TAS675X_DSP_PAGE_RTLDG 0x22 356*133c81f8SSen Wang #define TAS675X_DSP_RTLDG_OL_THRESH_REG 0x98 357*133c81f8SSen Wang #define TAS675X_DSP_RTLDG_SL_THRESH_REG 0x9C 358*133c81f8SSen Wang 359*133c81f8SSen Wang #define TAS675X_DSP_PARAM_ID_OL_THRESH 0 360*133c81f8SSen Wang #define TAS675X_DSP_PARAM_ID_SL_THRESH 1 361*133c81f8SSen Wang 362*133c81f8SSen Wang /* Setup Mode Entry/Exit*/ 363*133c81f8SSen Wang #define TAS675X_SETUP_ENTER_VAL1 0x11 364*133c81f8SSen Wang #define TAS675X_SETUP_ENTER_VAL2 0xFF 365*133c81f8SSen Wang #define TAS675X_SETUP_EXIT_VAL 0x00 366*133c81f8SSen Wang 367*133c81f8SSen Wang #endif /* __TAS675X_H__ */ 368