[U-Boot-Users] [PATCH] mpc85xx: make the MxMR register in upmconfig as a parameter
Sebastian Siewior
bigeasy at linutronix.de
Sun Jul 20 13:51:32 CEST 2008
* Wolfgang Grandegger | 2008-07-15 13:28:40 [+0200]:
>Sebastian Siewior wrote:
>>* Andy Fleming | 2008-07-14 19:27:08 [-0500]:
>>
>>>On Mon, Jul 14, 2008 at 5:54 AM, Sebastian Siewior
>>><bigeasy at linutronix.de> wrote:
>>>>The default value for the MxMR register is not always the right one.
>>>>This patch adds the value of MxMR register as an additional
>>>>parameter (plus a few defines instead of hex coded values).
>>>>
>>>>Signed-off-by: Sebastian Siewior <bigeasy at linutronix.de>
>>>
>>>I'm not convinced this is the right solution. Anytime we put a
>>>cpu-specific #ifdef for a function definition, we should think long
>>>and hard about why. Maybe instead of an argument, we should make
>>>mxmr_mode a config value. Also, unless I'm misreading this patch,
>>>you've broken *every* board with this patch, since there's no change
>>>to any of the invokers of upmconfig to supply the fourth argument.
>>Other sollutions are fine with me :) I did not change any board specific
>>code, because I did not find any users (with 85xx cpus). Still possible
>>that I missed some....
>
>upmconfig was introduced with the socrates board but our internal
>version now also uses a configurable MXMR value. The TQM85xx boards and
>likely more should be converted as well.
Socrates uses upmconfig, TQM85xx uses its own implementation. Why
TQM85xx boards? There is only one, isn't it?
>>If you prefer a define for this register the way we deal with BRx/ORx
>>than I could send a patch that does this. What should be done in case
>>the user is going to program UPMA but did not specify MAMR? The default
>>value or build error? Since this value as well as the UPM tables depend
>>very much on the hardware, the user should been told by his hardware
>>guys what to do :)
>
>I think upmconfig() should only touch the relevant bits of the MxMR
>register. For the TQM8548 NAND support (see board/tqc/tqm85xx/nand.c) I
>implemented it as Linux does:
>
> clrsetbits_be32(&lbc->mbmr, MxMR_MAD_MSK,
> MxMR_OP_WARR | (addr & MxMR_MAD_MSK));
>
> out_be32 (&lbc->mdr, val);
>
> /* dummy access to perform write */
> out_8 ((void __iomem *)CFG_NAND0_BASE, 0);
>
> clrbits_be32(&lbc->mbmr, MxMR_OP_WARR);
>
Okey, so you prefer to clear only MAD bits and MODE bits and leave
everythign else untouched. And where should de define them? In
cpu/mpc85xx/cpu_init.c right after the OR/BR settings?
Why does Linux program UPMs? Isn't this one-time-setup?
>Wolfgang.
Sebastian
More information about the U-Boot
mailing list