From f839f18b111bb8ce926555af5aa057814302ef06 Mon Sep 17 00:00:00 2001
From: Thomas Eichinger <thomas.eichinger1@gmail.com>
Date: Wed, 24 Jul 2013 15:51:07 +0200
Subject: [PATCH] bug fixes for mc1322x MACA

---
 redbee-econotag/drivers/include/maca.h |  4 ++--
 redbee-econotag/drivers/maca.c         | 26 ++++++++++++++++----------
 2 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/redbee-econotag/drivers/include/maca.h b/redbee-econotag/drivers/include/maca.h
index 79195fc7dd..7c2bc8e071 100644
--- a/redbee-econotag/drivers/include/maca.h
+++ b/redbee-econotag/drivers/include/maca.h
@@ -33,8 +33,8 @@ uint16_t maca_set_address ( uint16_t addr );
 uint16_t maca_get_address ( void );
 
 /* get Link Quality Indicator */
-//extern uint8_t (*get_lqi) ( void );
-uint8_t (*get_lqi)(void) = (void *) 0x0000e04d;
+extern uint8_t (*get_lqi) ( void );
+
 
 /* interface to configure demodulator */
 #define MACA_DEMOD_DCD 1 /* -96dBm, 22.2mA */
diff --git a/redbee-econotag/drivers/maca.c b/redbee-econotag/drivers/maca.c
index 596002daeb..befbc3c7fa 100644
--- a/redbee-econotag/drivers/maca.c
+++ b/redbee-econotag/drivers/maca.c
@@ -48,6 +48,8 @@ volatile maca_packet_t *maca_tx_head;
 
 static volatile maca_packet_t maca_dummy_ack;
 
+uint8_t (*get_lqi)(void) = (void *) 0x0000e04d;
+
 #define MACA_NO_POST 0
 #define MACA_TX_POST 1
 #define MACA_RX_POST 2
@@ -480,7 +482,7 @@ void _maca_decode_status ( void ) {
 }
 
 void maca_isr ( void ) {
-    maca_entry++;
+    //maca_entry++;
 
     if ( MACA->STATUSbits.OVR ) {
         printf ( "maca overrun\n" );
@@ -550,7 +552,7 @@ void maca_isr ( void ) {
     // action complete interrupt
     if ( MACA->IRQbits.ACPL ) {
         if ( maca_last_post == MACA_TX_POST ) {
-            maca_tx_head->status == MACA->STATUSbits.COMPLETE_CODE;
+            maca_tx_head->status = MACA->STATUSbits.COMPLETE_CODE;
 
             if ( maca_tx_callback != 0 ) {
                 maca_tx_callback ( maca_tx_head );
@@ -569,7 +571,7 @@ void maca_isr ( void ) {
 
     // this should never happen ...
     if ( MACA->IRQ != 0 ) {
-        printf ( "MACA->IRQ is %x", MACA->IRQ );
+        printf ( "MACA->IRQ is %x", (unsigned int) MACA->IRQ );
     }
 
     if ( maca_tx_head != 0 ) {
@@ -602,7 +604,7 @@ void _maca_init_phy ( void ) {
 }
 
 #define MTOC_BASE 0x80009a00 //Modem Tracking Oscillator Controller
-void _flyback_init ( void ) {
+void _maca_flyback_init ( void ) {
     uint32_t val8, tmp;
 
     val8 = * ( volatile uint32_t * ) ( MTOC_BASE+8 );
@@ -920,7 +922,7 @@ uint32_t _exec_init_entry ( volatile uint32_t *entries, uint8_t *value_buffer )
     if ( entries[0] <= MACA_ROM_END ) {
         if ( entries[0] == 0 ) {
             /* do delay */
-            printf ( "init_entry: delay 0x%08x\n", entries[1] );
+            printf ( "init_entry: delay 0x%08x\n", (unsigned int) entries[1] );
 
             for ( i=0; i < entries[1]; i++ ) {
                 continue;
@@ -930,13 +932,16 @@ uint32_t _exec_init_entry ( volatile uint32_t *entries, uint8_t *value_buffer )
         }
         else if ( entries[0] == 1 ) {
             /* do bit set/clear */
-            printf ( "init_entry: bit set/clear 0x%08x 0x%08x 0x%08x\n", entries[1], entries[2], entries[3] );
+            printf ( "init_entry: bit set/clear 0x%08x 0x%08x 0x%08x\n", (unsigned int) entries[1],
+                                                                        (unsigned int) entries[2],
+                                                                        (unsigned int) entries[3] );
             * ( uint32_t * ) ( entries[2] ) = ( * ( uint32_t * ) ( entries[2] ) & entries[1] ) | ( entries[3] & entries[1] );
             return 4;
         }
         else if ( entries[0] >= 16 && entries[0] < 0xfff1 ) {
             /* store bytes in value_buffer */
-            printf ( "init_entry: store in value_buffer 0x%02x position %d\n", entries[1], ( entries[0]>>4 ) - 1 );
+                printf ( "init_entry: store in value_buffer 0x%02x position %d\n", (unsigned int) entries[1], 
+                                                                                   (unsigned int) ( entries[0]>>4 ) - 1 );
             value_buffer[ ( entries[0]>>4 )-1] = entries[1];
             return 2;
         }
@@ -946,14 +951,15 @@ uint32_t _exec_init_entry ( volatile uint32_t *entries, uint8_t *value_buffer )
         }
         else {
             /* invalid */
-            printf ( "init_entry: invalid code 0x%08x\n", entries[0] );
+            printf ( "init_entry: invalid code 0x%08x\n", (unsigned int) entries[0] );
             return 0;
         }
     }
     else {
         /* address not in ROM */
         /* store value in address command */
-        printf ( "init_entry: address value pair - *0x%08x = 0x%08x\n", entries[0], entries[1] );
+        printf ( "init_entry: address value pair - *0x%08x = 0x%08x\n", (unsigned int) entries[0], 
+                                                                        (unsigned int) entries[1] );
 
         if ( entries[0] != CRM->VREG_CNTL ) {
             * ( uint32_t * ) ( entries[0] ) = entries[1];
@@ -985,7 +991,7 @@ uint32_t _maca_init_from_flash ( uint32_t addr ) {
     printf ( "nvm_read returned: 0x%02x\n", err );
 
     for ( j = 0; j < 4; j++ ) {
-        printf ( "0x%08x\n", buffer[j] );
+        printf ( "0x%08x\n", (unsigned int) buffer[j] );
     }
 
     if ( buffer[0] == MACA_FLASH_INIT_MAGIC ) {
-- 
GitLab