Help requested with Eureka EP501 NAND flash controller.
Darren B. Hutchinson
dhutchin at ikanos.com
Mon Feb 2 19:09:14 EST 2009
Hi All,
I'm looking to interface a device containing the Eureka EP501 NAND flash controller ( http://www.eurekatech.com/products/memory/ep501.htm )
I've looked through the last twelve months of archives. I found lot of answers to questions I'll get to later, but no mention of the Eureka controller.
So first question - has anybody ported for the EP501 and can they share it?
Unless I'm the luckiest person on earth I guess I still have a driver to write. I've looked through the code & documentation for a few days and I think I know how to write a suitable driver based on the existing NAND code - but I'd really appreciate any knowledgeable opinions you could share.
The EP501 is fairly, well, controlling. It wants to generate and write the ECC/BCH by itself at the end of write and read operation. It also wants to issue the commands to the flash itself and often routes the data to/from registers it keeps for specific purposes. There is no direct access to the NAND flash control signals (CLE/ALE/etc)
For example if you tell it to read the device ID the data goes to special registers on the device and must be read from there. Page data goes to a different set of access register.
Based on my examination of the code it looks like the right approach would be:
- set ecc.type to NAND_ECC_HW_SYNDROME
- provide functions for ecc.correct()/ecc.calculate()/ecc.read_page()/ecc.write_page()/ecc.read_oob()/ecc.write_oob() to access the page via the EP501 using its ECC/BCH engines
- provide chip.cmd_ctrl() to catch the flash commands and forward them to the EP501
- provide chip.read_byte()/chip.write_byte() to fetch non-page access commands (ie read device ID) from the command-dependent register on the EP501
Does this sound right? Is there a better way to solve the problem?
Thanks in advance for any guidance you can give,
Darren Hutchinson (Ikanos Communications)
More information about the linux-mtd
mailing list