On Fri, Mar 14, 2014 at 12:23:50PM -0500, Alex G. wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 03/14/2014 09:17 AM, Tom Rini wrote:
> > On Fri, Mar 14, 2014 at 10:33:45AM +0000, Ian Campbell wrote:
> > 
> > [snip]
> >> +static void mctl_ddr3_reset(void) +{ +    struct sunxi_dram_reg 
> >> *dram = +                  (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE; + +  
> >> { + 
> >> clrbits_le32(&dram->mcr, DRAM_MCR_RESET); +                udelay(2); + 
> >> setbits_le32(&dram->mcr, DRAM_MCR_RESET); +        }
> > 
> > That seems like an odd construction, why the extra braces?
> > 
> This originally had a conditional depending on the SoC family. (Yeah,
> they need to reset the ram differently). It seems it wasn't removed
> properly.
> 
> > And as for the rest of the code, lots of magic numbers to #define 
> > what/why (why udelay(2) and 22?)
> > 
> Before going into more detail, remember this is ram initialization
> code. That's always going to be a pain :(.
> There's nothing magic here. It's just a fact of life. Every step is
> going to need a different delay. No need to bloat the headers by
> #defining each. It also makes raminit code more unreadable.
> 
> We got these numbers from allwinner code dumps. We used to have these
> as sdelay() numbers, which usually meant units of 2 clock cycles. So
> we had to convert them to udelay() to at least make the delays
> independent of CPU clock. The old sdelay() numbers made no sense either.

Yeah, I can accept a certain amount of black magic here.  We need to
make sure things are commented as much as it can be.

-- 
Tom

Attachment: signature.asc
Description: Digital signature

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to