There is a very simple explanation for the mismatched ID between U-Boot and Linux - both drivers implement the NAND_CMD_READID by using a special NFC automatic process for the actual READ ID data latching.
If you go read the docs for the i.MX53 for the NFC_LAUNCH register, it actually states very clearly that the special READ ID cycle generation will toggle the read enable 6 times and put the data into the requested data area dictated by RBA bits in NFC_CONFIGURATION1.
Sending command, address then toggling read enable 6 times = transfer 6 bytes, and the two extra bytes on the end are actually trash data since no NFC command clears the internal RAM before it executes, it could be the result of any previous NAND read.
Essentially it is impossible to actually use the READ ID automatic process if you need more than 6 bytes from address 0. I consider this is a serious hardware bug (although, quirk might be less aggressive since it is definitely documented.. I still say that it's seriously stupid from a design level).
That essentially means ONFI NAND detection simply is impossible with the current driver, which is why the weird table of ids exists in older kernels and U-Boot - unfortunately if the device is not in the table and you don't have access to a datasheet for that NAND (assuming it's ONFI compliant), then you are pretty much out of luck for properly using the NAND properly.
If their NAND is ONFI compliant, and I am not sure it is but let us assume that it is for the sake of discussion, getting a NAND datasheet from Samsung these days is tantamount to impossible unless you are Apple or another department at Samsung, so even if you COULD detect it some other way, the honest and usual way of pulling parameter data via a standardized command basically probably doesn't work either.
I find it incredibly hard to believe nobody noticed this since 2006 (ONFI 1.0 spec release), or sat down and looked at this before (but, I guess it is easier to add a line to a table in Linux than actually autodetect the hardware on a system for a lot of people just hacking around) given that most i.MX NFC boards in U-Boot have NAND that is ONFI complaint, and all go ahead and define CONFIG_SYS_NAND_ONFI_DETECTION - it would never have worked without the ID in nand_ids.c or Freescale's nand_device_info.c if you're using BSP U-Boot.
And despite it being listed as supporting, and listing several supported devices in the reference manual, the driver in upstream Linux (and any BSP after around 11.05) does not support them.. because it cannot detect real parameter data, hardcodes some "common" (but actually just guessed) data instead, and completely lacks ECC support for several 2k page NAND and *all* 4k page NAND devices...
I'm working on a bunch of patches right now for mxc_nand (unfortunately not for mxc_nd2) in U-Boot and Linux to resolve some of these issues and would appreciate before upstreaming them some kind of testing from other people - the NFC has some odd behavior and I only have very restricted NAND devices to test with (all ONFI-compliant Micron chips, which work fine with my changes, but I need some other manufacturer data to see if it is causing NAND chips to lock or do really weird things due to sending commands and asking to latch <8 bytes of data but unavoidably generating a pagesize worth of read cycles...
I will bring this up on linux-mtd tomorrow as Fabio suggested, since I definitely need some real NAND experts to evaluate my findings and give me a hint as to whether the proposed fix is as insane as the design of the IP core it's running on :smileyhappy: