Skip to content

TOGGLE error handling #2

@tmk

Description

@tmk

On the error data should be ignored and do nothing on data toggle bit.

tmk/tmk_keyboard#657

MAX3421 Programming Guide p.13

If the IN data was error-free but there was a data toggle mismatch (the DATA0 or DATA1 PID
send by the peripheral did not match the endpoint toggle value), the SIE sends the ACK
handshake, but it does not complement the data toggle or assert the RCVDAVIRQ. The SIE sets
HRSL = 0110 (Toggle Error) for this condition. This situation would happen if the peripheral
received a corrupted ACK handshake from the previous IN transfer. In this case the host ignores
the data in the RCVDATA FIFO, because it represents data that the peripheral mistakenly resent
when it missed the last ACK handshake. By ACK-ing the transfer and not updating its own
toggle bit, the SIE causes the peripheral to complement its toggle bit, thus forcing the data toggle
mechanism back into sync. 

felis#438 (felis@a361b72)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions