changeset 797:c5bcebd7687d

Revert previous changes - need copyright assignment
author gthomas
date Tue, 04 Mar 2003 17:35:41 +0000
parents 6f7cf296f8a2
children b1a732f6d137
files packages/devs/eth/powerpc/quicc2/current/ChangeLog packages/devs/eth/powerpc/quicc2/current/src/EnetPHY.c packages/devs/eth/powerpc/quicc2/current/src/if_fec.c packages/hal/powerpc/mpc8260/current/ChangeLog packages/hal/powerpc/mpc8260/current/include/var_cache.h packages/hal/powerpc/ts6/current/ChangeLog packages/hal/powerpc/ts6/current/cdl/hal_powerpc_ts6.cdl packages/hal/powerpc/ts6/current/misc/redboot_RAM.ecm packages/hal/powerpc/ts6/current/misc/redboot_ROM.ecm packages/hal/powerpc/ts6/current/misc/redboot_ROMRAM.ecm packages/hal/powerpc/ts6/current/src/hal_aux.c packages/hal/powerpc/ts6/current/src/ts6.S packages/hal/powerpc/vads/current/ChangeLog packages/hal/powerpc/vads/current/cdl/hal_powerpc_vads.cdl
diffstat 14 files changed, 73 insertions(+), 144 deletions(-) [+]
line wrap: on
line diff
--- a/packages/devs/eth/powerpc/quicc2/current/ChangeLog
+++ b/packages/devs/eth/powerpc/quicc2/current/ChangeLog
@@ -1,11 +1,3 @@
-2003-03-04  Paul Fine <pfine@delcomsys.com>
-
-	* src/EnetPHY.c : Added PHY reset function for the ts6 platform.
-	Changed delay to use HAL_DELAY_US instead of a nop for loop.
-	* src/if_fec.c : Invoke PHY reset function for ts6 platform, as
-	well as VADS platform.  Remove unneeded and incorrect invocation
-	data cache macros.
-	
 2002-12-12  Gary Thomas  <gthomas@ecoscentric.com>
 2002-12-12  Patrick Doyle <wpd@delcomsys.com>
 
--- a/packages/devs/eth/powerpc/quicc2/current/src/EnetPHY.c
+++ b/packages/devs/eth/powerpc/quicc2/current/src/EnetPHY.c
@@ -41,7 +41,6 @@
 * Modified for the mpc8260 VADS board
 *--------------------------------------------------------------------*/
 #include "types.h"
-#include <cyg/hal/hal_intr.h> /* HAL_DELAY_US */
 #include "EnetPHY.h"
 
 /* Internal functions */
@@ -70,34 +69,11 @@ VUINT32 * pPortData;
 void 
 EnableResetPHY(volatile t_BCSR *pBCSR)
 {
-#ifdef CYGPKG_HAL_POWERPC_TS6
-#define ETH_RST_MASK 0x20
-  /* The FPGA control register on the TS6 board uses the same memory
-   * location as the BCSR register on the VADS board.
-   */
-  volatile cyg_uint32 *fpga_ctrl = (cyg_uint32 *) pBCSR;
-  volatile cyg_uint32 *fpga_vers;
-  cyg_uint32 value;
-  fpga_vers = fpga_ctrl + 1;
-  value = *fpga_vers;
-  if(value >= 6){ /* version 06 of the FPGA added PHY reset control */
-    value = *fpga_ctrl;
-    /* Set the PHY reset bit */
-    value |= ETH_RST_MASK;
-    *fpga_vers = value;
-
-    /* Give the PHY time to reset */
-    HAL_DELAY_US(10000);
-
-    /* Clear the reset bit */
-    *fpga_vers = value & ~ETH_RST_MASK;
-  }
-#else
   // active low FETHIEN on BSCR1, assert reset low
   pBCSR->bcsr1 &= ~(FETHIEN_ | FETHRST_);  
   // de-assert reset
   pBCSR->bcsr1 |= FETHRST_;  
-#endif
+  
 }
 
 
@@ -197,12 +173,18 @@ EthernetPHYInterruptHandler()
 UINT16 
 LinkTestPHY()
 {
-  UINT32 j;
-  UINT16 FrameValue = 0;
+  UINT32 j, cnt;
+  UINT16 FrameValue;
+
+  //for (j = 0; j < 10; j++) {
+  for (j = 0; j < 5; j++) {
 
-  for (j = 0; j < 50; j++) {
-
-    HAL_DELAY_US(100000);
+    for (cnt = 0; cnt < 1000000; cnt ++) {
+    
+      asm("nop");
+      asm("nop");
+      asm("nop");
+    }
   
     FrameValue = MdioFrame(READ,0,CHIP_STAT_REG,0);  
   
--- a/packages/devs/eth/powerpc/quicc2/current/src/if_fec.c
+++ b/packages/devs/eth/powerpc/quicc2/current/src/if_fec.c
@@ -184,16 +184,24 @@ fec_eth_init(struct cyg_netdevtab_entry 
     volatile t_PQ2IMM    *IMM = (volatile t_PQ2IMM *) QUICC2_VADS_IMM_BASE;
     volatile t_Fcc_Pram  *fcc =  (volatile t_Fcc_Pram *) (QUICC2_VADS_IMM_BASE + FEC_PRAM_OFFSET);
     volatile t_EnetFcc_Pram *E_fcc = &(fcc->SpecificProtocol.e);
-#if defined(CYGPKG_HAL_POWERPC_VADS) || defined(CYGPKG_HAL_POWERPC_TS6)
+#ifdef CYGPKG_HAL_POWERPC_VADS
     volatile t_BCSR *CSR   = (t_BCSR *) 0x04500000;
 #endif
 
+    int cache_state;
     int i;
     bool esa_ok;
     bool fec_100;
     unsigned char *c_ptr;
     UINT16 link_speed;
 
+    // Ensure consistent state between cache and what the FEC sees
+    HAL_DCACHE_IS_ENABLED(cache_state);
+    if (cache_state) {
+      HAL_DCACHE_DISABLE();
+      HAL_DCACHE_INVALIDATE_ALL();
+    }
+
     // Link the memory to the driver control memory
     qi->fcc_reg = & (IMM->fcc_regs[FCC2]);
 
@@ -201,7 +209,7 @@ fec_eth_init(struct cyg_netdevtab_entry 
     qi->fcc_reg->fcc_gfmr &= ~(FEC_GFMR_EN_Rx | FEC_GFMR_EN_Tx);
     
     // Via BCSR, (re)start LXT970
-#if defined(CYGPKG_HAL_POWERPC_VADS) || defined(CYGPKG_HAL_POWERPC_TS6)
+#ifdef CYGPKG_HAL_POWERPC_VADS 
     EnableResetPHY(CSR);
 #endif
 
@@ -401,6 +409,9 @@ fec_eth_init(struct cyg_netdevtab_entry 
     
     while ((IMM->cpm_cpcr & CPCR_FLG) != CPCR_READY_TO_RX_CMD); 
 
+    if (cache_state)
+      HAL_DCACHE_ENABLE();
+
     // Initialize upper level driver for ecos
     (sc->funs->eth_drv->init)(sc, (unsigned char *)&enaddr);
 
--- a/packages/hal/powerpc/mpc8260/current/ChangeLog
+++ b/packages/hal/powerpc/mpc8260/current/ChangeLog
@@ -1,9 +1,3 @@
-2003-03-04  Paul Fine <pfine@delcomsys.com>
-	
-	* include/var_cache.h: Modify the HAL_DCACHE_SYNC macro to look
-	like the MACRO defined in the PPC60x HAL.
-	
-
 2002-12-12  Gary Thomas  <gthomas@ecoscentric.com>
 2002-12-12  Patrick Doyle <wpd@delcomsys.com>
 
--- a/packages/hal/powerpc/mpc8260/current/include/var_cache.h
+++ b/packages/hal/powerpc/mpc8260/current/include/var_cache.h
@@ -137,15 +137,35 @@
 
 
 // Synchronize the contents of the cache with memory.
-// Use the macro defined in the PPC60x HAL as of January 2003.
+// Use a brute force method until something better appears in my head
+// By loading memory from 0x0 to HAL_DCACHE_SIZE, incremented by
+// HAL_DCACHE_LINE_SIZE, it will ensure that the contents of the data
+// cache is known.  Then, I will traverse the loop again, this time
+// flushing the address, not loading it.
+#if 1
 #define HAL_DCACHE_SYNC()                                       \
     CYG_MACRO_START                                             \
-    cyg_int32 i;                                                \
-    cyg_uint32 *__base = (cyg_uint32 *) (0);                    \
-    for(i=0;i< (HAL_DCACHE_SIZE/HAL_DCACHE_LINE_SIZE);i++,__base += HAL_DCACHE_LINE_SIZE/4){                                                    \
-        asm volatile ("lwz %%r0,0(%0);"::"r"(__base):"r0");     \
+    volatile cyg_uint32 tmp1,tmp2;          \
+    for (tmp1 = 0; tmp1 < HAL_DCACHE_SIZE; tmp1 += HAL_DCACHE_LINE_SIZE) \
+        tmp2 = *((cyg_uint32 *) tmp1);      \
+    HAL_DCACHE_FLUSH(0x0, HAL_DCACHE_SIZE); \
+    CYG_MACRO_END
+#else
+#define HAL_DCACHE_SYNC()                                       \
+    CYG_MACRO_START                                             \
+    cyg_uint32 __base = 0x0, _tmp;                              \
+    cyg_int32 __size = HAL_DCACHE_SIZE;                         \
+    while (__size > 0) {                                        \
+        asm volatile (                                          \
+                      "lwz %0,0(%1);"                           \
+                      :"=r" (_tmp) : "r" (__base)               \
+                     );                                         \
+        __base += HAL_DCACHE_LINE_SIZE;                         \
+        __size -= HAL_DCACHE_LINE_SIZE;                         \
     }                                                           \
+    HAL_DCACHE_FLUSH( 0x0 , HAL_DCACHE_SIZE );                  \
     CYG_MACRO_END
+#endif
 
 // Query the state of the data cache
 #define HAL_DCACHE_IS_ENABLED(_state_)                          \
@@ -287,13 +307,10 @@
     asm volatile ("sync;"                             \
                   "mfspr %0, %2;"                     \
                   "ori   %1, %0, 0x8000;"             \
+                  "isync;"                            \
                   "mtspr %2, %1;"                     \
-                  "isync;"                            \
-                  "sync;"                             \
-                  "ori   %1, %1, 0x0800;"             \
+                  "ori   %1, %0, 0x0800;"             \
                   "mtspr %2, %1;"                     \
-                  "isync;"                            \
-                  "sync;"                             \
                   "mtspr %2, %0;"                     \
                   "isync;"                            \
                   "sync;"                             \
--- a/packages/hal/powerpc/ts6/current/ChangeLog
+++ b/packages/hal/powerpc/ts6/current/ChangeLog
@@ -1,18 +1,3 @@
-2003-03-04  Paul Fine <pfine@delcomsys.com>
-	
-	* cdl/hal_powerpc_ts6.cdl: Now that the cache control macros
-	are correct and quicc2 ethernet driver has been fixed with respect
-	to caching operations, allow the cache to be enabled at startup.
-	* src/ts6.S: Make SDRAM test global, so that RedBoot (for ROM)
-	can invoke the test.
-	* src/hal_aux.c : Add RedBoot command to test SDRAM.  Also modify
-	the initialization of the Serial Periphial Interface (SPI)
-	controller in the CPM. Also removed some debug code.
-	* redboot_RAM.ecm:
-	* redboot_ROM.ecm:
-	* redboot_ROMRAM.ecm: Bumped DCS version to 1.17, added
-	REDBOOT_BACKUP option.
-
 2002-12-12  Gary Thomas  <gthomas@ecoscentric.com>
 2002-12-12  Patrick Doyle <wpd@delcomsys.com>
 
--- a/packages/hal/powerpc/ts6/current/cdl/hal_powerpc_ts6.cdl
+++ b/packages/hal/powerpc/ts6/current/cdl/hal_powerpc_ts6.cdl
@@ -67,6 +67,9 @@ cdl_package CYGPKG_HAL_POWERPC_TS6 {
     implements    CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
     implements    CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
 
+    requires { CYGSEM_HAL_ENABLE_DCACHE_ON_STARTUP == 0 }
+    requires { CYGSEM_HAL_ENABLE_ICACHE_ON_STARTUP == 0 }
+
     define_proc {
         puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H   <pkgconf/hal_powerpc_mpc8260.h>"
         puts $::cdl_system_header "#define CYGBLD_HAL_PLATFORM_H <pkgconf/hal_powerpc_ts6.h>"
--- a/packages/hal/powerpc/ts6/current/misc/redboot_RAM.ecm
+++ b/packages/hal/powerpc/ts6/current/misc/redboot_RAM.ecm
@@ -56,7 +56,7 @@ cdl_component CYGBLD_BUILD_REDBOOT {
 };
 
 cdl_option CYGDAT_REDBOOT_CUSTOM_VERSION {
-    user_value 1 "DCS Version 1.17"
+    user_value 1 "DCS Version 1.16"
 };
 
 cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE {
@@ -71,10 +71,6 @@ cdl_option CYGNUM_REDBOOT_FLASH_RESERVED
     user_value 1
 };
 
-cdl_option CYGOPT_REDBOOT_FIS_REDBOOT_BACKUP {
-    user_value 1
-};
-
 cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
     inferred_value 1 <cyg/libc/string/string.h>
 };
--- a/packages/hal/powerpc/ts6/current/misc/redboot_ROM.ecm
+++ b/packages/hal/powerpc/ts6/current/misc/redboot_ROM.ecm
@@ -60,7 +60,7 @@ cdl_component CYGBLD_BUILD_REDBOOT {
 };
 
 cdl_option CYGDAT_REDBOOT_CUSTOM_VERSION {
-    user_value 1 "DCS Version 1.17"
+    user_value 1 "DCS Version 1.16"
 };
 
 cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE {
@@ -75,10 +75,6 @@ cdl_option CYGNUM_REDBOOT_FLASH_RESERVED
     user_value 0x40000
 };
 
-cdl_option CYGOPT_REDBOOT_FIS_REDBOOT_BACKUP {
-    user_value 1
-};
-
 cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
     inferred_value 1 <cyg/libc/string/string.h>
 };
--- a/packages/hal/powerpc/ts6/current/misc/redboot_ROMRAM.ecm
+++ b/packages/hal/powerpc/ts6/current/misc/redboot_ROMRAM.ecm
@@ -78,10 +78,6 @@ cdl_option CYGNUM_REDBOOT_FLASH_RESERVED
     user_value 1
 };
 
-cdl_option CYGOPT_REDBOOT_FIS_REDBOOT_BACKUP {
-    user_value 1
-};
-
 cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
     inferred_value 1 <cyg/libc/string/string.h>
 };
--- a/packages/hal/powerpc/ts6/current/src/hal_aux.c
+++ b/packages/hal/powerpc/ts6/current/src/hal_aux.c
@@ -64,36 +64,6 @@
 #include <cyg/hal/hal_intr.h>
 #include <cyg/hal/mpc8260.h>            // Needed for IMMR structure
 
-#ifdef CYG_HAL_STARTUP_ROM
-#ifdef CYGPKG_REDBOOT
-#include <pkgconf/redboot.h>
-#include <redboot.h>
-// Exported CLI function
-RedBoot_cmd("sdram_test", 
-            "test the sdram", 
-            "",
-            do_sdram_test 
-    );
-
-void
-do_sdram_test(int argc, char *argv[])
-{
-    unsigned long oldints;
-
-    diag_printf("Starting test for SDRAM.\n");
-    diag_printf("D18 will indicate PASS/FAIL (Green/Red).\n");
-    diag_printf("Resetting board will be necessary after test completion.\n");
-    HAL_DISABLE_INTERRUPTS(oldints);
-    memory_test();
-}
-#endif
-#endif
-// For Baud Rate Calculation, see MPC8260 PowerQUICC II User's Manual
-// 16.3 UART Baud Rate Examples, page 16-5.
-#define UART_BIT_RATE(n) \
-    (((int)(CYGHWR_HAL_POWERPC_BOARD_SPEED*1000000))/(n * 64))
-#define UART_BAUD_RATE CYGNUM_HAL_TS6_DIAG_BAUD
-
 // The memory map is weakly defined, allowing the application to redefine
 // it if necessary. The regions defined below are the minimum requirements.
 CYGARC_MEMDESC_TABLE CYGBLD_ATTRIB_WEAK = {
@@ -117,6 +87,12 @@ CYGARC_MEMDESC_TABLE CYGBLD_ATTRIB_WEAK 
 
 volatile t_PQ2IMM  *IMM;   /* IMM base pointer */
 
+// Define some space in high SDRAM that I can use for debugging
+#define nPFDEBUG
+#ifdef PFDEBUG
+cyg_uint32 *dbg_values = (cyg_uint32 *) 0x00FFFF00;
+#endif
+
 //--------------------------------------------------------------------------
 // Platform init code.
 void
@@ -183,20 +159,17 @@ hal_platform_init(void)
     IMM->io_regs[PORT_D].podr |= 0x00000800;
     IMM->io_regs[PORT_D].pdat |= 0x09800000;
 
-#ifdef USE_CPM_SPI_CONTROLLER
     // Dedicated Pin assignments for SPI
     IMM->io_regs[PORT_D].ppar |= 0x0000F000;
     IMM->io_regs[PORT_D].podr &= 0xFFFF0FFF;
     IMM->io_regs[PORT_D].pdir |= 0x0000F000;
-#else
-    // The ts6 board does not use the SPI controller provided by the CPM,
-    // instead it is left up to the application to control the SPI.
-    // Therefore, initialize the SPI specific pins as General Purpose I/O
-    // and Bi-directional.
-    IMM->io_regs[PORT_D].ppar &= 0xFFFF0FFF; /* General Purpose I/O */
-    IMM->io_regs[PORT_D].pdir &= 0xFFFF0FFF; /* input or Bi-directional */
+
+
+#ifdef PFDEBUG
+  int i;
+  for(i = 0; i < 20;i++)
+    dbg_values[i] = 0;
 #endif
-
 #ifdef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
     hal_if_init();
 #endif
--- a/packages/hal/powerpc/ts6/current/src/ts6.S
+++ b/packages/hal/powerpc/ts6/current/src/ts6.S
@@ -1476,7 +1476,6 @@ count_done:
    #
    # Use two loops, the outer loop goes from 0 to 0x3ff and counts
    # by 1.  The inner loop goes from 0 to 0xfffc and counts by 4.
- .globl     memory_test
 memory_test:	
 
    #Turn on Green Led
@@ -1528,14 +1527,6 @@ memwrite_loop2:
    add      r6,r3,r5
    stwx     r6,r5,r3      # Store the value at r6 in the memory addressed
 	                  # by the sum of r3 and r5
-   nop
-   nop
-   nop
-#   lwzx     r10,r5,r3     # Read the value into r10 from the memory addressed
-	                  # by the sum of r3 and r5
-#   cmpw     r6,r10        # compare values to confirm write 
-#   bne      mem_error
-	
    cmpi	    0,0,r5,0
    bne      memwrite_loop2 # branch if r5 != 0
 
@@ -1566,10 +1557,10 @@ memread_loop1:
 memread_loop2:
    addi     r5,r5,-4      # subtract 1 from r5
 	
-   add      r16,r3,r5
-   lwzx     r20,r5,r3     # Read the value into r20 from the memory addressed
+   add      r6,r3,r5
+   lwzx     r10,r5,r3     # Read the value into r10 from the memory addressed
 	                  # by the sum of r3 and r5
-   cmpw     r16,r20        # compare values
+   cmpw     r6,r10        # compare values
    bne      mem_error
 	
    cmpi	    0,0,r5,0
--- a/packages/hal/powerpc/vads/current/ChangeLog
+++ b/packages/hal/powerpc/vads/current/ChangeLog
@@ -1,10 +1,3 @@
-2003-03-04  Paul Fine <pfine@delcomsys.com>
-	
-	* cdl/hal_powerpc_vads.cdl: Now that the cache control macros
-	are correct and quicc2 ethernet driver has been fixed with respect
-	to caching operations, allow the cache, and MMU, to be enabled at
-	startup.
-
 2002-12-12  Gary Thomas  <gthomas@ecoscentric.com>
 2002-12-12  Patrick Doyle <wpd@delcomsys.com>
 
--- a/packages/hal/powerpc/vads/current/cdl/hal_powerpc_vads.cdl
+++ b/packages/hal/powerpc/vads/current/cdl/hal_powerpc_vads.cdl
@@ -124,7 +124,7 @@ cdl_package CYGPKG_HAL_POWERPC_VADS {
     cdl_option CYGHWR_HAL_POWERPC_DISABLE_MMU {
         display       "DISABLE MMU"
         flavor        bool
-        default_value 0
+        default_value 1
 	#        calculated    1
         description   "
             This option will disable the MMU enabled."