For the internet historians, On Thu, Sep 21, 2017 at 4:25 PM, Chris Packham <judge.pack...@gmail.com> wrote: > On Wed, Sep 20, 2017 at 5:31 PM, Stefan Roese <s...@denx.de> wrote: >> Hi Chris, >> >> On 19.09.2017 20:58, Chris Packham wrote: >>> >>> When you did the port from Marvell's source did you script any of the >>> tidy-up that you did along the way? >> >> >> Not really. At least not in a reproducible way. I spent long >> hours running Lindent, recursive-replace tools and especially >> manual code inspection and re-formatting on this huge code. >> Still the outcome is far from perfect, but hopefully better >> that the original version. >> >>> I'm running up a new board and with the upstream u-boot DDR training >>> occasionally fails. But with the Marvell bootloader it doesn't fail. >>> The initial port was done from TIP-1.29 but Marvell are now up to >>> TIP-1.55 so there is probably some difference that results in my board >>> working. >>> >>> One difference I've spotted so far is that Marvell enable 2T timing >>> mode for all Armada 38x boards (the comment says "resolve low freq >>> instability"). But doing that doesn't magically make my board work. >> >> >> Did you compare all DDR register values (the "good" ones and the "bad" >> ones) and only the the 2T timing is different? >> > > There are more differences. 2T was the one that stuckout. As you know > working backwards from register values to where the code sets them can > be tricky with this code. > >>> I'm thinking I need to compare TIP-1.29 with TIP-1.55 to look for >>> other differences but obviously that's going to be hard given the >>> style changes. >> >> >> Has the style changed in between the Marvell versions as well? I >> have not looked into this code for quite some time. >> > > What I meant was u-boot has 1.29 and I have 1.55 from Marvell. The > oldest Marvell version I have is 1.34 which helped me find the 2T > thing. I'm wondering what differences exist between 1.29 and 1.34. > 1.55 also has support for some newer integrated switch+CPU chips so it > is a little hard to separate those bits from the A38X code. > >>> If you have any scripts (or even just a record of the >>> regexes) that you used would you be able to share them? >> >> >> Please find some scripts attached, I've located that I have used while >> doing this porting. > > Thanks. That's a start at least.
In the end once I fixed the ecc_scrubbing[1] I stopped seeing the training failures so I've basically stopped looking at the differences between the Marvell bootloader and u-boot. But in the meantime I can summarize the differences I have identified in case they might help someone in the future. * Marvell unconditionally enable 2T timing for A38X * Different settings for RD/WR ODT particularly in situations using only one chip-select. There are more differences in the register dumps but I haven't looked into the meaning of them. -- [1] - https://lists.denx.de/pipermail/u-boot/2017-September/307243.html _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot