123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381 |
- struct addr_set {
- int addr;
- int set_num;
- unsigned char set_bit[4];
- int clear_num;
- unsigned char clear_bit[4];
- };
- struct i2s_pin {
- int addr_num;
- struct addr_set addr_s[5];
- };
- #if (CONFIG_CHIPID == 0x531) || (CONFIG_CHIPID == 0x533)
- /************************************************************
- * SDO PIN Setting *
- *************************************************************/
- #if (I2S_SD0_PIN == I2S_SET1)
- //LVA_TXP4 as I2S_SD0
- struct i2s_pin sd0 = \
- { 5,
- { \
- {0xbe00012c, 0, {0,}, 2, {13,14,}} , \
- {0xbe00025c, 0, {0,}, 1, {4,}} , \
- {0xbe000200, 0, {0,}, 1, {0,}} , \
- {0xbe00013c, 1, {5,}, 1, {11,}} , \
- {0xbe0001bc, 0, {0,}, 1, {31,}} , \
- } \
- };
- #elif (I2S_SD0_PIN == I2S_SET2)
- //GPIO15 as I2S_SD02/3
- struct i2s_pin sd0 = \
- { 4,
- { \
- {0xbe000600, 1, {31,}, 1, {30,}} , \
- {0xbe0000e8, 1, {29,}, 0, {0,}} , \
- {0xbe0001bc, 0, {0,}, 1, {31,}} , \
- {0xbe00013c, 0, {0,}, 2, {11,18,}} , \
- } \
- };
- #elif (I2S_SD0_PIN == I2S_SET3)
- //T2_FEF as I2S_SD02/3
- struct i2s_pin sd0 = \
- { 3,
- { \
- {0xbe000244, 1, {29,}, 0, {0,}} , \
- {0xbe00013c, 0, {0,}, 1, {11}} , \
- {0xbe0001bc, 0, {0,}, 1, {31,}} , \
- } \
- };
- #else
- struct i2s_pin sd0 = {0};
- #endif
- /************************************************************
- * WS PIN Setting *
- *************************************************************/
- #if (I2S_WS_PIN == I2S_SET1)
- //LVA_TXN4 as I2S_WS
- struct i2s_pin ws = \
- { 4,
- { \
- {0xbe00012c, 0, {0,}, 2, {13,14,}} , \
- {0xbe00025c, 0, {0,}, 1, {4,}} , \
- {0xbe000200, 0, {0,}, 1, {0,}} , \
- {0xbe00013c, 1, {5,}, 0, {0,}} , \
- } \
- };
- #elif (I2S_WS_PIN == I2S_SET2)
- //GPIO1 as I2S_WS2
- struct i2s_pin ws = \
- { 2,
- { \
- {0xbe000600, 0, {0,}, 2, {2,3,}} , \
- {0xbe00013c, 1, {26,}, 1, {27,}} , \
- } \
- };
- #elif (I2S_WS_PIN == I2S_SET3)
- //RFGAIN as I2S_WS3
- struct i2s_pin ws = \
- { 1,
- { \
- {0xbe000604, 1, {13,}, 1, {12,}} , \
- } \
- };
- #else
- struct i2s_pin ws = {0};
- #endif
- /************************************************************
- * MCK PIN Setting *
- *************************************************************/
- #if (I2S_MCK_PIN == I2S_SET1)
- //LVB_TXP4 as I2S_MCK
- struct i2s_pin mck = \
- { 4,
- { \
- {0xbe00012c, 0, {0,}, 2, {13,14,}} , \
- {0xbe00025c, 0, {0,}, 1, {9,}} , \
- {0xbe000200, 0, {0,}, 1, {0,}} , \
- {0xbe00013c, 1, {5,}, 4, {0,2,4,16,}} , \
- } \
- };
- #elif (I2S_MCK_PIN == I2S_SET2)
- //KEY2 as I2S_MCK2
- struct i2s_pin mck = \
- { 3,
- { \
- {0xbe000600, 0, {0,}, 2, {20,21,}} , \
- {0xbe00012c, 0, {0,}, 1, {15,}} , \
- {0xbe00013c, 1, {26,}, 4, {0,2,4,16,}} , \
- } \
- };
- #elif (I2S_MCK_PIN == I2S_SET3)
- //NF_DQS as I2S_MCK3 as I2S_WCK3
- struct i2s_pin mck = \
- { 2,
- { \
- {0xbe00013c, 0, {0,}, 4, {0,2,4,16,}} , \
- {0xbe000250, 1, {29,}, 0, {0,}} , \
- } \
- };
- #else
- struct i2s_pin mck = {0};
- #endif
- /************************************************************
- * SCK PIN Setting *
- *************************************************************/
- #if (I2S_SCK_PIN == I2S_SET1)
- //LVB_TXN4 as I2S_SCK
- struct i2s_pin sck = \
- { 4,
- { \
- {0xbe00012c, 0, {0,}, 2, {13,14,}} , \
- {0xbe00025c, 0, {0,}, 1, {9,}} , \
- {0xbe000200, 0, {0,}, 1, {1,}} , \
- {0xbe00013c, 1, {5,}, 0, {0,}} , \
- } \
- };
- #elif (I2S_SCK_PIN == I2S_SET2)
- //KEY3 as I2S_SCK2
- struct i2s_pin sck = \
- { 3,
- { \
- {0xbe00012c, 0, {0,}, 1, {15,}} , \
- {0xbe00013c, 1, {26,}, 1, {8,}} , \
- {0xbe0f0600, 0, {0,}, 2, {22,23,}} , \
- } \
- };
- #elif (I2S_SCK_PIN == I2S_SET3)
- //RMIIRXER as I2S_SCK3
- struct i2s_pin sck = \
- { 2,
- { \
- {0xbe000210, 1, {26,}, 0, {0,}} , \
- {0xbe00019c, 0, {0,}, 1, {15,}} , \
- } \
- };
- #else
- struct i2s_pin sck = {0};
- #endif
- #endif // #if (CONFIG_CHIPID == 0x531)
- #if (CONFIG_CHIPID == 0x331) || (CONFIG_CHIPID == 0x131) || (CONFIG_CHIPID == 0x8506) || (CONFIG_CHIPID == 0x6710)
- /************************************************************
- * SDO PIN Setting *
- *************************************************************/
- #if (I2S_SD0_PIN == I2S_SET1)
- //LVA_TXP4 as I2S_SD0
- struct i2s_pin sd0 = \
- { 5,
- { \
- {0xbe00012c, 0, {0,}, 2, {13,14,}} , \
- {0xbe00025c, 0, {0,}, 2, {4,17,}} , \
- {0xbe000200, 0, {0,}, 1, {0,}} , \
- {0xbe00013c, 1, {5,}, 1, {11,}} , \
- {0xbe0001bc, 0, {0,}, 1, {31,}} , \
- } \
- };
- #elif (I2S_SD0_PIN == I2S_SET2)
- //I2S_SD0
- struct i2s_pin sd0 = \
- { 2,
- { \
- {0xbe00013c, 0, {0,}, 2, {11,18,}} , \
- {0xbe0001bc, 0, {0,}, 1, {31,}} , \
- } \
- };
- #elif (I2S_SD0_PIN == I2S_SET3)
- //GPIO15 as I2S_SD02/3
- struct i2s_pin sd0 = \
- { 4,
- { \
- {0xbe000600, 1, {31,}, 1, {30,}} , \
- {0xbe0000e8, 1, {29,}, 0, {0,}} , \
- {0xbe0001bc, 0, {0,}, 1, {31,}} , \
- {0xbe00013c, 0, {0,}, 2, {11,18,}} , \
- } \
- };
- #elif (I2S_SD0_PIN == I2S_SET4)
- //SPK_L
- struct i2s_pin sd0 = \
- { 1,
- { \
- {0xbe000134, 1, {11,}, 0, {0,}} , \
- } \
- };
- #else
- struct i2s_pin sd0 = {0};
- #endif
- /************************************************************
- * WS PIN Setting *
- *************************************************************/
- #if (I2S_WS_PIN == I2S_SET1)
- //LVA_TXN4 as I2S_WS
- struct i2s_pin ws = \
- { 4,
- { \
- {0xbe00012c, 0, {0,}, 2, {13,14,}} , \
- {0xbe00025c, 0, {0,}, 2, {4,17,}} , \
- {0xbe000200, 0, {0,}, 1, {0,}} , \
- {0xbe00013c, 1, {5,}, 0, {0,}} , \
- } \
- };
- #elif (I2S_WS_PIN == I2S_SET2)
- //I2S_WS
- struct i2s_pin ws = \
- { 1,
- { \
- {0xbe00013c, 0, {0,}, 1, {8,}} , \
- } \
- };
- #elif (I2S_WS_PIN == I2S_SET3)
- //GPIO1 as I2S_WS2
- struct i2s_pin ws = \
- { 2,
- { \
- {0xbe000600, 0, {0,}, 2, {2,3,}} , \
- {0xbe00013c, 1, {26,}, 1, {27,}} , \
- } \
- };
- #elif (I2S_WS_PIN == I2S_SET4)
- //SPK_R
- struct i2s_pin ws = \
- { 1,
- { \
- {0xbe000134, 1, {10,}, 0, {0,}} , \
- } \
- };
- #else
- struct i2s_pin ws = {0};
- #endif
- /************************************************************
- * MCK PIN Setting *
- *************************************************************/
- #if (I2S_MCK_PIN == I2S_SET1)
- //LVB_TXP4 as I2S_MCK
- struct i2s_pin mck = \
- { 4,
- { \
- {0xbe00012c, 0, {0,}, 2, {13,14,}} , \
- {0xbe00025c, 0, {0,}, 2, {9,17,}} , \
- {0xbe000200, 0, {0,}, 1, {1,}} , \
- {0xbe00013c, 1, {5,}, 4, {0,2,4,16,}} , \
- } \
- };
- #elif (I2S_MCK_PIN == I2S_SET2)
- //KEY2 as I2S_MCK2
- struct i2s_pin mck = \
- { 3,
- { \
- {0xbe000600, 0, {0,}, 2, {20,21,}} , \
- {0xbe00012c, 0, {0,}, 1, {15,}} , \
- {0xbe00013c, 1, {26,}, 4, {0,2,4,16,}} , \
- } \
- };
- #elif (I2S_MCK_PIN == I2S_SET3)
- //KEY1/I2S_MCK/GPIO10 as I2S_MCK_PIN
- struct i2s_pin mck = \
- { 3,
- { \
- {0xbe0f0600, 0, {0,}, 2, {20,21,}} , \
- {0xbe00012c, 0, {0,}, 1, {15,}} , \
- {0xbe00013c, 1, {26,}, 3, {0,8,27,}} , \
- {0xbe000014, 0, {0,}, 1, {2,}} , \
- } \
- };
- #elif (I2S_MCK_PIN == I2S_SET4)
- //GPIO42
- struct i2s_pin mck = \
- { 2,
- { \
- {0xbe0f0608, 0, {0,}, 2, {20,21,}} , \
- {0xbe00013c, 0, {0,}, 2, {0,16,}} , \
- } \
- };
- #else
- struct i2s_pin mck = {0};
- #endif
- /************************************************************
- * SCK PIN Setting *
- *************************************************************/
- #if (I2S_SCK_PIN == I2S_SET1)
- //LVB_TXN4 as I2S_SCK
- struct i2s_pin sck = \
- { 4,
- { \
- {0xbe00012c, 0, {0,}, 2, {13,14,}} , \
- {0xbe00025c, 0, {0,}, 2, {9,17,}} , \
- {0xbe000200, 0, {0,}, 1, {1,}} , \
- {0xbe00013c, 1, {5,}, 0, {0,}} , \
- } \
- };
- #elif (I2S_SCK_PIN == I2S_SET2)
- //KEY3 as I2S_SCK2
- struct i2s_pin sck = \
- { 3,
- { \
- {0xbe00012c, 0, {0,}, 1, {15,}} , \
- {0xbe00013c, 1, {26,}, 1, {8,}} , \
- {0xbe0f0600, 0, {0,}, 2, {20,21,}} , \
- } \
- };
- #elif (I2S_SCK_PIN == I2S_SET3)
- //PWM1/I2S_SCK/GPIO1 as I2S_SCK3
- struct i2s_pin sck = \
- { 4,
- { \
- {0xbe0f0600, 0, {0,}, 2, {2,3,}} , \
- {0xbe00012c, 0, {0,}, 1, {15,}} , \
- {0xbe00013c, 1, {26,}, 2, {8,27,}} , \
- {0xbe000014, 0, {0,}, 1, {2,}} , \
- } \
- };
- #elif (I2S_SCK_PIN == I2S_SET4)
- //GPIO46 as I2S_SCK2
- struct i2s_pin sck = \
- { 3,
- { \
- {0xbe000014, 0, {0,}, 1, {2,}} , \
- {0xbe00013c, 0, {0,}, 1, {8,}} , \
- {0xbe0f0608, 0, {0,}, 2, {28,29,}} , \
- } \
- };
- #else
- struct i2s_pin sck = {0};
- #endif
- #endif // #if (CONFIG_CHIPID == 0x331) || (CONFIG_CHIPID == 0x131) || (CONFIG_CHIPID == 0x8506) || (CONFIG_CHIPID == 0x6710)
-
- static void set_pin_as_i2s_pin(struct i2s_pin *pin)
- {
- int i,j;
- volatile unsigned int *addr;
- unsigned int value = 0;
-
- if (pin->addr_num == 0)
- return;
- for (i = 0; i < pin->addr_num; i++) {
- addr = (unsigned int *)pin->addr_s[i].addr;
- value = 0;
- for (j = 0; j < pin->addr_s[i].set_num; j++)
- value |= (1<<pin->addr_s[i].set_bit[j]);
- (*addr) = (*addr) | value;
-
- value = 0;
- for (j = 0; j < pin->addr_s[i].clear_num; j++)
- value |= (1<<pin->addr_s[i].clear_bit[j]);
- (*addr) = (*addr) & (~value);
- }
- }
|