This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

flash ROM support for cq7750.


Hi, folks,

Attached patch provides flash ROM support for cq7750.

This patch modifies and adds some codes as following.
1. am29xxxxx codes are slightly modified suite for AM29LV800-B
   and its compatible chip. This change may work with another 
   am29xxxxx chip, I think.
2. a new flash ROM data, Toshiba TC58FVB800, is added to the AMD 
   am29xxxxx family.
3. a new flash package for cq7750 paltform is added.

Here, fis commands on redboot are available for CqREEK/SH4 (cq7750),
I have succeeded in booting from flash ROM on my CqREEK/SH4,
after booting from RAM and writing another redboot image that
boots from ROM.

I don't know if other revisions of CqREEK/SH4 exist or not, but 
I have tested my CqREEK/SH4 board with a flash ROM, TC58FVB800.

Have fun.

+++++++++++++++++++++++++++++++++++++++++++
Koichi Nagsahima, R-lab Inc. (Tokyo, Japan)
E-mail: naga@r-lab.co.jp
+++++++++++++++++++++++++++++++++++++++++++
diff -urN --exclude=CVS packages.old/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl packages/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl
--- packages.old/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl	Sat Nov  3 01:12:33 2001
+++ packages/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl	Thu Dec 20 17:44:00 2001
@@ -116,4 +116,13 @@
             able to recognize and handle the AM29LV800
             part in the family."
     }
+
+    cdl_option CYGHWR_DEVS_FLASH_AMD_TC58FVB800 {
+        display       "Toshiba TC58FVB800 flash memory support"
+        default_value 0
+        implements    CYGINT_DEVS_FLASH_AMD_VARIANTS
+        description   "
+            When this option is enabled, the AMD flash driver will be
+            able to recognize and handle the Toshiba TC58FVB800."
+    }
 }
diff -urN --exclude=CVS packages.old/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl
--- packages.old/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl	Wed Oct  3 03:28:25 2001
+++ packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl	Fri Dec 21 00:45:56 2001
@@ -67,7 +67,7 @@
 // Common device details.
 #define FLASH_Read_ID                   FLASHWORD( 0x90 )
 #define FLASH_WP_State                  FLASHWORD( 0x90 )
-#define FLASH_Reset                     FLASHWORD( 0xFF )
+#define FLASH_Reset                     FLASHWORD( 0xF0 )
 #define FLASH_Program                   FLASHWORD( 0xA0 )
 #define FLASH_Block_Erase               FLASHWORD( 0x30 )
 
@@ -314,7 +314,8 @@
         timeout = 10000000;              // how many retries?
         while (true) {
             state = *b_v;
-            if ((state & FLASH_Sector_Erase_Timer) == 0) break;
+            if ((state & FLASH_Sector_Erase_Timer)
+				== FLASH_Sector_Erase_Timer) break;
 
             if (--timeout == 0) {
                 res = FLASH_ERR_DRV_TIMEOUT;
@@ -330,6 +331,8 @@
                 if (FLASH_BlankValue == state) {
                     break;
                 }
+
+		if((state & FLASH_Busy) == (*b_v & FLASH_Busy)) break;
 
                 // Don't check for FLASH_Err here since it will fail
                 // with devices in parallel because these may finish
diff -urN --exclude=CVS packages.old/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl
--- packages.old/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl	Sat Nov  3 01:12:33 2001
+++ packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl	Thu Dec 20 23:42:24 2001
@@ -208,6 +208,24 @@
         banked     : false
     },
 #endif
+#ifdef CYGHWR_DEVS_FLASH_AMD_TC58FVB800
+    {   // Toshiba TC58FVB800 (compatible with AM29LV800-B except for IDs.)
+        device_id  : FLASHWORD(0xCE),
+        block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
+        block_count: 16,
+        device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
+        base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
+        bootblock  : true,
+        bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
+                       0x004000 * CYGNUM_FLASH_INTERLEAVE,
+                       0x002000 * CYGNUM_FLASH_INTERLEAVE,
+                       0x002000 * CYGNUM_FLASH_INTERLEAVE,
+                       0x008000 * CYGNUM_FLASH_INTERLEAVE,
+                       0
+                     },
+        banked     : false
+    },
+#endif
 
 #else // 16 bit devices
 
@@ -361,7 +379,6 @@
         banked     : false
     },
 #endif
-
 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV640
     {   // MBM29LV640xx
         device_id  : FLASHWORD(0x22d7),
@@ -370,6 +387,24 @@
         device_size: 0x800000 * CYGNUM_FLASH_INTERLEAVE,
         base_mask  : ~(0x800000 * CYGNUM_FLASH_INTERLEAVE - 1),
         bootblock  : false,  
+        banked     : false
+    },
+#endif
+#ifdef CYGHWR_DEVS_FLASH_AMD_TC58FVB800
+    {   // Toshiba TC58FVB800 (compatible with AM29LV800-B except for IDs.)
+        device_id  : FLASHWORD(0xCE),
+        block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
+        block_count: 16,
+        device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
+        base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
+        bootblock  : true,
+        bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
+                       0x004000 * CYGNUM_FLASH_INTERLEAVE,
+                       0x002000 * CYGNUM_FLASH_INTERLEAVE,
+                       0x002000 * CYGNUM_FLASH_INTERLEAVE,
+                       0x008000 * CYGNUM_FLASH_INTERLEAVE,
+                       0
+                     },
         banked     : false
     },
 #endif
diff -urN --exclude=CVS packages.old/devs/flash/sh/cq7750/current/ChangeLog packages/devs/flash/sh/cq7750/current/ChangeLog
--- packages.old/devs/flash/sh/cq7750/current/ChangeLog	Thu Jan  1 09:00:00 1970
+++ packages/devs/flash/sh/cq7750/current/ChangeLog	Thu Dec 20 23:44:41 2001
@@ -0,0 +1,29 @@
+2001-12-20  Koichi Nagashima  <naga@r-lab.co.jp>
+
+	* Cloned from EDK7708 flash package.
+
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//===========================================================================
diff -urN --exclude=CVS packages.old/devs/flash/sh/cq7750/current/cdl/flash_cq7750.cdl packages/devs/flash/sh/cq7750/current/cdl/flash_cq7750.cdl
--- packages.old/devs/flash/sh/cq7750/current/cdl/flash_cq7750.cdl	Thu Jan  1 09:00:00 1970
+++ packages/devs/flash/sh/cq7750/current/cdl/flash_cq7750.cdl	Fri Dec 21 00:52:31 2001
@@ -0,0 +1,62 @@
+# ====================================================================
+#
+#      flash_cq7750.cdl
+#
+#      FLASH memory - Hardware support on CqREEK SH7750 board
+#
+# ====================================================================
+#####COPYRIGHTBEGIN####
+#                                                                          
+# -------------------------------------------                              
+# The contents of this file are subject to the Red Hat eCos Public License 
+# Version 1.1 (the "License"); you may not use this file except in         
+# compliance with the License.  You may obtain a copy of the License at    
+# http://www.redhat.com/                                                   
+#                                                                          
+# Software distributed under the License is distributed on an "AS IS"      
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+# License for the specific language governing rights and limitations under 
+# the License.                                                             
+#                                                                          
+# The Original Code is eCos - Embedded Configurable Operating System,      
+# released September 30, 1998.                                             
+#                                                                          
+# The Initial Developer of the Original Code is Red Hat.                   
+# Portions created by Red Hat are                                          
+# Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.
+# All Rights Reserved.                                                     
+# -------------------------------------------                              
+#                                                                          
+#####COPYRIGHTEND####
+# ====================================================================
+######DESCRIPTIONBEGIN####
+#
+# Author(s):      gthomas, hmt, jskov
+# Original data:  gthomas
+# Contributors:   gthomas
+# Date:           2001-02-20
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_DEVS_FLASH_CQ7750 {
+    display       "CqREEK SH7750 board FLASH memory support"
+    description   "FLASH memory device support for CqREEK SH7750  board"
+
+    parent        CYGPKG_IO_FLASH
+    active_if	  CYGPKG_IO_FLASH
+    requires	  CYGPKG_HAL_SH_SH7750_CQ7750
+
+    compile       cq7750_flash.c
+
+    # Arguably this should do in the generic package
+    # but then there is a logic loop so you can never enable it.
+    cdl_interface CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED {
+        display   "Generic AMD AM29LV800B driver required"
+    }
+
+    implements    CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED
+    requires	  CYGHWR_DEVS_FLASH_AMD_TC58FVB800
+    # requires      CYGHWR_DEVS_FLASH_AMD_AM29LV800
+}
diff -urN --exclude=CVS packages.old/devs/flash/sh/cq7750/current/src/cq7750_flash.c packages/devs/flash/sh/cq7750/current/src/cq7750_flash.c
--- packages.old/devs/flash/sh/cq7750/current/src/cq7750_flash.c	Thu Jan  1 09:00:00 1970
+++ packages/devs/flash/sh/cq7750/current/src/cq7750_flash.c	Fri Dec 21 00:52:12 2001
@@ -0,0 +1,57 @@
+//==========================================================================
+//
+//      cq7750_flash.c
+//
+//      Flash programming for Atmel device on Hitachi EDK7708 board
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    jskov
+// Contributors: jskov
+// Date:         2001-09-13
+// Purpose:      
+// Description:  
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+
+// A Toshiba TC58FVB800FT-85 is equipped with the CQ7750 platform.
+
+#define CYGNUM_FLASH_INTERLEAVE	(1)
+#define CYGNUM_FLASH_SERIES	(1)
+#define CYGNUM_FLASH_WIDTH	(16)
+#define CYGNUM_FLASH_BASE 	(0x80000000u)
+// #define CYGHWR_FLASH_AM29XXXXX_NO_WRITE_PROTECT
+
+#include "cyg/io/flash_am29xxxxx.inl"
+
+
+// ------------------------------------------------------------------------
+// EOF cq7750_flash.c
diff -urN --exclude=CVS packages.old/ecos.db packages/ecos.db
--- packages.old/ecos.db	Sat Nov 24 02:12:53 2001
+++ packages/ecos.db	Fri Dec 21 00:51:02 2001
@@ -173,6 +173,16 @@
 	   on the Hitachi EDK7708 platform."
 }
 
+package CYGPKG_DEVS_FLASH_CQ7750 {
+	alias 		{ "Support for flash memory on qREEK SH7750 board" flash_cq7750 }
+	directory	devs/flash/sh/cq7750
+	script		flash_cq7750.cdl
+	hardware
+        description "
+           This package contains hardware support for flash memory
+	   on the CqREEK SH7750 platform."
+}
+
 package CYGPKG_DEVS_FLASH_MIPS_OCELOT {
 	alias 		{ "Support for flash memory on PMC-Sierra/Ocelot board" flash_qed_ocelot }
 	directory	devs/flash/mips/ocelot
@@ -2209,6 +2219,8 @@
         packages { CYGPKG_HAL_SH
                    CYGPKG_HAL_SH_SH4
                    CYGPKG_HAL_SH_SH7750_CQ7750
+		   CYGPKG_DEVS_FLASH_CQ7750
+		   CYGPKG_DEVS_FLASH_AMD_AM29XXXXX
                    CYGPKG_IO_SERIAL_SH_SCIF }
         description "
            The sh7750 target provides the packages needed to run
diff -urN --exclude=CVS packages.old/hal/sh/cq7750/current/cdl/hal_sh_sh7750_cq7750.cdl packages/hal/sh/cq7750/current/cdl/hal_sh_sh7750_cq7750.cdl
--- packages.old/hal/sh/cq7750/current/cdl/hal_sh_sh7750_cq7750.cdl	Sat Nov 24 02:13:00 2001
+++ packages/hal/sh/cq7750/current/cdl/hal_sh_sh7750_cq7750.cdl	Fri Dec 21 00:57:28 2001
@@ -55,6 +55,7 @@
     implements    CYGINT_HAL_DEBUG_GDB_STUBS
     implements    CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
     implements    CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
+#    implements    CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_NOT_GUARANTEED 
     implements    CYGINT_HAL_SH_PLF_BIGENDIAN_DEFAULT
 
     define_proc {

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]