Commit 4638f1172326d3bd48f5f835cb7a9194f3eb5fe6

Authored by luozhesi
1 parent 856470fc

improve a slave issue when not pwm out

1 { 1 {
2 "files.associations": { 2 "files.associations": {
3 - "xutility": "c" 3 + "xutility": "c",
  4 + "app_main.h": "c"
4 } 5 }
5 } 6 }
@@ -144,7 +144,7 @@ void app_dac_init (void) @@ -144,7 +144,7 @@ void app_dac_init (void)
144 #ifdef I2S1_DATA_OUT 144 #ifdef I2S1_DATA_OUT
145 DMA_Channel0_Init((U32 *)DA_I2S_OUT_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_IIS1_OUT); 145 DMA_Channel0_Init((U32 *)DA_I2S_OUT_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_IIS1_OUT);
146 if (app_main_data.share_link_role == SL_ROLE_SLAVE) 146 if (app_main_data.share_link_role == SL_ROLE_SLAVE)
147 - DMA_Channel8_Init((U32 *)DA_PP_CLASSD_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_DA_PP); 147 + DMA_Channel8_Init((U32 *)DA_SPDIF_OUT_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_SPDIF_DAC_OUT);
148 #else 148 #else
149 #ifdef AUDIO_PWM_OUTPUT 149 #ifdef AUDIO_PWM_OUTPUT
150 DMA_Channel0_Init((U32 *)DA_PP_CLASSD_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_DA_PP); 150 DMA_Channel0_Init((U32 *)DA_PP_CLASSD_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_DA_PP);
@@ -480,11 +480,13 @@ void Dma_0_TransmitIsr(void) @@ -480,11 +480,13 @@ void Dma_0_TransmitIsr(void)
480 } 480 }
481 } 481 }
482 482
  483 +static int dma8src[4] = {0,0,0,0};
483 void Dma_8_TransmitIsr (void) 484 void Dma_8_TransmitIsr (void)
484 { 485 {
485 U16 len; 486 U16 len;
486 int *pBuf,i; 487 int *pBuf,i;
487 488
  489 +
488 if (DMA_0_COUNT == 0) 490 if (DMA_0_COUNT == 0)
489 { 491 {
490 if (awOut_contrls.awSize) 492 if (awOut_contrls.awSize)
@@ -494,7 +496,7 @@ void Dma_8_TransmitIsr (void) @@ -494,7 +496,7 @@ void Dma_8_TransmitIsr (void)
494 DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[awOut_contrls.awIndex][0]; //Source address 496 DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[awOut_contrls.awIndex][0]; //Source address
495 DMA_0_COUNT = len; 497 DMA_0_COUNT = len;
496 498
497 - DMA_8_SOURCE = (int *) &awOutStore.awOutSampleStore[0][0]; 499 + DMA_8_SOURCE = dma8src;//(int *) &awOutStore.awOutSampleStore[0][0];
498 DMA_8_COUNT = len - TRANS_PART2_COUNT; 500 DMA_8_COUNT = len - TRANS_PART2_COUNT;
499 501
500 /*Clear the previous out data*/ 502 /*Clear the previous out data*/
@@ -515,7 +517,7 @@ void Dma_8_TransmitIsr (void) @@ -515,7 +517,7 @@ void Dma_8_TransmitIsr (void)
515 DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[1-awOut_contrls.awIndex][0]; //Source address 517 DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[1-awOut_contrls.awIndex][0]; //Source address
516 DMA_0_COUNT = Zero_Buf_Size*2; 518 DMA_0_COUNT = Zero_Buf_Size*2;
517 519
518 - DMA_8_SOURCE = (int *) &awOutStore.awOutSampleStore[0][0]; 520 + DMA_8_SOURCE = dma8src;//(int *) &awOutStore.awOutSampleStore[0][0];
519 DMA_8_COUNT = Zero_Buf_Size*2 - TRANS_PART2_COUNT; 521 DMA_8_COUNT = Zero_Buf_Size*2 - TRANS_PART2_COUNT;
520 } 522 }
521 } 523 }
@@ -523,7 +525,7 @@ void Dma_8_TransmitIsr (void) @@ -523,7 +525,7 @@ void Dma_8_TransmitIsr (void)
523 { 525 {
524 SOFT3_INT_SET; 526 SOFT3_INT_SET;
525 527
526 - DMA_8_SOURCE = (int *) &awOutStore.awOutSampleStore[0][0]; 528 + DMA_8_SOURCE = dma8src;//(int *) &awOutStore.awOutSampleStore[0][0];
527 DMA_8_COUNT = (TRANS_PART1_COUNT + TRANS_PART2_COUNT)*2; 529 DMA_8_COUNT = (TRANS_PART1_COUNT + TRANS_PART2_COUNT)*2;
528 } 530 }
529 } 531 }
@@ -1652,14 +1652,14 @@ void taskDec(void *pvParameters) @@ -1652,14 +1652,14 @@ void taskDec(void *pvParameters)
1652 //optek_hifi2_16b_to_24b(pDacbuf,pDacbuf,(samples<<1)); 1652 //optek_hifi2_16b_to_24b(pDacbuf,pDacbuf,(samples<<1));
1653 } 1653 }
1654 #endif 1654 #endif
1655 -/* 1655 +
1656 if (pOut_up != NULL) 1656 if (pOut_up != NULL)
1657 { 1657 {
1658 app_main_data.playing_stream_chans = 1; 1658 app_main_data.playing_stream_chans = 1;
1659 len >>= 1; 1659 len >>= 1;
1660 pOut = pOut_up; 1660 pOut = pOut_up;
1661 } 1661 }
1662 -*/ 1662 +
1663 while(len > max_out_len) 1663 while(len > max_out_len)
1664 { 1664 {
1665 slice <<= 1; 1665 slice <<= 1;
@@ -1691,6 +1691,8 @@ void taskDec(void *pvParameters) @@ -1691,6 +1691,8 @@ void taskDec(void *pvParameters)
1691 I32 adj; 1691 I32 adj;
1692 U32 hsamples = TRANS_PART1_SAMPLES/2; 1692 U32 hsamples = TRANS_PART1_SAMPLES/2;
1693 1693
  1694 + adj_outsamples -= last_adj;
  1695 +
1694 last_adj = 0; 1696 last_adj = 0;
1695 1697
1696 adj = adj_outsamples; 1698 adj = adj_outsamples;
@@ -1714,8 +1716,7 @@ void taskDec(void *pvParameters) @@ -1714,8 +1716,7 @@ void taskDec(void *pvParameters)
1714 last_adj = -adj; 1716 last_adj = -adj;
1715 } 1717 }
1716 1718
1717 - adj_outsamples -= last_adj;  
1718 - DBG_Printf("adj:%d,left:%d\r\n",last_adj,adj_outsamples); 1719 + DBG_Printf("adj:%d,left:%d\r\n",last_adj,adj_outsamples - last_adj);
1719 } 1720 }
1720 /*********sync end***************/ 1721 /*********sync end***************/
1721 1722
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
2 #define _AUDIO_DEC_H_ 2 #define _AUDIO_DEC_H_
3 3
4 #include "hw_codec.h" 4 #include "hw_codec.h"
  5 +#include "hw_da_pp.h"
  6 +
5 7
6 #define CO_PROCESSOR_MASK_BITS 0x03 8 #define CO_PROCESSOR_MASK_BITS 0x03
7 9
@@ -110,8 +112,15 @@ extern U16 dec_frame_size; @@ -110,8 +112,15 @@ extern U16 dec_frame_size;
110 #define TRANS_PART1_COUNT SAMPLES2DMACOUNT(TRANS_PART1_SAMPLES) 112 #define TRANS_PART1_COUNT SAMPLES2DMACOUNT(TRANS_PART1_SAMPLES)
111 #define TRANS_PART2_COUNT SAMPLES2DMACOUNT(TRANS_PART2_SAMPLES) 113 #define TRANS_PART2_COUNT SAMPLES2DMACOUNT(TRANS_PART2_SAMPLES)
112 114
113 -#define DMA_UNDERFLOW_DELAY_COUNT 32  
114 - 115 +#ifdef I2S1_DATA_OUT
  116 + #define DMA_UNDERFLOW_DELAY_COUNT 8
  117 +#else
  118 + #ifdef AUDIO_PWM_OUTPUT
  119 + #define DMA_UNDERFLOW_DELAY_COUNT 32
  120 + #else
  121 + #define DMA_UNDERFLOW_DELAY_COUNT 8
  122 + #endif
  123 +#endif
115 void app_nav_spdif_stream_reinit (void); 124 void app_nav_spdif_stream_reinit (void);
116 125
117 void dec_direct_out_24bit( int *pBuf, U16 len ); 126 void dec_direct_out_24bit( int *pBuf, U16 len );
@@ -24,6 +24,8 @@ @@ -24,6 +24,8 @@
24 24
25 #include "app_i2c.h" 25 #include "app_i2c.h"
26 26
  27 +#include "app_main.h"
  28 +
27 #define ADC_MASTER 29 #define ADC_MASTER
28 #define SINGLE_ENDED_OUTPUT 30 #define SINGLE_ENDED_OUTPUT
29 31
@@ -804,10 +806,16 @@ void audio_code_init(void) @@ -804,10 +806,16 @@ void audio_code_init(void)
804 806
805 SPDIF_CONFIG = temp; 807 SPDIF_CONFIG = temp;
806 808
807 -  
808 -#if 1//ndef AUDIO_PWM_OUTPUT  
809 - DA_PP_CLASSD_EN |= 0x02; //spdif_en enable  
810 -#endif 809 + if (app_main_data.share_link_role == SL_ROLE_SLAVE)
  810 + {
  811 + DA_PP_CLASSD_EN = 0x03;
  812 + }
  813 + else
  814 + {
  815 + #ifndef AUDIO_PWM_OUTPUT
  816 + DA_PP_CLASSD_EN = 0x02; //spdif_en enable
  817 + #endif
  818 + }
811 819
812 820
813 //codec setting 821 //codec setting
@@ -82,14 +82,12 @@ void dda_pp_init(void) @@ -82,14 +82,12 @@ void dda_pp_init(void)
82 #endif 82 #endif
83 83
84 84
85 -#if (SHARE_LINK_MODE == SL_SUBWOOFER)  
86 if (app_main_data.share_link_role == SL_ROLE_SLAVE) 85 if (app_main_data.share_link_role == SL_ROLE_SLAVE)
87 { 86 {
88 classd_config_ahb->pp_clk_config = 2; 87 classd_config_ahb->pp_clk_config = 2;
89 classd_config_ahb->osr_config = 0; 88 classd_config_ahb->osr_config = 0;
90 classd_config_ahb->sigma_delta_quan = 7; 89 classd_config_ahb->sigma_delta_quan = 7;
91 } 90 }
92 -#endif  
93 91
94 classd_config_ahb->sigma_delta_order = 1; 92 classd_config_ahb->sigma_delta_order = 1;
95 #if 0//def PWM_HALF_BRIDGE 93 #if 0//def PWM_HALF_BRIDGE
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 48
49 //#define I2S1_MI2SIN_B_GROUP /* only for OTK5282/83/P */ 49 //#define I2S1_MI2SIN_B_GROUP /* only for OTK5282/83/P */
50 #define I2S1_MI2SIN_BCK_LRCK_OUT //Outdead: #define I2S1_BCK_LRCK_OUT 50 #define I2S1_MI2SIN_BCK_LRCK_OUT //Outdead: #define I2S1_BCK_LRCK_OUT
51 -//#define I2S1_DATA_OUT 51 +#define I2S1_DATA_OUT
52 52
53 #define I2S1_DATA_IN 53 #define I2S1_DATA_IN
54 54
@@ -233,7 +233,7 @@ void DMA_Channel8_Init(U32 *dest, U32 *src, U32 byte_count, U8 dma_source) @@ -233,7 +233,7 @@ void DMA_Channel8_Init(U32 *dest, U32 *src, U32 byte_count, U8 dma_source)
233 233
234 pCtrl->size = DMA_TRANSMIT_SIZE_WORD; //Transfer size 234 pCtrl->size = DMA_TRANSMIT_SIZE_WORD; //Transfer size
235 pCtrl->burst_size = DMA_BURST_SINGLE; //1 235 pCtrl->burst_size = DMA_BURST_SINGLE; //1
236 - pCtrl->saddr_inc = DMA_SRC_ADDR_INC;; //Source address inc select 236 + pCtrl->saddr_inc = DMA_SRC_ADDR_FIXED;; //Source address inc select
237 pCtrl->daddr_inc = DMA_SRC_ADDR_FIXED; //Destination address inc select 237 pCtrl->daddr_inc = DMA_SRC_ADDR_FIXED; //Destination address inc select
238 pCtrl->source = dma_source; //Dma source select 238 pCtrl->source = dma_source; //Dma source select
239 pCtrl->start = 0; //not software dma start 239 pCtrl->start = 0; //not software dma start
Please register or login to post a comment