Skip to contentSkip to conversation

NAND Driver in case of NAND Flash Controller

DISCUSSION Ranga Raju B 2 participants 2 messages Jul 2, 2007 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

Hi,
I need to write a Linux MTD NAND Driver for an SoC. It has NAND
Flash Controller (ARASAN NAND Flash Controller) and I am using a 2Gb Micron NAND Flash. The MTD drivers I currently see in the Linux tree are basically having the NAND Flash connected directly to the processors using GPIO or Address Lines. In this case it is appropriate to write callback functions for

hwcontrol
dev_ready
write_byte
read_byte
verify_byte
write_buf
read_buf
verify_buf

Since the IO data lines and control lines are controlled directly by the processor.

In case of NAND flash controller we don't have this controller. We need to program only the registers and we can get status only from the status registers. We have data ports which can take only 512 bytes at a time. Has anyone written the Linux driver for this kind of situation?

I have control only at stage 1. Which are nothing but memory mapped interface.

1 2
ARM ---> NAND Flash Controller ---> NAND Flash

I don't know where to start this driver. I intend to use JFFS2 over MTD partitions.

Best regards
Ranga Raju B

#1 lore raw
Quoted 26 lines · Ranga Raju B

Hi,
I need to write a Linux MTD NAND Driver for an SoC. It has NAND
Flash Controller (ARASAN NAND Flash Controller) and I am using a 2Gb Micron NAND Flash. The MTD drivers I currently see in the Linux tree are basically having the NAND Flash connected directly to the processors using GPIO or Address Lines. In this case it is appropriate to write callback functions for

hwcontrol
dev_ready
write_byte
read_byte
verify_byte
write_buf
read_buf
verify_buf

Since the IO data lines and control lines are controlled directly by the processor.

In case of NAND flash controller we don't have this controller. We need to program only the registers and we can get status only from the status registers. We have data ports
which can take only 512 bytes at a time. Has anyone written the Linux driver for this kind of situation?

Quoted 8 lines

I have control only at stage 1. Which are nothing but memory mapped interface.

1 2
ARM ---> NAND Flash Controller ---> NAND Flash

I don't know where to start this driver. I intend to use JFFS2 over MTD partitions.

Take a look at the NDFC driver in drivers/mtd/nand/. It is a NAND controller found on some PowerPC 4xx chips and operates similar to what you've described. You might find it helpful when writing a driver for your NAND controller.

josh