changeset 3095:02cc6caf8d94

* cdl/lpc2xxx_eth.cdl, src/if_lpc2xxx.c: Added support for LPC17xx CPUs.
author sergeig
date Sun, 13 Mar 2011 13:24:12 +0000
parents 08d845c99239
children 0acdd1ec3f4c
files packages/devs/eth/arm/lpc2xxx/current/ChangeLog packages/devs/eth/arm/lpc2xxx/current/cdl/lpc2xxx_eth.cdl packages/devs/eth/arm/lpc2xxx/current/src/if_lpc2xxx.c
diffstat 3 files changed, 44 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/packages/devs/eth/arm/lpc2xxx/current/ChangeLog
+++ b/packages/devs/eth/arm/lpc2xxx/current/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-01  Ilija Kocho  <ilijak@siva.com.mk>
+
+	* cdl/lpc2xxx_eth.cdl, src/if_lpc2xxx.c: Added support for
+	LPC17xx CPUs.
+
 2008-09-09  Uwe Kindler  <uwe_kindler@web.de>
 
 	* LPC2xxx ethernet driver package created
@@ -8,7 +13,7 @@ 2008-09-09  Uwe Kindler  <uwe_kindler@we
 // ####GPLCOPYRIGHTBEGIN####                                                
 // -------------------------------------------                              
 // This file is part of eCos, the Embedded Configurable Operating System.   
-// Copyright (C) 2008 Free Software Foundation, Inc.                        
+// Copyright (C) 2008, 2011 Free Software Foundation, Inc.                        
 //
 // This program is free software; you can redistribute it and/or modify     
 // it under the terms of the GNU General Public License as published by     
--- a/packages/devs/eth/arm/lpc2xxx/current/cdl/lpc2xxx_eth.cdl
+++ b/packages/devs/eth/arm/lpc2xxx/current/cdl/lpc2xxx_eth.cdl
@@ -40,6 +40,7 @@
 ######DESCRIPTIONBEGIN####
 #
 # Author(s):    Uwe Kindler
+# Contributors: ilijak
 # Date:         2008-08-05
 #
 #####DESCRIPTIONEND####
@@ -80,19 +81,32 @@ cdl_package CYGPKG_DEVS_ETH_ARM_LPC2XXX 
              debug messages while an application is loaded and run via GDB
              TCP/IP connection"
     }
-    
+
+    # For backward compatibility with LPC24xx platforms
+    # that do not have CYGNUM_HAL_IRQ_PRIORITY_LEVELS defined.
+    cdl_option CYGNUM_DEVS_ETH_IRQ_PRIORITY_LEVELS {
+        display       "Interrupt priority levels"
+        flavor        data
+        calculated    { CYGNUM_HAL_IRQ_PRIORITY_LEVELS ? CYGNUM_HAL_IRQ_PRIORITY_LEVELS : 15 }
+        description   "
+            For backward compatibility with LPC 24XX plarforms that do
+            not have CYGNUM_HAL_IRQ_PRIORITY_LEVELS defined."
+    }
+
     cdl_option CYGPKG_DEVS_ETH_ARM_LPC2XXX_INTPRIO {
         display       "Interrupt priority"
         flavor        data
-        legal_values  0 to 15
-        default_value 15
+        legal_values  0 to CYGNUM_DEVS_ETH_IRQ_PRIORITY_LEVELS-1
+        default_value CYGNUM_DEVS_ETH_IRQ_PRIORITY_LEVELS-1
         description   "
-            This option selects the interrupt priority for the EMAC interrupts. 
-            There are 16 priority levels corresponding to the values 0 through 
-            15 decimal, of which 15 is the lowest priority. The reset value of 
-            these registers defaults all interrupts to the lowest priority, 
-            allowing a single write to elevate the priority of an 
-            individual interrupt."
+            This option selects the interrupt priority for the EMAC
+            interrupts.  There are CYGNUM_DEVS_ETH_IRQ_PRIORITY_LEVELS
+            priority levels corresponding to the values 0 through
+            CYGNUM_DEVS_ETH_IRQ_PRIORITY_LEVELS-1 decimal, of which
+            the highest value is the lowest priority. The reset value
+            of these registers defaults all interrupts to the lowest
+            priority, allowing a single write to elevate the priority
+            of an individual interrupt."
     }
 
     cdl_option CYGNUM_DEVS_ETH_ARM_LPC2XXX_RX_BUFS {
--- a/packages/devs/eth/arm/lpc2xxx/current/src/if_lpc2xxx.c
+++ b/packages/devs/eth/arm/lpc2xxx/current/src/if_lpc2xxx.c
@@ -38,7 +38,7 @@
 //#####DESCRIPTIONBEGIN####
 //
 // Author(s):    Uwe Kindler
-// Contributors:
+// Contributors: ilijak
 // Date:         2008-08-10
 // Description:  Hardware driver for LPC2xxx on-chip EMAC peripheral
 //
@@ -254,9 +254,17 @@
 //===========================================================================
 //                ETHERNET RAM AND DMA CONFIGURATION
 //===========================================================================
-#define EMAC_RAM_BASE          0x7FE00000
-#define EMAC_RAM_SIZE          0x00004000
-#define EMAC_BLOCK_SIZE        0x600
+#ifdef CYGHWR_HAL_LPC_EMAC_RAM_AHB
+# include <cyg/infra/cyg_type.h>
+# define EMAC_RAM_MEM_SECTION   CYGBLD_ATTRIB_SECTION(CYGHWR_HAL_LPC_EMAC_MEM_SECTION)
+# define EMAC_RAM_BASE          (&emac_ahb_ram)
+# define EMAC_RAM_SIZE          sizeof(emac_ahb_ram)
+# define EMAC_BLOCK_SIZE        CYGHWR_HAL_LPC_EMAC_BLOCK_SIZE
+#else // Backward compatibility
+# define EMAC_RAM_BASE          0x7FE00000
+# define EMAC_RAM_SIZE          0x00004000
+# define EMAC_BLOCK_SIZE        0x600
+#endif // CYGHWR_HAL_LPC_EMAC_RAM_AHB
 
 //
 // EMAC Descriptor TX and RX Control fields
@@ -345,6 +353,9 @@ typedef struct eth_ram_cfg_st
     volatile eth_buf_t    rx_buf[CYGNUM_DEVS_ETH_ARM_LPC2XXX_RX_BUFS];
 } eth_ram_cfg_t;
 
+#ifdef CYGHWR_HAL_LPC_EMAC_RAM_AHB
+volatile static eth_ram_cfg_t emac_ahb_ram EMAC_RAM_MEM_SECTION;
+#endif
 
 #if CYGPKG_DEVS_ETH_ARM_LPC2XXX_DEBUG_LEVEL < 3
 #if CYGPKG_DEVS_ETH_ARM_LPC2XXX_DEBUG_LEVEL > 0