-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- listen(): wait for address and determine read/write - respond_to_read(): transmit to master. We are requiring the user of this API to pass in enough data tocomplete the transaction - respond_to_write(): receive from master Found HW race conditions: - We would get the DMA complete interrupt where the slave status is in addressed (0x0) instead of transmit (0x2). Then we are just stuck because the master is still expecting more data and we didn't exit the poll_fn to rearm the DMA to provide more data. That is why we have the restriction for respond_to_read() - respond_to_read() would exit the poll_fn with 0x4C01 with DMA completed and slave state being transmit. However, shortly it would be become i2c status of 0x4801, where slave state is addressed and not deselected. Then 0x8101 where the slave state is addressed and deselected. - Auto-ack and auto-match, after an ack is sent by auto-ack, auto-ack is not rearmed. So if a second transaction comes in quickly while we are still handling the first transaction, then we have to manually ack the address phase of the second transaction.
- Loading branch information
Showing
2 changed files
with
196 additions
and
91 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters