Hi Simon,

( Last mail for tonight - a glass of quite nice red wine is
waiting for me ... ;) )

On 02.12.2015 17:53, Simon Glass wrote:
Hi Stefan,

On 2 December 2015 at 09:00, Stefan Roese <s...@denx.de> wrote:

Hi Simon,

On 02.12.2015 16:50, Simon Glass wrote:

<snip>

I think it would be better to make it depend on whether the bit is
flipped, rather than whether you are in SPL or not.


You simply can't detect if this "bit is flipped". You just have
to know. This is a long lasting ugly thing on some Marvell
patforms. Here the comment from armada-xp-gp.dts:


Can you point me to the place in U-Boot where this bit is flipped?
Something, somewhere has to make the change. So something has to know.
Before it makes the change, the range works one way. Afterwards it
works another way.


Sure. I've mentioned this before. Its here:

arch/arm/mach-mvebu/cpu.c:

int arch_cpu_init(void)
{
         ...

         /* Linux expects the internal registers to be at 0xf1000000 */
         writel(SOC_REGS_PHY_BASE, INTREG_BASE_ADDR_REG);

This is the line that changes the register base address. And
to change it back you need to write to the new address, as the
address holding this base address is also moved. Quite ugly!

So its really right at the start of U-Boot proper.

OK I see. So really we can determine which way the address 'switch'
it. It's just a case of making the change when we are ready, and
keeping a record of that.

Yes. But how is the "common code" in dev_get_addr() supposed to know
which version of U-Boot we are running on? This boils down to some
callback again, or not? Or even worse the ugly #ifdef.

Thanks,
Stefan

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

Reply via email to