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