fix archi/hyper: correct Siracusa channel offset#169
Open
nic0villegasc wants to merge 1 commit into
Open
Conversation
…in-bounds The Hyper register size on Siracusa is 0x100 (0x1A10_2280-0x1A10_2380). With HYPER_NB_CHANNELS=2 and a 0x80 channel offset, HYPER_COMMON_REGS_OFFSET resolved to 0x100, placing every common register at the end of the memory space. Each channel only uses HYPER_NB_CONFIG_REGS=16 (0x40), so use a 0x40 offset: channels at 0x00/0x40, common block at 0x80, all within 0x100. Verified with siracusa evb.
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Hello, while working with HyperRAM on Siracusa I noticed the common registers land outside the Hyper memory space. The size is 0x100 (0x1A10_2280–0x1A10_2380), but with HYPER_NB_CHANNELS=2 and a 0x80 channel offset, HYPER_COMMON_REGS_OFFSET comes out to 0x100, so it points past the end into the uDMA Filter region.
I believe each channel only uses 16 config regs (0x40), so I dropped the offset to 0x40: channels land at 0x00/0x40 and the common block at 0x80, all inside 0x100. Confirmed on our evb probing Test Point 3, the CS addressing only lined up once the stride was 0x40.
Not sure if the fix is the best option or intended code definitions, so I'm flagging it for review rather than assuming. Happy to adjust.