changeset 401:95bcba5bfb2d

2002-11-05 Chris Garry <cgarry@sweeneydesign.co.uk> * src/ks5000_ether.c: (CYG_BYTEORDER == CYG_MSBFIRST) used to swap endian in BDMARxConfigVar declaration and txWritePointer transmit descriptor reserved fields setup. (ks32c5000_eth_poll): Added call to BDMA Rx isr routine.
author jlarmour
date Tue, 05 Nov 2002 02:24:42 +0000
parents 2057b81b96bb
children 872873f742b0
files packages/devs/eth/arm/ks32c5000/current/ChangeLog packages/devs/eth/arm/ks32c5000/current/src/ks5000_ether.c
diffstat 2 files changed, 29 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/packages/devs/eth/arm/ks32c5000/current/ChangeLog
+++ b/packages/devs/eth/arm/ks32c5000/current/ChangeLog
@@ -1,3 +1,10 @@
+2002-11-05  Chris Garry  <cgarry@sweeneydesign.co.uk>
+
+	* src/ks5000_ether.c: (CYG_BYTEORDER == CYG_MSBFIRST) used to swap
+	endian in BDMARxConfigVar declaration and txWritePointer transmit
+	descriptor reserved fields setup.
+	(ks32c5000_eth_poll): Added call to BDMA Rx isr routine.
+
 2002-10-10  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* cdl/ks32c5000_eth.cdl
--- a/packages/devs/eth/arm/ks32c5000/current/src/ks5000_ether.c
+++ b/packages/devs/eth/arm/ks32c5000/current/src/ks5000_ether.c
@@ -65,6 +65,8 @@
 #define EINVAL 2
 #endif
 
+#include <cyg/infra/cyg_type.h>  // Common type definitions and support
+                                 // including endian-ness
 #include <cyg/infra/diag.h>
 #include <cyg/io/eth/netdev.h>
 #include <cyg/io/eth/eth_drv.h>
@@ -252,6 +254,7 @@ static volatile U32 BDMATxConfigVar =
 #error "EtherFramePadding must be 0,1,2 or 3"
 #endif
 
+#if (CYG_BYTEORDER == CYG_MSBFIRST) // Big endian
 static volatile U32 BDMARxConfigVar = 
   BDMARXCON_DIE | 
   BDMARXCON_EN |
@@ -261,6 +264,18 @@ static volatile U32 BDMARxConfigVar =
   BDMARXCON_ALIGN |
   BDMARXCON_STP_SKP | 
   15;  /* burst size - 1 */
+  
+#else // Little endian
+static volatile U32 BDMARxConfigVar = 
+  BDMARXCON_DIE | 
+  BDMARXCON_EN |
+  BDMARXCON_LITTLE | 
+  BDMARXCON_MA_INC |
+  BDMARXCON_NOIE | 
+  BDMARXCON_ALIGN |
+  BDMARXCON_STP_SKP | 
+  15;  /* burst size - 1 */
+#endif
 
 
 /* Global variables For BDMA Error Report */
@@ -488,9 +503,15 @@ static int ks32c5000_eth_buffer_send(tEt
 
   // fill in the packet descriptor
 
+#if (CYG_BYTEORDER == CYG_MSBFIRST) // Big endian
   txWritePointer->Reserved = (TXFDCON_PADDING_MODE | TXFDCON_CRC_MODE |
                     TXFDCON_SRC_ADDR_INC | TXFDCON_BIG_ENDIAN |
                     TXFDCON_WIDGET_ALIGN00 | TXFDCON_MAC_TX_INT_EN);
+#else // Little endian
+  txWritePointer->Reserved = (TXFDCON_PADDING_MODE | TXFDCON_CRC_MODE |
+                    TXFDCON_SRC_ADDR_INC | TXFDCON_LITTLE_ENDIAN |
+                    TXFDCON_WIDGET_ALIGN00 | TXFDCON_MAC_TX_INT_EN);
+#endif
   
   txWritePointer->StatusAndFrameLength = buf->length;
   txWritePointer->FrameDataPtr = ((unsigned)buf | FRM_OWNERSHIP_BDMA);
@@ -1306,6 +1327,7 @@ static void ks32c5000_eth_recv(struct et
 // routine called to handle ethernet controller in polled mode
 static void ks32c5000_eth_poll(struct eth_drv_sc *sc)
 {
+  BDMA_Rx_isr(CYGNUM_HAL_INTERRUPT_ETH_BDMA_RX, 0); // Call ISR routine
   ks32c5000_eth_deliver(sc);  // handle rx frames
   ks32c5000_handle_tx_complete();
 }