commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r8354 - usrp2/trunk/firmware/lib


From: eb
Subject: [Commit-gnuradio] r8354 - usrp2/trunk/firmware/lib
Date: Fri, 9 May 2008 17:37:39 -0600 (MDT)

Author: eb
Date: 2008-05-09 17:37:35 -0600 (Fri, 09 May 2008)
New Revision: 8354

Modified:
   usrp2/trunk/firmware/lib/db_init.c
   usrp2/trunk/firmware/lib/db_rfx.c
   usrp2/trunk/firmware/lib/hal_io.c
   usrp2/trunk/firmware/lib/u2_init.c
Log:
fix for writing ATR regs

Modified: usrp2/trunk/firmware/lib/db_init.c
===================================================================
--- usrp2/trunk/firmware/lib/db_init.c  2008-05-09 23:34:54 UTC (rev 8353)
+++ usrp2/trunk/firmware/lib/db_init.c  2008-05-09 23:37:35 UTC (rev 8354)
@@ -126,18 +126,41 @@
 }
 
 static void
+set_atr_regs(int bank, struct db_base *db)
+{
+  uint32_t     val[4];
+  int          shift;
+  int          mask;
+  int          i;
+
+  val[ATR_IDLE] = db->atr_rxval;
+  val[ATR_RX]   = db->atr_rxval;
+  //val[ATR_TX]   = db->atr_txval;
+  val[ATR_TX]   = 0xffff;
+  val[ATR_FULL] = db->atr_txval;
+
+  if (bank == GPIO_TX_BANK){
+    mask = 0xffff0000;
+    shift = 16;
+  }
+  else {
+    mask = 0x0000ffff;
+    shift = 0;
+  }
+
+  for (i = 0; i < 4; i++){
+    atr_regs->v[i] = (atr_regs->v[i] & ~mask) | ((val[i] << shift) & mask);
+  }
+}
+
+static void
 set_gpio_mode(int bank, struct db_base *db)
 {
   int  i;
 
   hal_gpio_set_ddr(bank, db->output_enables, 0xffff);
+  set_atr_regs(bank, db);
 
-  // Copy ATR values into controller
-  atr_regs->v[ATR_IDLE] = db->atr_rxval;       // Rx
-  atr_regs->v[ATR_RX]   = db->atr_rxval;       // Rx
-  atr_regs->v[ATR_TX]  = db->atr_txval;        // Tx
-  atr_regs->v[ATR_FULL] = db->atr_rxval;       // Rx
-
   for (i = 0; i < 16; i++){
     if (db->used_pins & (1 << i)){
       // set to either GPIO_SEL_SW or GPIO_SEL_ATR

Modified: usrp2/trunk/firmware/lib/db_rfx.c
===================================================================
--- usrp2/trunk/firmware/lib/db_rfx.c   2008-05-09 23:34:54 UTC (rev 8353)
+++ usrp2/trunk/firmware/lib/db_rfx.c   2008-05-09 23:37:35 UTC (rev 8354)
@@ -115,7 +115,7 @@
   .base.set_freq = rfx_set_freq,
   .base.set_gain = rfx_set_gain,
   .base.set_tx_enable = 0,
-  // .base.atr_mask = 
+  .base.atr_mask = 0x00E0,
   .base.atr_txval = 0,
   .base.atr_rxval = MIX_EN,
   // .base.atr_tx_delay =
@@ -147,7 +147,7 @@
   .base.set_freq = rfx_set_freq,
   .base.set_gain = rfx_set_gain,
   .base.set_tx_enable = rfx_set_tx_enable,
-  // .base.atr_mask = 
+  .base.atr_mask = 0x00E0,
   .base.atr_txval = MIX_EN, 
   .base.atr_rxval = ANT_SW,
   // .base.atr_tx_delay =

Modified: usrp2/trunk/firmware/lib/hal_io.c
===================================================================
--- usrp2/trunk/firmware/lib/hal_io.c   2008-05-09 23:34:54 UTC (rev 8353)
+++ usrp2/trunk/firmware/lib/hal_io.c   2008-05-09 23:37:35 UTC (rev 8354)
@@ -114,6 +114,8 @@
 void
 hal_gpio_write(int bank, int value, int mask)
 {
+  static uint32_t      _gpio_io_shadow;
+
   bank &= 0x1;
 
   if (bank == GPIO_TX_BANK){   // tx in top half
@@ -126,7 +128,8 @@
   }
 
   int ei = hal_disable_ints();
-  gpio_base->io = (gpio_base->io & ~mask) | (value & mask);
+  _gpio_io_shadow = (_gpio_io_shadow & ~mask) | (value & mask);
+  gpio_base->io = _gpio_io_shadow;
   hal_restore_ints(ei);
 }
 
@@ -145,7 +148,6 @@
   return r & 0xffff;
 }
 
-
 /*
  * ========================================================================
  *                             leds

Modified: usrp2/trunk/firmware/lib/u2_init.c
===================================================================
--- usrp2/trunk/firmware/lib/u2_init.c  2008-05-09 23:34:54 UTC (rev 8353)
+++ usrp2/trunk/firmware/lib/u2_init.c  2008-05-09 23:37:35 UTC (rev 8354)
@@ -44,8 +44,10 @@
   // Set GPIOs to inputs
   hal_gpio_set_ddr(GPIO_TX_BANK, 0x0000, 0xffff);
   hal_gpio_set_ddr(GPIO_RX_BANK, 0x0000, 0xffff);
-  gpio_base->io  = 0x00000000;
 
+  hal_gpio_write(GPIO_TX_BANK, 0x0000, 0xffff);        // init s/w output 
value to zero
+  hal_gpio_write(GPIO_RX_BANK, 0x0000, 0xffff);
+
   hal_io_init();
 
   // init spi, so that we can switch over to the high-speed clock





reply via email to

[Prev in Thread] Current Thread [Next in Thread]