Hi Sascha

> > you need the reference manual of the i.MX25 to know the meaning of
> > these registers and the datasheet of your flash to know it's timings
> > then you can calculate the value to put in the registers.
> >
> >
> I have found them in an old uboot tree a previous person patched to have
> working support for NOR on boot. The values are:
>
>         { .ptr_type = 4, .addr = 0xB8002000, .val = 0x0000D003, },
>         { .ptr_type = 4, .addr = 0xB8002004, .val = 0x00330D01, },
>         { .ptr_type = 4, .addr = 0xB8002008, .val = 0x00220800, },

Do these values match the ones you read out of the registers using your
U-Boot?

Yep, the corresponing dcdheader.S entries:

DCDGEN( 1, 4, 0xB8002000, 0x0000D003) /* CS0_CSCRU */
DCDGEN( 2, 4, 0xB8002004, 0x00330d01) /* CS0_CSCRL */
DCDGEN( 3, 4, 0xB8002008, 0x00220800) /* CS0_CSCRA */

So I reckon at least I got this part working fine.

> /* Set up 16bit NOR flash on WEIM CS0 */
> writel(0xB8002000, 0x0000D003);
>  writel(0xB8002004, 0x00330D01);
> writel(0xB8002008, 0x00220800);

You mixed up the argument order.

Yikes!!!! I hope I didn't fry something. I'll quickly try the reversed order and report back.
 
>
> board_init_lowlevel_return();
> }
>
> Why can't I printf() from low_level?

Because the console hasn't been setup yet. That's exactly the reason why
I recommend doing only the absolutely necessary stuff in lowlevel_init.

Make perfect sense (*slapping forehead*). Thank you for your patience. I reckon those questions of mine could be compiled into some sort of FAQ for the newcomers into the barebox world to flatten the learning curve.

Cheers
Roberto