[U-Boot] [PATCH v2 3/5] sun6i: dram: Do not try to initialize a second dram chan on A31s

Siarhei Siamashka siarhei.siamashka at gmail.com
Fri Dec 19 11:02:14 CET 2014


On Sat, 13 Dec 2014 12:00:44 +0100
Hans de Goede <hdegoede at redhat.com> wrote:

> Hi,
> 
> On 12-12-14 21:25, Siarhei Siamashka wrote:
> > On Sun, 23 Nov 2014 14:43:13 +0100
> > Hans de Goede <hdegoede at redhat.com> wrote:
> >
> >> The A31s only has one dram channel, so do not bother with trying to initialize
> >> a second channel.
> >>
> >> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> >
> > Ian Campbell has already noticed in the earlier review. In the case *if*
> > the automatic detection works correctly,
> 
> It does work correctly in my testing.

Thanks. Yes, I have seen your confirmation earlier:
    http://lists.denx.de/pipermail/u-boot/2014-November/196198.html

"My assumption was that it would not work, as the A31s has only one
channel, or so the datasheets claim. But it turned out it does work"

> > then why bother adding this
> > *extra* code?
> 
> I'm just mimicking what the boot0 code does here, and the boot0 code does
> detect the SoC type and not bother with the second channel on A31s, and that
> seems sensible to do, nothing good will come out of trying to use the second
> channel on A31s.

That's a good point. If boot0 is doing this, then Allwinner developers
probably had some valid reason. Too bad that we don't know this reason.

You are currently transplanting the Allwinner code into u-boot. And
in the short run it is indeed safer to keep it as is. Especially
considering that you are apparently not doing any extensive testing
of the individual features and hardware registers, but instead heavily
relying on assumptions.

> > Based on your description, it looks like a superfluous
> > band-aid and increases the number of "moving parts". Which generally
> > makes the code less maintainable.
> >
> > There was a talk about calling it a "performance optimization" earlier,
> > but the v2 commit message does not mention this. Neither does it present
> > any benchmark numbers.
> >
> > Basically, it boils down to whether we can trust the automatic detection
> > code to do a proper job or not. Normally, if the automatic detection
> > does not work correctly in all cases, then it needs to be fixed in the
> > long run. But I can clearly understand if you are not willing to take
> > any risks and just want to deploy something that somehow works to the
> > end users sooner.
> 
> In my testing the auto-detect code worked fine for automatically disabling
> the 2nd channel on on A31s, but as said it seems sensible to just not bother
> with the 2nd channel at all on A31s.

In what way is it sensible to have three possible code paths (A31s, A31
with two channels, A31 with a single channel) instead of two before
this change (A31/A31s with a single channel, A31 with two channels)?
This just results in a worse testing coverage situation.

-- 
Best regards,
Siarhei Siamashka


More information about the U-Boot mailing list