| /* |
| * mt8167_afe_regs.h -- Mediatek audio register definitions |
| * |
| * Copyright (c) 2016 MediaTek Inc. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| |
| #ifndef _MT8167_AFE_REGS_H_ |
| #define _MT8167_AFE_REGS_H_ |
| |
| #include <linux/bitops.h> |
| |
| /***************************************************************************** |
| * R E G I S T E R D E F I N I T I O N |
| *****************************************************************************/ |
| #define AUDIO_TOP_CON0 0x0000 |
| #define AUDIO_TOP_CON1 0x0004 |
| #define AUDIO_TOP_CON3 0x000c |
| #define AFE_DAC_CON0 0x0010 |
| #define AFE_DAC_CON1 0x0014 |
| #define AFE_I2S_CON 0x0018 |
| #define AFE_I2S_CON1 0x0034 |
| #define AFE_I2S_CON2 0x0038 |
| #define AFE_I2S_CON3 0x004c |
| #define AFE_DAIBT_CON0 0x001c |
| #define AFE_MRGIF_CON 0x003c |
| #define AFE_CONN_24BIT 0x006c |
| |
| #define AFE_CONN0 0x0020 |
| #define AFE_CONN1 0x0024 |
| #define AFE_CONN2 0x0028 |
| #define AFE_CONN3 0x002C |
| #define AFE_CONN4 0x0030 |
| #define AFE_CONN5 0x005C |
| #define AFE_HDMI_CONN0 0x0390 |
| #define AFE_CONN_TDMIN_CON 0x039C |
| |
| #define AFE_GAIN1_CON0 0x0410 |
| #define AFE_GAIN1_CON1 0x0414 |
| #define AFE_GAIN1_CON2 0x0418 |
| #define AFE_GAIN1_CON3 0x041c |
| #define AFE_GAIN1_CONN 0x0420 |
| #define AFE_GAIN1_CUR 0x0424 |
| #define AFE_GAIN1_CONN2 0x0448 |
| |
| /* Memory interface */ |
| #define AFE_DL1_BASE 0x0040 |
| #define AFE_DL1_CUR 0x0044 |
| #define AFE_DL1_END 0x0048 |
| #define AFE_DL2_BASE 0x0050 |
| #define AFE_DL2_CUR 0x0054 |
| #define AFE_DL2_END 0x0058 |
| #define AFE_AWB_BASE 0x0070 |
| #define AFE_AWB_END 0x0078 |
| #define AFE_AWB_CUR 0x007c |
| #define AFE_VUL_BASE 0x0080 |
| #define AFE_VUL_CUR 0x008c |
| #define AFE_VUL_END 0x0088 |
| #define AFE_DAI_BASE 0x0090 |
| #define AFE_DAI_END 0x0098 |
| #define AFE_DAI_CUR 0x009c |
| #define AFE_MOD_PCM_BASE 0x0330 |
| #define AFE_MOD_PCM_END 0x0338 |
| #define AFE_MOD_PCM_CUR 0x033c |
| #define AFE_HDMI_OUT_BASE 0x0374 |
| #define AFE_HDMI_OUT_CUR 0x0378 |
| #define AFE_HDMI_OUT_END 0x037c |
| |
| #define AFE_MEMIF_MSB 0x00cc |
| #define AFE_MEMIF_MON0 0x00d0 |
| #define AFE_MEMIF_MON1 0x00d4 |
| #define AFE_MEMIF_MON2 0x00d8 |
| #define AFE_MEMIF_MON3 0x00dc |
| |
| #define AFE_ADDA_DL_SRC2_CON0 0x0108 |
| #define AFE_ADDA_DL_SRC2_CON1 0x010c |
| #define AFE_ADDA_UL_SRC_CON0 0x0114 |
| #define AFE_ADDA_UL_SRC_CON1 0x0118 |
| #define AFE_ADDA_TOP_CON0 0x0120 |
| #define AFE_ADDA_UL_DL_CON0 0x0124 |
| #define AFE_ADDA_NEWIF_CFG0 0x0138 |
| #define AFE_ADDA_NEWIF_CFG1 0x013c |
| #define AFE_ADDA_PREDIS_CON0 0x0260 |
| #define AFE_ADDA_PREDIS_CON1 0x0264 |
| |
| #define AFE_SGEN_CON0 0x01f0 |
| #define AFE_SINEGEN_CON_TDM 0x01f8 |
| #define AFE_SINEGEN_CON_TDM_IN 0x01fc |
| |
| #define AFE_HDMI_OUT_CON0 0x0370 |
| |
| #define AFE_IRQ_MCU_CON 0x03a0 |
| #define AFE_IRQ_STATUS 0x03a4 |
| #define AFE_IRQ_CLR 0x03a8 |
| #define AFE_IRQ_CNT1 0x03ac |
| #define AFE_IRQ_CNT2 0x03b0 |
| #define AFE_IRQ_MCU_EN 0x03b4 |
| #define AFE_IRQ_CNT5 0x03bc |
| #define AFE_IRQ_CNT7 0x03dc |
| #define AFE_IRQ_CNT13 0x0408 |
| #define AFE_IRQ1_MCU_CNT_MON 0x03c0 |
| #define AFE_IRQ2_MCU_CNT_MON 0x03c4 |
| #define AFE_IRQ_MCU_CON2 0x03f8 |
| |
| #define AFE_MEMIF_PBUF_SIZE 0x03d8 |
| #define AFE_MEMIF_PBUF2_SIZE 0x03ec |
| |
| #define AFE_APLL1_TUNER_CFG 0x03f0 |
| #define AFE_APLL2_TUNER_CFG 0x03f4 |
| |
| #define AFE_ASRC_CON0 0x0500 |
| |
| #define AFE_ASRC_CON13 0x0550 |
| #define AFE_ASRC_CON14 0x0554 |
| #define AFE_ASRC_CON15 0x0558 |
| #define AFE_ASRC_CON16 0x055c |
| #define AFE_ASRC_CON17 0x0560 |
| #define AFE_ASRC_CON18 0x0564 |
| #define AFE_ASRC_CON19 0x0568 |
| #define AFE_ASRC_CON20 0x056c |
| #define AFE_ASRC_CON21 0x0570 |
| |
| #define AFE_TDM_CON1 0x0548 |
| #define AFE_TDM_CON2 0x054c |
| |
| #define AFE_TDM_IN_CON1 0x0588 |
| #define AFE_TDM_IN_MON2 0x0594 |
| #define AFE_IRQ_CNT10 0x08dc |
| |
| #define AFE_HDMI_IN_2CH_CON0 0x09c0 |
| #define AFE_HDMI_IN_2CH_BASE 0x09c4 |
| #define AFE_HDMI_IN_2CH_END 0x09c8 |
| #define AFE_HDMI_IN_2CH_CUR 0x09cc |
| |
| #define AFE_MEMIF_MON15 0x0d7c |
| #define ABB_AFE_SDM_TEST 0x0f4c |
| |
| #define AFE_IRQ_STATUS_BITS 0x13ff |
| |
| /* AUDIO_TOP_CON0 (0x0000) */ |
| #define AUD_TCON0_PDN_DAC_PREDIS BIT(26) |
| #define AUD_TCON0_PDN_DAC BIT(25) |
| #define AUD_TCON0_PDN_ADC BIT(24) |
| #define AUD_TCON0_PDN_SPDF BIT(21) |
| #define AUD_TCON0_PDN_HDMI BIT(20) |
| #define AUD_TCON0_PDN_APLL_TUNER BIT(19) |
| #define AUD_TCON0_PDN_APLL2_TUNER BIT(18) |
| #define AUD_TCON0_PDN_INTDIR_CK BIT(15) |
| #define AUD_TCON0_PDN_24M BIT(9) |
| #define AUD_TCON0_PDN_22M BIT(8) |
| #define AUD_TCON0_PDN_I2S BIT(6) |
| #define AUD_TCON0_PDN_AFE BIT(2) |
| |
| /* AUDIO_TOP_CON3 (0x000C) */ |
| #define AUD_TCON3_HDMI_BCK_INV BIT(3) |
| |
| /* AFE_I2S_CON (0x0018) */ |
| #define AFE_I2S_CON_PHASE_SHIFT_FIX BIT(31) |
| #define AFE_I2S_CON_BCK_INV BIT(29) |
| #define AFE_I2S_CON_FROM_IO_MUX BIT(28) |
| #define AFE_I2S_CON_LOW_JITTER_CLK BIT(12) |
| #define AFE_I2S_CON_LRCK_INV BIT(5) |
| #define AFE_I2S_CON_FORMAT_I2S BIT(3) |
| #define AFE_I2S_CON_SRC_SLAVE BIT(2) |
| #define AFE_I2S_CON_WLEN_32BIT BIT(1) |
| #define AFE_I2S_CON_EN BIT(0) |
| |
| /* AFE_DAIBT_CON0 (0x001c) */ |
| #define AFE_DAIBT_CON0_USE_MRG_INPUT BIT(12) |
| #define AFE_DAIBT_CON0_DATA_DRY BIT(3) |
| |
| /* AFE_CONN1 (0x0024) */ |
| #define AFE_CONN1_I03_O03_S BIT(19) |
| |
| /* AFE_CONN2 (0x0028) */ |
| #define AFE_CONN2_I04_O04_S BIT(4) |
| #define AFE_CONN2_I03_O04_S BIT(3) |
| |
| /* AFE_I2S_CON1 (0x0034) */ |
| #define AFE_I2S_CON1_I2S2_TO_PAD (1 << 18) |
| #define AFE_I2S_CON1_TDMOUT_TO_PAD (0 << 18) |
| #define AFE_I2S_CON1_TDMOUT_MUX_MASK GENMASK(18, 18) |
| #define AFE_I2S_CON1_LOW_JITTER_CLK BIT(12) |
| #define AFE_I2S_CON1_RATE(x) (((x) & 0xf) << 8) |
| #define AFE_I2S_CON1_FORMAT_I2S BIT(3) |
| #define AFE_I2S_CON1_WLEN_32BIT BIT(1) |
| #define AFE_I2S_CON1_EN BIT(0) |
| |
| /* AFE_I2S_CON2 (0x0038) */ |
| #define AFE_I2S_CON2_LOW_JITTER_CLK BIT(12) |
| #define AFE_I2S_CON2_RATE(x) (((x) & 0xf) << 8) |
| #define AFE_I2S_CON2_FORMAT_I2S BIT(3) |
| #define AFE_I2S_CON2_WLEN_32BIT BIT(1) |
| #define AFE_I2S_CON2_EN BIT(0) |
| |
| /* AFE_I2S_CON3 (0x004C) */ |
| #define AFE_I2S_CON3_LOW_JITTER_CLK BIT(12) |
| #define AFE_I2S_CON3_RATE(x) (((x) & 0xf) << 8) |
| #define AFE_I2S_CON3_FORMAT_I2S BIT(3) |
| #define AFE_I2S_CON3_WLEN_32BIT BIT(1) |
| #define AFE_I2S_CON3_EN BIT(0) |
| |
| /* AFE_CONN_24BIT (0x006c) */ |
| #define AFE_CONN_24BIT_O10 BIT(10) |
| #define AFE_CONN_24BIT_O09 BIT(9) |
| #define AFE_CONN_24BIT_O06 BIT(6) |
| #define AFE_CONN_24BIT_O05 BIT(5) |
| #define AFE_CONN_24BIT_O04 BIT(4) |
| #define AFE_CONN_24BIT_O03 BIT(3) |
| #define AFE_CONN_24BIT_O02 BIT(2) |
| #define AFE_CONN_24BIT_O01 BIT(1) |
| #define AFE_CONN_24BIT_O00 BIT(0) |
| |
| /* AFE_ADDA_DL_SRC2_CON0 (0x0108) */ |
| #define AFE_ADDA_DL_8X_UPSAMPLE (BIT(25) | BIT(24)) |
| #define AFE_ADDA_DL_MUTE_OFF (BIT(12) | BIT(11)) |
| #define AFE_ADDA_DL_VOICE_DATA BIT(5) |
| #define AFE_ADDA_DL_DEGRADE_GAIN BIT(1) |
| |
| /* AFE_SINEGEN_CON_TDM (0x01f8) */ |
| #define AFE_SINEGEN_CON_TDM_OUT_EN BIT(28) |
| |
| /* AFE_SINEGEN_CON_TDM_IN (0x01fc) */ |
| #define AFE_SINEGEN_CON_TDM_IN_EN BIT(28) |
| |
| /* AFE_HDMI_OUT_CON0 (0x0370) */ |
| #define AFE_HDMI_OUT_CON0_CH_MASK GENMASK(7, 4) |
| |
| /* AFE_HDMI_CONN0 (0x0390) */ |
| #define AFE_HDMI_CONN0_O35_I35 (0x7 << 21) |
| #define AFE_HDMI_CONN0_O34_I34 (0x6 << 18) |
| #define AFE_HDMI_CONN0_O33_I33 (0x5 << 15) |
| #define AFE_HDMI_CONN0_O32_I32 (0x4 << 12) |
| #define AFE_HDMI_CONN0_O31_I30 (0x2 << 9) |
| #define AFE_HDMI_CONN0_O31_I31 (0x3 << 9) |
| #define AFE_HDMI_CONN0_O30_I31 (0x3 << 6) |
| #define AFE_HDMI_CONN0_O30_I30 (0x2 << 6) |
| #define AFE_HDMI_CONN0_O29_I29 (0x1 << 3) |
| #define AFE_HDMI_CONN0_O28_I28 (0x0 << 0) |
| |
| /* AFE_CONN_TDMIN_CON (0x039c) */ |
| #define AFE_CONN_TDMIN_O41_I41 (0x1 << 3) |
| #define AFE_CONN_TDMIN_O41_I40 (0x0 << 3) |
| #define AFE_CONN_TDMIN_O40_I41 (0x1 << 0) |
| #define AFE_CONN_TDMIN_O40_I40 (0x0 << 0) |
| #define AFE_CONN_TDMIN_CON0_MASK GENMASK(5, 0) |
| |
| /* AFE_APLL1_TUNER_CFG (0x03ec) */ |
| #define AFE_APLL1_TUNER_CFG_MASK GENMASK(15, 1) |
| #define AFE_APLL1_TUNER_CFG_EN_MASK GENMASK(0, 0) |
| |
| /* AFE_APLL2_TUNER_CFG (0x03f0) */ |
| #define AFE_APLL2_TUNER_CFG_MASK GENMASK(15, 1) |
| #define AFE_APLL2_TUNER_CFG_EN_MASK GENMASK(0, 0) |
| |
| /* AFE_GAIN1_CON0 (0x0410) */ |
| #define AFE_GAIN1_CON0_EN_MASK GENMASK(0, 0) |
| #define AFE_GAIN1_CON0_MODE_MASK GENMASK(7, 4) |
| #define AFE_GAIN1_CON0_SAMPLE_PER_STEP_MASK GENMASK(15, 8) |
| |
| /* AFE_GAIN1_CON1 (0x0414) */ |
| #define AFE_GAIN1_CON1_MASK GENMASK(19, 0) |
| |
| /* AFE_GAIN1_CUR (0x0424) */ |
| #define AFE_GAIN1_CUR_MASK GENMASK(19, 0) |
| |
| /* AFE_ASRC_CON0 (0x0500) */ |
| #define AFE_ASRC_CON0_ASM_ON BIT(0) |
| #define AFE_ASRC_CON0_STR_CLR_MASK GENMASK(6, 4) |
| #define AFE_ASRC_CON0_CLR_TX (0x1 << 4) |
| #define AFE_ASRC_CON0_CLR_RX (0x2 << 4) |
| #define AFE_ASRC_CON0_CLR_I2S (0x4 << 4) |
| |
| /* AFE_ASRC_CON13 (0x0550) */ |
| #define AFE_ASRC_CON13_16BIT BIT(19) |
| #define AFE_ASRC_CON13_MONO BIT(16) |
| |
| /* AFE_ASRC_CON16 (0x055c) */ |
| #define AFE_ASRC_CON16_FC2_CYCLE_MASK GENMASK(31, 16) |
| #define AFE_ASRC_CON16_FC2_CYCLE(x) (((x) - 1) << 16) |
| #define AFE_ASRC_CON16_FC2_AUTO_RST BIT(14) |
| #define AFE_ASRC_CON16_TUNE_FREQ5 BIT(12) |
| #define AFE_ASRC_CON16_COMP_FREQ_EN BIT(11) |
| #define AFE_ASRC_CON16_FC2_SEL GENMASK(9, 8) |
| #define AFE_ASRC_CON16_FC2_I2S_IN (0x1 << 8) |
| #define AFE_ASRC_CON16_FC2_DGL_BYPASS BIT(7) |
| #define AFE_ASRC_CON16_FC2_AUTO_RESTART BIT(2) |
| #define AFE_ASRC_CON16_FC2_FREQ BIT(1) |
| #define AFE_ASRC_CON16_FC2_EN BIT(0) |
| |
| /* AFE_TDM_CON1 (0x0548) */ |
| #define AFE_TDM_CON1_LRCK_WIDTH(x) (((x) - 1) << 24) |
| #define AFE_TDM_CON1_32_BCK_CYCLES (0x2 << 12) |
| #define AFE_TDM_CON1_16_BCK_CYCLES (0x0 << 12) |
| #define AFE_TDM_CON1_8CH_PER_SDATA (0x2 << 10) |
| #define AFE_TDM_CON1_4CH_PER_SDATA (0x1 << 10) |
| #define AFE_TDM_CON1_2CH_PER_SDATA (0x0 << 10) |
| #define AFE_TDM_CON1_WLEN_32BIT BIT(9) |
| #define AFE_TDM_CON1_WLEN_16BIT BIT(8) |
| #define AFE_TDM_CON1_MSB_ALIGNED BIT(4) |
| #define AFE_TDM_CON1_1_BCK_DELAY BIT(3) |
| #define AFE_TDM_CON1_LRCK_INV BIT(2) |
| #define AFE_TDM_CON1_EN BIT(0) |
| |
| /* AFE_TDM_CON2 (0x054c) */ |
| #define AFE_TDM_CON2_SOUT_MASK GENMASK(14, 0) |
| |
| /* AFE_TDM_IN_CON1 (0x0588) */ |
| #define AFE_TDM_IN_CON1_LRCK_WIDTH(x) (((x) - 1) << 24) |
| #define AFE_TDM_IN_CON1_DISABLE_CH67 BIT(19) |
| #define AFE_TDM_IN_CON1_DISABLE_CH01 BIT(18) |
| #define AFE_TDM_IN_CON1_DISABLE_CH23 BIT(17) |
| #define AFE_TDM_IN_CON1_DISABLE_CH45 BIT(16) |
| #define AFE_TDM_IN_CON1_FAST_LRCK_CYCLE_32BCK (0x2 << 12) |
| #define AFE_TDM_IN_CON1_FAST_LRCK_CYCLE_24BCK (0x1 << 12) |
| #define AFE_TDM_IN_CON1_FAST_LRCK_CYCLE_16BCK (0x0 << 12) |
| #define AFE_TDM_IN_CON1_8CH_PER_SDATA (0x2 << 10) |
| #define AFE_TDM_IN_CON1_4CH_PER_SDATA (0x1 << 10) |
| #define AFE_TDM_IN_CON1_2CH_PER_SDATA (0x0 << 10) |
| #define AFE_TDM_IN_CON1_WLEN_32BIT (0x3 << 8) |
| #define AFE_TDM_IN_CON1_WLEN_24BIT (0x2 << 8) |
| #define AFE_TDM_IN_CON1_WLEN_16BIT (0x1 << 8) |
| #define AFE_TDM_IN_CON1_I2S BIT(3) |
| #define AFE_TDM_IN_CON1_LRCK_INV BIT(2) |
| #define AFE_TDM_IN_CON1_BCK_INV BIT(1) |
| #define AFE_TDM_IN_CON1_EN BIT(0) |
| |
| /* AFE_TDM_IN_MON2 (0x0594) */ |
| #define AFE_TDM_IN_MON2_FAST_LRCK BIT(28) |
| |
| /*AFE_SPDIF_IN*/ |
| #define AUDIO_BASE 0 |
| |
| #define AUDIO_HW_PHYSICAL_BASE AUDIO_BASE |
| #define AFE_BASE (AUDIO_HW_PHYSICAL_BASE) |
| |
| #define AFE_SPDIFIN_CFG0 (0 + 0x0900) |
| #define SPDIFIN_EN_MASK 0x1 << 0 |
| #define SPDIFIN_EN 0x1 << 0 |
| #define SPDIFIN_DIS 0x0 << 0 |
| #define SPDIFIN_FLIP_EN_MASK 0x1 << 1 |
| #define SPDIFIN_FLIP_EN 0x1 << 1 |
| #define SPDIFIN_FLIP_DIS 0x0 << 1 |
| #define SPDIFIN_INT_EN_MASK 0x1 << 6 |
| #define SPDIFIN_INT_EN 0x1 << 6 |
| #define SPDIFIN_INT_DIS 0x0 << 6 |
| #define SPDIFIN_DE_CNT_MASK 0x1F << 8 |
| #define SPDIFIN_DE_SEL_MASK 0x3 << 13 |
| #define SPDIFIN_DE_SEL_3SAMPLES 0x0 |
| #define SPDIFIN_DE_SEL_14SAMPLES 0x1 << 13 |
| #define SPDIFIN_DE_SEL_30SAMPLES 0x2 << 13 |
| #define SPDIFIN_DE_SEL_DECNT 0x3 << 13 |
| #define MAX_LEN_NUM_MASK 0xFF << 16 |
| #define SPDIFIN_INT_CHSTLR_MASK 0x1 << 28 |
| #define SPDIFIN_INT_CHSTLR_EN 0x1 << 28 |
| #define SPDIFIN_INT_CHSTLR_DIS 0x0 << 28 |
| |
| #define AFE_SPDIFIN_CFG1 (0 + 0x0904) |
| #define SPDIFIN_DATA_FROM_LOOPBACK_EN_MASK 0x1 << 14 |
| #define SPDIFIN_DATA_FROM_LOOPBACK_EN 0x1 << 14 |
| #define SPDIFIN_DATA_FROM_LOOPBACK_DIS 0x0 << 14 |
| #define SPDIFIN_INT_ERR_EN_MASK 0xFFF << 20 |
| |
| #define AFE_SPDIFIN_REAL_OPTICAL (0x0 << 14) |
| #define AFE_SPDIFIN_SWITCH_REAL_OPTICAL (0x0 << 15) |
| #define SEL_BCK_SPDIFIN (0X1 << 16) |
| #define AFE_SPDIFIN_SEL_SPDIFIN_EN (0x1 << 0) |
| #define AFE_SPDIFIN_SEL_SPDIFIN_DIS (0x0 << 0) |
| |
| #define AFE_SPDIFIN_SEL_SPDIFIN_CLK_DIS (0x0 << 1) |
| #define AFE_SPDIFIN_FIFOSTARTPOINT_5 (0x1 << 4) |
| |
| #define SPDIFIN_PRE_ERR_NON_EN (0x1 << 20) |
| #define SPDIFIN_PRE_ERR_NON_DIS (0x0 << 20) |
| #define SPDIFIN_PRE_ERR_B_EN (0x1 << 21) |
| #define SPDIFIN_PRE_ERR_B_DIS (0x0 << 21) |
| #define SPDIFIN_PRE_ERR_M_EN (0x1 << 22) |
| #define SPDIFIN_PRE_ERR_M_DIS (0x0 << 22) |
| #define SPDIFIN_PRE_ERR_W_EN (0x1 << 23) |
| #define SPDIFIN_PRE_ERR_W_DIS (0x0 << 23) |
| #define SPDIFIN_PRE_ERR_BITCNT_EN (0x1 << 24) |
| #define SPDIFIN_PRE_ERR_BITCNT_DIS (0x0 << 24) |
| #define SPDIFIN_PRE_ERR_PARITY_EN (0x1 << 25) |
| #define SPDIFIN_PRE_ERR_PARITY_DIS (0x0 << 25) |
| |
| #define SPDIFIN_FIFO_ERR_EN (0x3 << 26) |
| #define SPDIFIN_FIFO_ERR_DIS (0x0 << 26) |
| |
| #define SPDIFIN_TIMEOUT_INT_EN (0x1 << 28) |
| #define SPDIFIN_TIMEOUT_INT_DIS (0x0 << 28) |
| #define SPDIFIN_CHSTS_PREAMPHASIS_EN (0x1 << 29) // channel status and emphasis |
| #define SPDIFIN_CHSTS_PREAMPHASIS_DIS (0x0 << 29) |
| #define SPDIFIN_CHSTS_COLLECTION_MASK (0x1 << 31) // channel status and emphasis |
| #define SPDIFIN_CHSTS_COLLECTION_EN (0x1 << 31) // channel status and emphasis |
| #define SPDIFIN_CHSTS_COLLECTION_DIS (0x0 << 31) |
| #define SPDIFIN_ALL_ERR_INT_EN (SPDIFIN_PRE_ERR_NON_EN|SPDIFIN_PRE_ERR_B_EN|SPDIFIN_PRE_ERR_M_EN| \ |
| SPDIFIN_PRE_ERR_W_EN|SPDIFIN_PRE_ERR_BITCNT_EN|SPDIFIN_PRE_ERR_PARITY_EN|\ |
| SPDIFIN_TIMEOUT_INT_EN|SPDIFIN_CHSTS_PREAMPHASIS_EN | SPDIFIN_CHSTS_COLLECTION_EN) |
| |
| #define SPDIFIN_ALL_ERR_INT_DIS (SPDIFIN_PRE_ERR_NON_DIS|SPDIFIN_PRE_ERR_B_DIS|SPDIFIN_PRE_ERR_M_DIS|\ |
| SPDIFIN_PRE_ERR_W_DIS|SPDIFIN_PRE_ERR_BITCNT_DIS|SPDIFIN_PRE_ERR_PARITY_DIS|\ |
| SPDIFIN_TIMEOUT_INT_DIS|SPDIFIN_CHSTS_PREAMPHASIS_DIS | SPDIFIN_CHSTS_COLLECTION_DIS) |
| |
| #define AFE_SPDIFIN_CHSTS1 (AFE_BASE + 0x0908) |
| #define AFE_SPDIFIN_CHSTS2 (AFE_BASE + 0x090C) |
| #define AFE_SPDIFIN_CHSTS3 (AFE_BASE + 0x0910) |
| #define AFE_SPDIFIN_CHSTS4 (AFE_BASE + 0x0914) |
| #define AFE_SPDIFIN_CHSTS5 (AFE_BASE + 0x0918) |
| #define AFE_SPDIFIN_CHSTS6 (AFE_BASE + 0x091C) |
| #define AFE_SPDIFIN_DEBUG1 (0 + 0x0920) |
| #define SPDIFIN_DATA_LATCH_ERR 1 << 10 |
| |
| #define AFE_SPDIFIN_DEBUG2 (0 + 0x0924) |
| #define SPDIFIN_CHSTS_INT_MASK (0x1 << 26) |
| #define SPDIFIN_CHSTS_INT_EN (0x1 << 26) |
| #define SPDIFIN_CHSTS_INT_FLAG (0x1 << 26) |
| #define SPDIFIN_CHSTS_INT_DIS (0x0 << 26) |
| #define SPDIFIN_FIFO_ERR_STS (0x3 << 30) |
| |
| #define AFE_SPDIFIN_DEBUG3 (0 + 0x0928) |
| #define SPDIFIN_PRE_ERR_NON_STS (0x1 << 0) |
| #define SPDIFIN_PRE_ERR_B_STS (0x1 << 1) |
| #define SPDIFIN_PRE_ERR_M_STS (0x1 << 2) |
| #define SPDIFIN_PRE_ERR_W_STS (0x1 << 3) |
| #define SPDIFIN_PRE_ERR_BITCNT_STS (0x1 << 4) |
| #define SPDIFIN_PRE_ERR_PARITY_STS (0x1 << 5) |
| #define SPDIFIN_TIMEOUT_ERR_STS (0x1 << 6) |
| #define SPDIFIN_CHSTS_PREAMPHASIS_STS (0x1 << 7) |
| #define SPDIFIN_ALL_ERR_ERR_STS (SPDIFIN_PRE_ERR_NON_STS|SPDIFIN_PRE_ERR_B_STS|SPDIFIN_PRE_ERR_M_STS|\ |
| SPDIFIN_PRE_ERR_W_STS|SPDIFIN_PRE_ERR_BITCNT_STS|\ |
| SPDIFIN_PRE_ERR_PARITY_STS|SPDIFIN_TIMEOUT_ERR_STS) |
| |
| #define AFE_SPDIFIN_DEBUG4 (AFE_BASE + 0x092C) |
| #define AFE_SPDIFIN_EC (0 + 0x0930) |
| #if 0 |
| #define SPDIFIN_INT_ERR_CLEAR_MASK 0x7FFFF |
| #else |
| #define SPDIFIN_INT_ERR_CLEAR_MASK 0xFFF |
| #endif |
| #define SPDIFIN_PRE_ERR_CLEAR 0x1 << 0 |
| #define SPDIFIN_PRE_ERR_B_CLEAR 0x1 << 1 |
| #define SPDIFIN_PRE_ERR_M_CLEAR 0x1 << 2 |
| #define SPDIFIN_PRE_ERR_W_CLEAR 0x1 << 3 |
| #define SPDIFIN_PRE_ERR_BITCNT_CLEAR 0x1 << 4 |
| #define SPDIFIN_PRE_ERR_PARITY_CLEAR 0x1 << 5 |
| #define SPDIFIN_FIFO_ERR_CLEAR 0x3 << 6 |
| #define SPDIFIN_TIMEOUT_INT_CLEAR 0x1 << 8 |
| #define SPDIFIN_CHSTS_PREAMPHASIS_CLEAR 0x1 << 9 // channel status and emphasis |
| #define SPDIFIN_CHSTS_INT_CLR_MASK (0x1 << 11) // channel status int clear |
| #define SPDIFIN_CHSTS_COLLECTION_CLEAR (0x1 << 11) |
| #define SPDIFIN_CHSTS_INT_CLR_EN (0x1 << 11) // channel status |
| #define SPDIFIN_DATA_LRCK_CHANGE_CLEAR 0x1 << 16 |
| #define SPDIFIN_DATA_LATCH_CLEAR 0x1 << 17 |
| #if 0 |
| #define SPDIFIN_INT_CLEAR_ALL SPDIFIN_INT_ERR_CLEAR_MASK |
| #else |
| #define SPDIFIN_INT_CLEAR_ALL (SPDIFIN_PRE_ERR_CLEAR|SPDIFIN_PRE_ERR_B_CLEAR|SPDIFIN_PRE_ERR_M_CLEAR|\ |
| SPDIFIN_PRE_ERR_W_CLEAR|SPDIFIN_FIFO_ERR_CLEAR|SPDIFIN_PRE_ERR_BITCNT_CLEAR|\ |
| SPDIFIN_PRE_ERR_PARITY_CLEAR|SPDIFIN_TIMEOUT_INT_CLEAR|SPDIFIN_CHSTS_PREAMPHASIS_CLEAR|\ |
| SPDIFIN_DATA_LATCH_CLEAR|SPDIFIN_CHSTS_COLLECTION_CLEAR) |
| #endif |
| |
| #define AFE_SPDIFIN_BR (0 + 0x093C) |
| #define AFE_SPDIFIN_BRE_MASK 0x1 << 0 |
| #define AFE_SPDIFIN_BR_FS_MASK 0x7 << 4 |
| #define AFE_SPDIFIN_BR_FS_256 0x3 << 4 |
| #define AFE_SPDIFIN_BR_SUBFRAME_MASK 0xF << 8 |
| #define AFE_SPDIFIN_BR_SUBFRAME_256 0x8 << 8 |
| #define AFE_SPDIFIN_BR_LOWBOUND_MASK 0x1F << 12 |
| #define AFE_SPDIFIN_BR_TUNE_MODE_MASK 0x3 << 17 |
| #define AFE_SPDIFIN_BR_TUNE_MODE0 0x0 << 17 |
| #define AFE_SPDIFIN_BR_TUNE_MODE1 0x1 << 17 |
| #define AFE_SPDIFIN_BR_TUNE_MODE2 0x2 << 17 |
| #define AFE_SPDIFIN_BR_TUNE_MODE1_D 0x3 << 17 |
| |
| #define AFE_SPDIFIN_BR_DBG1 (AFE_BASE + 0x0940) |
| |
| #define AFE_SPDIFIN_INT_EXT (0 + 0x0948) |
| #define MULTI_INPUT_DETECT_SEL_MASK 0xF << 8 |
| #define MULTI_INPUT_DETECT_SEL_OPT 0x1 << 8 |
| #define MULTI_INPUT_DETECT_SEL_COA 0x2 << 8 |
| #define MULTI_INPUT_DETECT_SEL_ARC 0x4 << 8 |
| #define MULTI_INPUT_SEL_MASK 0x3 << 14 |
| #define MULTI_INPUT_SEL_OPT 0x0 << 14 |
| #define MULTI_INPUT_SEL_COA 0x1 << 14 |
| #define MULTI_INPUT_SEL_ARC 0x2 << 14 |
| #define MULTI_INPUT_SEL_LOW 0x3 << 14 |
| #define SPDIFIN_DATALATCH_ERR_EN_MASK 0x1 << 17 |
| #define SPDIFIN_DATALATCH_ERR_EN 0x1 << 17 |
| #define SPDIFIN_DATALATCH_ERR_DIS 0x0 << 17 |
| #define MULTI_INPUT_STATUS_MASK 0xF << 28 |
| #define MULTI_INPUT_STATUS_OPT 0x1 << 28 |
| #define MULTI_INPUT_STATUS_COA 0x2 << 28 |
| #define MULTI_INPUT_STATUS_ARC 0x4 << 28 |
| |
| #define AFE_SPDIFIN_INT_EXT2 (0 + 0x094C) |
| #define SPDIFIN_LRC_MASK 0x7FFF |
| #define SPDIFIN_LRC_COMPARE_594M 0x173 |
| #define SPDIFIN_LRCK_CHG_INT_MASK 0x1 << 15 |
| #define SPDIFIN_LRCK_CHG_INT_EN 0x1 << 15 |
| #define SPDIFIN_LRCK_CHG_INT_DIS 0x0 << 15 |
| #define SPDIFIN_432MODE_MASK 0x1 << 16 |
| #define SPDIFIN_432MODE_EN 0x1 << 16 |
| #define SPDIFIN_432MODE_DIS 0x0 << 16 |
| |
| #define SPDIFIN_MODE_CLK_MASK 0x3 << 16 |
| |
| #define SPDIFIN_594MODE_MASK 0x1 << 17 |
| #define SPDIFIN_594MODE_EN 0x1 << 17 |
| #define SPDIFIN_594MODE_DIS 0x0 << 17 |
| #define SPDIFIN_LRCK_CHG_INT_STS 0x1 << 27 |
| #define SPDIFIN_ROUGH_FS_MASK 0xF << 28 |
| #define SPDIFIN_ROUGH_FS_32K 0x1 << 28 |
| #define SPDIFIN_ROUGH_FS_44K 0x2 << 28 |
| #define SPDIFIN_ROUGH_FS_48K 0x3 << 28 |
| #define SPDIFIN_ROUGH_FS_64K 0x4 << 28 |
| #define SPDIFIN_ROUGH_FS_88K 0x5 << 28 |
| #define SPDIFIN_ROUGH_FS_96K 0x6 << 28 |
| #define SPDIFIN_ROUGH_FS_128K 0x7 << 28 |
| #define SPDIFIN_ROUGH_FS_144K 0x8 << 28 |
| #define SPDIFIN_ROUGH_FS_176K 0x9 << 28 |
| #define SPDIFIN_ROUGH_FS_192K 0xA << 28 |
| #define SPDIFIN_ROUGH_FS_216K 0xB << 28 |
| |
| #define SPDIFIN_FREQ_INFO (0 + 0x0950) |
| #define SPDIFIN_FREQ_INFO_2 (0 + 0x0954) |
| #define SPDIFIN_FREQ_INFO_3 (0 + 0x0958) |
| #define SPDIFIN_FREQ_STATUS (AFE_BASE + 0x095C) |
| #define SPDIFIN_FREQ_USERCODE1 (AFE_BASE + 0x0960) |
| #define SPDIFIN_FREQ_USERCODE2 (AFE_BASE + 0x0964) |
| #define SPDIFIN_FREQ_USERCODE3 (AFE_BASE + 0x0968) |
| #define SPDIFIN_FREQ_USERCODE4 (AFE_BASE + 0x096C) |
| #define SPDIFIN_FREQ_USERCODE5 (AFE_BASE + 0x0970) |
| #define SPDIFIN_FREQ_USERCODE6 (AFE_BASE + 0x0974) |
| #define SPDIFIN_FREQ_USERCODE7 (AFE_BASE + 0x0978) |
| #define SPDIFIN_FREQ_USERCODE8 (AFE_BASE + 0x097C) |
| #define SPDIFIN_FREQ_USERCODE9 (AFE_BASE + 0x0980) |
| #define SPDIFIN_FREQ_USERCODE10 (AFE_BASE + 0x0984) |
| #define SPDIFIN_FREQ_USERCODE11 (AFE_BASE + 0x0988) |
| #define SPDIFIN_FREQ_USERCODE12 (AFE_BASE + 0x098C) |
| #define SPDIFIN_MEMIF_CON0 (0x0990) |
| #define SPDIFIN_IN_MEMIF_EN_MASK 0x1 << 0 |
| #define SPDIFIN_IN_MEMIF_EN 0x1 << 0 |
| #define SPDIFIN_IN_MEMIF_DIS 0x0 << 0 |
| |
| #define SPDIFIN_BASE_ADR (0x0994) |
| #define SPDIFIN_END_ADR (0x0998) |
| #define SPDIFIN_APLL_TUNER_CFG (AFE_BASE + 0x09A0) |
| #define SPDIFIN_APLL_TUNER_CFG1 (AFE_BASE + 0x09A4) |
| #define SPDIFIN_APLL2_TUNER_CFG (AFE_BASE + 0x09A8) |
| #define SPDIFIN_APLL2_TUNER_CFG1 (AFE_BASE + 0x09AC) |
| #define SPDIFIN_TYPE_DET (AFE_BASE + 0x09B0) |
| #define MPHONE_MULTI_CON0 (0x09B4) |
| #define MULTI_HW_EN_MASK 0x1 |
| #define MULTI_HW_EN 0x1 |
| #define MULTI_HW_DIS 0x0 |
| #define MULTI_STORE_TYPE_MASK 0x1 << 1 |
| #define MULTI_STORE_24BIT 0x1 << 1 |
| #define MULTI_STORE_16BIT 0x0 |
| #define MULTI_INT_PERIOD_MASK 0x3 << 4 |
| #define MULTI_INT_PERIOD_64 0x1 << 4 |
| #define MULTI_INT_PERIOD_128 0x2 << 4 |
| #define MULTI_INT_PERIOD_256 0x3 << 4 |
| |
| #define SPDIFIN_CUR_ADR (0x09B8) |
| #define AFE_SINEGEN_CON_SPDIFIN (AFE_BASE + 0x09BC) |
| |
| #endif |