public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
@ 2009-06-30 18:44 Mike Frysinger
  2009-06-30 19:01 ` Mike Frysinger
  2009-07-04 23:39 ` Wolfgang Denk
  0 siblings, 2 replies; 20+ messages in thread
From: Mike Frysinger @ 2009-06-30 18:44 UTC (permalink / raw)
  To: u-boot

From: Harald Krapfenbauer <Harald.Krapfenbauer@bluetechnix.at>

The current flash framework generally assumes that the flash in question
is completely directly addressable.  With the new weak accessor functions,
that is no longer always the case.  These allow us to hook up flashes
whose pins are only partially directly addressable while the rest are
connected to GPIOs.  Since all the erase/write commands go through the
weak accessor functions, those work transparently.  But for reading from
the flash, the common memory function is still used and this does not go
through the weak accessor functions.  So we need a dedicated command to
make sure the weak accessor functions are used to do the actual reading.

Signed-off-by: Harald Krapfenbauer <Harald.Krapfenbauer@bluetechnix.at>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 common/cmd_flash.c |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/flash.h    |    7 +++++
 2 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/common/cmd_flash.c b/common/cmd_flash.c
index 9f27ab0..b8d305b 100644
--- a/common/cmd_flash.c
+++ b/common/cmd_flash.c
@@ -696,6 +696,72 @@ int flash_sect_protect (int p, ulong addr_first, ulong addr_last)
 }
 #endif /* CONFIG_SYS_NO_FLASH */
 
+#if defined(CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS) && !defined(CONFIG_SYS_NO_FLASH)
+int do_flread(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+	ulong src, dst, size;
+	u8 *psrc, *pdst, *pend;
+	flash_info_t *info = &flash_info[0];
+
+	if (argc != 4) {
+		cmd_usage(cmdtp);
+		return 1;
+	}
+
+	src = simple_strtoul(argv[1], NULL, 16);
+	dst = simple_strtoul(argv[2], NULL, 16);
+	size = simple_strtoul(argv[3], NULL, 16);
+	if (src < info->start[0] ||
+	    (src + size) > (info->start[0] + info->size)) {
+		printf("Error: memory area %#08lx to %#08lx is not in FLASH\n",
+		       src, src + size);
+		return 1;
+	}
+	if (dst < CONFIG_SYS_SDRAM_BASE ||
+	    (dst + size) > (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MAX_RAM_SIZE)) {
+		printf("Error: memory area %#08lx to %#08lx is not in RAM\n",
+		       dst, dst + size);
+		return 1;
+	}
+
+	psrc = (void *)src;
+	pend = psrc + size;
+	pdst = (void *)dst;
+	if ((src & 0x3) == (dst & 0x3)) {
+		/* copy byte-wise until we get a 32-bit-aligned address */
+		while ((u32)psrc & 0x3) {
+			*pdst = flash_read8(psrc);
+			++pdst;
+			++psrc;
+		}
+		/* copy 32-bit words */
+		while (psrc < pend - 3) {
+			u32 *pdst32 = (void *)pdst,
+			    *psrc32 = (void *)psrc;
+			*pdst32 = flash_read32(psrc32);
+			pdst = (void *)++pdst32;
+			psrc = (void *)++psrc32;
+		}
+	}
+	/* copy remaining byte-wise */
+	while (psrc < pend) {
+		*pdst = flash_read8(psrc);
+		++pdst;
+		++psrc;
+	}
+
+	printf("Done.\n");
+
+	return 0;
+}
+
+U_BOOT_CMD(
+	flread,  4,  0,  do_flread,
+	"read from FLASH to RAM",
+	"src dest length\n"
+	"    - copy 'length' bytes from FLASH addr 'src' to RAM addr 'dest'\n"
+);
+#endif
 
 /**************************************************/
 #if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
diff --git a/include/flash.h b/include/flash.h
index b016162..c5e7bf4 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -104,6 +104,13 @@ extern int flash_write (char *, ulong, ulong);
 extern flash_info_t *addr2info (ulong);
 extern int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt);
 
+/* drivers/mtd/cfi_flash.c */
+#ifdef CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
+extern u8 flash_read8(void *addr);
+extern u16 flash_read16(void *addr);
+extern u32 flash_read32(void *addr);
+#endif
+
 /* drivers/mtd/cfi_mtd.c */
 #ifdef CONFIG_FLASH_CFI_MTD
 extern int cfi_mtd_init(void);
-- 
1.6.3.3

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-06-30 18:44 [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes Mike Frysinger
@ 2009-06-30 19:01 ` Mike Frysinger
  2009-07-04 23:39 ` Wolfgang Denk
  1 sibling, 0 replies; 20+ messages in thread
From: Mike Frysinger @ 2009-06-30 19:01 UTC (permalink / raw)
  To: u-boot

On Tuesday 30 June 2009 14:44:25 Mike Frysinger wrote:
> +	if (dst < CONFIG_SYS_SDRAM_BASE ||
> +	    (dst + size) > (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MAX_RAM_SIZE)) {
> +		printf("Error: memory area %#08lx to %#08lx is not in RAM\n",
> +		       dst, dst + size);
> +		return 1;
> +	}

actually, now that i think about it and read the diff yet again, this check 
doesnt make sense.  if the user gives a bad address, that is their fault.  
this prevents reading of the flash into say on-chip data SRAMs on a Blackfin 
part, or into SRAM that is mapped into the async bank.

once Stefan (and anyone else) gets a chance to review, i'll post a new patch
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090630/24237e13/attachment.pgp 

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-06-30 18:44 [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes Mike Frysinger
  2009-06-30 19:01 ` Mike Frysinger
@ 2009-07-04 23:39 ` Wolfgang Denk
  2009-07-05  3:07   ` Mike Frysinger
  1 sibling, 1 reply; 20+ messages in thread
From: Wolfgang Denk @ 2009-07-04 23:39 UTC (permalink / raw)
  To: u-boot

Dear Mike Frysinger,

In message <1246387465-13156-1-git-send-email-vapier@gentoo.org> you wrote:
> From: Harald Krapfenbauer <Harald.Krapfenbauer@bluetechnix.at>
> 
> The current flash framework generally assumes that the flash in question
> is completely directly addressable.  With the new weak accessor functions,
> that is no longer always the case.  These allow us to hook up flashes
> whose pins are only partially directly addressable while the rest are
> connected to GPIOs.  Since all the erase/write commands go through the

Either you or me misunderstand the purpose of these weak accessor
functions.

> weak accessor functions, those work transparently.  But for reading from
> the flash, the common memory function is still used and this does not go
> through the weak accessor functions.  So we need a dedicated command to
> make sure the weak accessor functions are used to do the actual reading.

Nope. This ain't working.

Either we have flash memory; then it is a mandatory requirent that we
can access the flash memory  using  all  memory  accessing  commands,
including  "cp",  "md"  etc. This is not the case on any devices that
require additional address switching, like  on  processors  that  use
things  like bank switching signals in addition to the normal address
lines.

Otherwise we have some form of storage device, which cannot be
accessed with commands like "cp", "md", or "erase".


NAK.

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
"A dirty mind is a joy forever."                       - Randy Kunkee

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-04 23:39 ` Wolfgang Denk
@ 2009-07-05  3:07   ` Mike Frysinger
  2009-07-05 15:15     ` Wolfgang Denk
  0 siblings, 1 reply; 20+ messages in thread
From: Mike Frysinger @ 2009-07-05  3:07 UTC (permalink / raw)
  To: u-boot

On Saturday 04 July 2009 19:39:45 Wolfgang Denk wrote:
> In message Mike Frysinger wrote:
> > From: Harald Krapfenbauer <Harald.Krapfenbauer@bluetechnix.at>
> >
> > The current flash framework generally assumes that the flash in question
> > is completely directly addressable.  With the new weak accessor
> > functions, that is no longer always the case.  These allow us to hook up
> > flashes whose pins are only partially directly addressable while the rest
> > are connected to GPIOs.  Since all the erase/write commands go through
> > the
>
> Either you or me misunderstand the purpose of these weak accessor
> functions.

the original purpose of the weak accessor functions did not include this 
functionality, but there was no way previously to do this -- transparently 
access parallel flashes that do not have all address lines hooked up to the 
normal address bus.

i see the functions being useful in the same way we have mtd mapping drivers 
under Linux.

> > weak accessor functions, those work transparently.  But for reading from
> > the flash, the common memory function is still used and this does not go
> > through the weak accessor functions.  So we need a dedicated command to
> > make sure the weak accessor functions are used to do the actual reading.
>
> Nope. This ain't working.
>
> Either we have flash memory; then it is a mandatory requirent that we
> can access the flash memory  using  all  memory  accessing  commands,
> including  "cp",  "md"  etc. This is not the case on any devices that
> require additional address switching, like  on  processors  that  use
> things  like bank switching signals in addition to the normal address
> lines.
>
> Otherwise we have some form of storage device, which cannot be
> accessed with commands like "cp", "md", or "erase".

yes, the current flash subsystem is limited in this area.  it lacks something 
akin to the Linux mtd mapping drivers.  but this is something to be fixed, not 
something to say "well that hardware doesnt make sense and anyone who wants to 
do that is not supported".  saying "no" to flread is one thing, but saying no 
to the entire idea of supporting these types of devices is wrong imo.

previously these boards had to replicate the CFI drivers entirely just to do 
the bank switching.  the weak accessor functions means now they need all of 
~50 lines of board specific code and they can use all of the common CFI code 
for free.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090704/c5596014/attachment.pgp 

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-05  3:07   ` Mike Frysinger
@ 2009-07-05 15:15     ` Wolfgang Denk
  2009-07-05 17:12       ` Mike Frysinger
  0 siblings, 1 reply; 20+ messages in thread
From: Wolfgang Denk @ 2009-07-05 15:15 UTC (permalink / raw)
  To: u-boot

Dear Mike Frysinger,

In message <200907042307.28572.vapier@gentoo.org> you wrote:
>
> > > The current flash framework generally assumes that the flash in question
> > > is completely directly addressable.  With the new weak accessor
> > > functions, that is no longer always the case.  These allow us to hook up
> > > flashes whose pins are only partially directly addressable while the rest
> > > are connected to GPIOs.  Since all the erase/write commands go through
> > > the
> >
> > Either you or me misunderstand the purpose of these weak accessor
> > functions.
>
> the original purpose of the weak accessor functions did not include this 
> functionality, but there was no way previously to do this -- transparently
> access parallel flashes that do not have all address lines hooked up to the
> normal address bus.

You cannot do it transparently with these  functions  either.  Simple
memory  accesses  like  "cp",  "md",  "mm"  etc.  will  still  not be
available. Reading or writing an image to a  partition  that  crosses
banks  is  not  available.  Accessing  files  from a file system that
crosses banks does not work. And so on.

> i see the functions being useful in the same way we have mtd mapping drivers 
> under Linux.

They _would_ be useful if they could be used like in Linux, but this
requires at least a memory controller setup that traps of accesses to
certain address ranges - but we don't have virtual memory or the linke
in U-Boot. At least not yet ;-)

> > Either we have flash memory; then it is a mandatory requirent that we
> > can access the flash memory  using  all  memory  accessing  commands,
> > including  "cp",  "md"  etc. This is not the case on any devices that
> > require additional address switching, like  on  processors  that  use
> > things  like bank switching signals in addition to the normal address
> > lines.
> >
> > Otherwise we have some form of storage device, which cannot be
> > accessed with commands like "cp", "md", or "erase".
>
> yes, the current flash subsystem is limited in this area.  it lacks something 
> akin to the Linux mtd mapping drivers.  but this is something to be fixed, not 
> something to say "well that hardware doesnt make sense and anyone who wants to 
> do that is not supported".  saying "no" to flread is one thing, but saying no 
> to the entire idea of supporting these types of devices is wrong imo.

I did not say that. I just NAKed the flread patch.

> previously these boards had to replicate the CFI drivers entirely just to do 
> the bank switching.  the weak accessor functions means now they need all of 
> ~50 lines of board specific code and they can use all of the common CFI code 
> for free.

Use it for what? See above - none of the frequently used commands  to
access  flash memory is working as is. Yes, you can hack a set of new
commands - flread, flwrite, flcopy, flmd and whatever you  like.  But
don't expect these to do into mainline.

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
In general, if you think something isn't in Perl, try it out, because
it usually is :-) - Larry Wall in <1991Jul31.174523.9447@netlabs.com>

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-05 15:15     ` Wolfgang Denk
@ 2009-07-05 17:12       ` Mike Frysinger
  2009-07-05 17:55         ` Wolfgang Denk
  0 siblings, 1 reply; 20+ messages in thread
From: Mike Frysinger @ 2009-07-05 17:12 UTC (permalink / raw)
  To: u-boot

On Sunday 05 July 2009 11:15:42 Wolfgang Denk wrote:
> Mike Frysinger wrote:
> > > > The current flash framework generally assumes that the flash in
> > > > question is completely directly addressable.  With the new weak
> > > > accessor functions, that is no longer always the case.  These allow
> > > > us to hook up flashes whose pins are only partially directly
> > > > addressable while the rest are connected to GPIOs.  Since all the
> > > > erase/write commands go through the
> > >
> > > Either you or me misunderstand the purpose of these weak accessor
> > > functions.
> >
> > the original purpose of the weak accessor functions did not include this
> > functionality, but there was no way previously to do this --
> > transparently access parallel flashes that do not have all address lines
> > hooked up to the normal address bus.
>
> You cannot do it transparently with these  functions  either.  Simple
> memory  accesses  like  "cp",  "md",  "mm"  etc.  will  still  not be
> available. Reading or writing an image to a  partition  that  crosses
> banks  is  not  available.  Accessing  files  from a file system that
> crosses banks does not work. And so on.

erasing/writing does work transparently as the CFI layer grabs the addresses 
before they're put onto the bus, and the weak accessors do the setup.  same 
goes for file system commands.

> > i see the functions being useful in the same way we have mtd mapping
> > drivers under Linux.
>
> They _would_ be useful if they could be used like in Linux, but this
> requires at least a memory controller setup that traps of accesses to
> certain address ranges - but we don't have virtual memory or the linke
> in U-Boot. At least not yet ;-)

the mapping drivers dont have any direct dependency on the memory controller 
in any way.  the input to the mapping driver is the mtd and desired offset to 
access.  here you can do any crazy magic you want, including but not limited 
to, memory controller tricks.  in the case of gpio flashes, the gpio pins are 
taken from the address and the real address is accessed.

> > > Either we have flash memory; then it is a mandatory requirent that we
> > > can access the flash memory  using  all  memory  accessing  commands,
> > > including  "cp",  "md"  etc. This is not the case on any devices that
> > > require additional address switching, like  on  processors  that  use
> > > things  like bank switching signals in addition to the normal address
> > > lines.
> > >
> > > Otherwise we have some form of storage device, which cannot be
> > > accessed with commands like "cp", "md", or "erase".
> >
> > yes, the current flash subsystem is limited in this area.  it lacks
> > something akin to the Linux mtd mapping drivers.  but this is something
> > to be fixed, not something to say "well that hardware doesnt make sense
> > and anyone who wants to do that is not supported".  saying "no" to flread
> > is one thing, but saying no to the entire idea of supporting these types
> > of devices is wrong imo.
>
> I did not say that. I just NAKed the flread patch.

OK

> > previously these boards had to replicate the CFI drivers entirely just to
> > do the bank switching.  the weak accessor functions means now they need
> > all of ~50 lines of board specific code and they can use all of the
> > common CFI code for free.
>
> Use it for what? See above - none of the frequently used commands  to
> access  flash memory is working as is. Yes, you can hack a set of new
> commands - flread, flwrite, flcopy, flmd and whatever you  like.  But
> don't expect these to do into mainline.

but they do work because of how the flash subsystem interacts with the rest of 
the system.  it just may inadvertently overlay other things in the physical 
memory map if it follows too closely to the flash.

as an actual example, the cm-bf537e has a 4 meg flash hooked up to 0x20000000 
but the highest address line is handled with a GPIO (meaning 2 megs is 
physically mapped).  using the weak accessor functions, the GPIO is toggled 
transparently and the address in question is munged such that it stays in the 
2 meg boundary.  that means the CFI layer sees:
flash 0: 0x20000000 + 0x400000
so any access from the command line between 0x20000000 and 0x20400000 that 
requires assistance from the CFI layer goes through the accessor functions.  
that means erasing/writing as well as filesystem accesses.  since the read 
command is the only one to not do checking of the flash_info structure, we 
need the dedicated flread command.

the downside here is that anything between 0x20200000 and 0x20400000 is not 
actually physically mapped to the flash device, but any flash related command 
will think it is.  so it'd be a problem if you tried to hook up two flashes 
back to back.  that hasnt been a use case that ive seen thus far.  after all, 
it's generally cheaper to buy a larger memory than to try and buy two smaller 
ones as is connecting/testing/etc...
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090705/2ae8d0f1/attachment.pgp 

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-05 17:12       ` Mike Frysinger
@ 2009-07-05 17:55         ` Wolfgang Denk
  2009-07-05 19:03           ` Mike Frysinger
  0 siblings, 1 reply; 20+ messages in thread
From: Wolfgang Denk @ 2009-07-05 17:55 UTC (permalink / raw)
  To: u-boot

Dear Mike Frysinger,

In message <200907051312.25031.vapier@gentoo.org> you wrote:
>
> > They _would_ be useful if they could be used like in Linux, but this
> > requires at least a memory controller setup that traps of accesses to
> > certain address ranges - but we don't have virtual memory or the linke
> > in U-Boot. At least not yet ;-)
>
> the mapping drivers dont have any direct dependency on the memory controller 
> in any way.  the input to the mapping driver is the mtd and desired offset to 
> access.  here you can do any crazy magic you want, including but not limited 
> to, memory controller tricks.  in the case of gpio flashes, the gpio pins are 
> taken from the address and the real address is accessed.

You are missing the point that we are talking about flash _memory_
here, which is accessed using an address in the CPU's address space.
If you  have N banks of flash _memory_, each of these banks must be
assigned it's own, unique region in the CPU's address space.

What you are talking about is not flash _memory_ but a flash based
storage _device_.

Memory is required to be directly adressable from  the  CPU;  if  you
need to perform additional operations like toggeling GPIO pins to map
the  required bank in, this probably needs memory controller support.
At least I cannot think of another solution.

> as an actual example, the cm-bf537e has a 4 meg flash hooked up to 0x20000000 
> but the highest address line is handled with a GPIO (meaning 2 megs is 
> physically mapped).  using the weak accessor functions, the GPIO is toggled
> transparently and the address in question is munged such that it stays in the 
> 2 meg boundary.  that means the CFI layer sees:
> flash 0: 0x20000000 + 0x400000
> so any access from the command line between 0x20000000 and 0x20400000 that
> requires assistance from the CFI layer goes through the accessor functions.
> that means erasing/writing as well as filesystem accesses.  since the read 
> command is the only one to not do checking of the flash_info structure, we 
> need the dedicated flread command.

What you describe is a storage device, not much different from NAND
flash or any other storage device.

If you had an implementation that supported 4  MiB  of  flash  memory
mapped  at  0x20000000, then this flash memory would be accessable by
driving the address lines  to  any  address  in  the  0x20000000  ...
0x203FFFFF  range. The fact that you need a driver (MTD) even to read
the device is a clear indication that it is not memory.

Let me give you a different example - for flash memory it is possible
to manually perform for example a sector erase by doing something like

	mw.b 20200AAA AA
	mw.b 20200555 55
	mw.b 20200AAA 80
	mw.b 20200AAA AA
	mw.b 20200555 55

or similar - I guess this will not work as expected in your case,
becuase what you implement is not a memory interface, but a storage
device.


Please note that I do not say that support for such a configuration is
not useful - it definitely _is_ useful. But then be honest to yourself
and don't try to disguise this as memory - as suggested by you, it is
a storage device, and I will not accept attempts to access storage
devices of any kinds through a memory interface.


Please see the archive, we had similar discussions  several  times  a
long  time  ago. Ulf can tell you a thing or two about it. For me one
important decision criterion is whether I can do the same actions  in
U-Boot  and in a JTAG debugger; in your case, running "md 0x201FFF80"
in U-Boot and at the BDI3000's telnet prompt would NOT show the  very
same  results,  which they have to if there is memory mapped at these
addresses.


> the downside here is that anything between 0x20200000 and 0x20400000 is not 
> actually physically mapped to the flash device, but any flash related command 
> will think it is.  so it'd be a problem if you tried to hook up two flashes 

Gotcha. This is not the characteristics of memory, but  a storage
device. Use a storage device driver for such a setup.

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
There's an old story about the person who wished his computer were as
easy to use as his telephone. That wish has come  true,  since  I  no
longer know how to use my telephone.

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-05 17:55         ` Wolfgang Denk
@ 2009-07-05 19:03           ` Mike Frysinger
  2009-07-05 20:34             ` Wolfgang Denk
  0 siblings, 1 reply; 20+ messages in thread
From: Mike Frysinger @ 2009-07-05 19:03 UTC (permalink / raw)
  To: u-boot

On Sunday 05 July 2009 13:55:13 Wolfgang Denk wrote:
> Mike Frysinger wrote:
> > > They _would_ be useful if they could be used like in Linux, but this
> > > requires at least a memory controller setup that traps of accesses to
> > > certain address ranges - but we don't have virtual memory or the linke
> > > in U-Boot. At least not yet ;-)
> >
> > the mapping drivers dont have any direct dependency on the memory
> > controller in any way.  the input to the mapping driver is the mtd and
> > desired offset to access.  here you can do any crazy magic you want,
> > including but not limited to, memory controller tricks.  in the case of
> > gpio flashes, the gpio pins are taken from the address and the real
> > address is accessed.
>
> You are missing the point that we are talking about flash _memory_
> here, which is accessed using an address in the CPU's address space.
> If you  have N banks of flash _memory_, each of these banks must be
> assigned it's own, unique region in the CPU's address space.
>
> What you are talking about is not flash _memory_ but a flash based
> storage _device_.

i dont see much point in distinguishing the two, but i understand what you're 
going for now

> Memory is required to be directly adressable from  the  CPU;  if  you
> need to perform additional operations like toggeling GPIO pins to map
> the  required bank in, this probably needs memory controller support.
> At least I cannot think of another solution.

i dont really know what you mean.  in my gpio flash example, there is 
literally no other software or hardware changes necessary.  the fact that one 
or two address lines is handled by GPIOs makes no difference at all to the 
rest of the hardware.

> If you had an implementation that supported 4  MiB  of  flash  memory
> mapped  at  0x20000000, then this flash memory would be accessable by
> driving the address lines  to  any  address  in  the  0x20000000  ...
> 0x203FFFFF  range. The fact that you need a driver (MTD) even to read
> the device is a clear indication that it is not memory.

the lower two megs that are physically mapped are fully usable today without 
any changes.  in other words, if i configured the board to lie and treat it as 
a 2 meg CFI flash at 0x20000000, it'd work the same way as any other CFI flash 
device.  all the commands you refer to work fine.

> Please note that I do not say that support for such a configuration is
> not useful - it definitely _is_ useful. But then be honest to yourself
> and don't try to disguise this as memory - as suggested by you, it is
> a storage device, and I will not accept attempts to access storage
> devices of any kinds through a memory interface.

my purpose is clear -- to maximize device support with as little 
changes/overhead as possible and get merged into mainline.

> Please see the archive, we had similar discussions  several  times  a
> long  time  ago. Ulf can tell you a thing or two about it.

i'll try searching ... any keywords to look for ?

> For me one
> important decision criterion is whether I can do the same actions  in
> U-Boot  and in a JTAG debugger; in your case, running "md 0x201FFF80"
> in U-Boot and at the BDI3000's telnet prompt would NOT show the  very
> same  results,  which they have to if there is memory mapped at these
> addresses.

u-boot and jtag would always show the exact same results in this case.  they 
just may not do what you expect them.  i.e. if the GPIO line is high, then 
reading 0x20000000 - 0x20200000 will access the top half of the flash, not the 
bottom half.

> > the downside here is that anything between 0x20200000 and 0x20400000 is
> > not actually physically mapped to the flash device, but any flash related
> > command will think it is.  so it'd be a problem if you tried to hook up
> > two flashes
>
> Gotcha. This is not the characteristics of memory, but  a storage
> device. Use a storage device driver for such a setup.

i dont mind creating a dedicated command like "fl" that would act like "sf" in 
terms of reading/writing/erasing, but it still must be able to leverage the 
CFI code which means using the weak GPIO accessor functions.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090705/34ad569c/attachment-0001.pgp 

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-05 19:03           ` Mike Frysinger
@ 2009-07-05 20:34             ` Wolfgang Denk
  2009-07-06  5:10               ` Stefan Roese
  2009-07-06  6:42               ` Mike Frysinger
  0 siblings, 2 replies; 20+ messages in thread
From: Wolfgang Denk @ 2009-07-05 20:34 UTC (permalink / raw)
  To: u-boot

Dear Mike Frysinger,

In message <200907051503.44391.vapier@gentoo.org> you wrote:
>
> > Memory is required to be directly adressable from  the  CPU;  if  you
> > need to perform additional operations like toggeling GPIO pins to map
> > the  required bank in, this probably needs memory controller support.
> > At least I cannot think of another solution.
>
> i dont really know what you mean.  in my gpio flash example, there is 
> literally no other software or hardware changes necessary.  the fact that one 
> or two address lines is handled by GPIOs makes no difference at all to the
> rest of the hardware.

Yes, it does. These GPIO lines are not part of the CPU's address
signals. If the CPU attempts to fetch data from 0x20300000 it will not
see the expected data from the midle of the second bank.

> > If you had an implementation that supported 4  MiB  of  flash  memory
> > mapped  at  0x20000000, then this flash memory would be accessable by
> > driving the address lines  to  any  address  in  the  0x20000000  ...
> > 0x203FFFFF  range. The fact that you need a driver (MTD) even to read
> > the device is a clear indication that it is not memory.
>
> the lower two megs that are physically mapped are fully usable today without 
> any changes.  in other words, if i configured the board to lie and treat it as 
> a 2 meg CFI flash at 0x20000000, it'd work the same way as any other CFI flash 
> device.  all the commands you refer to work fine.

Agreed. That's the current status quo. There are for example a number
of MPC5200 systems that can access  (in  U-Boot)  only  half  of  the
physically available flash memory because of this.

> my purpose is clear -- to maximize device support with as little 
> changes/overhead as possible and get merged into mainline.

I appreciate this.

> > Please see the archive, we had similar discussions  several  times  a
> > long  time  ago. Ulf can tell you a thing or two about it.
>
> i'll try searching ... any keywords to look for ?

See for example these threads:

http://article.gmane.org/gmane.comp.boot-loaders.u-boot/26014
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/27363/focus=27372
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/28528/focus=28754

and so on. Or search for "storage device" & "flash memory" :-)

> > U-Boot  and in a JTAG debugger; in your case, running "md 0x201FFF80"
> > in U-Boot and at the BDI3000's telnet prompt would NOT show the  very
> > same  results,  which they have to if there is memory mapped at these
> > addresses.
>
> u-boot and jtag would always show the exact same results in this case.  they 
> just may not do what you expect them.  i.e. if the GPIO line is high, then
> reading 0x20000000 - 0x20200000 will access the top half of the flash, not the 
> bottom half.

> i dont mind creating a dedicated command like "fl" that would act like "sf" in 
> terms of reading/writing/erasing, but it still must be able to leverage the 
> CFI code which means using the weak GPIO accessor functions.

Sounds like a plan.

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
If the odds are a million to one against something occuring,  chances
are 50-50 it will.

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-05 20:34             ` Wolfgang Denk
@ 2009-07-06  5:10               ` Stefan Roese
  2009-07-06  5:59                 ` Mike Frysinger
  2009-07-06  7:04                 ` Mike Frysinger
  2009-07-06  6:42               ` Mike Frysinger
  1 sibling, 2 replies; 20+ messages in thread
From: Stefan Roese @ 2009-07-06  5:10 UTC (permalink / raw)
  To: u-boot

On Sunday 05 July 2009 22:34:39 Wolfgang Denk wrote:
> > i dont mind creating a dedicated command like "fl" that would act like
> > "sf" in terms of reading/writing/erasing, but it still must be able to
> > leverage the CFI code which means using the weak GPIO accessor functions.
>
> Sounds like a plan.

I kind of like the idea to create a new set of commands for accessing such 
board specific NOR FLASH (can be used on "normal" NOR FLASH as well). Perhaps 
we could make it "generic" in a way that it can be used for all kind of "MTD 
devices". How about this "mtd" commandset:

Select MTD NOR device #1 (2nd NOR device):
=> mtd device nor 1

Or via mtdparts/mtdids:
=> mtd device nor0

After this selection the "mtd" commands could be used to access the FLASH 
device:

=> mtd erase
=> mtd read
=> mtd write

This way all these commands would be FLASH type independent. We could perhaps 
consolidate all those multiple commandsets (nand, onenand etc) into this one 
over time.

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] 20+ messages in thread

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  5:10               ` Stefan Roese
@ 2009-07-06  5:59                 ` Mike Frysinger
  2009-07-06  6:24                   ` Stefan Roese
  2009-07-06  7:04                 ` Mike Frysinger
  1 sibling, 1 reply; 20+ messages in thread
From: Mike Frysinger @ 2009-07-06  5:59 UTC (permalink / raw)
  To: u-boot

On Monday 06 July 2009 01:10:58 Stefan Roese wrote:
> On Sunday 05 July 2009 22:34:39 Wolfgang Denk wrote:
> > > i dont mind creating a dedicated command like "fl" that would act like
> > > "sf" in terms of reading/writing/erasing, but it still must be able to
> > > leverage the CFI code which means using the weak GPIO accessor
> > > functions.
> >
> > Sounds like a plan.
>
> I kind of like the idea to create a new set of commands for accessing such
> board specific NOR FLASH (can be used on "normal" NOR FLASH as well).
> Perhaps we could make it "generic" in a way that it can be used for all
> kind of "MTD devices". How about this "mtd" commandset:

makes sense to me.  i'm assuming you're not also proposing doing the first cut 
implementation yourself :).
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090706/b845e388/attachment.pgp 

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  5:59                 ` Mike Frysinger
@ 2009-07-06  6:24                   ` Stefan Roese
  0 siblings, 0 replies; 20+ messages in thread
From: Stefan Roese @ 2009-07-06  6:24 UTC (permalink / raw)
  To: u-boot

On Monday 06 July 2009 07:59:25 Mike Frysinger wrote:
> On Monday 06 July 2009 01:10:58 Stefan Roese wrote:
> > On Sunday 05 July 2009 22:34:39 Wolfgang Denk wrote:
> > > > i dont mind creating a dedicated command like "fl" that would act
> > > > like "sf" in terms of reading/writing/erasing, but it still must be
> > > > able to leverage the CFI code which means using the weak GPIO
> > > > accessor functions.
> > >
> > > Sounds like a plan.
> >
> > I kind of like the idea to create a new set of commands for accessing
> > such board specific NOR FLASH (can be used on "normal" NOR FLASH as
> > well). Perhaps we could make it "generic" in a way that it can be used
> > for all kind of "MTD devices". How about this "mtd" commandset:
>
> makes sense to me.  i'm assuming you're not also proposing doing the first
> cut implementation yourself :).

No, sorry. :)

But we (you?) should wait with such an implementation until we get a bit more 
feedback from the community about this.

Thanks.

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] 20+ messages in thread

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-05 20:34             ` Wolfgang Denk
  2009-07-06  5:10               ` Stefan Roese
@ 2009-07-06  6:42               ` Mike Frysinger
  2009-07-06  8:03                 ` Wolfgang Denk
  1 sibling, 1 reply; 20+ messages in thread
From: Mike Frysinger @ 2009-07-06  6:42 UTC (permalink / raw)
  To: u-boot

On Sunday 05 July 2009 16:34:39 Wolfgang Denk wrote:
> Mike Frysinger wrote:
> > > Please see the archive, we had similar discussions  several  times  a
> > > long  time  ago. Ulf can tell you a thing or two about it.
> >
> > i'll try searching ... any keywords to look for ?
>
> See for example these threads:
>
> http://article.gmane.org/gmane.comp.boot-loaders.u-boot/26014
> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/27363/focus=27372
> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/28528/focus=28754
>
> and so on. Or search for "storage device" & "flash memory" :-)

there are a few references to "grant's idea" and "grant's work".  this is all 
before my time hacking on u-boot, but i vaguely recall this being related to 
u-boot being fully relocatable and not anything to do with interfaces to flash 
devices ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090706/5a755438/attachment.pgp 

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  5:10               ` Stefan Roese
  2009-07-06  5:59                 ` Mike Frysinger
@ 2009-07-06  7:04                 ` Mike Frysinger
  2009-07-06  7:25                   ` Stefan Roese
  1 sibling, 1 reply; 20+ messages in thread
From: Mike Frysinger @ 2009-07-06  7:04 UTC (permalink / raw)
  To: u-boot

On Monday 06 July 2009 01:10:58 Stefan Roese wrote:
> On Sunday 05 July 2009 22:34:39 Wolfgang Denk wrote:
> > > i dont mind creating a dedicated command like "fl" that would act like
> > > "sf" in terms of reading/writing/erasing, but it still must be able to
> > > leverage the CFI code which means using the weak GPIO accessor
> > > functions.
> >
> > Sounds like a plan.
>
> I kind of like the idea to create a new set of commands for accessing such
> board specific NOR FLASH (can be used on "normal" NOR FLASH as well).
> Perhaps we could make it "generic" in a way that it can be used for all
> kind of "MTD devices". How about this "mtd" commandset:
>
> Select MTD NOR device #1 (2nd NOR device):
> => mtd device nor 1
>
> Or via mtdparts/mtdids:
> => mtd device nor0

so both syntaxes would be available when mtdparts support is enabled, or would 
it be one or the other ?  we would want to avoid ambiguity -- is "nor" 
referring to the nor flashes or is it referring to a partition named "nor".

what flash devices does mtdparts support now ?  i'm not really familiar with 
it and the README and doc/ files doesnt seem to cover it.

i guess each flash type would parse the additional commands however it liked 
and so the mtd command would just act as a multiplexer at this point.  the 
current spi flash "sf" command is pretty flexible -- you specify the spi chip 
select to select the device and you can specify other parameters dynamically 
(like frequency).  so when folding it in, we'd have:
=> mtd device sf <cs> [speed] [mode]

common/cmd_mtd.c
common/cmd_mtd_sf.c
common/cmd_mtd_nor.c
...
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090706/598ae3cd/attachment.pgp 

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  7:04                 ` Mike Frysinger
@ 2009-07-06  7:25                   ` Stefan Roese
  2009-07-06  8:37                     ` Mike Frysinger
  0 siblings, 1 reply; 20+ messages in thread
From: Stefan Roese @ 2009-07-06  7:25 UTC (permalink / raw)
  To: u-boot

On Monday 06 July 2009 09:04:44 Mike Frysinger wrote:
> > I kind of like the idea to create a new set of commands for accessing
> > such board specific NOR FLASH (can be used on "normal" NOR FLASH as
> > well). Perhaps we could make it "generic" in a way that it can be used
> > for all kind of "MTD devices". How about this "mtd" commandset:
> >
> > Select MTD NOR device #1 (2nd NOR device):
> > => mtd device nor 1
> >
> > Or via mtdparts/mtdids:
> > => mtd device nor0
>
> so both syntaxes would be available when mtdparts support is enabled, or
> would it be one or the other ?

I didn't make my mind up until now. I was just throwing out an idea.

> we would want to avoid ambiguity -- is
> "nor" referring to the nor flashes or is it referring to a partition named
> "nor".

The first version would refer "nor" as flash type and the 2nd one "nor0" as a 
device name from mtdparts/mtdids.

> what flash devices does mtdparts support now ?  i'm not really familiar
> with it and the README and doc/ files doesnt seem to cover it.

Right now it supports NAND, OneNAND and NOR (if CONFIG_FLASH_CFI_MTD is 
enabled). Others can be easily added (see drivers/mtd/cfi_mtd.c for NOR).

> i guess each flash type would parse the additional commands however it
> liked and so the mtd command would just act as a multiplexer at this point.
>  the current spi flash "sf" command is pretty flexible -- you specify the
> spi chip select to select the device and you can specify other parameters
> dynamically (like frequency).  so when folding it in, we'd have:
> => mtd device sf <cs> [speed] [mode]
>
> common/cmd_mtd.c
> common/cmd_mtd_sf.c
> common/cmd_mtd_nor.c

I was more thinking about adding the MTD layer to all FLASH types supported by 
this new commandset. Then accessing the device is done via the MTD functions 
pointers (mtd->erase, mtd->read, etc). Special FLASH type specific stuff still 
needs to be handled in some additional drivers (like OOB handling for 
NAND/OneNAND, or SF specific stuff) though.

BTW: Adding the MTD layer to those other FLASH types like SF has the 
advantage, that things like UBI/UBIFS could be used on those devices as well.

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] 20+ messages in thread

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  6:42               ` Mike Frysinger
@ 2009-07-06  8:03                 ` Wolfgang Denk
  0 siblings, 0 replies; 20+ messages in thread
From: Wolfgang Denk @ 2009-07-06  8:03 UTC (permalink / raw)
  To: u-boot

Dear Mike Frysinger,

In message <200907060242.09196.vapier@gentoo.org> you wrote:
>
> there are a few references to "grant's idea" and "grant's work".  this is all 
> before my time hacking on u-boot, but i vaguely recall this being related to 
> u-boot being fully relocatable and not anything to do with interfaces to flash 
> devices ?

I think so, but I don't remember any details either.

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
People have one thing in common: they are all different.

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  7:25                   ` Stefan Roese
@ 2009-07-06  8:37                     ` Mike Frysinger
  2009-07-06  8:47                       ` Stefan Roese
  0 siblings, 1 reply; 20+ messages in thread
From: Mike Frysinger @ 2009-07-06  8:37 UTC (permalink / raw)
  To: u-boot

On Monday 06 July 2009 03:25:43 Stefan Roese wrote:
> On Monday 06 July 2009 09:04:44 Mike Frysinger wrote:
> > > I kind of like the idea to create a new set of commands for accessing
> > > such board specific NOR FLASH (can be used on "normal" NOR FLASH as
> > > well). Perhaps we could make it "generic" in a way that it can be used
> > > for all kind of "MTD devices". How about this "mtd" commandset:
> > >
> > > Select MTD NOR device #1 (2nd NOR device):
> > > => mtd device nor 1
> > >
> > > Or via mtdparts/mtdids:
> > > => mtd device nor0
> >
> > so both syntaxes would be available when mtdparts support is enabled, or
> > would it be one or the other ?
>
> I didn't make my mind up until now. I was just throwing out an idea.
>
> > we would want to avoid ambiguity -- is
> > "nor" referring to the nor flashes or is it referring to a partition
> > named "nor".
>
> The first version would refer "nor" as flash type and the 2nd one "nor0" as
> a device name from mtdparts/mtdids.

so people wouldnt be able to name a mtdpart "nor"

> > what flash devices does mtdparts support now ?  i'm not really familiar
> > with it and the README and doc/ files doesnt seem to cover it.
>
> Right now it supports NAND, OneNAND and NOR (if CONFIG_FLASH_CFI_MTD is
> enabled). Others can be easily added (see drivers/mtd/cfi_mtd.c for NOR).

so FLASH_CFI_MTD is merely glue between the existing CFI flash driver and the 
MTD layers ?

> > i guess each flash type would parse the additional commands however it
> > liked and so the mtd command would just act as a multiplexer at this
> > point. the current spi flash "sf" command is pretty flexible -- you
> > specify the spi chip select to select the device and you can specify
> > other parameters dynamically (like frequency).  so when folding it in,
> > we'd have: => mtd device sf <cs> [speed] [mode]
> >
> > common/cmd_mtd.c
> > common/cmd_mtd_sf.c
> > common/cmd_mtd_nor.c
>
> I was more thinking about adding the MTD layer to all FLASH types supported
> by this new commandset. Then accessing the device is done via the MTD
> functions pointers (mtd->erase, mtd->read, etc). Special FLASH type
> specific stuff still needs to be handled in some additional drivers (like
> OOB handling for NAND/OneNAND, or SF specific stuff) though.

ok, this seems like it should be doable in a gradual progression.  i.e. today 
i am only concerned with nor flash, so getting a base framework with that as 
the only supported flash should be fine.  once we know it can replace the 
existing cmd_flash.c functions, we can look at folding in other flash types.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090706/f667c052/attachment.pgp 

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

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  8:37                     ` Mike Frysinger
@ 2009-07-06  8:47                       ` Stefan Roese
  2009-07-10 14:27                         ` Stefan Roese
  2009-07-10 14:31                         ` Mike Frysinger
  0 siblings, 2 replies; 20+ messages in thread
From: Stefan Roese @ 2009-07-06  8:47 UTC (permalink / raw)
  To: u-boot

On Monday 06 July 2009 10:37:10 Mike Frysinger wrote:
> On Monday 06 July 2009 03:25:43 Stefan Roese wrote:
> > On Monday 06 July 2009 09:04:44 Mike Frysinger wrote:
> > > > I kind of like the idea to create a new set of commands for accessing
> > > > such board specific NOR FLASH (can be used on "normal" NOR FLASH as
> > > > well). Perhaps we could make it "generic" in a way that it can be
> > > > used for all kind of "MTD devices". How about this "mtd" commandset:
> > > >
> > > > Select MTD NOR device #1 (2nd NOR device):
> > > > => mtd device nor 1
> > > >
> > > > Or via mtdparts/mtdids:
> > > > => mtd device nor0
> > >
> > > so both syntaxes would be available when mtdparts support is enabled,
> > > or would it be one or the other ?
> >
> > I didn't make my mind up until now. I was just throwing out an idea.
> >
> > > we would want to avoid ambiguity -- is
> > > "nor" referring to the nor flashes or is it referring to a partition
> > > named "nor".
> >
> > The first version would refer "nor" as flash type and the 2nd one "nor0"
> > as a device name from mtdparts/mtdids.
>
> so people wouldnt be able to name a mtdpart "nor"

Yes, this doesn't make much sense. It's probably better to only use the 2nd 
approach via the mtdparts/mtdids name.

> > > what flash devices does mtdparts support now ?  i'm not really familiar
> > > with it and the README and doc/ files doesnt seem to cover it.
> >
> > Right now it supports NAND, OneNAND and NOR (if CONFIG_FLASH_CFI_MTD is
> > enabled). Others can be easily added (see drivers/mtd/cfi_mtd.c for NOR).
>
> so FLASH_CFI_MTD is merely glue between the existing CFI flash driver and
> the MTD layers ?

Correct. And such glue layers could be added for other FLASH technologies like 
SF as well.

> > > i guess each flash type would parse the additional commands however it
> > > liked and so the mtd command would just act as a multiplexer at this
> > > point. the current spi flash "sf" command is pretty flexible -- you
> > > specify the spi chip select to select the device and you can specify
> > > other parameters dynamically (like frequency).  so when folding it in,
> > > we'd have: => mtd device sf <cs> [speed] [mode]
> > >
> > > common/cmd_mtd.c
> > > common/cmd_mtd_sf.c
> > > common/cmd_mtd_nor.c
> >
> > I was more thinking about adding the MTD layer to all FLASH types
> > supported by this new commandset. Then accessing the device is done via
> > the MTD functions pointers (mtd->erase, mtd->read, etc). Special FLASH
> > type specific stuff still needs to be handled in some additional drivers
> > (like OOB handling for NAND/OneNAND, or SF specific stuff) though.
>
> ok, this seems like it should be doable in a gradual progression.  i.e.
> today i am only concerned with nor flash, so getting a base framework with
> that as the only supported flash should be fine.  once we know it can
> replace the existing cmd_flash.c functions, we can look at folding in other
> flash types. -mike

I think this is a doable approach. But we first need a general consent on 
this. Other opinions on this are welcome...

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] 20+ messages in thread

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  8:47                       ` Stefan Roese
@ 2009-07-10 14:27                         ` Stefan Roese
  2009-07-10 14:31                         ` Mike Frysinger
  1 sibling, 0 replies; 20+ messages in thread
From: Stefan Roese @ 2009-07-10 14:27 UTC (permalink / raw)
  To: u-boot

On Monday 06 July 2009 10:47:41 Stefan Roese wrote:
> > > > i guess each flash type would parse the additional commands however
> > > > it liked and so the mtd command would just act as a multiplexer at
> > > > this point. the current spi flash "sf" command is pretty flexible --
> > > > you specify the spi chip select to select the device and you can
> > > > specify other parameters dynamically (like frequency).  so when
> > > > folding it in, we'd have: => mtd device sf <cs> [speed] [mode]
> > > >
> > > > common/cmd_mtd.c
> > > > common/cmd_mtd_sf.c
> > > > common/cmd_mtd_nor.c
> > >
> > > I was more thinking about adding the MTD layer to all FLASH types
> > > supported by this new commandset. Then accessing the device is done via
> > > the MTD functions pointers (mtd->erase, mtd->read, etc). Special FLASH
> > > type specific stuff still needs to be handled in some additional
> > > drivers (like OOB handling for NAND/OneNAND, or SF specific stuff)
> > > though.
> >
> > ok, this seems like it should be doable in a gradual progression.  i.e.
> > today i am only concerned with nor flash, so getting a base framework
> > with that as the only supported flash should be fine.  once we know it
> > can replace the existing cmd_flash.c functions, we can look at folding in
> > other flash types. -mike
>
> I think this is a doable approach. But we first need a general consent on
> this. Other opinions on this are welcome...

No further responses on this. So it seems nobody objects this approach to move 
to a common command interface for all flash types.

Mike, what are your plans here? Will you work in this "mtd" commands interface 
at some time?

Thanks.

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] 20+ messages in thread

* [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes
  2009-07-06  8:47                       ` Stefan Roese
  2009-07-10 14:27                         ` Stefan Roese
@ 2009-07-10 14:31                         ` Mike Frysinger
  1 sibling, 0 replies; 20+ messages in thread
From: Mike Frysinger @ 2009-07-10 14:31 UTC (permalink / raw)
  To: u-boot

On Monday 06 July 2009 04:47:41 Stefan Roese wrote:
> On Monday 06 July 2009 10:37:10 Mike Frysinger wrote:
> > On Monday 06 July 2009 03:25:43 Stefan Roese wrote:
> > > On Monday 06 July 2009 09:04:44 Mike Frysinger wrote:
> > > > we would want to avoid ambiguity -- is
> > > > "nor" referring to the nor flashes or is it referring to a partition
> > > > named "nor".
> > >
> > > The first version would refer "nor" as flash type and the 2nd one
> > > "nor0" as a device name from mtdparts/mtdids.
> >
> > so people wouldnt be able to name a mtdpart "nor"
>
> Yes, this doesn't make much sense. It's probably better to only use the 2nd
> approach via the mtdparts/mtdids name.

when mtdparts support is enabled, sure.  the logic could be fairly dynamic -- 
if you give it two args, it is referring to a flash type and a flash #.  if 
you give it one, it defaults to mtdparts if it's enabled.  if no mtdpart 
exists named that way, it falls back to flash type and flash 0.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090710/75c6ede1/attachment.pgp 

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

end of thread, other threads:[~2009-07-10 14:31 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-30 18:44 [U-Boot] [PATCH] flread: new command for reading indirect mapped flashes Mike Frysinger
2009-06-30 19:01 ` Mike Frysinger
2009-07-04 23:39 ` Wolfgang Denk
2009-07-05  3:07   ` Mike Frysinger
2009-07-05 15:15     ` Wolfgang Denk
2009-07-05 17:12       ` Mike Frysinger
2009-07-05 17:55         ` Wolfgang Denk
2009-07-05 19:03           ` Mike Frysinger
2009-07-05 20:34             ` Wolfgang Denk
2009-07-06  5:10               ` Stefan Roese
2009-07-06  5:59                 ` Mike Frysinger
2009-07-06  6:24                   ` Stefan Roese
2009-07-06  7:04                 ` Mike Frysinger
2009-07-06  7:25                   ` Stefan Roese
2009-07-06  8:37                     ` Mike Frysinger
2009-07-06  8:47                       ` Stefan Roese
2009-07-10 14:27                         ` Stefan Roese
2009-07-10 14:31                         ` Mike Frysinger
2009-07-06  6:42               ` Mike Frysinger
2009-07-06  8:03                 ` Wolfgang Denk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox