Having now got the nand boot and just about everything on the custom iMX287 board working perfectly with mainline Linux kernel 3.19.8 and u-boot 2015.04, there is still one nagging problem with programming the nand boot from within Linux. Using the Freescale BSP kobs-ng tool for the imx28evk board fails as the mainlilne kernel uses the nand_gpmi driver rather than the nand_mil_nfc drivers, so it doesn't publish the geometry in the procfs pool. I used kobs-ng-3.0.35-4.0.0 from the imx6q BSP, which calculates the geometry if the procfs tag is missing, and it appears to understand the device and write the FDT, DBBT and boot code correctly to the nand (within itself) but still no boot. The hexdump /dev/mtd0 view looks right, but a nand dump 0 shows an additional 10 bytes of data at the start of the nand.
hexdump /dev/mtd0
# hexdump /dev/mtd0
0000000 0000 0000 0000 0000 0000 0000 fb12 ffff
0000010 4346 2042 0000 0100 3c50 0619 0000 0000
0000020 0800 0000 0840 0000 0040 0000 0000 0000
0000030 0000 0000 0000 0000 0004 0000 0200 0000
0000040 0200 0000 0004 0000 000a 0000 0003 0000
0000050 0000 0000 0000 0000 0000 0000 0000 0000
u-boot nand dump 0
=> nand dump 0
Page 00000000 dump:
00 ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00
00 00 00 00 00 00 12 fb ff ff 46 43 42 20 00 00
00 01 50 3c 19 06 00 00 00 00 00 08 00 00 40 08
00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 04 00 00 00 00 02 00 00 00 02 00 00 04 00
Any clues?