[chip,dv] Wait for JTAG connection in chip_sw_base_vseq #22893
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The wait_lc_status() task does a DMI read over JTAG to figure out the current state of lc_ctrl. This requires pinmux to route the JTAG signals to LC_CTRL and things get rather confused if we run this task before the routing has happened.
In normal use, the JTAG driver will send an IR command to switch address to the DMI address. Then it will send a DR command to do the DMI read/write. On the next DMI command, it can avoid the silly extra IR command because it knows we're already pointing at the DMI address.
Of course, this doesn't work if the JTAG signals got squashed. In that case, it will not know that IR hasn't changed, so it will send repeated DR commands expecting to see a particular lc_ctrl status come out. But that won't happen because we're not actually looking at the DMI register at all. Oops!
This commit adds a wait to make sure that JTAG has actually been connected up.
Fixes #22793 (and the ridiculously long maximum wait seems to be needed)