[U-Boot] nand onfi 8bit/16bit bus support

Hi guys,
Zynq supports 8 and 16bit ONFI nand flashes. We can count number of connected pins and from that we know if 8bit or 16bit nand flash is used.
I have looked at the code and contains ONFI detection with correct detection of bus width + checking later. Why also not setup proper chip->options for NAND_BUSWIDTH_16?
Not sure how others but if driver expect just ONFI devices and support 8 and 16bit options why not just to setup chip options based on information from ONFI or not check that (busw != (chip->options & NAND_BUSWIDTH_16)) for onfi case.
Just wanted to get input from you before I will try to create patch to support this. I just want to be sure that I am not doing something what it is wrong for other platforms.
Thanks, Michal

On 05/06/2013 11:53:52 AM, Michal Simek wrote:
Hi guys,
Zynq supports 8 and 16bit ONFI nand flashes. We can count number of connected pins and from that we know if 8bit or 16bit nand flash is used.
I have looked at the code and contains ONFI detection with correct detection of bus width + checking later. Why also not setup proper chip->options for NAND_BUSWIDTH_16?
Not sure how others but if driver expect just ONFI devices and support 8 and 16bit options why not just to setup chip options based on information from ONFI or not check that (busw != (chip->options & NAND_BUSWIDTH_16)) for onfi case.
This is fixed in current Linux, with NAND_BUSWIDTH_AUTO. There was a patchset to merge in recent Linux MTD code a while back, but an expected respin didn't come. I'll try to fix it up when I process this merge window's patches.
-Scott

On 05/09/2013 11:37 PM, Scott Wood wrote:
On 05/06/2013 11:53:52 AM, Michal Simek wrote:
Hi guys,
Zynq supports 8 and 16bit ONFI nand flashes. We can count number of connected pins and from that we know if 8bit or 16bit nand flash is used.
I have looked at the code and contains ONFI detection with correct detection of bus width + checking later. Why also not setup proper chip->options for NAND_BUSWIDTH_16?
Not sure how others but if driver expect just ONFI devices and support 8 and 16bit options why not just to setup chip options based on information from ONFI or not check that (busw != (chip->options & NAND_BUSWIDTH_16)) for onfi case.
This is fixed in current Linux, with NAND_BUSWIDTH_AUTO.
There was a patchset to merge in recent Linux MTD code a while back, but an expected respin didn't come. I'll try to fix it up when I process this merge window's patches.
Ok. Nice. That will be really helpful.
Thanks, Michal

Hi Scott,
On 05/09/2013 11:37 PM, Scott Wood wrote:
On 05/06/2013 11:53:52 AM, Michal Simek wrote:
Hi guys,
Zynq supports 8 and 16bit ONFI nand flashes. We can count number of connected pins and from that we know if 8bit or 16bit nand flash is used.
I have looked at the code and contains ONFI detection with correct detection of bus width + checking later. Why also not setup proper chip->options for NAND_BUSWIDTH_16?
Not sure how others but if driver expect just ONFI devices and support 8 and 16bit options why not just to setup chip options based on information from ONFI or not check that (busw != (chip->options & NAND_BUSWIDTH_16)) for onfi case.
This is fixed in current Linux, with NAND_BUSWIDTH_AUTO. There was a patchset to merge in recent Linux MTD code a while back, but an expected respin didn't come. I'll try to fix it up when I process this merge window's patches.
Have you done this change? I have grepped the latest version and I can't see it there.
Thanks, Michal

On 06/19/2013 08:40:19 AM, Michal Simek wrote:
Hi Scott,
On 05/09/2013 11:37 PM, Scott Wood wrote:
On 05/06/2013 11:53:52 AM, Michal Simek wrote:
Hi guys,
Zynq supports 8 and 16bit ONFI nand flashes. We can count number of connected pins and from that we know if 8bit or 16bit nand flash is used.
I have looked at the code and contains ONFI detection with correct detection of bus width + checking later. Why also not setup proper chip->options for NAND_BUSWIDTH_16?
Not sure how others but if driver expect just ONFI devices and support 8 and 16bit options why not just to setup chip options based on information from ONFI or not check that (busw != (chip->options & NAND_BUSWIDTH_16)) for onfi case.
This is fixed in current Linux, with NAND_BUSWIDTH_AUTO. There was
a patchset to merge in recent Linux MTD code a while back, but an expected respin didn't come. I'll try to fix it up when I process this merge window's patches.
Have you done this change? I have grepped the latest version and I can't see it there.
MTD from 3.7.1 (which was what was current when the patch was posted months ago) was merged in. It looks like NAND_BUSWIDTH_AUTO was added in 3.8. We can do another MTD update in the next merge window, which would pick this up. Or if you'd like to submit a patch that just fixes this problem (in the same way as in Linux, so it doesn't conflict too badly when we do the merge), it could be applied now as a bugfix.
-Scott

On 06/19/2013 07:17 PM, Scott Wood wrote:
On 06/19/2013 08:40:19 AM, Michal Simek wrote:
Hi Scott,
On 05/09/2013 11:37 PM, Scott Wood wrote:
On 05/06/2013 11:53:52 AM, Michal Simek wrote:
Hi guys,
Zynq supports 8 and 16bit ONFI nand flashes. We can count number of connected pins and from that we know if 8bit or 16bit nand flash is used.
I have looked at the code and contains ONFI detection with correct detection of bus width + checking later. Why also not setup proper chip->options for NAND_BUSWIDTH_16?
Not sure how others but if driver expect just ONFI devices and support 8 and 16bit options why not just to setup chip options based on information from ONFI or not check that (busw != (chip->options & NAND_BUSWIDTH_16)) for onfi case.
This is fixed in current Linux, with NAND_BUSWIDTH_AUTO. There was a patchset to merge in recent Linux MTD code a while back, but an expected respin didn't come. I'll try to fix it up when I process this merge window's patches.
Have you done this change? I have grepped the latest version and I can't see it there.
MTD from 3.7.1 (which was what was current when the patch was posted months ago) was merged in. It looks like NAND_BUSWIDTH_AUTO was added in 3.8. We can do another MTD update in the next merge window, which would pick this up. Or if you'd like to submit a patch that just fixes this problem (in the same way as in Linux, so it doesn't conflict too badly when we do the merge), it could be applied now as a bugfix.
Ah ok. From my point of view it is not bug fix but new features and should go to the u-boot in proper merge window. No problem to wait just wanted to get update on this to be able to better plan our work.
Thanks, Michal
participants (2)
-
Michal Simek
-
Scott Wood