altos: Wait after configuring boot pin before testing it
authorKeith Packard <keithp@keithp.com>
Mon, 29 Apr 2013 06:06:24 +0000 (23:06 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 8 May 2013 04:30:27 +0000 (21:30 -0700)
Clearly the pin isn't quite ready just after it's been configured, so
hang around for a while (100 nops) to let things setting down before
testing the value of the pin. Makes booting a lot more reliable.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/stm/ao_boot_pin.c

index 03b0214f6bf492fed6be3639d42f945588e1a45b..1000a65a8c1e361728b9e024ae3d3f67f6357976 100644 (file)
@@ -31,6 +31,9 @@ ao_boot_check_pin(void)
        ao_enable_input(&AO_BOOT_APPLICATION_GPIO, AO_BOOT_APPLICATION_PIN,
                        AO_BOOT_APPLICATION_MODE);
 
        ao_enable_input(&AO_BOOT_APPLICATION_GPIO, AO_BOOT_APPLICATION_PIN,
                        AO_BOOT_APPLICATION_MODE);
 
+       for (v = 0; v < 100; v++)
+               ao_arch_nop();
+
        /* Read the value */
        v = stm_gpio_get(&AO_BOOT_APPLICATION_GPIO, AO_BOOT_APPLICATION_PIN);
 
        /* Read the value */
        v = stm_gpio_get(&AO_BOOT_APPLICATION_GPIO, AO_BOOT_APPLICATION_PIN);