Re: [PATCH V2 2/2] mtd: msm_nand: Add initial msm nand driver support.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/27/2011 6:08 PM, Matthieu CASTET wrote:

Hi,

Hi,

Murali Nalajala a Ãcrit :
On 4/18/2011 1:02 PM, Matthieu CASTET wrote:
Hi,

Murali Nalajala a Ãcrit :
Add initial msm nand driver support for Qualcomm MSM platforms.
This driver is capable of handling both 2k and 4k page support
nand devices.

This driver was originally developed by Arve HjÃnnevÃg at google.
Its source is available at
http://android.git.kernel.org/?p=kernel/msm.git under
android-msm-2.6.35 branch.

CC: Dima Zavin<dima@xxxxxxxxxxx>
CC: Brian Swetland<swetland@xxxxxxxxxx>
CC: Arve HjÃnnevÃg<arve@xxxxxxxxxxx>
Signed-off-by: Murali Nalajala<mnalajal@xxxxxxxxxxxxxx>
---
Changes in V2
* Turn most of the pr_info() calls into pr_debug().

   drivers/mtd/devices/Kconfig    |   11 +
   drivers/mtd/devices/Makefile   |    1 +
   drivers/mtd/devices/msm_nand.c | 1597 ++++++++++++++++++++++++++++++++++++++++
   drivers/mtd/devices/msm_nand.h |   77 ++
   4 files changed, 1686 insertions(+), 0 deletions(-)
   create mode 100644 drivers/mtd/devices/msm_nand.c
   create mode 100644 drivers/mtd/devices/msm_nand.h

For the record, I am not sure it is a great idea to make nand drivers
independent of the nand layer.
By doing that you could change the expected behavior, and introduce bug
difficult to debug.

Why do you need that ? Nand drivers can override callbacks of nand framework.

Maybe because the nand layer call the driver page per page, and  you want to
work with more than one page. But in this case you can extend nand layer.

Or does your controller don't allow sending raw command ?
And in that case all the nand logic is in the nand controller ?

Our controller doesn't allow sending RAW commands to the flash. All
these commands are abstracted by the controller logic. Please refer the
msm_nand.h file where you will find the commands which are different
from the actual NAND device commands.
Ok, but does the controller does all other check : status check, ...

Yes, it does the automatic update of the status registers for every read/writes do report any ECC errors.


In the nand framework there is already controller like yours : see the denali.c
as example.

I had gone through it, here in driver i saw something like "nand_scan_ident" calls which still use the RAW commands.

So i need to do most of the custom nand scan implementation which i am doing it right now in my code!!!


eg: To send read/write data command to the device we configure the
controller with page address&  controller specific command. Then the
controller itself takes care of generating the internal h/w signals
required by the flash and it polls for the R/B signal&  wait states are
internally controlled by the h/w.

So you provide your own
     chip->ecc.read_page
     chip->ecc.read_page_raw
     chip->ecc.read_oob
     chip->write_page
     chip->ecc.write_oob

I don't see great advantage of re-writing these call backs in my driver ( Which are very well written and tested ). Also the DMA handling is bit different than what i had seen in the denali.c code.
In my case most of the limitation comes from the controller.

We have used nand base kind of implementation wherever is possible.
eg: We have leveraged the code from nand base to detect the nand device properties.


and your done.


Matthieu


Thanks,
Murali N

--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux