* [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B
@ 2007-05-25 5:55 Josef Meser
2007-05-25 6:03 ` Stefan Roese
2007-05-25 6:56 ` Peter Pearse
0 siblings, 2 replies; 6+ messages in thread
From: Josef Meser @ 2007-05-25 5:55 UTC (permalink / raw)
To: u-boot
Current u-boot works with ARM Versatile PB926EJ-S, HW- Rev.C
(NOR flash 28F256K3).
This patch adds support for 28F256L30B (asymmetrical sectors:
4 small sectors at bottom) used on HW-Rev.D.
Signed-off-by: Josef Meser <josef.meser@odm.at>
---
board/versatile/flash.c | 84
+++++++++++++++++++++++++++++++++++--------
include/configs/versatile.h | 2 +-
include/flash.h | 10 ++++--
3 files changed, 77 insertions(+), 19 deletions(-)
diff --git a/board/versatile/flash.c b/board/versatile/flash.c
index 7153371..b79761f 100644
--- a/board/versatile/flash.c
+++ b/board/versatile/flash.c
@@ -31,7 +31,9 @@
#include <common.h>
#include <linux/byteorder/swab.h>
-#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 256 KB sectors (x2)
*/
+#define PHYS_FLASH_SECT_SIZE 0x00020000 /* *2 = 256 KB
sectors */
+#define PHYS_FLASH_MAIN_SECT_SIZE 0x00020000 /* *2 = 256 KB
sectors */
+#define PHYS_FLASH_PARAM_SECT_SIZE 0x00008000 /* *2 = 64 KB
sectors */
flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips
*/
/* Board support for 1 or 2 flash devices */
@@ -62,10 +64,19 @@ typedef struct OrgDef {
/* Flash Organizations */
-OrgDef OrgIntel_28F256K3[] = {
+OrgDef OrgIntel_28F256K3[] = { /* for Hw-Rev. C */
{256, 128 * 1024}, /* 256 * 128kBytes sectors */
};
+OrgDef OrgIntel_28F256L18T[] = {
+ {255, 128 * 1024}, /* 255 * 128kBytes sectors */
+ { 4, 32 * 1024}, /* 4 * 32kBytes sectors */
+};
+
+OrgDef OrgIntel_28F256L30B[] = { /* for Hw-Rev. D */
+ { 4, 32 * 1024}, /* 4 * 32kBytes sectors */
+ {255, 128 * 1024}, /* 255 * 128kBytes sectors */
+};
/*----------------------------------------------------------------------
-
* Functions
@@ -132,23 +143,55 @@ static void flash_get_offsets (ulong base,
flash_info_t * info)
int i;
OrgDef *pOrgDef;
- pOrgDef = OrgIntel_28F256K3;
- if (info->flash_id == FLASH_UNKNOWN) {
+ switch (info->flash_id & FLASH_VENDMASK) {
+ case FLASH_MAN_INTEL:
+ break;
+ default:
return;
}
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
+ switch (info->flash_id & FLASH_TYPEMASK) {
+ case FLASH_28F256K3:
+ pOrgDef = OrgIntel_28F256K3;
for (i = 0; i < info->sector_count; i++) {
+ info->start[i] = base + (i *
PHYS_FLASH_SECT_SIZE);
+ info->protect[i] = 0;
+ }
+ break;
+ case FLASH_28F256L18T:
+ pOrgDef = OrgIntel_28F256L18T;
+ for (i = 0; i < info->sector_count; i++) {
+ /* top param block type */
if (i > 255) {
- info->start[i] = base + (i * 0x8000);
- info->protect[i] = 0;
+ info->start[i] = base +
+ (255 *
PHYS_FLASH_MAIN_SECT_SIZE) +
+ ((i -255)*
PHYS_FLASH_PARAM_SECT_SIZE);
+ } else {
+ info->start[i] = base +
+ (i *
PHYS_FLASH_MAIN_SECT_SIZE);
+ }
+ info->protect[i] = 0;
+ }
+ break;
+ case FLASH_28F256L30B:
+ pOrgDef = OrgIntel_28F256L30B;
+ for (i = 0; i < info->sector_count; i++) {
+ /* bottom param block type */
+ if (i < 4) {
+ info->start[i] = base +
+ (i *
PHYS_FLASH_PARAM_SECT_SIZE);
} else {
info->start[i] = base +
- (i *
PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
+ ((i - 3) *
PHYS_FLASH_MAIN_SECT_SIZE);
}
+ info->protect[i] = 0;
}
+ break;
+ default:
+ return;
}
+
+ return;
}
/*----------------------------------------------------------------------
-
@@ -172,11 +215,14 @@ void flash_print_info (flash_info_t * info)
}
switch (info->flash_id & FLASH_TYPEMASK) {
+ case FLASH_28F256K3:
+ printf ("FLASH 28F256K3\n");
+ break;
case FLASH_28F256L18T:
printf ("FLASH 28F256L18T\n");
break;
- case FLASH_28F256K3:
- printf ("FLASH 28F256K3\n");
+ case FLASH_28F256L30B:
+ printf ("FLASH 28F256L30B\n");
break;
default:
printf ("Unknown Chip Type\n");
@@ -221,6 +267,7 @@ static ulong flash_get_size (FPW * addr,
flash_info_t * info)
info->flash_id = FLASH_UNKNOWN;
info->sector_count = 0;
info->size = 0;
+ printf ("Unknown flash vendor %0x\n", value);
addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
return (0); /* no or unknown flash */
}
@@ -229,20 +276,27 @@ static ulong flash_get_size (FPW * addr,
flash_info_t * info)
value = addr[1]; /* device ID */
switch (value) {
+ case (FPW)(INTEL_ID_28F256K3):
+ info->flash_id += FLASH_28F256K3;
+ info->sector_count = 256;
+ info->size = 0x02000000;
+ break;
+
case (FPW) (INTEL_ID_28F256L18T):
info->flash_id += FLASH_28F256L18T;
info->sector_count = 259;
info->size = 0x02000000;
break; /* => 32 MB */
- case (FPW)(INTEL_ID_28F256K3):
- info->flash_id += FLASH_28F256K3;
- info->sector_count = 256;
- info->size = 0x02000000;
+ case (FPW)(INTEL_ID_28F256L30B):
+ info->flash_id += FLASH_28F256L30B;
+ info->sector_count = 259;
+ info->size = 0x02000000; /* 32 MB */
break;
default:
info->flash_id = FLASH_UNKNOWN;
+ printf ("Unknown chip type %0x\n", value);
break;
}
diff --git a/include/configs/versatile.h b/include/configs/versatile.h
index 16db43b..fe26c42 100644
--- a/include/configs/versatile.h
+++ b/include/configs/versatile.h
@@ -166,7 +166,7 @@
/* timeout values are in ticks */
#define CFG_FLASH_ERASE_TOUT (20*CFG_HZ) /* Timeout for Flash
Erase */
#define CFG_FLASH_WRITE_TOUT (20*CFG_HZ) /* Timeout for Flash
Write */
-#define CFG_MAX_FLASH_SECT (256)
+#define CFG_MAX_FLASH_SECT (259)
#define PHYS_FLASH_1 (CFG_FLASH_BASE)
diff --git a/include/flash.h b/include/flash.h
index 43b9c6b..c1e327f 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -284,10 +284,12 @@ extern void flash_read_factory_serial(flash_info_t
* info, void * buffer, int of
#define INTEL_ID_28F640J3A 0x00170017 /* 64M = 128K x 64 */
#define INTEL_ID_28F128J3A 0x00180018 /* 128M = 128K x 128 */
#define INTEL_ID_28F256J3A 0x001D001D /* 256M = 128K x 256 */
+#define INTEL_ID_28F64K3 0x88018801 /* 64M = 32K x 256 */
+#define INTEL_ID_28F128K3 0x88028802 /* 128M = 64K x 256 */
+#define INTEL_ID_28F256K3 0x88038803 /* 256M = 128K x 256 */
#define INTEL_ID_28F256L18T 0x880D880D /* 256M = 128K x 255 + 32k x 4
*/
-#define INTEL_ID_28F64K3 0x88018801 /* 64M = 32K x 255 + 32k x 4
*/
-#define INTEL_ID_28F128K3 0x88028802 /* 128M = 64K x 255 + 32k x 4
*/
-#define INTEL_ID_28F256K3 0x88038803 /* 256M = 128K x 255 + 32k x 4
*/
+#define INTEL_ID_28F256L30T 0x88138813 /* 256M = 128K x 255 + 32k x 4
*/
+#define INTEL_ID_28F256L30B 0x88168816 /* 256M = 128K x 255 + 32k x 4
*/
#define INTEL_ID_28F64P30T 0x88178817 /* 64M = 32K x 255 + 32k x 4
*/
#define INTEL_ID_28F64P30B 0x881A881A /* 64M = 32K x 255 + 32k x 4
*/
#define INTEL_ID_28F128P30T 0x88188818 /* 128M = 64K x 255 + 32k x 4
*/
@@ -420,6 +422,8 @@ extern void flash_read_factory_serial(flash_info_t *
info, void * buffer, int of
#define FLASH_28F64K3 0x00B4 /* Intel 28F64K3 ( 64M)
*/
#define FLASH_28F128K3 0x00B6 /* Intel 28F128K3 ( 128M = 8M x
16 ) */
#define FLASH_28F256K3 0x00B8 /* Intel 28F256K3 ( 256M = 16M
x 16 ) */
+#define FLASH_28F256L30T 0x00B9 /* Intel 28F256L30T (
256M = 16M x 16 ) */
+#define FLASH_28F256L30B 0x00BA /* Intel 28F256L30B (
256M = 16M x 16 ) */
#define FLASH_28F320J3A 0x00C0 /* INTEL 28F320J3A ( 32M = 128K
x 32) */
#define FLASH_28F640J3A 0x00C2 /* INTEL 28F640J3A ( 64M = 128K
x 64) */
--
1.5.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread* [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B
2007-05-25 5:55 [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B Josef Meser
@ 2007-05-25 6:03 ` Stefan Roese
2007-05-25 6:56 ` Peter Pearse
1 sibling, 0 replies; 6+ messages in thread
From: Stefan Roese @ 2007-05-25 6:03 UTC (permalink / raw)
To: u-boot
Hi Josef,
On Friday 25 May 2007, Josef Meser wrote:
> Current u-boot works with ARM Versatile PB926EJ-S, HW- Rev.C
> (NOR flash 28F256K3).
> This patch adds support for 28F256L30B (asymmetrical sectors:
> 4 small sectors at bottom) used on HW-Rev.D.
Your patch is line wrapped. Please fix and resend.
One question: Why can't you use the common CFI driver on this board?
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] 6+ messages in thread
* [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B
2007-05-25 5:55 [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B Josef Meser
2007-05-25 6:03 ` Stefan Roese
@ 2007-05-25 6:56 ` Peter Pearse
1 sibling, 0 replies; 6+ messages in thread
From: Peter Pearse @ 2007-05-25 6:56 UTC (permalink / raw)
To: u-boot
Received
> -----Original Message-----
> From: Josef Meser [mailto:Josef.Meser at odm.at]
> Sent: 25 May 2007 06:56
> To: Peter Pearse
> Cc: u-boot-users at lists.sourceforge.net
> Subject: [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added
> support for flash 28F256L30B
>
> Current u-boot works with ARM Versatile PB926EJ-S, HW- Rev.C
> (NOR flash 28F256K3).
> This patch adds support for 28F256L30B (asymmetrical sectors:
> 4 small sectors at bottom) used on HW-Rev.D.
>
> Signed-off-by: Josef Meser <josef.meser@odm.at>
> ---
> board/versatile/flash.c | 84
> +++++++++++++++++++++++++++++++++++--------
> include/configs/versatile.h | 2 +-
> include/flash.h | 10 ++++--
> 3 files changed, 77 insertions(+), 19 deletions(-)
>
> diff --git a/board/versatile/flash.c
> b/board/versatile/flash.c index 7153371..b79761f 100644
> --- a/board/versatile/flash.c
> +++ b/board/versatile/flash.c
> @@ -31,7 +31,9 @@
> #include <common.h>
> #include <linux/byteorder/swab.h>
>
> -#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 256 KB sectors (x2)
> */
> +#define PHYS_FLASH_SECT_SIZE 0x00020000 /* *2 = 256 KB
> sectors */
> +#define PHYS_FLASH_MAIN_SECT_SIZE 0x00020000 /* *2 = 256 KB
> sectors */
> +#define PHYS_FLASH_PARAM_SECT_SIZE 0x00008000 /* *2 = 64 KB
> sectors */
> flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info
> for FLASH chips
> */
>
> /* Board support for 1 or 2 flash devices */ @@ -62,10
> +64,19 @@ typedef struct OrgDef {
>
>
> /* Flash Organizations */
> -OrgDef OrgIntel_28F256K3[] = {
> +OrgDef OrgIntel_28F256K3[] = { /* for Hw-Rev. C */
> {256, 128 * 1024}, /* 256 * 128kBytes sectors */
> };
>
> +OrgDef OrgIntel_28F256L18T[] = {
> + {255, 128 * 1024}, /* 255 * 128kBytes sectors */
> + { 4, 32 * 1024}, /* 4 * 32kBytes sectors */
> +};
> +
> +OrgDef OrgIntel_28F256L30B[] = { /* for Hw-Rev. D */
> + { 4, 32 * 1024}, /* 4 * 32kBytes sectors */
> + {255, 128 * 1024}, /* 255 * 128kBytes sectors */
> +};
>
>
> /*------------------------------------------------------------
> ----------
> -
> * Functions
> @@ -132,23 +143,55 @@ static void flash_get_offsets (ulong
> base, flash_info_t * info)
> int i;
> OrgDef *pOrgDef;
>
> - pOrgDef = OrgIntel_28F256K3;
> - if (info->flash_id == FLASH_UNKNOWN) {
> + switch (info->flash_id & FLASH_VENDMASK) {
> + case FLASH_MAN_INTEL:
> + break;
> + default:
> return;
> }
>
> - if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
> + switch (info->flash_id & FLASH_TYPEMASK) {
> + case FLASH_28F256K3:
> + pOrgDef = OrgIntel_28F256K3;
> for (i = 0; i < info->sector_count; i++) {
> + info->start[i] = base + (i *
> PHYS_FLASH_SECT_SIZE);
> + info->protect[i] = 0;
> + }
> + break;
> + case FLASH_28F256L18T:
> + pOrgDef = OrgIntel_28F256L18T;
> + for (i = 0; i < info->sector_count; i++) {
> + /* top param block type */
> if (i > 255) {
> - info->start[i] = base + (i * 0x8000);
> - info->protect[i] = 0;
> + info->start[i] = base +
> + (255 *
> PHYS_FLASH_MAIN_SECT_SIZE) +
> + ((i -255)*
> PHYS_FLASH_PARAM_SECT_SIZE);
> + } else {
> + info->start[i] = base +
> + (i *
> PHYS_FLASH_MAIN_SECT_SIZE);
> + }
> + info->protect[i] = 0;
> + }
> + break;
> + case FLASH_28F256L30B:
> + pOrgDef = OrgIntel_28F256L30B;
> + for (i = 0; i < info->sector_count; i++) {
> + /* bottom param block type */
> + if (i < 4) {
> + info->start[i] = base +
> + (i *
> PHYS_FLASH_PARAM_SECT_SIZE);
> } else {
> info->start[i] = base +
> - (i *
> PHYS_FLASH_SECT_SIZE);
> - info->protect[i] = 0;
> + ((i - 3) *
> PHYS_FLASH_MAIN_SECT_SIZE);
> }
> + info->protect[i] = 0;
> }
> + break;
> + default:
> + return;
> }
> +
> + return;
> }
>
>
> /*------------------------------------------------------------
> ----------
> -
> @@ -172,11 +215,14 @@ void flash_print_info (flash_info_t * info)
> }
>
> switch (info->flash_id & FLASH_TYPEMASK) {
> + case FLASH_28F256K3:
> + printf ("FLASH 28F256K3\n");
> + break;
> case FLASH_28F256L18T:
> printf ("FLASH 28F256L18T\n");
> break;
> - case FLASH_28F256K3:
> - printf ("FLASH 28F256K3\n");
> + case FLASH_28F256L30B:
> + printf ("FLASH 28F256L30B\n");
> break;
> default:
> printf ("Unknown Chip Type\n");
> @@ -221,6 +267,7 @@ static ulong flash_get_size (FPW * addr,
> flash_info_t * info)
> info->flash_id = FLASH_UNKNOWN;
> info->sector_count = 0;
> info->size = 0;
> + printf ("Unknown flash vendor %0x\n", value);
> addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
> return (0); /* no or unknown flash */
> }
> @@ -229,20 +276,27 @@ static ulong flash_get_size (FPW *
> addr, flash_info_t * info)
> value = addr[1]; /* device ID */
> switch (value) {
>
> + case (FPW)(INTEL_ID_28F256K3):
> + info->flash_id += FLASH_28F256K3;
> + info->sector_count = 256;
> + info->size = 0x02000000;
> + break;
> +
> case (FPW) (INTEL_ID_28F256L18T):
> info->flash_id += FLASH_28F256L18T;
> info->sector_count = 259;
> info->size = 0x02000000;
> break; /* => 32 MB */
>
> - case (FPW)(INTEL_ID_28F256K3):
> - info->flash_id += FLASH_28F256K3;
> - info->sector_count = 256;
> - info->size = 0x02000000;
> + case (FPW)(INTEL_ID_28F256L30B):
> + info->flash_id += FLASH_28F256L30B;
> + info->sector_count = 259;
> + info->size = 0x02000000; /* 32 MB */
> break;
>
> default:
> info->flash_id = FLASH_UNKNOWN;
> + printf ("Unknown chip type %0x\n", value);
> break;
> }
>
> diff --git a/include/configs/versatile.h
> b/include/configs/versatile.h index 16db43b..fe26c42 100644
> --- a/include/configs/versatile.h
> +++ b/include/configs/versatile.h
> @@ -166,7 +166,7 @@
> /* timeout values are in ticks */
> #define CFG_FLASH_ERASE_TOUT (20*CFG_HZ) /* Timeout for Flash
> Erase */
> #define CFG_FLASH_WRITE_TOUT (20*CFG_HZ) /* Timeout for Flash
> Write */
> -#define CFG_MAX_FLASH_SECT (256)
> +#define CFG_MAX_FLASH_SECT (259)
>
> #define PHYS_FLASH_1 (CFG_FLASH_BASE)
>
> diff --git a/include/flash.h b/include/flash.h index
> 43b9c6b..c1e327f 100644
> --- a/include/flash.h
> +++ b/include/flash.h
> @@ -284,10 +284,12 @@ extern void
> flash_read_factory_serial(flash_info_t
> * info, void * buffer, int of
> #define INTEL_ID_28F640J3A 0x00170017 /* 64M = 128K
> x 64 */
> #define INTEL_ID_28F128J3A 0x00180018 /* 128M = 128K
> x 128 */
> #define INTEL_ID_28F256J3A 0x001D001D /* 256M = 128K
> x 256 */
> +#define INTEL_ID_28F64K3 0x88018801 /* 64M = 32K x 256 */
> +#define INTEL_ID_28F128K3 0x88028802 /* 128M = 64K x 256 */
> +#define INTEL_ID_28F256K3 0x88038803 /* 256M = 128K x 256 */
> #define INTEL_ID_28F256L18T 0x880D880D /* 256M = 128K
> x 255 + 32k x 4
> */
> -#define INTEL_ID_28F64K3 0x88018801 /* 64M = 32K
> x 255 + 32k x 4
> */
> -#define INTEL_ID_28F128K3 0x88028802 /* 128M = 64K
> x 255 + 32k x 4
> */
> -#define INTEL_ID_28F256K3 0x88038803 /* 256M = 128K
> x 255 + 32k x 4
> */
> +#define INTEL_ID_28F256L30T 0x88138813 /* 256M = 128K
> x 255 + 32k x 4
> */
> +#define INTEL_ID_28F256L30B 0x88168816 /* 256M = 128K
> x 255 + 32k x 4
> */
> #define INTEL_ID_28F64P30T 0x88178817 /* 64M = 32K
> x 255 + 32k x 4
> */
> #define INTEL_ID_28F64P30B 0x881A881A /* 64M = 32K
> x 255 + 32k x 4
> */
> #define INTEL_ID_28F128P30T 0x88188818 /* 128M = 64K
> x 255 + 32k x 4
> */
> @@ -420,6 +422,8 @@ extern void
> flash_read_factory_serial(flash_info_t * info, void * buffer, int of
> #define FLASH_28F64K3 0x00B4 /* Intel
> 28F64K3 ( 64M)
> */
> #define FLASH_28F128K3 0x00B6 /* Intel
> 28F128K3 ( 128M = 8M x
> 16 ) */
> #define FLASH_28F256K3 0x00B8 /* Intel
> 28F256K3 ( 256M = 16M
> x 16 ) */
> +#define FLASH_28F256L30T 0x00B9 /* Intel 28F256L30T (
> 256M = 16M x 16 ) */
> +#define FLASH_28F256L30B 0x00BA /* Intel 28F256L30B (
> 256M = 16M x 16 ) */
>
> #define FLASH_28F320J3A 0x00C0 /* INTEL
> 28F320J3A ( 32M = 128K
> x 32) */
> #define FLASH_28F640J3A 0x00C2 /* INTEL
> 28F640J3A ( 64M = 128K
> x 64) */
> --
> 1.5.0.2
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B
@ 2007-05-25 7:12 Josef Meser
2007-05-25 7:29 ` Stefan Roese
0 siblings, 1 reply; 6+ messages in thread
From: Josef Meser @ 2007-05-25 7:12 UTC (permalink / raw)
To: u-boot
> From: Stefan Roese [mailto:sr at denx.de]
> Sent: Friday, May 25, 2007 8:03 AM
> To: u-boot-users at lists.sourceforge.net
> Cc: Josef Meser; Peter Pearse
> Subject: Re: [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S,
> Rev.D: Added support for flash 28F256L30B
>
> Hi Josef,
>
> On Friday 25 May 2007, Josef Meser wrote:
> > Current u-boot works with ARM Versatile PB926EJ-S, HW- Rev.C
> > (NOR flash 28F256K3).
> > This patch adds support for 28F256L30B (asymmetrical sectors:
> > 4 small sectors at bottom) used on HW-Rev.D.
>
> Your patch is line wrapped. Please fix and resend.
Hi Stefan,
sorry about that. Yesterday I sent the patch to myself and it
was not line wrapped. Now I learned that this is a feature of
our famous M$-MUA, which does line wraps in plain text messages,
when sending to "Internet addresses".
I will fix this by using a real MUA.
> One question: Why can't you use the common CFI driver on this board?
I have to admit that I am not familiar with the CFI driver. I made the
patch for u-boot-1.1.5 which we used up to now. There it makes a
[]> make versatile_config
[]> make all
work on the new HW. Rev.D.
As i did not find the new type of flash in the current source tree,
I submitted my changes. This changes are minimal (in terms of size
and function) for me, which does not mean that they are optimal
for someone who is more into u-boot.
Regards,
Josef
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B
2007-05-25 7:12 Josef Meser
@ 2007-05-25 7:29 ` Stefan Roese
2007-05-25 8:14 ` Peter Pearse
0 siblings, 1 reply; 6+ messages in thread
From: Stefan Roese @ 2007-05-25 7:29 UTC (permalink / raw)
To: u-boot
On Friday 25 May 2007, Josef Meser wrote:
> > One question: Why can't you use the common CFI driver on this board?
>
> I have to admit that I am not familiar with the CFI driver. I made the
> patch for u-boot-1.1.5 which we used up to now. There it makes a
>
> []> make versatile_config
> []> make all
>
> work on the new HW. Rev.D.
>
> As i did not find the new type of flash in the current source tree,
> I submitted my changes. This changes are minimal (in terms of size
> and function) for me, which does not mean that they are optimal
> for someone who is more into u-boot.
The common CFI flash driver (drivers/cfi_flash.c) is designed to
function with all CFI compatible flash's. The new flash you added
is a CFI compatible flash. The question remains, what are the "old"
flash's used on the board before? Do you have an old board to test
the CFI driver on both board revisions?
Integrating the CFI driver is quite easy: You have to change your
board config file to something like this:
/*-----------------------------------------------------------------------
* FLASH related
*----------------------------------------------------------------------*/
#define CFG_FLASH_CFI /* The flash is CFI compatible */
#define CFG_FLASH_CFI_DRIVER /* Use common CFI driver */
#define CFG_FLASH_BANKS_LIST {CFG_FLASH_BASE}
#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
#define CFG_MAX_FLASH_SECT 512 /* max number of sectors on one chip */
#define CFG_FLASH_ERASE_TOUT 120000 /* Timeout for Flash Erase (in ms) */
#define CFG_FLASH_WRITE_TOUT 500 /* Timeout for Flash Write (in ms) */
#define CFG_FLASH_USE_BUFFER_WRITE 1 /* use buffered writes (20x faster) */
#define CFG_FLASH_EMPTY_INFO /* print 'E' for empty sector on flinfo */
This has to be adjusted of course, if you need to support more than
one flash chip (two or more banks).
And you need to disable the board specific flash driver completely from
your board Makefile.
Please give it a try and let me know if your have any further questions.
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] 6+ messages in thread* [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B
2007-05-25 7:29 ` Stefan Roese
@ 2007-05-25 8:14 ` Peter Pearse
0 siblings, 0 replies; 6+ messages in thread
From: Peter Pearse @ 2007-05-25 8:14 UTC (permalink / raw)
To: u-boot
I have a patch in the pipeline such that all ARM supplied development boards
will use CFI flash.
Peter
> -----Original Message-----
> From: Stefan Roese [mailto:sr at denx.de]
> Sent: 25 May 2007 08:29
> To: u-boot-users at lists.sourceforge.net
> Cc: Josef Meser; Peter Pearse
> Subject: Re: [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S,
> Rev.D: Added support for flash 28F256L30B
>
> On Friday 25 May 2007, Josef Meser wrote:
> > > One question: Why can't you use the common CFI driver on
> this board?
> >
> > I have to admit that I am not familiar with the CFI driver.
> I made the
> > patch for u-boot-1.1.5 which we used up to now. There it makes a
> >
> > []> make versatile_config
> > []> make all
> >
> > work on the new HW. Rev.D.
> >
> > As i did not find the new type of flash in the current
> source tree, I
> > submitted my changes. This changes are minimal (in terms of
> size and
> > function) for me, which does not mean that they are optimal for
> > someone who is more into u-boot.
>
> The common CFI flash driver (drivers/cfi_flash.c) is designed
> to function with all CFI compatible flash's. The new flash
> you added is a CFI compatible flash. The question remains,
> what are the "old"
> flash's used on the board before? Do you have an old board to
> test the CFI driver on both board revisions?
>
> Integrating the CFI driver is quite easy: You have to change
> your board config file to something like this:
>
> /*------------------------------------------------------------
> -----------
> * FLASH related
>
> *-------------------------------------------------------------
> ---------*/
> #define CFG_FLASH_CFI /* The flash is CFI
> compatible */
> #define CFG_FLASH_CFI_DRIVER /* Use common CFI
> driver */
>
> #define CFG_FLASH_BANKS_LIST {CFG_FLASH_BASE}
> #define CFG_MAX_FLASH_BANKS 1 /* max number of
> memory banks */
> #define CFG_MAX_FLASH_SECT 512 /* max number of
> sectors on one chip */
>
> #define CFG_FLASH_ERASE_TOUT 120000 /* Timeout for Flash
> Erase (in ms) */
> #define CFG_FLASH_WRITE_TOUT 500 /* Timeout for Flash
> Write (in ms) */
>
> #define CFG_FLASH_USE_BUFFER_WRITE 1 /* use buffered
> writes (20x faster) */
> #define CFG_FLASH_EMPTY_INFO /* print 'E' for
> empty sector on flinfo */
>
>
> This has to be adjusted of course, if you need to support
> more than one flash chip (two or more banks).
>
> And you need to disable the board specific flash driver
> completely from your board Makefile.
>
> Please give it a try and let me know if your have any further
> questions.
>
> 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] 6+ messages in thread
end of thread, other threads:[~2007-05-25 8:14 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-25 5:55 [U-Boot-Users] [PATCH] ARM Versatile PB926EJ-S, Rev.D: Added support for flash 28F256L30B Josef Meser
2007-05-25 6:03 ` Stefan Roese
2007-05-25 6:56 ` Peter Pearse
-- strict thread matches above, loose matches on Subject: below --
2007-05-25 7:12 Josef Meser
2007-05-25 7:29 ` Stefan Roese
2007-05-25 8:14 ` Peter Pearse
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.