nand_base.c:nand_get_flash_type() test results

Mike Dunn mikedunn at newsguy.com
Tue Oct 18 10:05:59 EDT 2011


Hi Angus.  Thanks for taking a look and commenting.

On 10/18/2011 12:58 AM, Angus CLARK wrote:
> On 10/16/2011 03:33 PM, Mike Dunn wrote:
>> I am currently grappling with this issue with my driver for the diskonchip G4,
>> which is an MLC nand under the hood, but has a proprietary controller around it
>> which doesn't interact as a "typical" NAND device.  Specific to this topic, it
>> doesn't respond to NAND_READID commands.  My solution was to skip the call to
>> nand_scan_ident(), which calls nand_get_flash_type().  Instead, I do all the
>> initializations done by nand_get_flash_type() within my driver. 
>>
>> Any thoughts or suggestions appreciated.
>>
> I am not familiar with the diskonchip technology but I had a quick look through
> the patch you posted a few days ago.  What you have done regarding
> nand_scan_ident() is probably the most sensible solution here - I believe it was
> this kind of use-case that led to nand_scan() being split into nand_scan_ident()
> and nand_scan_tail().


My guess as well.  The only problem is that, oddly, nand_scan_ident() calls
nand_set_defaults().  So by skipping the cal to nand_scan_ident(), the various
defaut nand methods are not set.  Fortunately, I need to override most of them
anyway, but I did need to duplicate a couple trivial ones in my driver, since
they're not exported from nand_base.c


> An alternative approach would be to fake support for NAND_CMD_READID, similar to
> what you have done for NAND_CMD_STATUS, with subsequent calls to
> chip->read_byte() returning the 'DOCG4_IDREG' sequence {0x04, 0x00, 0xfb, 0xff}.
>  In the same way ONFI devices are handled, you could then add a special case in
> nand_get_flash_type(), say nand_flash_detect_docg4(), jumping to 'ident_done' if
> successful.


I did it this way originally.  But this method requires serving up an arbitrary
unused ID and patching nand_ids.c with a new entry for the arbitrary ID
containing the docg4 parameters.  It was so ugly, I went with the alternate method.


> To be honest, in this case, I don't think there is much to be gained by adding
> 'nand_flash_detect_docg4()' to the generic code.  It would just return some
> hard-coded parameters to serve a single device and driver; you may as well put
> them in the driver itself, as you have done.  On the other hand, if you extend
> it to also handle the other diskonchip varients, that might be more interesting.


Thaks for the suggestion.  Something to keep in mind; Robert Jarzmik is working
on a driver for the diskonchip G3 (which may also support the P3).


Thanks again,
Mike




More information about the linux-mtd mailing list