first cut at turnon scripts for EasyTimer v2
[fw/altos] / src / lpc / ao_arch.h
index a8d3cfc4435a0d03c77501e75ac0000684b1f5e0..05bb97d9cb3a8cbf9c7fe314f512a095fede33f5 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * LPC11U14 definitions and code fragments for AltOS
  */
 
-#define AO_STACK_SIZE  320
-
-#define AO_LED_TYPE    uint16_t
+#ifndef AO_STACK_SIZE
+#define AO_STACK_SIZE  512
+#endif
 
+#define AO_GPIO_TYPE   uint8_t
 #define AO_PORT_TYPE   uint32_t
 
-#ifndef AO_TICK_TYPE
-#define AO_TICK_TYPE   uint16_t
-#define AO_TICK_SIGNED int16_t
-#endif
+#define AO_LED_TYPE    AO_PORT_TYPE
 
 /* Various definitions to make GCC look more like SDCC */
 
 #define ao_arch_naked_declare  __attribute__((naked))
 #define ao_arch_naked_define
-#define __pdata
-#define __data
-#define __xdata
-#define __code const
-#define __reentrant
 #define __interrupt(n)
 #define __at(n)
 
 
 #define ao_arch_interrupt(n)   /* nothing */
 
-#undef putchar
-#undef getchar
-#define putchar(c)     ao_putchar(c)
-#define getchar                ao_getchar
-
-extern void putchar(char c);
-extern char getchar(void);
-
 /*
  * ao_romconfig.c
  */
 
-#define AO_ROMCONFIG_VERSION   2
-
-#define AO_ROMCONFIG_SYMBOL(a) __attribute__((section(".romconfig"))) const
-
-extern const uint16_t ao_romconfig_version;
-extern const uint16_t ao_romconfig_check;
-extern const uint16_t ao_serial_number;
-extern const uint32_t ao_radio_cal;
-
-#define ao_arch_task_members\
-       uint32_t *sp;                   /* saved stack pointer */
+#define AO_ROMCONFIG_SYMBOL __attribute__((section(".init.1"))) const
+#define AO_USBCONFIG_SYMBOL __attribute__((section(".init.2"))) const
 
 #define ao_arch_block_interrupts()     asm("cpsid i")
 #define ao_arch_release_interrupts()   asm("cpsie i")
@@ -127,18 +104,37 @@ ao_serial_init(void);
 
 /* SPI definitions */
 
-#define AO_SPI_SPEED_12MHz             4
-#define AO_SPI_SPEED_6MHz              8
-#define AO_SPI_SPEED_4MHz              12
-#define AO_SPI_SPEED_2MHz              24
-#define AO_SPI_SPEED_1MHz              48
-#define AO_SPI_SPEED_500kHz            96
-#define AO_SPI_SPEED_250kHz            192
-
-#define AO_SPI_SPEED_FAST      AO_SPI_SPEED_12MHz
+#define _AO_SPI_SPEED_12MHz            4
+#define _AO_SPI_SPEED_8MHz             6
+#define _AO_SPI_SPEED_6MHz             8
+#define _AO_SPI_SPEED_4MHz             12
+#define _AO_SPI_SPEED_2MHz             24
+#define _AO_SPI_SPEED_1MHz             48
+#define _AO_SPI_SPEED_500kHz           96
+#define _AO_SPI_SPEED_250kHz           192
+#define _AO_SPI_SPEED_125kHz           384
+#define _AO_SPI_SPEED_62500Hz          768
+
+static inline uint32_t
+ao_spi_speed(int index, uint32_t hz)
+{
+       (void) index;
+       if (hz >= 4000000) return _AO_SPI_SPEED_4MHz;
+       if (hz >= 2000000) return _AO_SPI_SPEED_2MHz;
+       if (hz >= 1000000) return _AO_SPI_SPEED_1MHz;
+       if (hz >=  500000) return _AO_SPI_SPEED_500kHz;
+       if (hz >=  250000) return _AO_SPI_SPEED_250kHz;
+       if (hz >=  125000) return _AO_SPI_SPEED_125kHz;
+       return _AO_SPI_SPEED_62500Hz;
+}
 
 #define AO_BOOT_APPLICATION_BASE       ((uint32_t *) 0x00001000)
+#define AO_BOOT_APPLICATION_BOUND      ((uint32_t *) (0x00000000 + 32 * 1024))
 #define AO_BOOT_LOADER_BASE            ((uint32_t *) 0x00000000)
 #define HAS_BOOT_LOADER                        1
 
+/* ADC definitions */
+
+#define AO_ADC_MAX     32767
+
 #endif /* _AO_ARCH_H_ */