| /* |
| * cx9000.h -- CX9000 Smart Amplifier driver |
| * |
| * Copyright: (C) 2017 Synaptics Incorporated. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| */ |
| |
| #ifndef __CX9000_PRIV_H__ |
| #define __CX9000_PRIV_H__ |
| |
| #define CX9000_CLOCK_CONTROL0 0x0 |
| #define CX9000_CLOCK_CONTROL1 0x1 |
| #define CX9000_CLOCK_CONTROL2 0x2 |
| #define CX9000_CLOCK_CONTROL3 0x3 |
| #define CX9000_CLOCK_CONTROL4 0x4 |
| #define CX9000_CLOCK_CONTROL5 0x5 |
| #define CX9000_CLOCK_CONTROL6 0x6 |
| #define CX9000_PLL_CONTROL0 0x7 |
| #define CX9000_PLL_CONTROL1 0x8 |
| #define CX9000_PLL_CONTROL2 0x9 |
| #define CX9000_PLL_CONTROL3 0xA |
| #define CX9000_PLL_CONTROL4 0xB |
| #define CX9000_PLL_CONTROL5 0xC |
| #define CX9000_PLL_CONTROL6 0xD |
| #define CX9000_PLL_CONTROL7 0xE |
| #define CX9000_PLL_CONTROL8 0xF |
| #define CX9000_PLL_TRACK_CONTROL 0x10 |
| #define CX9000_PLL_TRACK_THRESHOLD0 0x11 |
| #define CX9000_PLL_TRACK_THRESHOLD1 0x12 |
| #define CX9000_PLL_TRACK_ADJUST0 0x13 |
| #define CX9000_PLL_TRACK_ADJUST1 0x14 |
| #define CX9000_SOFT_RESET 0x20 |
| #define CX9000_OSS_CSR 0x100 |
| #define CX9000_STATE_TRIGGERS_LP1_R1 0x101 |
| #define CX9000_STATE_TRIGGERS_LP1_R2 0x102 |
| #define CX9000_STATE_TRIGGERS_LP2_R1 0x103 |
| #define CX9000_STATE_TRIGGERS_LP2_R2 0x104 |
| #define CX9000_STATE_TRIGGERS_LP3_R1 0x105 |
| #define CX9000_STATE_TRIGGERS_LP3_R2 0x106 |
| #define CX9000_STATE_ACTIONS_LP1_R1 0x107 |
| #define CX9000_STATE_ACTIONS_LP1_R2 0x108 |
| #define CX9000_STATE_ACTIONS_LP1_R3 0x109 |
| #define CX9000_STATE_ACTIONS_LP2_R1 0x10A |
| #define CX9000_STATE_ACTIONS_LP2_R2 0x10B |
| #define CX9000_STATE_ACTIONS_LP2_R3 0x10C |
| #define CX9000_STATE_ACTIONS_LP3_R1 0x10D |
| #define CX9000_STATE_ACTIONS_LP3_R2 0x10E |
| #define CX9000_STATE_ACTIONS_LP3_R3 0x10F |
| #define CX9000_DEBUG_STATE_OVERRIDE 0x110 |
| #define CX9000_DEBUG_R1 0x111 |
| #define CX9000_DEBUG_R3 0x113 |
| #define CX9000_DEBUG_R5 0x115 |
| #define CX9000_DEBUG_R7 0x11D |
| #define CX9000_DEBUG_R2 0x112 |
| #define CX9000_DEBUG_R4 0x114 |
| #define CX9000_DEBUG_R6 0x116 |
| #define CX9000_SHORT_WAIT 0x120 |
| #define CX9000_LONG_WAIT 0x121 |
| #define CX9000_WAIT_ASSIGN_FORWARD_R1 0x122 |
| #define CX9000_WAIT_ASSIGN_FORWARD_R2 0x123 |
| #define CX9000_WAIT_ASSIGN_REVERSE_R1 0x124 |
| #define CX9000_WAIT_ASSIGN_REVERSE_R2 0x125 |
| #define CX9000_SYSTEM_CFG_TEST0 0x130 |
| #define CX9000_SYSTEM_CFG_TEST1 0x131 |
| #define CX9000_I2C_DEVICE_ADDRESS 0x301 |
| #define CX9000_I2S_PCM_REG1 0x500 |
| #define CX9000_I2S_PCM_REG2 0x501 |
| #define CX9000_I2S_PCM_REG3 0x502 |
| #define CX9000_I2S_PCM_REG4 0x503 |
| #define CX9000_I2S_PCM_REG5 0x504 |
| #define CX9000_I2S_PCM_REG6 0x505 |
| #define CX9000_I2S_PCM_REG7 0x506 |
| #define CX9000_I2S_PCM_REG8 0x507 |
| #define CX9000_I2S_PCM_REG9 0x508 |
| #define CX9000_I2S_PCM_REG10 0x509 |
| #define CX9000_I2S_PCM_REG11 0x50A |
| #define CX9000_I2S_PCM_REG12 0x50B |
| #define CX9000_I2S_PCM_REG13 0x50C |
| #define CX9000_I2S_PCM_REG14 0x50D |
| #define CX9000_I2S_PCM_REG15 0x50E |
| #define CX9000_I2S_PCM_REG16 0x50F |
| #define CX9000_I2S_PCM_REG17 0x510 |
| #define CX9000_I2S_PCM_REG18 0x511 |
| #define CX9000_I2S_PCM_REG19 0x512 |
| #define CX9000_I2S_PCM_REG20 0x513 |
| #define CX9000_I2S_PCM_REG21 0x514 |
| #define CX9000_I2S_PCM_REG22 0x515 |
| #define CX9000_I2S_PCM_REG23 0x516 |
| #define CX9000_I2S_PCM_REG24 0x517 |
| #define CX9000_I2S_PCM_REG25 0x518 |
| #define CX9000_I2S_PCM_REG26 0x519 |
| #define CX9000_I2S_PCM_REG27 0x51A |
| #define CX9000_I2S_PCM_REG28 0x51B |
| #define CX9000_I2S_PCM_REG29 0x51C |
| #define CX9000_I2S_PCM_REG30 0x51D |
| #define CX9000_I2S_PCM_REG31 0x51E |
| #define CX9000_I2S_PCM_REG32 0x51F |
| #define CX9000_I2S_PCM_REG33 0x520 |
| #define CX9000_I2S_PCM_REG34 0x521 |
| #define CX9000_I2S_PCM_REG35 0x522 |
| #define CX9000_I2S_PCM_REG36 0x523 |
| #define CX9000_I2S_PCM_REG37 0x524 |
| #define CX9000_GPIO_SELECT 0x200 |
| #define CX9000_GPIO_OUTPUT_ENABLE 0x201 |
| #define CX9000_GPIO_OUTPUT_LEVEL 0x202 |
| #define CX9000_GPIO_INPUT_ENABLE 0x203 |
| #define CX9000_GPIO_INPUT_STATUS 0x204 |
| #define CX9000_GPIO_IRQ_EN 0x205 |
| #define CX9000_GPIO_IRQ_EDGE 0x206 |
| #define CX9000_GPIO_IRQ_POLARITY 0x207 |
| #define CX9000_GPIO_IRQ_STATUS 0x208 |
| #define CX9000_GPIO_ELECTRICAL_CONTROL_1_0 0x209 |
| #define CX9000_GPIO_ELECTRICAL_CONTROL_3_2 0x20A |
| #define CX9000_GPIO_ELECTRICAL_CONTROL_5_4 0x20B |
| #define CX9000_GPIO_ELECTRICAL_CONTROL_7_6 0x20C |
| #define CX9000_ELECTRICAL_CONTROL_BCLK_WS 0x20E |
| #define CX9000_ELECTRICAL_CONTROL_SDIN 0x20F |
| #define CX9000_INTRPT_ENABLE_R1 0x210 |
| #define CX9000_INTRPT_ENABLE_R2 0x211 |
| #define CX9000_INTRPT_MASK_R1 0x212 |
| #define CX9000_INTRPT_MASK_R2 0x213 |
| #define CX9000_INTRPT_STATUS_R1 0x214 |
| #define CX9000_INTRPT_STATUS_R2 0x220 |
| #define CX9000_INTRPT_STATUS_MASKED_R1 0x221 |
| #define CX9000_INTRPT_STATUS_MASKED_R2 0x222 |
| #define CX9000_INTRPT_SET_R1 0x223 |
| #define CX9000_COEF_CTRL0 0x224 |
| #define CX9000_COEF_CTRL1 0x225 |
| #define CX9000_COEF_WRITE_0_L 0x226 |
| #define CX9000_COEF_WRITE_0_H 0x227 |
| #define CX9000_COEF_WRITE_1_L 0x228 |
| #define CX9000_COEF_WRITE_1_H 0x229 |
| #define CX9000_COEF_WRITE_2_L 0x22A |
| #define CX9000_COEF_WRITE_2_H 0x22B |
| #define CX9000_COEF_WRITE_3_L 0x22C |
| #define CX9000_COEF_WRITE_3_H 0x22D |
| #define CX9000_COEF_WRITE_4_L 0x22E |
| #define CX9000_COEF_WRITE_4_H 0x22F |
| #define CX9000_COEF_WRITE_5_L 0x230 |
| #define CX9000_COEF_WRITE_5_H 0x231 |
| #define CX9000_COEF_WRITE_6_L 0x232 |
| #define CX9000_COEF_WRITE_6_H 0x233 |
| #define CX9000_COEF_WRITE_7_L 0x234 |
| #define CX9000_COEF_WRITE_7_H 0x235 |
| #define CX9000_COEF_READ_0_L 0x236 |
| #define CX9000_COEF_READ_0_H 0x237 |
| #define CX9000_COEF_READ_1_L 0x238 |
| #define CX9000_COEF_READ_1_H 0x239 |
| #define CX9000_COEF_READ_2_L 0x23A |
| #define CX9000_COEF_READ_2_H 0x23B |
| #define CX9000_COEF_READ_3_L 0x23C |
| #define CX9000_COEF_READ_3_H 0x23D |
| #define CX9000_COEF_READ_4_L 0x23E |
| #define CX9000_COEF_READ_4_H 0x23F |
| #define CX9000_COEF_READ_5_L 0x240 |
| #define CX9000_COEF_READ_5_H 0x241 |
| #define CX9000_COEF_READ_6_L 0x242 |
| #define CX9000_COEF_READ_6_H 0x243 |
| #define CX9000_COEF_READ_7_L 0x244 |
| #define CX9000_COEF_READ_7_H 0x245 |
| #define CX9000_DEV_ID_0 0x250 |
| #define CX9000_DEV_ID_1 0x251 |
| #define CX9000_DEV_ID_2 0x252 |
| #define CX9000_DEV_ID_3 0x253 |
| #define CX9000_BOND_OPT 0x254 |
| #define CX9000_STEPPING_NUMBER 0x255 |
| #define CX9000_DAC_CONFIGURATION 0x260 |
| #define CX9000_HPF_LEFT_CONTROL 0x261 |
| #define CX9000_HPF_RIGHT_CONTROL 0x262 |
| #define CX9000_ZERODETECT_CSR 0x263 |
| #define CX9000_NOISEGATE_CSR 0x264 |
| #define CX9000_NOISE_GATE_THRESHOLD_H 0x265 |
| #define CX9000_NOISE_GATE_THRESHOLD_M 0x266 |
| #define CX9000_NOISE_GATE_THRESHOLD_L 0x267 |
| #define CX9000_FIFO_STATUS_OVERFLOW 0x268 |
| #define CX9000_FIFO_STATUS_UNDERFLOW 0x269 |
| #define CX9000_ANALOG_GAIN 0x270 |
| #define CX9000_ANALOG_TEST0_H 0x280 |
| #define CX9000_ANALOG_TEST0_L 0x281 |
| #define CX9000_ANALOG_TEST1_H 0x282 |
| #define CX9000_ANALOG_TEST1_L 0x283 |
| #define CX9000_ANALOG_TEST2_H 0x284 |
| #define CX9000_ANALOG_TEST2_L 0x285 |
| #define CX9000_ANALOG_TEST3_H 0x286 |
| #define CX9000_ANALOG_TEST3_L 0x287 |
| #define CX9000_RESERVED 0x288 |
| #define CX9000_ANALOG_TEST4_L 0x289 |
| #define CX9000_ANALOG_TEST5_H 0x28A |
| #define CX9000_ANALOG_TEST5_L 0x28B |
| #define CX9000_ANALOG_TEST7_H 0x28C |
| #define CX9000_ANALOG_TEST7_L 0x28D |
| #define CX9000_ANALOG_TEST8_H 0x28E |
| #define CX9000_ANALOG_TEST8_L 0x28F |
| #define CX9000_ANALOG_TEST9_H 0x290 |
| #define CX9000_ANALOG_TEST9_L 0x291 |
| #define CX9000_ANALOG_TEST18_H 0x292 |
| #define CX9000_ANALOG_TEST18_L 0x293 |
| #define CX9000_ANALOG_TEST19_H 0x294 |
| #define CX9000_ANALOG_TEST19_L 0x295 |
| #define CX9000_ANALOG_TEST20_H 0x296 |
| #define CX9000_ANALOG_TEST20_L 0x297 |
| #define CX9000_ANALOG_TEST21_H 0x298 |
| #define CX9000_ANALOG_TEST21_L 0x299 |
| #define CX9000_ANALOG_TEST22_H 0x29A |
| #define CX9000_ANALOG_TEST22_L 0x29B |
| #define CX9000_ANALOG_TEST23_H 0x29C |
| #define CX9000_ANALOG_TEST23_L 0x29D |
| #define CX9000_ANALOG_TEST25_H 0x29E |
| #define CX9000_ANALOG_TEST25_L 0x29F |
| #define CX9000_ANALOG_TEST26_H 0x2A0 |
| #define CX9000_ANALOG_TEST26_L 0x2A1 |
| #define CX9000_ANALOG_TEST27_H 0x2A2 |
| #define CX9000_ANALOG_TEST27_L 0x2A3 |
| #define CX9000_ANALOG_TEST28_H 0x2A4 |
| #define CX9000_ANALOG_TEST28_L 0x2A5 |
| #define CX9000_ANALOG_TEST29_H 0x2A6 |
| #define CX9000_ANALOG_TEST29_L 0x2A7 |
| #define CX9000_ANALOG_TEST30_H 0x2A8 |
| #define CX9000_ANALOG_TEST30_L 0x2A9 |
| #define CX9000_ANALOG_RELATED_CONTROL 0x2B0 |
| #define CX9000_ANALOG_STATE_STATUS 0x2B1 |
| #define CX9000_ANALOG_ERROR_STATUS 0x2B2 |
| #define CX9000_ANALOG_READOUT_1 0x2B3 |
| #define CX9000_ANALOG_READOUT_2 0x2B4 |
| #define CX9000_DAC_TEST_CTRL_REG0_L 0x2D0 |
| #define CX9000_DAC_TEST_CTRL_REG0_H 0x2D1 |
| #define CX9000_DAC_TEST_CTRL_REG1 0x2D2 |
| #define CX9000_DAC_TEST_CTRL_REG2 0x2D3 |
| #define CX9000_FE1_GAIN_L_B0 0x2F0 |
| #define CX9000_FE1_GAIN_L_B1 0x2F1 |
| #define CX9000_FE1_GAIN_L_B2 0x2F2 |
| #define CX9000_FE1_GAIN_R_B0 0x2F3 |
| #define CX9000_FE1_GAIN_R_B1 0x2F4 |
| #define CX9000_FE1_GAIN_R_B2 0x2F5 |
| #define CX9000_CLASSD_CALIBRATION 0x2F6 |
| #define CX9000_CLASSD_CALIBRATION 0x2F6 |
| #define CX9000_MUTE_PRE_DRC_VOLUME 0x600 |
| #define CX9000_VOLUME_LEFT 0x601 |
| #define CX9000_VOLUME_RIGHT 0x602 |
| #define CX9000_TBDRC_LP_RATE_RELEASE 0x71D |
| #define CX9000_VOLUME_BOTH 0x603 |
| #define CX9000_EQ_ENABLE_BYPASS 0x710 |
| #define CX9000_TBDRC_CTRL_REG0 0x711 |
| #define CX9000_TBDRC_CTRL_REG1 0x712 |
| #define CX9000_TBDRC_VOLUME_LEFT 0x713 |
| #define CX9000_TBDRC_VOLUME_RIGHT 0x714 |
| #define CX9000_TBDRC_LP_HIGH_INPUT_THRD 0x715 |
| #define CX9000_TBDRC_LP_LOW_INPUT_THRD 0x716 |
| #define CX9000_TBDRC_LP_HIGH_OUTPUT_THRD 0x717 |
| #define CX9000_TBDRC_LP_LOW_OUTPUT_THRD 0x718 |
| #define CX9000_TBDRC_LP_SLOOP 0x719 |
| #define CX9000_TBDRC_LP_ATTACH_RATE_GAIN_SHIFT 0x71A |
| #define CX9000_TBDRC_LP_RELEASE 0x71B |
| #define CX9000_TBDRC_LP_FAST_RELEASE 0x71C |
| #define CX9000_TBDRC_LP_RATE_RELEASE 0x71D |
| #define CX9000_TBDRC_LP_BALANCE_RAMP_STEP 0x71E |
| #define CX9000_TBDRC_LP_VOLUME_RAMP_STEP_SEL 0x71F |
| #define CX9000_TBDRC_HP_HIGH_INPUT_THRD 0x720 |
| #define CX9000_TBDRC_HP_LOW_INPUT_THRD 0x721 |
| #define CX9000_TBDRC_HP_HIGH_OUTPUT_THRD 0x722 |
| #define CX9000_TBDRC_HP_LOW_OUTPUT_THRD 0x723 |
| #define CX9000_TBDRC_HP_SLOOP 0x724 |
| #define CX9000_TBDRC_HP_ATTACH_RATE_GAIN_SHIFT 0x725 |
| #define CX9000_TBDRC_HP_RELEASE 0x726 |
| #define CX9000_TBDRC_HP_FAST_RELEASE 0x727 |
| #define CX9000_TBDRC_HP_RATE_RELEASE 0x728 |
| #define CX9000_TBDRC_HP_BALANCE_RAMP_STEP 0x729 |
| #define CX9000_TBDRC_HP_VOLUME_RAMP_STEP_SEL 0x72A |
| #define CX9000_TBDRC_MP_HIGH_INPUT_THRD 0x72B |
| #define CX9000_TBDRC_MP_LOW_INPUT_THRD 0x72C |
| #define CX9000_TBDRC_MP_HIGH_OUTPUT_THRD 0x72D |
| #define CX9000_TBDRC_MP_LOW_OUTPUT_THRD 0x72E |
| #define CX9000_TBDRC_MP_SLOOP 0x72F |
| #define CX9000_TBDRC_MP_ATTACH_RATE_GAIN_SHIFT 0x730 |
| #define CX9000_TBDRC_MP_RELEASE 0x731 |
| #define CX9000_TBDRC_MP_FAST_RELEASE 0x732 |
| #define CX9000_TBDRC_MP_RATE_RELEASE 0x733 |
| #define CX9000_TBDRC_MP_BALANCE_RAMP_STEP 0x734 |
| #define CX9000_TBDRC_MP_VOLUME_RAMP_STEP_SEL 0x735 |
| #define CX9000_TBDRC_PD_HIGH_INPUT_THRD 0x736 |
| #define CX9000_TBDRC_PD_LOW_INPUT_THRD 0x737 |
| #define CX9000_TBDRC_PD_HIGH_OUTPUT_THRD 0x738 |
| #define CX9000_TBDRC_PD_LOW_OUTPUT_THRD 0x739 |
| #define CX9000_TBDRC_PD_SLOOP 0x73A |
| #define CX9000_TBDRC_PD_ATTACH_RATE_GAIN_SHIFT 0x73B |
| #define CX9000_TBDRC_PD_RELEASE 0x73C |
| #define CX9000_TBDRC_PD_FAST_RELEASE 0x73D |
| #define CX9000_TBDRC_PD_RATE_RELEASE 0x73E |
| #define CX9000_TBDRC_PD_BALANCE_RAMP_STEP 0x73F |
| #define CX9000_TBDRC_PD_VOLUME_RAMP_STEP_SEL 0x740 |
| #define CX9000_CSR_CTRL 0x900 |
| #define CX9000_TEST_CTRL 0xE00 |
| #define CX9000_TEST_OVERRIDE 0xE01 |
| #define CX9000_IRQ_ALT_7_0 0xE02 |
| #define CX9000_IRQ_ALT_8 0xE03 |
| #define CX9000_CALIB_OVERRIDE 0xE04 |
| #define CX9000_SPKR_OFFCAL_L 0xE05 |
| #define CX9000_SPKR_OFFCAL_R 0xE06 |
| #define CX9000_FIFO_OVERFLOW_MASK1 0xE07 |
| #define CX9000_FIFO_OVERFLOW_MASK2 0xE08 |
| |
| #define CX9000_MAX_REG 0xe08 |
| |
| enum OSS_CUR_STATE { |
| CX9000_OSS_IDLE = 0, |
| CX9000_OSS_FULL = 1, |
| CX9000_OSS_LP1 = 2, |
| CX9000_OSS_LP2 = 3, |
| CX9000_OSS_LP3 = 4, |
| }; |
| |
| enum DAC_CONFIG { |
| CX9000_STEREO = 0, |
| CX9000_MONO_LEFT = 1, |
| CX9000_MONO_RIGHT = 2, |
| CX9000_BI_MONO = 3, |
| CX9000_MONO_MIXED = 4, |
| CX9000_BI_MIXED = 5, |
| }; |
| |
| enum SAMPLE_RATE { |
| CX9000_48K = 4, |
| CX9000_96K = 5, |
| CX9000_192K = 6, |
| }; |
| |
| union REG_I2SPCM_CTRL_REG1_REG2 { |
| struct { |
| u16 rx_lrck_frame:8; |
| u16 rx_sync_lng:8; |
| } r; |
| u16 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG3 { |
| struct { |
| u8 rx_lrck_low_first:1; |
| u8 rx_lrck_en:1; /* master mode use */ |
| u8 reserved:6; |
| } r; |
| u8 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG4_REG5 { |
| struct { |
| u16 tx_lrck_frame:8; |
| u16 tx_sync_lng:8; |
| } r; |
| u16 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG6 { |
| struct { |
| u8 tx_lrck_low_first:1; |
| u8 tx_lrck_en:1; /* mater mode use */ |
| u8 reserved:6; |
| } r; |
| u8 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG7_REG10 { |
| struct { |
| u32 rx1_sa_wdt:5; |
| u32 reserved:3; |
| u32 rx1_slot:8; |
| u32 tx1_sa_wdt:5; |
| u32 reserved2:3; |
| u32 tx1_slot:8; |
| } r; |
| u32 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG11_REG14 { |
| struct { |
| u32 rx2_sa_wdt:5; |
| u32 reserved:3; |
| u32 rx2_slot:8; |
| u32 tx2_sa_wdt:5; |
| u32 reserved2:3; |
| u32 tx2_slot:8; |
| } r; |
| u32 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG15_REG18 { |
| struct { |
| u32 tx3_sa_wdt:5; |
| u32 reserved:3; |
| u32 tx3_slot:8; |
| u32 tx4_sa_wdt:5; |
| u32 reserved2:3; |
| u32 tx4_slot:8; |
| } r; |
| u32 ulval; |
| }; |
| |
| /* ch5 and ch6 not use */ |
| union REG_I2SPCM_CTRL_REG19_REG22 { |
| struct { |
| u32 tx5_sa_wdt:5; |
| u32 reserved:3; |
| u32 tx5_slot:8; |
| u32 tx6_sa_wdt:5; |
| u32 reserved2:3; |
| u32 tx6_slot:8; |
| } r; |
| u32 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG23_REG26 { |
| struct { |
| u32 rxck_frame:8; |
| u32 txck_frame:8; |
| u32 rx_dstart_dly:1; |
| u32 rx_dshift_sel:1; |
| u32 rx_mode:1; |
| u32 rx_order:1; |
| u32 tx_dstart_dly:1; |
| u32 tx_dshift_sel:1; |
| u32 tx_mode:1; |
| u32 tx_order:1; |
| u32 rx_master:1; /* master mode use */ |
| u32 rx_on_posedge:1; |
| u32 rx_lrck_pol:1; |
| u32 tx_master:1; /* master mode use */ |
| u32 tx_on_posedge:1; |
| u32 tx_lrck_pol:1; |
| u32 tx_out_en:1; |
| u32 tdm_bi:1; |
| } r; |
| u32 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG27_REG30 { |
| struct { |
| u32 clk_share_en:1; |
| u32 clk_share_with_rx:1; |
| u32 lrck_share_en:1; |
| u32 lrck_share_with_rx:1; |
| u32 reserved:4; |
| u32 sd1_sel:6; |
| u32 reserved2:2; |
| u32 sd2_sel:6; |
| u32 reserved3:2; |
| u32 sd3_sel:6; |
| u32 reserved4:2; |
| } r; |
| u32 ulval; |
| }; |
| |
| union REG_I2SPCM_CTRL_REG31_REG32 { |
| struct { |
| u16 rx1_en:1; |
| u16 rx2_en:1; |
| u16 reserved:5; |
| u16 rx_mute:1; |
| u16 tx1_en:1; |
| u16 tx2_en:1; |
| u16 tx3_en:1; |
| u16 tx4_en:1; |
| u16 tx5_en:1; |
| u16 tx6_en:1; |
| u16 reserved2:1; |
| u16 tx_mute:1; |
| } r; |
| u16 ulval; |
| }; |
| |
| /* OSS */ |
| #define CX9000_OSS_STATE_GET(val) ((val >> 4) & 0x07) |
| #define CX9000_CHECK_DELAY 20 |
| #define CX9000_MUTE 0x30 |
| #define CX9000_UNMUTE 0x00 |
| #define CX9000_OSS_CSR_MASK 0x02 |
| #define CX9000_OSS_CSR_SOFT_DISABLE (1 << 1) |
| #define CX9000_OSS_CSR_SOFT_CLEAR (0 << 1) |
| |
| /* PLL */ |
| #define CX9000_PLL_PRE_DIV_RATIO 4 |
| #define CX9000_PLL_INT_DIV_RATIO 8 |
| #define CX9000_REF_FREQ_MIN 1400000 |
| #define CX9000_REF_FREQ_MAX 6000000 |
| #define CX9000_CLOCK_SRC_MAX 147456000 |
| #define CX9000_PLL_BYPASS (1 << 1) |
| #define CX9000_PLL_SRC_MASK (1 << 0) |
| #define CX9000_PLL_FRAC_LOWER(val) ((val >> 0) & 0xFF) |
| #define CX9000_PLL_FRAC_MIDDLE(val) ((val >> 8) & 0xFF) |
| #define CX9000_PLL_FRAC_UPPER(val) ((val >> 16) & 0xFF) |
| |
| /* EQ/DRC/SA2 Control */ |
| #define CX9000_PID_DISABLE 0x08 |
| #define CX9000_PID_HARDWARE 0x09 |
| #define CX9000_EQ_ENABLE_L (1 << 0) |
| #define CX9000_EQ_ENABLE_R (1 << 1) |
| #define CX9000_EQ_BYPASS_L 0x05 |
| #define CX9000_EQ_BYPASS_R 0x0A |
| #define CX9000_EQ_EN 1 |
| #define CX9000_EQ_ENABLE_L_MASK 0x05 |
| #define CX9000_EQ_ENABLE_R_MASK 0x0A |
| #define CX9000_DRC_SFT_RSTN (1 << 0) |
| #define CX9000_DRC_ENABLE (1 << 1) |
| #define CX9000_DRC_EN (CX9000_DRC_SFT_RSTN | CX9000_DRC_ENABLE) |
| #define CX9000_DRC_EN_MASK 0x03 |
| #define CX9000_DRC_COEFF_L 2 |
| #define CX9000_DRC_COEFF_R 3 |
| #define CX9000_EQ_COEFF_L 0 |
| #define CX9000_EQ_COEFF_R 1 |
| #define CX9000_SA2_COEFF_L 5 |
| #define CX9000_SA2_COEFF_R 6 |
| #define CX9000_FUNCTION_CHANNEL_SEL(val) (val << 3) |
| #define CX9000_FUNCTION_RATE_SEL(val) (val << 6) |
| #define CX9000_COEFF_CHECK_DELAY 20 |
| #define CX9000_COEFF_CHECK_DONE(val) ((val >> 1) & 0x01) |
| |
| /* SYS Clock */ |
| #define CX9000_PLL_CLKIN_MCLK 0x00 |
| #define CX9000_PLL_CLKIN_BCLK 0x01 |
| |
| /* DAC Configuration */ |
| #define CX9000_DAC_CONFIGURATION_MASK 0xF0 |
| #define CX9000_DAC_STEREO 0x0 |
| #define CX9000_DAC_MONO (1 << 7) |
| #define CX9000_DAC_DUPLICATE (1 << 6) |
| #define CX9000_DAC_MONO_RIGHT (CX9000_DAC_MONO | (1 << 5)) |
| #define CX9000_DAC_MONO_MIXED ((CX9000_DAC_MONO) | (1 << 4)) |
| |
| /* HPF configuration */ |
| #define CX9000_HPF_CUTOFF_MASK 0x1F |
| /* n * 30Hz */ |
| #define CX9000_HPF_CUTOFF_MAX 31 |
| #define CX9000_HPF_ORDER_MASK (1 << 5) |
| #define CX9000_HPF_ENABLE_MASK 0xC0 |
| #define CX9000_HPF_BYPASS 0xC0 |
| |
| #endif |