| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_DEVICES_LIB_AMLOGIC_INCLUDE_SOC_AML_S912_S912_AUDIO_H_ |
| #define SRC_DEVICES_LIB_AMLOGIC_INCLUDE_SOC_AML_S912_S912_AUDIO_H_ |
| |
| #define AIU_958_BPF ((uint32_t)(0x00 << 2)) |
| #define AIU_958_BRST ((uint32_t)(0x01 << 2)) |
| #define AIU_958_LENGTH ((uint32_t)(0x02 << 2)) |
| #define AIU_958_PADDSIZE ((uint32_t)(0x03 << 2)) |
| #define AIU_958_MISC ((uint32_t)(0x04 << 2)) |
| #define AIU_958_FORCE_LEFT ((uint32_t)(0x05 << 2)) |
| #define AIU_958_DISCARD_NUM ((uint32_t)(0x06 << 2)) |
| #define AIU_958_DCU_FF_CTRL ((uint32_t)(0x07 << 2)) |
| #define AIU_958_CHSTAT_L0 ((uint32_t)(0x08 << 2)) |
| #define AIU_958_CHSTAT_L1 ((uint32_t)(0x09 << 2)) |
| #define AIU_958_CTRL ((uint32_t)(0x0A << 2)) |
| #define AIU_958_RPT ((uint32_t)(0x0B << 2)) |
| #define AIU_I2S_MUTE_SWAP ((uint32_t)(0x0C << 2)) |
| #define AIU_I2S_SOURCE_DESC ((uint32_t)(0x0D << 2)) |
| #define AIU_I2S_MED_CTRL ((uint32_t)(0x0E << 2)) |
| #define AIU_I2S_MED_THRESH ((uint32_t)(0x0F << 2)) |
| #define AIU_I2S_DAC_CFG ((uint32_t)(0x10 << 2)) |
| #define AIU_I2S_MISC ((uint32_t)(0x12 << 2)) |
| #define AIU_I2S_OUT_CFG ((uint32_t)(0x13 << 2)) |
| #define AIU_RST_SOFT ((uint32_t)(0x15 << 2)) |
| #define AIU_CLK_CTRL ((uint32_t)(0x16 << 2)) |
| #define AIU_MIX_ADCCFG ((uint32_t)(0x17 << 2)) |
| #define AIU_MIX_CTRL ((uint32_t)(0x18 << 2)) |
| #define AIU_CLK_CTRL_MORE ((uint32_t)(0x19 << 2)) |
| #define AIU_958_POP ((uint32_t)(0x1A << 2)) |
| #define AIU_MIX_GAIN ((uint32_t)(0x1B << 2)) |
| #define AIU_958_SYNWORD1 ((uint32_t)(0x1C << 2)) |
| #define AIU_958_SYNWORD2 ((uint32_t)(0x1D << 2)) |
| #define AIU_958_SYNWORD3 ((uint32_t)(0x1E << 2)) |
| #define AIU_958_SYNWORD1_MASK ((uint32_t)(0x1F << 2)) |
| #define AIU_958_SYNWORD2_MASK ((uint32_t)(0x20 << 2)) |
| #define AIU_958_SYNWORD3_MASK ((uint32_t)(0x21 << 2)) |
| #define AIU_958_FFRDOUT_THD ((uint32_t)(0x22 << 2)) |
| #define AIU_958_LENGTH_PER_PAUSE ((uint32_t)(0x23 << 2)) |
| #define AIU_958_PAUSE_NUM ((uint32_t)(0x24 << 2)) |
| #define AIU_958_PAUSE_PAYLOAD ((uint32_t)(0x25 << 2)) |
| #define AIU_958_AUTO_PAUSE ((uint32_t)(0x26 << 2)) |
| #define AIU_958_PAUSE_PD_LENGTH ((uint32_t)(0x27 << 2)) |
| #define AIU_CODEC_DAC_LRCLK_CTRL ((uint32_t)(0x28 << 2)) |
| #define AIU_CODEC_ADC_LRCLK_CTRL ((uint32_t)(0x29 << 2)) |
| #define AIU_HDMI_CLK_DATA_CTRL ((uint32_t)(0x2a << 2)) |
| #define AIU_CODEC_CLK_DATA_CTRL ((uint32_t)(0x2b << 2)) |
| #define AIU_958_CHSTAT_R0 ((uint32_t)(0x30 << 2)) |
| #define AIU_958_CHSTAT_R1 ((uint32_t)(0x31 << 2)) |
| #define AIU_958_VALID_CTRL ((uint32_t)(0x32 << 2)) |
| #define AIU_AIFIFO2_CTRL ((uint32_t)(0x40 << 2)) |
| #define AIU_AIFIFO2_STATUS ((uint32_t)(0x41 << 2)) |
| #define AIU_AIFIFO2_GBIT ((uint32_t)(0x42 << 2)) |
| #define AIU_AIFIFO2_CLB ((uint32_t)(0x43 << 2)) |
| #define AIU_CRC_CTRL ((uint32_t)(0x44 << 2)) |
| #define AIU_CRC_STATUS ((uint32_t)(0x45 << 2)) |
| #define AIU_CRC_SHIFT_REG ((uint32_t)(0x46 << 2)) |
| #define AIU_CRC_IREG ((uint32_t)(0x47 << 2)) |
| #define AIU_CRC_CAL_REG1 ((uint32_t)(0x48 << 2)) |
| #define AIU_CRC_CAL_REG0 ((uint32_t)(0x49 << 2)) |
| #define AIU_CRC_POLY_COEF1 ((uint32_t)(0x4a << 2)) |
| #define AIU_CRC_POLY_COEF0 ((uint32_t)(0x4b << 2)) |
| #define AIU_CRC_BIT_SIZE1 ((uint32_t)(0x4c << 2)) |
| #define AIU_CRC_BIT_SIZE0 ((uint32_t)(0x4d << 2)) |
| #define AIU_CRC_BIT_CNT1 ((uint32_t)(0x4e << 2)) |
| #define AIU_CRC_BIT_CNT0 ((uint32_t)(0x4f << 2)) |
| #define AIU_AMCLK_GATE_HI ((uint32_t)(0x50 << 2)) |
| #define AIU_AMCLK_GATE_LO ((uint32_t)(0x51 << 2)) |
| #define AIU_AMCLK_MSR ((uint32_t)(0x52 << 2)) |
| #define AIU_MEM_I2S_START_PTR ((uint32_t)(0x60 << 2)) |
| #define AIU_MEM_I2S_RD_PTR ((uint32_t)(0x61 << 2)) |
| #define AIU_MEM_I2S_END_PTR ((uint32_t)(0x62 << 2)) |
| #define AIU_MEM_I2S_MASKS ((uint32_t)(0x63 << 2)) |
| #define AIU_MEM_I2S_CONTROL ((uint32_t)(0x64 << 2)) |
| #define AIU_MEM_IEC958_START_PTR ((uint32_t)(0x65 << 2)) |
| #define AIU_MEM_IEC958_RD_PTR ((uint32_t)(0x66 << 2)) |
| #define AIU_MEM_IEC958_END_PTR ((uint32_t)(0x67 << 2)) |
| #define AIU_MEM_IEC958_MASKS ((uint32_t)(0x68 << 2)) |
| #define AIU_MEM_IEC958_CONTROL ((uint32_t)(0x69 << 2)) |
| #define AIU_MEM_AIFIFO2_START_PTR ((uint32_t)(0x6a << 2)) |
| #define AIU_MEM_AIFIFO2_CURR_PTR ((uint32_t)(0x6b << 2)) |
| #define AIU_MEM_AIFIFO2_END_PTR ((uint32_t)(0x6c << 2)) |
| #define AIU_MEM_AIFIFO2_BYTES_AVAIL ((uint32_t)(0x6d << 2)) |
| #define AIU_MEM_AIFIFO2_CONTROL ((uint32_t)(0x6e << 2)) |
| #define AIU_MEM_AIFIFO2_MAN_WP ((uint32_t)(0x6f << 2)) |
| #define AIU_MEM_AIFIFO2_MAN_RP ((uint32_t)(0x70 << 2)) |
| #define AIU_MEM_AIFIFO2_LEVEL ((uint32_t)(0x71 << 2)) |
| #define AIU_MEM_AIFIFO2_BUF_CNTL ((uint32_t)(0x72 << 2)) |
| #define AIU_MEM_I2S_MAN_WP ((uint32_t)(0x73 << 2)) |
| #define AIU_MEM_I2S_MAN_RP ((uint32_t)(0x74 << 2)) |
| #define AIU_MEM_I2S_LEVEL ((uint32_t)(0x75 << 2)) |
| #define AIU_MEM_I2S_BUF_CNTL ((uint32_t)(0x76 << 2)) |
| #define AIU_MEM_I2S_BUF_WRAP_COUNT ((uint32_t)(0x77 << 2)) |
| #define AIU_MEM_I2S_MEM_CTL ((uint32_t)(0x78 << 2)) |
| #define AIU_MEM_IEC958_MEM_CTL ((uint32_t)(0x79 << 2)) |
| #define AIU_MEM_IEC958_WRAP_COUNT ((uint32_t)(0x7a << 2)) |
| #define AIU_MEM_IEC958_IRQ_LEVEL ((uint32_t)(0x7b << 2)) |
| #define AIU_MEM_IEC958_MAN_WP ((uint32_t)(0x7c << 2)) |
| #define AIU_MEM_IEC958_MAN_RP ((uint32_t)(0x7d << 2)) |
| #define AIU_MEM_IEC958_LEVEL ((uint32_t)(0x7e << 2)) |
| #define AIU_MEM_IEC958_BUF_CNTL ((uint32_t)(0x7f << 2)) |
| #define AIU_AIFIFO_CTRL ((uint32_t)(0x80 << 2)) |
| #define AIU_AIFIFO_STATUS ((uint32_t)(0x81 << 2)) |
| #define AIU_AIFIFO_GBIT ((uint32_t)(0x82 << 2)) |
| #define AIU_AIFIFO_CLB ((uint32_t)(0x83 << 2)) |
| #define AIU_MEM_AIFIFO_START_PTR ((uint32_t)(0x84 << 2)) |
| #define AIU_MEM_AIFIFO_CURR_PTR ((uint32_t)(0x85 << 2)) |
| #define AIU_MEM_AIFIFO_END_PTR ((uint32_t)(0x86 << 2)) |
| #define AIU_MEM_AIFIFO_BYTES_AVAIL ((uint32_t)(0x87 << 2)) |
| #define AIU_MEM_AIFIFO_CONTROL ((uint32_t)(0x88 << 2)) |
| #define AIU_MEM_AIFIFO_MAN_WP ((uint32_t)(0x89 << 2)) |
| #define AIU_MEM_AIFIFO_MAN_RP ((uint32_t)(0x8a << 2)) |
| #define AIU_MEM_AIFIFO_LEVEL ((uint32_t)(0x8b << 2)) |
| #define AIU_MEM_AIFIFO_BUF_CNTL ((uint32_t)(0x8c << 2)) |
| #define AIU_MEM_AIFIFO_BUF_WRAP_COUNT ((uint32_t)(0x8d << 2)) |
| #define AIU_MEM_AIFIFO2_BUF_WRAP_COUNT ((uint32_t)(0x8e << 2)) |
| #define AIU_MEM_AIFIFO_MEM_CTL ((uint32_t)(0x8f << 2)) |
| #define AIU_AIFIFO_TIME_STAMP_CNTL ((uint32_t)(0x90 << 2)) |
| #define AIU_AIFIFO_TIME_STAMP_SYNC_0 ((uint32_t)(0x91 << 2)) |
| #define AIU_AIFIFO_TIME_STAMP_SYNC_1 ((uint32_t)(0x92 << 2)) |
| #define AIU_AIFIFO_TIME_STAMP_0 ((uint32_t)(0x93 << 2)) |
| #define AIU_AIFIFO_TIME_STAMP_1 ((uint32_t)(0x94 << 2)) |
| #define AIU_AIFIFO_TIME_STAMP_2 ((uint32_t)(0x95 << 2)) |
| #define AIU_AIFIFO_TIME_STAMP_3 ((uint32_t)(0x96 << 2)) |
| #define AIU_AIFIFO_TIME_STAMP_LENGTH ((uint32_t)(0x97 << 2)) |
| #define AIU_AIFIFO2_TIME_STAMP_CNTL ((uint32_t)(0x98 << 2)) |
| #define AIU_AIFIFO2_TIME_STAMP_SYNC_0 ((uint32_t)(0x99 << 2)) |
| #define AIU_AIFIFO2_TIME_STAMP_SYNC_1 ((uint32_t)(0x9a << 2)) |
| #define AIU_AIFIFO2_TIME_STAMP_0 ((uint32_t)(0x9b << 2)) |
| #define AIU_AIFIFO2_TIME_STAMP_1 ((uint32_t)(0x9c << 2)) |
| #define AIU_AIFIFO2_TIME_STAMP_2 ((uint32_t)(0x9d << 2)) |
| #define AIU_AIFIFO2_TIME_STAMP_3 ((uint32_t)(0x9e << 2)) |
| #define AIU_AIFIFO2_TIME_STAMP_LENGTH ((uint32_t)(0x9f << 2)) |
| #define AIU_IEC958_TIME_STAMP_CNTL ((uint32_t)(0xa0 << 2)) |
| #define AIU_IEC958_TIME_STAMP_SYNC_0 ((uint32_t)(0xa1 << 2)) |
| #define AIU_IEC958_TIME_STAMP_SYNC_1 ((uint32_t)(0xa2 << 2)) |
| #define AIU_IEC958_TIME_STAMP_0 ((uint32_t)(0xa3 << 2)) |
| #define AIU_IEC958_TIME_STAMP_1 ((uint32_t)(0xa4 << 2)) |
| #define AIU_IEC958_TIME_STAMP_2 ((uint32_t)(0xa5 << 2)) |
| #define AIU_IEC958_TIME_STAMP_3 ((uint32_t)(0xa6 << 2)) |
| #define AIU_IEC958_TIME_STAMP_LENGTH ((uint32_t)(0xa7 << 2)) |
| #define AIU_MEM_AIFIFO2_MEM_CTL ((uint32_t)(0xa8 << 2)) |
| #define AIU_I2S_CBUS_DDR_CNTL ((uint32_t)(0xa9 << 2)) |
| #define AIU_I2S_CBUS_DDR_WDATA ((uint32_t)(0xaa << 2)) |
| #define AIU_I2S_CBUS_DDR_ADDR ((uint32_t)(0xab << 2)) |
| |
| #define AIU_REG_MASK(bits) ((uint32_t)((1u << (bits)) - 1)) |
| |
| // Bitfield defs for the IEC958 Misc reg (0x04) |
| #define AIU_958_MISC_NON_PCM ((uint32_t)(1u << 0)) |
| #define AIU_958_MISC_16BIT ((uint32_t)(1u << 1)) |
| #define AIU_958_MISC_INVERT_MSB ((uint32_t)(1u << 2)) |
| #define AIU_958_MISC_EXTEND_MSB ((uint32_t)(1u << 3)) |
| #define AIU_958_MISC_TX_MSB_FIRST ((uint32_t)(1u << 4)) |
| #define AIU_958_MISC_16BIT_ALIGN_MASK AIU_REG_MASK(2) |
| #define AIU_958_MISC_16BIT_ALIGN_SHIFT ((uint32_t)(5u)) |
| #define AIU_958_MISC_32BIT_MODE ((uint32_t)(1u << 7)) |
| #define AIU_958_MISC_32BIT_SHIFT_MASK AIU_REG_MASK(3) |
| #define AIU_958_MISC_32BIT_SHIFT_SHIFT ((uint32_t)8u) |
| #define AIU_958_MISC_BIG_ENDIAN ((uint32_t)(1u << 11)) |
| #define AIU_958_MISC_STREAM_USER_DATA ((uint32_t)(1u << 12)) |
| #define AIU_958_MISC_FORCE_LR ((uint32_t)(1u << 13)) |
| #define AIU_958_MISC_PCM_SAMP_CTRL_MASK AIU_REG_MASK(2) |
| #define AIU_958_MISC_PCM_SAMP_CTRL_SHIFT ((uint32_t)14u) |
| |
| // Constants for the Misc alignment field. |
| // RIGHT: 16 bit samples are transmitted as (00000000b | Sample) |
| // CENTER: 16 bit samples are transmitted as (0000b | Sample | 0000b) |
| // LEFT: 16 bit samples are transmitted as (Sample | 00000000b) |
| #define AIU_958_MISC_16BIT_ALIGN_RIGHT ((uint32_t)0x00) |
| #define AIU_958_MISC_16BIT_ALIGN_CENTER ((uint32_t)0x01) |
| #define AIU_958_MISC_16BIT_ALIGN_LEFT ((uint32_t)0x02) |
| |
| // Constants for the Misc PCM sample control field. |
| #define AIU_958_MISC_PCM_SAMP_CTRL_NO_SAMPLE ((uint32_t)0x00) |
| #define AIU_958_MISC_PCM_SAMP_CTRL_UP ((uint32_t)0x01) |
| #define AIU_958_MISC_PCM_SAMP_CTRL_DOWN ((uint32_t)0x02) |
| #define AIU_958_MISC_PCM_SAMP_CTRL_DOWN_DROP ((uint32_t)0x03) |
| |
| // Bitfield defs for the IEC958 FIFO control reg (0x07) |
| #define AIU_958_DCU_FF_CTRL_ENB ((uint32_t)(1u << 0)) |
| #define AIU_958_DCU_FF_CTRL_AUTO_DISABLE ((uint32_t)(1u << 1)) |
| #define AIU_958_DCU_FF_CTRL_IRQ_MODE_MASK AIU_REG_MASK(2u) |
| #define AIU_958_DCU_FF_CTRL_IRQ_MODE_SHIFT ((uint32_t)2u) |
| #define AIU_958_DCU_FF_CTRL_SYNC_HEAD_SEEK_ENB ((uint32_t)(1u << 4)) |
| #define AIU_958_DCU_FF_CTRL_BYTE_SEEK_ENB ((uint32_t)(1u << 5)) |
| #define AIU_958_DCU_FF_CTRL_CONT_SEEK ((uint32_t)(1u << 6)) |
| #define AIU_958_DCU_FF_CTRL_8BIT ((uint32_t)(1u << 7)) |
| #define AIU_958_DCU_FF_CTRL_FIFO_CNT_MASK AIU_REG_MASK(8u) |
| #define AIU_958_DCU_FF_CTRL_FIFO_CNT_SHIFT ((uint32_t)8u) |
| |
| // Bitfield defs for the IEC958 control reg (0x0A) |
| #define AIU_958_CTRL_HOLD_INTERFACE ((uint32_t)(1u << 0)) |
| #define AIU_958_CTRL_SWAP_CHAN_MASK AIU_REG_MASK(2u) |
| #define AIU_958_CTRL_SWAP_CHAN_SHIFT ((uint32_t)1u) |
| #define AIU_958_CTRL_MUTE_RIGHT ((uint32_t)(1u << 3)) |
| #define AIU_958_CTRL_MUTE_LEFT ((uint32_t)(1u << 4)) |
| #define AIU_958_CTRL_MUTE_CONSTANT_MASK AIU_REG_MASK(3u) |
| #define AIU_958_CTRL_MUTE_CONSTANT_SHIFT ((uint32_t)5u) |
| #define AIU_958_CTRL_FUB_MASK AIU_REG_MASK(2u) |
| #define AIU_958_CTRL_FUB_SHIFT ((uint32_t)8u) |
| |
| // Constants for the MUTE_CONSTANT field of the 958_CTRL register |
| // ZERO: 0x000000 |
| // 24BIT_UZERO: 0x800000 |
| // 20BIT_UZERO: 0x080000 |
| // 16BIT_UZERO: 0x008000 |
| // 24BIT_ONE: 0x000001 |
| // 20BIT_ONE: 0x000010 |
| // 16BIT_ONE: 0x000100 |
| #define AIU_958_CTRL_MC_ZERO ((uint32_t)0u) |
| #define AIU_958_CTRL_MC_24BIT_UZERO ((uint32_t)1u) |
| #define AIU_958_CTRL_MC_20BIT_UZERO ((uint32_t)2u) |
| #define AIU_958_CTRL_MC_16BIT_UZERO ((uint32_t)3u) |
| #define AIU_958_CTRL_MC_24BIT_ONE ((uint32_t)4u) |
| #define AIU_958_CTRL_MC_20BIT_ONE ((uint32_t)5u) |
| #define AIU_958_CTRL_MC_16BIT_ONE ((uint32_t)6u) |
| |
| // Constants for the FIFO underrun behavior (FUB) field of the 958_CTRL register |
| // ZERO : fill with 0x000000 |
| // MUTE_CONSTANT : fill with the selected mute constant |
| // REPEAT_LAST : repeat the last LR frame |
| #define AIU_958_CTRL_FUB_ZERO ((uint32_t)0u) |
| #define AIU_958_CTRL_FUB_MUTE_CONSTANT ((uint32_t)1u) |
| #define AIU_958_CTRL_FUB_REPEAT_LAST ((uint32_t)2u) |
| |
| // Bitfield defs for RST_SOFT (0x15) |
| #define AIU_RS_I2S_FAST_DOMAIN ((uint32_t)(1u << 0)) |
| #define AIU_RS_I2S_SLOW_DOMAIN ((uint32_t)(1u << 1)) |
| #define AIU_RS_958_FAST_DOMAIN ((uint32_t)(1u << 2)) |
| #define AIU_RS_958_SLOW_DOMAIN ((uint32_t)(1u << 3)) |
| |
| // Bitfield defs for CLK_CTRL (0x16) |
| #define AIU_CLK_CTRL_ENB_I2S_DIV ((uint32_t)(1u << 0)) |
| #define AIU_CLK_CTRL_ENB_958_DIV ((uint32_t)(1u << 1)) |
| #define AIU_CLK_CTRL_I2S_DIV_MASK AIU_REG_MASK(2u) |
| #define AIU_CLK_CTRL_I2S_DIV_SHIFT ((uint32_t)2u) |
| #define AIU_CLK_CTRL_958_DIV_MASK AIU_REG_MASK(2u) |
| #define AIU_CLK_CTRL_958_DIV_SHIFT ((uint32_t)4u) |
| #define AIU_CLK_CTRL_INV_AO_CLK ((uint32_t)(1u << 6)) |
| #define AIU_CLK_CTRL_INV_ALR_CLK ((uint32_t)(1u << 7)) |
| #define AIU_CLK_CTRL_ALR_SKEW_MASK AIU_REG_MASK(2u) |
| #define AIU_CLK_CTRL_ALR_SKEW_SHIFT ((uint32_t)8u) |
| #define AIU_CLK_CTRL_CLK_SOURCE_SEL ((uint32_t)(1u << 10)) |
| #define AIU_CLK_CTRL_AMCLK_OUT_DIV ((uint32_t)(1u << 11)) |
| #define AIU_CLK_CTRL_958_DIV_MORE ((uint32_t)(1u << 12)) |
| #define AIU_CLK_CTRL_958_DIV_MORE ((uint32_t)(1u << 12)) |
| #define AIU_CLK_CTRL_PA_ADDR_SEL_MASK AIU_REG_MASK(2u) |
| #define AIU_CLK_CTRL_PA_ADDR_SEL_SHIFT ((uint32_t)13u) |
| #define AIU_CLK_CTRL_ENB_DDR_ARB ((uint32_t)(1u << 15)) |
| |
| // Constants for the ALR Clk skew field |
| // SAME_TIME: ALR clk transitions as the MSB is sent |
| // BEFORE: ALR clk transitions 1 cycle before the MSB is sent |
| // AFTER: ALR clk transitions 1 cycle after the MSB is sent |
| #define AIU_CLK_CTRL_ALR_SKEW_SAME_TIME ((uint32_t)0x00) |
| #define AIU_CLK_CTRL_ALR_SKEW_BEFORE ((uint32_t)0x01) |
| #define AIU_CLK_CTRL_ALR_SKEW_AFTER ((uint32_t)0x02) |
| |
| // Constants for the Parser-A Addr Select field |
| #define AIU_CLK_CTRL_PAAS_AFIFO2 ((uint32_t)0x00) |
| #define AIU_CLK_CTRL_PAAS_IEC958 ((uint32_t)0x01) |
| #define AIU_CLK_CTRL_PAAS_AFIFO ((uint32_t)0x02) |
| #define AIU_CLK_CTRL_PAAS_I2S ((uint32_t)0x03) |
| |
| // Bitfield defs for the Valid register (0x32) |
| #define AIU_958_VCTRL_VBIT ((uint32_t)(1u << 0)) |
| #define AIU_958_VCTRL_SEND_VBIT ((uint32_t)(1u << 1)) |
| |
| // Bitfield defs for the IEC958 Masks reg (0x68) |
| #define AIU_MEM_IEC958_MASKS_CHAN_RD_MASK AIU_REG_MASK(8) |
| #define AIU_MEM_IEC958_MASKS_CHAN_RD_SHIFT ((uint32_t)0u) |
| #define AIU_MEM_IEC958_MASKS_CHAN_MEM_MASK AIU_REG_MASK(8) |
| #define AIU_MEM_IEC958_MASKS_CHAN_MEM_SHIFT ((uint32_t)8u) |
| |
| // Bitfield defs for the IEC958 Mem Control reg (0x69) |
| #define AIU_958_MCTRL_INIT ((uint32_t)(1u << 0)) |
| #define AIU_958_MCTRL_FILL_ENB ((uint32_t)(1u << 1)) |
| #define AIU_958_MCTRL_EMPTY_ENB ((uint32_t)(1u << 2)) |
| #define AIU_958_MCTRL_ENDIAN_MASK AIU_REG_MASK(3) |
| #define AIU_958_MCTRL_ENDIAN_SHIFT ((uint32_t)3u) |
| #define AIU_958_MCTRL_RD_DDR ((uint32_t)(1u << 6)) |
| #define AIU_958_MCTRL_16BIT_MODE ((uint32_t)(1u << 7)) |
| #define AIU_958_MCTRL_LINEAR_RAW ((uint32_t)(1u << 8)) |
| #define AIU_958_MCTRL_ENDIAN_JIC ((uint32_t)(1u << 9)) |
| #define AIU_958_MCTRL_FETCHING_DDR ((uint32_t)(1u << 10)) |
| #define AIU_958_MCTRL_FIFO_HAS_DATA ((uint32_t)(1u << 11)) |
| #define AIU_958_MCTRL_USE_LEVEL ((uint32_t)(1u << 12)) |
| #define AIU_958_MCTRL_SIM_ENB ((uint32_t)(1u << 13)) |
| #define AIU_958_MCTRL_RD_DATA_BASE_BEGIN_MASK AIU_REG_MASK(4) |
| #define AIU_958_MCTRL_RD_DATA_BASE_BEGIN_SHIFT ((uint32_t)24u) |
| #define AIU_958_MCTRL_CH_ALWAYS_8 ((uint32_t)(1u << 30)) |
| #define AIU_958_MCTRL_A_URGENT ((uint32_t)(1u << 31)) |
| |
| // Bitfield defs for the IEC958 Buf Control reg (0x7f) |
| #define AIU_958_BCTRL_LEVEL_HOLD_MASK AIU_REG_MASK(16) |
| #define AIU_958_BCTRL_LEVEL_HOLD_SHIFT ((uint32_t)0u) |
| #define AIU_958_BCTRL_A_ID_MASK AIU_REG_MASK(6) |
| #define AIU_958_BCTRL_A_ID_SHIFT ((uint32_t)16u) |
| #define AIU_958_BCTRL_A_BRST_NUM_MASK AIU_REG_MASK(6) |
| #define AIU_958_BCTRL_A_BRST_NUM_SHIFT ((uint32_t)22u) |
| |
| // Flags that can be set in the low 32 bits a SPDIF channel status word. Note, |
| // these do not have anything specific to do with AmLogic audio units, but it is |
| // as good a place as any to put some definitions. |
| // |
| // See |
| // https://en.wikipedia.org/wiki/S/PDIF |
| // http://www.av-iq.com/avcat/images/documents/pdfs/digaudiochannelstatusbits.pdf |
| // http://www.minidisc.org/spdif_c_channel.html |
| // https://hackaday.io/project/24911-propeller-spdif-receiver/details |
| // For some publicly available details about the meaning of these bits |
| // |
| #define SPDIF_CS_SPDIF_CONSUMER ((uint32_t)(0u << 0)) |
| #define SPDIF_CS_AES_PRO ((uint32_t)(1u << 0)) |
| #define SPDIF_CS_AUD_DATA_PCM ((uint32_t)(0u << 1)) |
| #define SPDIF_CS_AUD_DATA_NON_PCM ((uint32_t)(1u << 1)) |
| #define SPDIF_CS_COPY_DENIED ((uint32_t)(0u << 2)) |
| #define SPDIF_CS_COPY_PERMITTED ((uint32_t)(1u << 2)) |
| #define SPDIF_CS_NO_PRE_EMPHASIS ((uint32_t)(0u << 3)) |
| #define SPDIF_CS_PRE_EMPHASIS ((uint32_t)(1u << 3)) |
| #define SPDIF_CS_CHAN_MODE_0 ((uint32_t)(0u << 6)) |
| #define SPDIF_CS_CCODE(g, c) ((uint32_t)(((g & 0x7) << 8) | ((c & 0xf) << 11))) |
| #define SPDIF_CS_L_BIT ((uint32_t)(1u << 15)) |
| #define SPDIF_CS_SRC_NUM(N) ((uint32_t)((N & 0xf) << 16)) |
| #define SPDIF_CS_CHAN_NUM(N) ((uint32_t)((N & 0xf) << 20)) |
| #define SPDIF_CS_SAMP_FREQ_IGNORE ((uint32_t)(0x1 << 24)) |
| #define SPDIF_CS_SAMP_FREQ_22_05K ((uint32_t)(0x4 << 24)) |
| #define SPDIF_CS_SAMP_FREQ_44_1K ((uint32_t)(0x0 << 24)) |
| #define SPDIF_CS_SAMP_FREQ_88_2K ((uint32_t)(0x8 << 24)) |
| #define SPDIF_CS_SAMP_FREQ_176_4K ((uint32_t)(0xC << 24)) |
| #define SPDIF_CS_SAMP_FREQ_24K ((uint32_t)(0x6 << 24)) |
| #define SPDIF_CS_SAMP_FREQ_32K ((uint32_t)(0x3 << 24)) |
| #define SPDIF_CS_SAMP_FREQ_48K ((uint32_t)(0x2 << 24)) |
| #define SPDIF_CS_SAMP_FREQ_96K ((uint32_t)(0xA << 24)) |
| #define SPDIF_CS_SAMP_FREQ_192K ((uint32_t)(0xE << 24)) |
| #define SPDIF_CS_CLK_ACC_100PPM ((uint32_t)(0 << 28)) |
| #define SPDIF_CS_CLK_ACC_VARIABLE ((uint32_t)(1 << 28)) |
| #define SPDIF_CS_CLK_ACC_50PPM ((uint32_t)(2 << 28)) |
| |
| #define SPDIF_CS_CCODE_GENERAL SPDIF_CS_CCODE(0, 0) |
| #define SPDIF_CS_CCODE_SOLID_STATE_RECORDER SPDIF_CS_CCODE(0, 1) |
| #define SPDIF_CS_CCODE_EXPERIMENTAL SPDIF_CS_CCODE(0, 8) |
| |
| #define SPDIF_CS_CCODE_CD SPDIF_CS_CCODE(1, 0) |
| #define SPDIF_CS_CCODE_LASERDISC SPDIF_CS_CCODE(1, 1) |
| #define SPDIF_CS_CCODE_MINIDISC SPDIF_CS_CCODE(1, 3) |
| #define SPDIF_CS_CCODE_DVD SPDIF_CS_CCODE(1, 9) |
| |
| #define SPDIF_CS_CCODE_PCM_CODEC SPDIF_CS_CCODE(2, 0) |
| #define SPDIF_CS_CCODE_DIGITAL_SAMPLER SPDIF_CS_CCODE(2, 2) |
| #define SPDIF_CS_CCODE_DIGITAL_MIXER SPDIF_CS_CCODE(2, 3) |
| #define SPDIF_CS_CCODE_DIGITAL_PROCESSOR SPDIF_CS_CCODE(2, 4) |
| #define SPDIF_CS_CCODE_SAMPLE_RATE_CONVERTER SPDIF_CS_CCODE(2, 5) |
| |
| #define SPDIF_CS_CCODE_DAT SPDIF_CS_CCODE(3, 0) |
| #define SPDIF_CS_CCODE_DCC SPDIF_CS_CCODE(3, 1) |
| #define SPDIF_CS_CCODE_VCR SPDIF_CS_CCODE(3, 8) |
| |
| #define SPDIF_CS_CCODE_DBR_JAPAN SPDIF_CS_CCODE(4, 0) |
| #define SPDIF_CS_CCODE_SW_DELIVERY_INTF SPDIF_CS_CCODE(4, 1) |
| #define SPDIF_CS_CCODE_DBR_USA SPDIF_CS_CCODE(4, 8) |
| #define SPDIF_CS_CCODE_DBR_EUROPE SPDIF_CS_CCODE(4, 12) |
| |
| #define SPDIF_CS_CCODE_SYNTHESIZER SPDIF_CS_CCODE(5, 0) |
| #define SPDIF_CS_CCODE_MICROPHONE SPDIF_CS_CCODE(5, 1) |
| |
| #define SPDIF_CS_CCODE_A2D_CONVERTER SPDIF_CS_CCODE(6, 0) |
| #define SPDIF_CS_CCODE_A2D_CONVERTER_WITH_SCMS SPDIF_CS_CCODE(6, 2) |
| |
| #endif // SRC_DEVICES_LIB_AMLOGIC_INCLUDE_SOC_AML_S912_S912_AUDIO_H_ |