changeset 852:fc713944bd1c

gsm-fw: uartfax.c included in the build with feature at-modem
author Space Falcon <falcon@ivan.Harhan.ORG>
date Sun, 26 Apr 2015 03:06:32 +0000
parents 9e54d153eb8c
children ae254ffeaec3
files gsm-fw/cfgmagic/feature.at-modem gsm-fw/serial/Makefile gsm-fw/serial/uartfax.c
diffstat 3 files changed, 80 insertions(+), 86 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/cfgmagic/feature.at-modem	Sun Apr 26 03:06:32 2015 +0000
@@ -0,0 +1,12 @@
+case $TARGET in
+	gtamodem)
+		;;
+	*)
+		echo "Error: feature at-modem not supported on this target" 1>&2
+		exit 1
+		;;
+esac
+
+CONFIG_FDMODEM=1
+export_to_c	CONFIG_FDMODEM
+export_to_mk	CONFIG_FDMODEM
--- a/gsm-fw/serial/Makefile	Sun Apr 26 01:27:29 2015 +0000
+++ b/gsm-fw/serial/Makefile	Sun Apr 26 03:06:32 2015 +0000
@@ -2,7 +2,12 @@
 CFLAGS=	-O2 -fno-builtin -mthumb-interwork -mthumb
 LD=	arm-elf-ld
 
+sinclude ../include/config.mk
+
 OBJS=	debug.o init.o serialswitch.o uart.o
+ifeq (${CONFIG_FDMODEM},1)
+OBJS+=	uartfax.o
+endif
 
 HDRS=	faxdata.h serialswitch.h traceswitch.h uart.h uartfax.h
 
--- a/gsm-fw/serial/uartfax.c	Sun Apr 26 01:27:29 2015 +0000
+++ b/gsm-fw/serial/uartfax.c	Sun Apr 26 03:06:32 2015 +0000
@@ -76,24 +76,17 @@
  *
  */
  
-#include "swconfig.cfg"
-
-#include "l1sw.cfg"
-
-#if (OP_L1_STANDALONE == 0)
-  #include "rv.cfg"
-#endif
-#include "board.cfg"
-#include "chipset.cfg"
-#ifdef BLUETOOTH_INCLUDED
-#include "btemobile.cfg"
-#endif
-
+#include "../include/config.h"
 
 #include <string.h>
-#include "nucleus.h"
-
-#include "main/sys_types.h"
+
+/*
+ * rv_general.h is needed for macros Min & Min3.
+ */
+#include "../riviera/rv/rv_general.h"
+#include "../nucleus/nucleus.h"
+
+#include "../include/sys_types.h"
 #include "faxdata.h"
 #include "uartfax.h"
 
@@ -104,23 +97,20 @@
 #include "serialswitch.h"
 extern SYS_BOOL uart_sleep_timer_enabled;
 
-/*
- * rv_general.h is needed for macros Min & Min3.
- */
-
-#include "rv/rv_general.h"
-
-#include "memif/mem.h"
-
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))
-  #include "armio/armio.h"
+#include "../bsp/mem.h"
+#include "../bsp/armio.h"
+
+#if CONFIG_TARGET_GTAMODEM
+  #define EXTHOST_WAKEUP_GPIO	1
+#else
+  #undef  EXTHOST_WAKEUP_GPIO
 #endif
 
 /* 
  * Maximal value for an unsigned 32 bits.
  */
 
-#define MAX_UNSIGNED_32 (4294967295)
+#define MAX_UNSIGNED_32 (0xFFFFFFFFU)
 
 #define FIFO_SIZE (64) /* In bytes. */
 
@@ -305,27 +295,16 @@
  
 #define RX_HISR_PRIORITY      (2)
 
-
-
-
 // NGENGE increase hisr stack otherwise overflows with multiple callbacks
 //#define RX_HISR_STACK_SIZE  (512) /* Bytes. */ 
 #define RX_HISR_STACK_SIZE  (768) /* Bytes. */ 
 
-
-
-
 #define TX_HISR_PRIORITY      (2)
 
-
-
 // NGENGE increase hisr stack otherwise overflows with multiple callbacks
 //#define TX_HISR_STACK_SIZE  (512) /* Bytes. */ 
 #define TX_HISR_STACK_SIZE  (768) /* Bytes. */ 
 
-
-
-
 #define V24_HISR_PRIORITY     (2)
 #define V24_HISR_STACK_SIZE (512) /* Bytes. */ 
 
@@ -356,12 +335,12 @@
             *((volatile SYS_UWORD8 *) ((UART)->base_address + (REG))) = (VALUE)
 
 #define RESET_BIT(UART,REG,BIT)    \
-			(WRITE_UART_REGISTER ( \
-			     UART, REG, READ_UART_REGISTER (UART, REG) & ~(1 << (BIT))))
+		(WRITE_UART_REGISTER ( \
+		     UART, REG, READ_UART_REGISTER (UART, REG) & ~(1 << (BIT))))
 
 #define SET_BIT(UART,REG,BIT)      \
-			(WRITE_UART_REGISTER ( \
-			     UART, REG, READ_UART_REGISTER (UART, REG) | (1 << (BIT))))
+		(WRITE_UART_REGISTER ( \
+		     UART, REG, READ_UART_REGISTER (UART, REG) | (1 << (BIT))))
 
 
 /*
@@ -553,7 +532,7 @@
     SYS_UWORD8 rts_level; /* RTS on RS232 side, CTS on chipset side.
                              1: The RS232 line is deactivated (low). */
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
     SYS_UWORD8 dtr_level; /* Controlled with an I/O on C & D-Sample and
                              handled by Calypso+ on E-Sample.
                              1: The RS232 line is deactivated (low). */
@@ -657,7 +636,7 @@
 
 static const SYS_UWORD8 dll[] =
 {
-      0, /*   Auto baud:               */
+      0, /*   Auto baud:                */
      81, /*     75 baud.                */
      40, /*    150 baud.                */
     148, /*    300 baud.                */
@@ -915,7 +894,7 @@
      * lose events detected in the RX interrupt handler.
      */
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
     if (call_source == 3) /* Call from Rx HISR */
         dtr_level = uart->dtr_level_saved[uart->index_hisr];
     else
@@ -932,7 +911,7 @@
 
     state |= ((((SYS_UWORD32) uart->rts_level) << RTS) |
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
               (((SYS_UWORD32) dtr_level) << DTR) |
 #endif
 
@@ -955,7 +934,7 @@
      * DTR is supported on C, D & E-Sample.
      */
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
     state |= (((SYS_UWORD32) uart->dtr_level) << SA);
 #endif
 
@@ -1800,27 +1779,26 @@
     current_byte = first_byte;
 
     if (*bytes_in_rx_buffer) {
- 
-
-    	/* The Rx buffer is not empty and is being used by HISR ! */
-    	/* Hence stop the flow control */
+
+	/* The Rx buffer is not empty and is being used by HISR ! */
+	/* Hence stop the flow control */
 	stop_receiver (uart); 
 
-     /*
-       * Reset LCR[7] (DLAB) to have access to the RBR, THR and IER registers.
-       */
-       WRITE_UART_REGISTER (uart, LCR, READ_UART_REGISTER (uart, LCR) & ~DLAB);
-     
-       /* Mask The Rx  and interrupt */
+        /*
+         * Reset LCR[7] (DLAB) to have access to the RBR, THR and IER registers.
+         */
+        WRITE_UART_REGISTER (uart, LCR, READ_UART_REGISTER (uart, LCR) & ~DLAB);
+
+        /* Mask The Rx  and interrupt */
        
-       WRITE_UART_REGISTER (
+        WRITE_UART_REGISTER (
             uart, IER, READ_UART_REGISTER (uart, IER) &
                        ~(ERBI | EDSSI));
        
-       uart->rx_stopped_by_lisr = 1;
+        uart->rx_stopped_by_lisr = 1;
       	return (bytes_received);
-      	
-      	}
+
+    }
 
     uart->rx_buffer_used_by_rx_lisr = first_byte;
     
@@ -1965,7 +1943,7 @@
     SER_restart_uart_sleep_timer ();
     uart_sleep_timer_enabled = 1;
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
     uart->index_hisr = (uart->index_hisr + 1) & 0x01; /* 0 or 1 */
 #endif
 
@@ -2090,7 +2068,7 @@
                 
             wrap_around_counter -= bytes_to_copy;
             if (!wrap_around_counter)
-                    uart->rx_in = &(uart->rx_buffer[0]);
+                uart->rx_in = &(uart->rx_buffer[0]);
             else
                 uart->rx_in += bytes_to_copy;
 
@@ -2123,8 +2101,8 @@
                 /*
                  * bytes_free_in_rx_buffer not updated since not used anymore.
                  */
-                   bytes_read -= bytes_to_copy;
-              
+                bytes_read -= bytes_to_copy;
+
             }
             else {
             	     bytes_read = 0;
@@ -2166,7 +2144,7 @@
              (uart->rd_call_setup == rm_reInstall))) {
 
             if ((bytes_in_rx_buffer >= uart->rx_threshold_level) ||
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
                 uart->dtr_change_detected[uart->index_hisr] ||
 #endif
                 uart->break_received ||
@@ -2179,7 +2157,7 @@
                 uart->reading_suspended = 0;
                 uart->break_received = 0;
                 uart->esc_seq_received = 0;
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
                 uart->dtr_change_detected[uart->index_hisr] = 0;
 #endif
             }
@@ -2188,7 +2166,6 @@
     }
 
 
-
     WRITE_UART_REGISTER (uart, LCR, READ_UART_REGISTER (uart, LCR) & ~DLAB);
               
     /* Mask The Rx and Modem status interrupt */
@@ -2499,11 +2476,9 @@
     if (DRIVER_DISABLED (uart))
         empty_rx_fifo (uart);
 
-    else if (build_rx_fifo_array (uart)){
+    else if (build_rx_fifo_array (uart)) {
         (void) NU_Activate_HISR (&(uart->rx_hisr_ctrl_block));
-        
-    	}
-    
+    }
 
 }
 
@@ -2592,7 +2567,9 @@
         else {
             
             uart->tx_stopped_by_driver = 0;
-            LowGPIO(1);
+#ifdef EXTHOST_WAKEUP_GPIO
+            AI_ResetBit(EXTHOST_WAKEUP_GPIO);
+#endif
 
 #if ((CHIPSET != 5) && (CHIPSET != 6))
             /*
@@ -2999,7 +2976,7 @@
     else
         uart->rts_level = 1;
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))
+#if TARGET_HAS_DTR_INPUT
     /*
      * On C & D-Sample, 2 I/O are used to control DCD and DTR on UART Modem.
      * DCD: I/O 2 (output)
@@ -3219,7 +3196,7 @@
 
     WRITE_UART_REGISTER (uart, IER, 0x00);
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))
+#if TARGET_HAS_DTR_INPUT
     AI_MaskIT (ARMIO_MASKIT_GPIO);
 #elif (CHIPSET == 12)
     DISABLE_DSR_INTERRUPT (uart);
@@ -3360,7 +3337,7 @@
     else
         uart->rts_level = 1;
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))
+#if TARGET_HAS_DTR_INPUT
     /*
      * Read the state of DTR and select the edge.
      */
@@ -3944,8 +3921,8 @@
     deep_sleep = 0;
 
     /*
-	 * Check if RX & TX FIFOs are both empty
-	 */
+     * Check if RX & TX FIFOs are both empty
+     */
 
     status = READ_UART_REGISTER (uart, LSR);
 
@@ -4322,8 +4299,10 @@
 
 	/* If we have been stopped due to high RTS, we have to
 	 * wake up application processor by IRQ via IO1 -HW */
+#ifdef EXTHOST_WAKEUP_GPIO
 	if (uart->tx_stopped_by_driver)
-            HighGPIO(1);
+            AI_SetBit(EXTHOST_WAKEUP_GPIO);
+#endif
 
         /*
          * If:
@@ -4544,7 +4523,7 @@
 
         *state |= ((((SYS_UWORD32) uart->rts_level) << RTS) |
         
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
                    (((SYS_UWORD32) uart->dtr_level) << DTR) |
 #endif
 
@@ -4568,7 +4547,7 @@
          * DTR is supported on C, D & E-Sample.
          */
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
         *state |= (((SYS_UWORD32) uart->dtr_level) << SA);
 #endif
 
@@ -4883,7 +4862,7 @@
 
     case RX_DATA:
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (CHIPSET == 12))
+#if TARGET_HAS_DTR_INPUT
         uart->index_it = (uart->index_it + 1) & 0x01; /* 0 or 1 */
         uart->dtr_change_detected[uart->index_it] = 0;
         uart->dtr_level_saved[uart->index_it] = uart->dtr_level;
@@ -4994,7 +4973,7 @@
 
     /*
      * There is no case where FD_INTERNAL_ERR may be returned.
-	 */
+     */
 
     result = FD_OK;
     
@@ -5017,7 +4996,7 @@
     return (result);
 }
 
-#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))
+#if TARGET_HAS_DTR_INPUT
 /*******************************************************************************
  *
  *                              UAF_DTRInterruptHandler
@@ -5167,5 +5146,3 @@
     return (FD_OK);
 }
 #endif /* (defined BTEMOBILE && (CHIPSET != 12)) */
-
-