altos/fox1ihu: Pull down radio control pin in flash loader
[fw/altos] / src / fox1ihu / flash-loader / ao_pins.h
index 3a942c9c3886ac79e47fc880114ed59f39639a91..19f29b0881822151e2dc4612807e5ed6958c7c1c 100644 (file)
 /* External crystal at 8MHz */
 #define AO_HSE         8000000
 
+#define AO_WATCHDOG_PORT       (&stm_gpiod)
+#define AO_WATCHDOG_PORT_BIT   (1 << STM_RCC_AHBENR_GPIODEN)
+#define AO_WATCHDOG_BIT                3
+#define AO_WATCHDOG_VALUE      0
+
+#define AO_RADIO_CONTROL_PORT          (&stm_gpioe)
+#define AO_RADIO_CONTROL_PORT_BIT      (1 << STM_RCC_AHBENR_GPIOEEN)
+#define AO_RADIO_CONTROL_BIT           12
+#define AO_RADIO_CONTROL_VALUE         1
+
+#define AO_FLASH_LOADER_INIT do {                                      \
+               stm_rcc.ahbenr |= AO_WATCHDOG_PORT_BIT | AO_RADIO_CONTROL_PORT_BIT; \
+                                                                       \
+               stm_gpio_set(AO_WATCHDOG_PORT, AO_WATCHDOG_BIT, AO_WATCHDOG_VALUE); \
+               stm_moder_set(AO_WATCHDOG_PORT, AO_WATCHDOG_BIT, STM_MODER_OUTPUT); \
+                                                                       \
+               stm_gpio_set(AO_RADIO_CONTROL_PORT, AO_RADIO_CONTROL_BIT, AO_RADIO_CONTROL_VALUE); \
+               stm_moder_set(AO_RADIO_CONTROL_PORT, AO_RADIO_CONTROL_BIT, STM_MODER_OUTPUT); \
+       } while (0)
+
+#define AO_TIMER_HOOK  do {                                            \
+               AO_WATCHDOG_PORT->odr ^= (1 << AO_WATCHDOG_BIT);        \
+       } while (0)
+
+#define HAS_TICK               1
 #include <ao_flash_stm_pins.h>
 
-/* Detatched signal, PD6 */
+/* Attached signal, PB8 */
 
 #define AO_BOOT_PIN            1
-#define AO_BOOT_APPLICATION_GPIO       stm_gpiod
-#define AO_BOOT_APPLICATION_PIN                6
+#define AO_BOOT_APPLICATION_GPIO       stm_gpiob
+#define AO_BOOT_APPLICATION_PIN                8
 #define AO_BOOT_APPLICATION_VALUE      0
 #define AO_BOOT_APPLICATION_MODE       0