All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] NAND flash driver for Samsung K9F1G08
@ 2008-10-01  1:40 Roman Mashak
  2008-10-01  5:31 ` Roman Mashak
  0 siblings, 1 reply; 9+ messages in thread
From: Roman Mashak @ 2008-10-01  1:40 UTC (permalink / raw)
  To: u-boot

Hello

I'm using 128Mb Samsung NAND flash K9F1G08 on our custom ARM-based
board. Flash ID is in $(UBOOT)/include/linux/mtd/nand_ids.h
Seems this chip is not CFI compliant (at least datasheet says nothing
of it), so the use of CFI driver falls away.

The problem I faced is how to calculate max number of sectors on a
flash chip, i.e. CFG_MAX_FLASH_SECT parameter. Does CFG_MAX_FLASH_SECT
mean total max number of sectors on the device, or max number of
sectors on a page? If I divide total flash size on bytes by sector
size I get weird numbers, obviously I'm on a wrong way.

Will appreciate any comments.
Thanks.

-- 
Roman Mashak

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] NAND flash driver for Samsung K9F1G08
  2008-10-01  1:40 [U-Boot] NAND flash driver for Samsung K9F1G08 Roman Mashak
@ 2008-10-01  5:31 ` Roman Mashak
  2008-10-01  6:07   ` Stefan Roese
  0 siblings, 1 reply; 9+ messages in thread
From: Roman Mashak @ 2008-10-01  5:31 UTC (permalink / raw)
  To: u-boot

Hello

2008/9/30 Roman Mashak <romez777@gmail.com>:
> Flash ID is in $(UBOOT)/include/linux/mtd/nand_ids.h
> Seems this chip is not CFI compliant (at least datasheet says nothing
> of it), so the use of CFI driver falls away.

After some investigations I see that $(uboot)/drivers/mtd/nand/nand.c
is compiled in with CONFIG_CMD_NAND defined and CFG_NAND_LEGACY
undefined -- these two macros are mutually exclusive. Why do then some
platforms define both of them, for instance
$(uboot)/include/configs/at91rm9200dk.h  and what is the proper use of
these macros?

To make things more clear: NAND flash Samsung K9F1G08U is defined in
both $(uboot)/drivers/mtd/nand/nand_ids.c and
$(uboot)/include/linux/mtd/nand_ids.h, latter is included with
CFG_NAND_LEGACY defined. It confuses me, I don't understand is my
flash legacy device or rather new one? :-)

-- 
Roman Mashak

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] NAND flash driver for Samsung K9F1G08
  2008-10-01  5:31 ` Roman Mashak
@ 2008-10-01  6:07   ` Stefan Roese
  2008-10-01  8:11     ` Roman Mashak
  2008-10-01 16:17     ` [U-Boot] NAND legacy flash removal Scott Wood
  0 siblings, 2 replies; 9+ messages in thread
From: Stefan Roese @ 2008-10-01  6:07 UTC (permalink / raw)
  To: u-boot

On Wednesday 01 October 2008, Roman Mashak wrote:
> > Flash ID is in $(UBOOT)/include/linux/mtd/nand_ids.h
> > Seems this chip is not CFI compliant (at least datasheet says nothing
> > of it), so the use of CFI driver falls away.
>
> After some investigations I see that $(uboot)/drivers/mtd/nand/nand.c
> is compiled in with CONFIG_CMD_NAND defined and CFG_NAND_LEGACY
> undefined -- these two macros are mutually exclusive.

Correct. The legacy NAND support is, as the name implies, outdated and should 
*not* be used anymore.

> Why do then some 
> platforms define both of them, for instance
> $(uboot)/include/configs/at91rm9200dk.h  and what is the proper use of
> these macros?

Defining both is definitely broken and should be fixed. I think now its really 
time to completely remove the legacy NAND support. It has been dragged along 
for quite some time.

> To make things more clear: NAND flash Samsung K9F1G08U is defined in
> both $(uboot)/drivers/mtd/nand/nand_ids.c and
> $(uboot)/include/linux/mtd/nand_ids.h, latter is included with
> CFG_NAND_LEGACY defined. It confuses me, I don't understand is my
> flash legacy device or rather new one? :-)

IIRC then your NAND chips should be supported in the U-Boot NAND driver 
without any changes.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] NAND flash driver for Samsung K9F1G08
  2008-10-01  6:07   ` Stefan Roese
@ 2008-10-01  8:11     ` Roman Mashak
  2008-10-01  9:13       ` Wolfgang Denk
  2008-10-01 16:17     ` [U-Boot] NAND legacy flash removal Scott Wood
  1 sibling, 1 reply; 9+ messages in thread
From: Roman Mashak @ 2008-10-01  8:11 UTC (permalink / raw)
  To: u-boot

Hello

2008/9/30 Stefan Roese <sr@denx.de>:

[skip]
>> To make things more clear: NAND flash Samsung K9F1G08U is defined in
>> both $(uboot)/drivers/mtd/nand/nand_ids.c and
>> $(uboot)/include/linux/mtd/nand_ids.h, latter is included with
>> CFG_NAND_LEGACY defined. It confuses me, I don't understand is my
>> flash legacy device or rather new one? :-)
>
> IIRC then your NAND chips should be supported in the U-Boot NAND driver
> without any changes.

Okay. There is another thing confusing me is - almost all ports
implement board specific support of flash in
$(uboot)/board/board_name/flash.c or $(uboot)/board/board_name/nand.c
(NAND specific).

What is the rationale to separate them in such a way -- flash.c is for
NOR, boot flash etc. only and all NAND stuff apart? Does 'flinfo'
print information about ANY available flash -- but on the other hand,
do_flinfo() in $(uboot)/common/cmd_flash.c uses 'flash_print_info()'
defined in target's flash.c

Hmm.. completely confused.

Hopefully somebody can bring me out in the light :)

-- 
Roman Mashak

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] NAND flash driver for Samsung K9F1G08
  2008-10-01  8:11     ` Roman Mashak
@ 2008-10-01  9:13       ` Wolfgang Denk
  2008-10-02  1:04         ` Roman Mashak
  0 siblings, 1 reply; 9+ messages in thread
From: Wolfgang Denk @ 2008-10-01  9:13 UTC (permalink / raw)
  To: u-boot

Dear Roman,

In message <40a670230810010111u2c4992f0g51c6e486e8c150bc@mail.gmail.com> you wrote:
> 
> Okay. There is another thing confusing me is - almost all ports
> implement board specific support of flash in
> $(uboot)/board/board_name/flash.c or $(uboot)/board/board_name/nand.c
> (NAND specific).

Not almost all boards to that. Only some 200 out of more than 500 do,
i. e. less than 40%, and these are mostly old boards  that  have  not
been  adapted  to  use  the  CFI driver yet (with very few exceptions
where some specific issue prevents us from using the CFI driver).

> What is the rationale to separate them in such a way -- flash.c is for

flash.c is the old, obsolete way to implement a NOR flash driver.

> NOR, boot flash etc. only and all NAND stuff apart? Does 'flinfo'
> print information about ANY available flash -- but on the other hand,

flinfo is part of the NOR flash interface.

> do_flinfo() in $(uboot)/common/cmd_flash.c uses 'flash_print_info()'
> defined in target's flash.c

cmd_flash.c is part of the NOR flash interface.

> Hmm.. completely confused.

Part of your confisuion probably results from the fact that NAND flash
is *not* memory, but a storage device instead.

NOR flash is memory - you have byte addresses, and it is mapped  into
the processors address space. It is supported by memory commands like
"md", "cp" etc.

NAND flash is a storage device. You cannot address a certain byte  by
the  CPU - instead you have to runa specific command sequence to load
some amount of data from the storage device into RAM, before you  wan
work on it. The "nand" command is used to do this.


I am aware that many people  use  sloppy  terms  and  call  NAND  and
OneNAND  etc.  as "flash memory", while in fact all these devices are
storage devices - the reemble much more the behaviour of a disk drive
than of memroy.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
When a program is being  tested,  it  is  too  late  to  make  design
changes.                  -- Geoffrey James, "The Tao of Programming"

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] NAND legacy flash removal
  2008-10-01  6:07   ` Stefan Roese
  2008-10-01  8:11     ` Roman Mashak
@ 2008-10-01 16:17     ` Scott Wood
  1 sibling, 0 replies; 9+ messages in thread
From: Scott Wood @ 2008-10-01 16:17 UTC (permalink / raw)
  To: u-boot

On Wed, Oct 01, 2008 at 08:07:04AM +0200, Stefan Roese wrote:
> Defining both is definitely broken and should be fixed. I think now its really 
> time to completely remove the legacy NAND support. It has been dragged along 
> for quite some time.

I'd love to see that as well.

To anyone who's maintaining a board that still uses legacy NAND, please
update soon.

-Scott

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] NAND flash driver for Samsung K9F1G08
  2008-10-01  9:13       ` Wolfgang Denk
@ 2008-10-02  1:04         ` Roman Mashak
  2008-10-02 16:11           ` Scott Wood
  0 siblings, 1 reply; 9+ messages in thread
From: Roman Mashak @ 2008-10-02  1:04 UTC (permalink / raw)
  To: u-boot

Hello

2008/10/1 Wolfgang Denk <wd@denx.de>:
> Not almost all boards to that. Only some 200 out of more than 500 do,
> i. e. less than 40%, and these are mostly old boards  that  have  not
> been  adapted  to  use  the  CFI driver yet (with very few exceptions
> where some specific issue prevents us from using the CFI driver).

As far as I understand not all manufacturers adhere to CFI standards,
so this is flash chip's problem rather then board itself.
CFI is for both NAND and NOR flash devices (even though CFI stands for
Common _Flash memory_ Interface)? So if a device CFI compliant, only
one driver 'cfi_flash.c' can be used to control it, and it's
guaranteed it will support whole set of operations on a chip?

> flash.c is the old, obsolete way to implement a NOR flash driver.
> flinfo is part of the NOR flash interface.
> cmd_flash.c is part of the NOR flash interface.
[skip]

So the settings as follows mainly refer to NOR:
CFG_MAX_FLASH_BANKS
CFG_NO_FLASH
CFG_MAX_FLASH_BANKS_DETECT
CFG_FLASH_BASE
CFG_FLASH_ERASE_TOUT
CFG_FLASH_WRITE_TOUT
CFG_FLASH_LOCK_TOUT
CFG_FLASH_UNLOCK_TOUT

while
CFG_MAX_NAND_DEVICE
CFG_NAND_SELECT_DEVICE

are NAND-related

> Part of your confisuion probably results from the fact that NAND flash
> is *not* memory, but a storage device instead.

Indeed. In U-Boot you've logically separated 'flash memory' from
'flash storage'. Then what about dataflash? It's obviously a 'flash
storage' device, but is supported in NOR memory interface in
cmd_flash.c ?

-- 
Roman Mashak

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] NAND flash driver for Samsung K9F1G08
  2008-10-02  1:04         ` Roman Mashak
@ 2008-10-02 16:11           ` Scott Wood
  2008-10-04  3:59             ` Roman Mashak
  0 siblings, 1 reply; 9+ messages in thread
From: Scott Wood @ 2008-10-02 16:11 UTC (permalink / raw)
  To: u-boot

On Wed, Oct 01, 2008 at 06:04:02PM -0700, Roman Mashak wrote:
> As far as I understand not all manufacturers adhere to CFI standards,
> so this is flash chip's problem rather then board itself.
> CFI is for both NAND and NOR flash devices (even though CFI stands for
> Common _Flash memory_ Interface)?

No, CFI is just for NOR.

-Scott

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] NAND flash driver for Samsung K9F1G08
  2008-10-02 16:11           ` Scott Wood
@ 2008-10-04  3:59             ` Roman Mashak
  0 siblings, 0 replies; 9+ messages in thread
From: Roman Mashak @ 2008-10-04  3:59 UTC (permalink / raw)
  To: u-boot

Hello

2008/10/2 Scott Wood <scottwood@freescale.com>:
> On Wed, Oct 01, 2008 at 06:04:02PM -0700, Roman Mashak wrote:
>> As far as I understand not all manufacturers adhere to CFI standards,
>> so this is flash chip's problem rather then board itself.
>> CFI is for both NAND and NOR flash devices (even though CFI stands for
>> Common _Flash memory_ Interface)?
>
> No, CFI is just for NOR.
Thanks, now it's a bit easier to find my way around the deep jungles
of U-Boot :-)

Would you please elaborate on my previous statement:

>> So the settings as follows mainly refer to NOR:
>> CFG_MAX_FLASH_BANKS
>> CFG_NO_FLASH
>> CFG_MAX_FLASH_BANKS_DETECT
>> CFG_FLASH_BASE
>> CFG_FLASH_ERASE_TOUT
>> CFG_FLASH_WRITE_TOUT
>> CFG_FLASH_LOCK_TOUT
>> CFG_FLASH_UNLOCK_TOUT

>> while
>> CFG_MAX_NAND_DEVICE
>> CFG_NAND_SELECT_DEVICE

>> are NAND-related

Is my understanding correct, if not - why?
Thanks again.

-- 
Roman Mashak

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2008-10-04  3:59 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-01  1:40 [U-Boot] NAND flash driver for Samsung K9F1G08 Roman Mashak
2008-10-01  5:31 ` Roman Mashak
2008-10-01  6:07   ` Stefan Roese
2008-10-01  8:11     ` Roman Mashak
2008-10-01  9:13       ` Wolfgang Denk
2008-10-02  1:04         ` Roman Mashak
2008-10-02 16:11           ` Scott Wood
2008-10-04  3:59             ` Roman Mashak
2008-10-01 16:17     ` [U-Boot] NAND legacy flash removal Scott Wood

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.