FreeCalypso > hg > freecalypso-sw
view gsm-fw/nucleus/demo/caltimer.h @ 884:353daaa6014d
gsm-fw/gpf/conf/gsmcomp.c: increased max partition in the voice-only config
The code we got from TCS211 had the maximum prim pool partition size set to
900 bytes in the voice-only config (no FAX_AND_DATA, no GPRS) and to 1600 bytes
in every other config. As it turns out, this "minimized" config breaks when
the AT command interface is used with %CPI enabled, as the responsible code in
ATI does an ACI_MALLOC of 1012 bytes. TI may have considered this case to be
unsupported usage (perhaps they didn't care about the combination of a
voice-only PS with AT command control), but we do want this use case to work
without crashing. Solution: I made the largest prim pool the same as it is
with FAX_AND_DATA: 3 partitions of 1600 bytes.
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Sat, 27 Jun 2015 07:31:30 +0000 |
parents | afceeeb2cba1 |
children |
line wrap: on
line source
/* * Definitions for Calypso general-purpose timer registers * Added to the FreeNucleus Calypso port by Spacefalcon the Outlaw. * * This header is usable from both .c and .S source files. */ #ifndef _CALYPSO_TIMER_H #define _CALYPSO_TIMER_H #define TIMER1_BASE_ADDR 0xFFFE3800 #define TIMER2_BASE_ADDR 0xFFFE6800 #ifdef __ASSEMBLER__ /* * Assembly source with cpp * * The most convenient way to access registers like these from ARM * assembly is to load the base address of the register block in some * ARM register, using only one ldr rN, =xxx instruction and only one * literal pool entry, and then access various registers in the block * from the same base using the immediate offset addressing mode. * * Here we define the offsets for the usage scenario above. */ #define CNTL_TIM 0x00 #define LOAD_TIM 0x02 #define READ_TIM 0x04 #else /* * C source * * For access from C, we define the layout of each timer register block * as a struct, and then define a pleudo-global-var for easy "volatile" * access to each of the 2 timers. */ struct timer_regs { unsigned char cntl; unsigned char pad; unsigned short load; unsigned short read; }; #define TIMER1_REGS (*(volatile struct timer_regs *) TIMER1_BASE_ADDR) #define TIMER2_REGS (*(volatile struct timer_regs *) TIMER2_BASE_ADDR) #endif /* CNTL register bit definitions */ #define CNTL_START 0x01 #define CNTL_AUTO_RELOAD 0x02 #define CNTL_CLOCK_ENABLE 0x20 #endif /* include guard */