diff options
author | Leo C | 2015-05-18 10:06:49 +0200 |
---|---|---|
committer | Leo C | 2015-05-18 10:06:49 +0200 |
commit | 0c728c8de88d86247d2a75348e71f5af37838c28 (patch) | |
tree | a4aca5b87864e5974e08ca5151db1d15479c0dbe /avr/con-utils.c | |
parent | 7d60b20bb8d675edafdb14638fee5001987c78c1 (diff) | |
parent | c748023ede9e7d8bdbf81ce8c8be2a437607a9e4 (diff) | |
download | z180-stamp-0c728c8de88d86247d2a75348e71f5af37838c28.zip |
Merge branch 'test-fboot-support'
Diffstat (limited to 'avr/con-utils.c')
-rw-r--r-- | avr/con-utils.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/avr/con-utils.c b/avr/con-utils.c index f20dbfe..5ee1ff1 100644 --- a/avr/con-utils.c +++ b/avr/con-utils.c @@ -4,9 +4,11 @@ * SPDX-License-Identifier: GPL-2.0+ */ -#include <string.h> #include "common.h" +#include <string.h> +#include <avr/wdt.h> +#include "config.h" #include "serial.h" #include "background.h" #include "con-utils.h" @@ -26,6 +28,31 @@ int my_getchar(uint_fast8_t waitforchar) c = serial_getc(); } while ((c < 0) && waitforchar); +#ifdef CONFIG_SYS_FBOOTSIG + if (c < 0) + return c; + + static const FLASH unsigned char bootsig[] = {CONFIG_SYS_FBOOTSIG}; + static uint8_t pb; + unsigned char uc = c; + + + if (bootsig[pb] == 0) { + if (uc == 0xff) { + wdt_enable(WDTO_15MS); + for(;;) + ; + } else + pb = 0; + + } else { + if (bootsig[pb] == uc) + pb++; + else + pb = 0; + } +#endif + return c; } |