#ifndef _DMASTUFF_H #define _DMASTUFF_H #ifndef i2c_bbpll #define i2c_bbpll 0x67 #define i2c_bbpll_en_audio_clock_out 4 #define i2c_bbpll_en_audio_clock_out_msb 7 #define i2c_bbpll_en_audio_clock_out_lsb 7 #define i2c_bbpll_hostid 4 #define i2c_writeReg_Mask(block, host_id, reg_add, Msb, Lsb, indata) rom_i2c_writeReg_Mask(block, host_id, reg_add, Msb, Lsb, indata) #define i2c_readReg_Mask(block, host_id, reg_add, Msb, Lsb) rom_i2c_readReg_Mask(block, host_id, reg_add, Msb, Lsb) #define i2c_writeReg_Mask_def(block, reg_add, indata) \ i2c_writeReg_Mask(block, block##_hostid, reg_add, reg_add##_msb, reg_add##_lsb, indata) #define i2c_readReg_Mask_def(block, reg_add) \ i2c_readReg_Mask(block, block##_hostid, reg_add, reg_add##_msb, reg_add##_lsb) #endif #ifndef ETS_SLC_INUM #define ETS_SLC_INUM 1 #endif //From i2s_reg.h #define DR_REG_I2S_BASE (0x60000e00) #define I2STXFIFO (DR_REG_I2S_BASE + 0x0000) #define I2SRXFIFO (DR_REG_I2S_BASE + 0x0004) #define I2SCONF (DR_REG_I2S_BASE + 0x0008) #define I2S_BCK_DIV_NUM 0x0000003F #define I2S_BCK_DIV_NUM_S 22 #define I2S_CLKM_DIV_NUM 0x0000003F #define I2S_CLKM_DIV_NUM_S 16 #define I2S_BITS_MOD 0x0000000F #define I2S_BITS_MOD_S 12 #define I2S_RECE_MSB_SHIFT (BIT(11)) #define I2S_TRANS_MSB_SHIFT (BIT(10)) #define I2S_I2S_RX_START (BIT(9)) #define I2S_I2S_TX_START (BIT(8)) #define I2S_MSB_RIGHT (BIT(7)) #define I2S_RIGHT_FIRST (BIT(6)) #define I2S_RECE_SLAVE_MOD (BIT(5)) #define I2S_TRANS_SLAVE_MOD (BIT(4)) #define I2S_I2S_RX_FIFO_RESET (BIT(3)) #define I2S_I2S_TX_FIFO_RESET (BIT(2)) #define I2S_I2S_RX_RESET (BIT(1)) #define I2S_I2S_TX_RESET (BIT(0)) #define I2S_I2S_RESET_MASK 0xf #define I2SINT_RAW (DR_REG_I2S_BASE + 0x000c) #define I2S_I2S_TX_REMPTY_INT_RAW (BIT(5)) #define I2S_I2S_TX_WFULL_INT_RAW (BIT(4)) #define I2S_I2S_RX_REMPTY_INT_RAW (BIT(3)) #define I2S_I2S_RX_WFULL_INT_RAW (BIT(2)) #define I2S_I2S_TX_PUT_DATA_INT_RAW (BIT(1)) #define I2S_I2S_RX_TAKE_DATA_INT_RAW (BIT(0)) #define I2SINT_ST (DR_REG_I2S_BASE + 0x0010) #define I2S_I2S_TX_REMPTY_INT_ST (BIT(5)) #define I2S_I2S_TX_WFULL_INT_ST (BIT(4)) #define I2S_I2S_RX_REMPTY_INT_ST (BIT(3)) #define I2S_I2S_RX_WFULL_INT_ST (BIT(2)) #define I2S_I2S_TX_PUT_DATA_INT_ST (BIT(1)) #define I2S_I2S_RX_TAKE_DATA_INT_ST (BIT(0)) #define I2SINT_ENA (DR_REG_I2S_BASE + 0x0014) #define I2S_I2S_TX_REMPTY_INT_ENA (BIT(5)) #define I2S_I2S_TX_WFULL_INT_ENA (BIT(4)) #define I2S_I2S_RX_REMPTY_INT_ENA (BIT(3)) #define I2S_I2S_RX_WFULL_INT_ENA (BIT(2)) #define I2S_I2S_TX_PUT_DATA_INT_ENA (BIT(1)) #define I2S_I2S_RX_TAKE_DATA_INT_ENA (BIT(0)) #define I2SINT_CLR (DR_REG_I2S_BASE + 0x0018) #define I2S_I2S_TX_REMPTY_INT_CLR (BIT(5)) #define I2S_I2S_TX_WFULL_INT_CLR (BIT(4)) #define I2S_I2S_RX_REMPTY_INT_CLR (BIT(3)) #define I2S_I2S_RX_WFULL_INT_CLR (BIT(2)) #define I2S_I2S_PUT_DATA_INT_CLR (BIT(1)) #define I2S_I2S_TAKE_DATA_INT_CLR (BIT(0)) #define I2STIMING (DR_REG_I2S_BASE + 0x001c) #define I2S_TRANS_BCK_IN_INV (BIT(22)) #define I2S_RECE_DSYNC_SW (BIT(21)) #define I2S_TRANS_DSYNC_SW (BIT(20)) #define I2S_RECE_BCK_OUT_DELAY 0x00000003 #define I2S_RECE_BCK_OUT_DELAY_S 18 #define I2S_RECE_WS_OUT_DELAY 0x00000003 #define I2S_RECE_WS_OUT_DELAY_S 16 #define I2S_TRANS_SD_OUT_DELAY 0x00000003 #define I2S_TRANS_SD_OUT_DELAY_S 14 #define I2S_TRANS_WS_OUT_DELAY 0x00000003 #define I2S_TRANS_WS_OUT_DELAY_S 12 #define I2S_TRANS_BCK_OUT_DELAY 0x00000003 #define I2S_TRANS_BCK_OUT_DELAY_S 10 #define I2S_RECE_SD_IN_DELAY 0x00000003 #define I2S_RECE_SD_IN_DELAY_S 8 #define I2S_RECE_WS_IN_DELAY 0x00000003 #define I2S_RECE_WS_IN_DELAY_S 6 #define I2S_RECE_BCK_IN_DELAY 0x00000003 #define I2S_RECE_BCK_IN_DELAY_S 4 #define I2S_TRANS_WS_IN_DELAY 0x00000003 #define I2S_TRANS_WS_IN_DELAY_S 2 #define I2S_TRANS_BCK_IN_DELAY 0x00000003 #define I2S_TRANS_BCK_IN_DELAY_S 0 #define I2S_FIFO_CONF (DR_REG_I2S_BASE + 0x0020) #define I2S_I2S_RX_FIFO_MOD 0x00000007 #define I2S_I2S_RX_FIFO_MOD_S 16 #define I2S_I2S_TX_FIFO_MOD 0x00000007 #define I2S_I2S_TX_FIFO_MOD_S 13 #define I2S_I2S_DSCR_EN (BIT(12)) #define I2S_I2S_TX_DATA_NUM 0x0000003F #define I2S_I2S_TX_DATA_NUM_S 6 #define I2S_I2S_RX_DATA_NUM 0x0000003F #define I2S_I2S_RX_DATA_NUM_S 0 #define I2SRXEOF_NUM (DR_REG_I2S_BASE + 0x0024) #define I2S_I2S_RX_EOF_NUM 0xFFFFFFFF #define I2S_I2S_RX_EOF_NUM_S 0 #define I2SCONF_SIGLE_DATA (DR_REG_I2S_BASE + 0x0028) #define I2S_I2S_SIGLE_DATA 0xFFFFFFFF #define I2S_I2S_SIGLE_DATA_S 0 #define I2SCONF_CHAN (DR_REG_I2S_BASE + 0x002c) #define I2S_RX_CHAN_MOD 0x00000003 #define I2S_RX_CHAN_MOD_S 3 #define I2S_TX_CHAN_MOD 0x00000007 #define I2S_TX_CHAN_MOD_S 0 //From sdio_slv.h struct sdio_queue { uint32 blocksize:12; uint32 datalen:12; uint32 unused:5; uint32 sub_sof:1; uint32 eof:1; uint32 owner:1; uint32 buf_ptr; uint32 next_link_ptr; }; struct sdio_slave_status_element { uint32 wr_busy:1; uint32 rd_empty :1; uint32 comm_cnt :3; uint32 intr_no :3; uint32 rx_length:16; uint32 res:8; }; union sdio_slave_status { struct sdio_slave_status_element elm_value; uint32 word_value; }; #define RX_AVAILIBLE 2 #define TX_AVAILIBLE 1 #define INIT_STAGE 0 #define SDIO_QUEUE_LEN 8 #define MOSI 0 #define MISO 1 #define SDIO_DATA_ERROR 6 #define SLC_INTEREST_EVENT (SLC_TX_EOF_INT_ENA | SLC_RX_EOF_INT_ENA | SLC_RX_UDF_INT_ENA | SLC_TX_DSCR_ERR_INT_ENA) #define TRIG_TOHOST_INT() SET_PERI_REG_MASK(SLC_INTVEC_TOHOST , BIT0);\ CLEAR_PERI_REG_MASK(SLC_INTVEC_TOHOST , BIT0) #endif