[Sound-open-firmware] how to find a suitable value for the TFT/RFT parameter on multi-platform
Hello Liam:
I think it is better to mention this status again in the mail list.
I am working on playback with the TDM8(4slot used)-48KHz-32bit on APL-GPMRB platform.
Currently the status is:
The music can be heard from the all four channels.
But the it has the noise on the background. the noise exists all the time during playing.
No xrun happened during the audio playing.
I have not tried the pause/resume feature.
I have not tried keyon's patch for the noise issue.
Issue:
During the development, the TFT (in SSP's SSC3 register) parameter will affect the playing operation.
If we keep code: tft = active_tx_slots * 4; the tft will be 16.
during the playing, i found the DMA IRQ will happened very frequently, less than 1ms,
which will cause XRUN during playing. But it will be normal if the tft value is below 8 (tft < 8).
I did some tests on other platform. but I have not found suitable way to fit all of them.
the RFT also have the similar concern.
Do you have any suggestions about this?
thank you
br
~zhigang
On 5/17/18 4:31 AM, zhigangw wrote:
Hello Liam:
I think it is better to mention this status again in the mail list.
I am working on playback with the TDM8(4slot used)-48KHz-32bit on APL-GPMRB platform.
Currently the status is:
The music can be heard from the all four channels.
But the it has the noise on the background. the noise exists all the time during playing.
No xrun happened during the audio playing.
I have not tried the pause/resume feature.
I have not tried keyon's patch for the noise issue.
Looks to me like you've answered to your own question: if there is no xrun, the problem is not related to TFT settings, so please try with known workarounds to remove the noise issue.
Issue:
During the development, the TFT (in SSP's SSC3 register) parameter will affect the playing operation.
If we keep code: tft = active_tx_slots * 4; the tft will be 16.
during the playing, i found the DMA IRQ will happened very frequently, less than 1ms,
which will cause XRUN during playing. But it will be normal if the tft value is below 8 (tft < 8).
Doesn't this point to a DMA configuration issue? the IRQ should only come after a set of burst transfers related to the TFT settings. In other words, if you reduce TFT you should increase the number of bursts to keep the IRQ rate constant.
There is a clear note in the code on this btw, the RFT/TFT settings cannot be modified in isolation, you need to have a related change on the DMA side.
I did some tests on other platform. but I have not found suitable way to fit all of them.
the RFT also have the similar concern.
Do you have any suggestions about this?
thank you
br
~zhigang
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On 2018年05月17日 21:25, Pierre-Louis Bossart wrote:
On 5/17/18 4:31 AM, zhigangw wrote:
Hello Liam:
I think it is better to mention this status again in the mail list.
I am working on playback with the TDM8(4slot used)-48KHz-32bit on APL-GPMRB platform.
Currently the status is:
The music can be heard from the all four channels.
But the it has the noise on the background. the noise exists all the time during playing.
No xrun happened during the audio playing.
I have not tried the pause/resume feature.
I have not tried keyon's patch for the noise issue.
Looks to me like you've answered to your own question: if there is no xrun, the problem is not related to TFT settings, so please try with known workarounds to remove the noise issue.
Sorry! I think I miss one point in this description: After I set the TFT = 4 hardcoded, the play can continue. If I follow the old code, the TFT = 16. the XRUN will happen 100%, the DMA IRQ interval is less than 1ms, the XRUN is caused by this. the noise issue will be a next step, i will try keyon's patch later.
Issue:
During the development, the TFT (in SSP's SSC3 register) parameter will affect the playing operation.
If we keep code: tft = active_tx_slots * 4; the tft will be 16.
during the playing, i found the DMA IRQ will happened very frequently, less than 1ms,
which will cause XRUN during playing. But it will be normal if the tft value is below 8 (tft < 8).
Doesn't this point to a DMA configuration issue? the IRQ should only come after a set of burst transfers related to the TFT settings. In other words, if you reduce TFT you should increase the number of bursts to keep the IRQ rate constant.
There is a clear note in the code on this btw, the RFT/TFT settings cannot be modified in isolation, you need to have a related change on the DMA side.
This is not related to DMA configuration, it is about the SSP configuration. I did the experiment on my own APL-GPMRB, change the TFT will affect the DMA's IRQ interval. I will check the DMA's configuration about the burst you mentioned.
there is communication mechanism between the SSP and DMA, when the TFT (FIFO threshold) is reached, the SSP will send request signal to DMA, the DMA will start to coping (into SSP's FIFO). this mechanism is black to software level. the TFT/RFT configuration determined when SSP sends request to DMA,
thanks br ~zhigang
I did some tests on other platform. but I have not found suitable way to fit all of them.
the RFT also have the similar concern.
Do you have any suggestions about this?
thank you
br
~zhigang
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On 05/17/2018 08:30 PM, zhigangw wrote:
On 2018年05月17日 21:25, Pierre-Louis Bossart wrote:
On 5/17/18 4:31 AM, zhigangw wrote:
Hello Liam:
I think it is better to mention this status again in the mail list.
I am working on playback with the TDM8(4slot used)-48KHz-32bit on APL-GPMRB platform.
Currently the status is:
The music can be heard from the all four channels.
But the it has the noise on the background. the noise exists all the time during playing.
No xrun happened during the audio playing.
I have not tried the pause/resume feature.
I have not tried keyon's patch for the noise issue.
Looks to me like you've answered to your own question: if there is no xrun, the problem is not related to TFT settings, so please try with known workarounds to remove the noise issue.
Sorry! I think I miss one point in this description: After I set the TFT = 4 hardcoded, the play can continue. If I follow the old code, the TFT = 16. the XRUN will happen 100%, the DMA IRQ interval is less than 1ms, the XRUN is caused by this. the noise issue will be a next step, i will try keyon's patch later.
Well yes, the FIFO is 16-deep so if you set TFT to 16 you essentially have no sample left in the FIFO.. Probably the formula should be TFT = min (2 * active_tx_slot, 8); or something along those lines.
Issue:
During the development, the TFT (in SSP's SSC3 register) parameter will affect the playing operation.
If we keep code: tft = active_tx_slots * 4; the tft will be 16.
during the playing, i found the DMA IRQ will happened very frequently, less than 1ms,
which will cause XRUN during playing. But it will be normal if the tft value is below 8 (tft < 8).
Doesn't this point to a DMA configuration issue? the IRQ should only come after a set of burst transfers related to the TFT settings. In other words, if you reduce TFT you should increase the number of bursts to keep the IRQ rate constant.
There is a clear note in the code on this btw, the RFT/TFT settings cannot be modified in isolation, you need to have a related change on the DMA side.
This is not related to DMA configuration, it is about the SSP configuration. I did the experiment on my own APL-GPMRB, change the TFT will affect the DMA's IRQ interval. I will check the DMA's configuration about the burst you mentioned.
there is communication mechanism between the SSP and DMA, when the TFT (FIFO threshold) is reached, the SSP will send request signal to DMA, the DMA will start to coping (into SSP's FIFO). this mechanism is black to software level. the TFT/RFT configuration determined when SSP sends request to DMA,
thanks br ~zhigang
I did some tests on other platform. but I have not found suitable way to fit all of them.
the RFT also have the similar concern.
Do you have any suggestions about this?
thank you
br
~zhigang
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On 2018年05月18日 10:06, Pierre-Louis Bossart wrote:
On 05/17/2018 08:30 PM, zhigangw wrote:
On 2018年05月17日 21:25, Pierre-Louis Bossart wrote:
On 5/17/18 4:31 AM, zhigangw wrote:
Hello Liam:
I think it is better to mention this status again in the mail list.
I am working on playback with the TDM8(4slot used)-48KHz-32bit on APL-GPMRB platform.
Currently the status is:
The music can be heard from the all four channels.
But the it has the noise on the background. the noise exists all the time during playing.
No xrun happened during the audio playing.
I have not tried the pause/resume feature.
I have not tried keyon's patch for the noise issue.
Looks to me like you've answered to your own question: if there is no xrun, the problem is not related to TFT settings, so please try with known workarounds to remove the noise issue.
Sorry! I think I miss one point in this description: After I set the TFT = 4 hardcoded, the play can continue. If I follow the old code, the TFT = 16. the XRUN will happen 100%, the DMA IRQ interval is less than 1ms, the XRUN is caused by this. the noise issue will be a next step, i will try keyon's patch later.
Well yes, the FIFO is 16-deep so if you set TFT to 16 you essentially have no sample left in the FIFO.. Probably the formula should be TFT = min (2 * active_tx_slot, 8); or something along those lines.
Actually I have not got the the FIFO depth for all other platform, for lacking of documents. I am not sure whether the TFT/RFT will be affected by sample-width or slot-number or both. It need lots of experiment to confirm this if we can not get information from HARDWARE guys directly. Thank you again Pierre for your comments. Br ~zhigang
Issue:
During the development, the TFT (in SSP's SSC3 register) parameter will affect the playing operation.
If we keep code: tft = active_tx_slots * 4; the tft will be 16.
during the playing, i found the DMA IRQ will happened very frequently, less than 1ms,
which will cause XRUN during playing. But it will be normal if the tft value is below 8 (tft < 8).
Doesn't this point to a DMA configuration issue? the IRQ should only come after a set of burst transfers related to the TFT settings. In other words, if you reduce TFT you should increase the number of bursts to keep the IRQ rate constant.
There is a clear note in the code on this btw, the RFT/TFT settings cannot be modified in isolation, you need to have a related change on the DMA side.
This is not related to DMA configuration, it is about the SSP configuration. I did the experiment on my own APL-GPMRB, change the TFT will affect the DMA's IRQ interval. I will check the DMA's configuration about the burst you mentioned.
there is communication mechanism between the SSP and DMA, when the TFT (FIFO threshold) is reached, the SSP will send request signal to DMA, the DMA will start to coping (into SSP's FIFO). this mechanism is black to software level. the TFT/RFT configuration determined when SSP sends request to DMA,
thanks br ~zhigang
I did some tests on other platform. but I have not found suitable way to fit all of them.
the RFT also have the similar concern.
Do you have any suggestions about this?
thank you
br
~zhigang
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
participants (2)
-
Pierre-Louis Bossart
-
zhigangw