altos: Clean up AO_ROMCONFIG bits
[fw/altos] / src / stmf0 / ao_arch.h
index 6ee71ef9caeec029f4cdd2042c62e817fc50ce0b..22e706b2a975bca6cdb24b210dfbfc56ac52bf32 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
@@ -25,7 +26,9 @@
  * STM32F0 definitions and code fragments for AltOS
  */
 
+#ifndef AO_STACK_SIZE
 #define AO_STACK_SIZE  512
+#endif
 
 #define AO_LED_TYPE    uint16_t
 
 
 #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);
-extern void ao_avr_stdio_init(void);
-
-
 /*
  * ao_romconfig.c
  */
 
-#define AO_ROMCONFIG_VERSION   2
-
-#define AO_ROMCONFIG_SYMBOL(a) __attribute__((section(".romconfig"))) const
+#define AO_ROMCONFIG_SYMBOL __attribute__((section(".romconfig"))) const
 
 extern const uint16_t ao_romconfig_version;
 extern const uint16_t ao_romconfig_check;
@@ -91,13 +77,18 @@ extern const uint32_t ao_radio_cal;
  * For the stm32f042, we want to use the USB-based HSI48 clock
  */
 
-#if AO_HSI48
+#ifndef AO_SYSCLK
+#if AO_HSI
+#define AO_SYSCLK      STM_HSI_FREQ
+#endif
 
+#if AO_HSI48
 #define AO_SYSCLK      48000000
-#define AO_HCLK                (AO_SYSCLK / AO_AHB_PRESCALER)
-
+#endif
 #endif
 
+#define AO_HCLK                (AO_SYSCLK / AO_AHB_PRESCALER)
+
 #if AO_HSE || AO_HSI
 
 #if AO_HSE
@@ -112,26 +103,20 @@ extern const uint32_t ao_radio_cal;
 #endif
 
 #define AO_HCLK                (AO_SYSCLK / AO_AHB_PRESCALER)
-#define AO_PCLK1       (AO_HCLK / AO_APB1_PRESCALER)
-#define AO_PCLK2       (AO_HCLK / AO_APB2_PRESCALER)
+#define AO_PCLK                (AO_HCLK / AO_APB_PRESCALER)
 #define AO_SYSTICK     (AO_HCLK)
+#define AO_PANIC_DELAY_SCALE  (AO_SYSCLK / 12000000)
 
-#if AO_APB1_PRESCALER == 1
-#define AO_TIM23467_CLK                AO_PCLK1
-#else
-#define AO_TIM23467_CLK                (2 * AO_PCLK1)
-#endif
-
-#if AO_APB2_PRESCALER == 1
-#define AO_TIM91011_CLK                AO_PCLK2
+#if AO_APB_PRESCALER == 1
+#define AO_TIM_CLK             AO_PCLK
 #else
-#define AO_TIM91011_CLK                (2 * AO_PCLK2)
+#define AO_TIM_CLK             (2 * AO_PCLK)
 #endif
 
-#define AO_STM_NVIC_HIGH_PRIORITY      4
-#define AO_STM_NVIC_CLOCK_PRIORITY     6
-#define AO_STM_NVIC_MED_PRIORITY       8
-#define AO_STM_NVIC_LOW_PRIORITY       10
+#define AO_STM_NVIC_HIGH_PRIORITY      (0 << 6)
+#define AO_STM_NVIC_CLOCK_PRIORITY     (1 << 6)
+#define AO_STM_NVIC_MED_PRIORITY       (2 << 6)
+#define AO_STM_NVIC_LOW_PRIORITY       (3 << 6)
 
 void ao_lcd_stm_init(void);
 
@@ -147,10 +132,17 @@ ao_adc_init();
 /* ADC maximum reported value */
 #define AO_ADC_MAX                     4095
 
+#ifndef HAS_BOOT_LOADER
+#define HAS_BOOT_LOADER                        1
+#endif
+
+#if HAS_BOOT_LOADER
 #define AO_BOOT_APPLICATION_BASE       ((uint32_t *) 0x08001000)
+#ifndef AO_BOOT_APPLICATION_BOUND
 #define AO_BOOT_APPLICATION_BOUND      ((uint32_t *) (0x08000000 + stm_flash_size()))
+#endif
 #define AO_BOOT_LOADER_BASE            ((uint32_t *) 0x08000000)
-#define HAS_BOOT_LOADER                        1
+#endif
 
 #endif /* _AO_ARCH_H_ */