Skip to content

IP/Subsystem: Fix the I2S Tx interrupt masking issue if the requested…#140

Open
ahshokry wants to merge 1 commit into
foss-for-synopsys-dwc-arc-processors:masterfrom
ahshokry:fix_i2s_intr
Open

IP/Subsystem: Fix the I2S Tx interrupt masking issue if the requested…#140
ahshokry wants to merge 1 commit into
foss-for-synopsys-dwc-arc-processors:masterfrom
ahshokry:fix_i2s_intr

Conversation

@ahshokry
Copy link
Copy Markdown

If requested data length isn't integer multiple of (FIFO - THRE), the interrupt of I2S will be masked.

Let's assume FIFO = 16, THRE = 3, and requested data length is 20 bytes.

First, i2s_tx_master_tx_ISR_proc will call i2s_tx_master_write_samples with sample_cnt = (16 - 3) = 13.
Second, i2s_tx_master_write_samples will update sample_cnt to be 0, so the loop will exit.

Upon receiving FIFO interrupt, i2s_tx_master_tx_ISR_proc will call i2s_tx_master_write_samples again with sample_cnt = 13.
i2s_tx_master_write_samples will update sample_cnt to be 13 - 7 (20 requested - 13 sent the previous round) = 6

i2s_tx_master_write_samples will find that dev->xfr_len == *size, so it will increment sys_cnt and call application callback.
i2s_tx_master_tx_ISR_proc will iterate one more time because sample_cnt didn't reach zero yet.
Now, the condition if (dev->sys_cnt == dev->usr_cnt) will be true, so the interrupt will be masked.

… data length isn't integer multiple of (FIFO - THRE)
@fanghuaqi
Copy link
Copy Markdown
Contributor

Sphinx link check result


example/example.rst:75: [broken] https://embarc.org/pdf/embARC_appnote_how_to_use_smart_home_iot.pdf: 404 Client Error: Not Found for url: https://embarc.org/pdf/embARC_appnote_how_to_use_smart_home_iot.pdf
getting_started/hardware_requirement.rst:26: [broken] http://www.huamaosoft.cn/bluetooth.asp?id=1: HTTPConnectionPool(host='www.huamaosoft.cn', port=80): Max retries exceeded with url: /bluetooth.asp?id=1 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants