#include "common.h" #include "config.h" #include "console.h" #include "io.h" char __dram_bss config_buf[CONFIG_BUFSIZE]; volatile bool do_update_config; bool _configured; void update_config(void) { do_update_config = false; memcpy(sysvar_val, config_buf, sizeof sysvar_val); memset(sysvar_isset, 1, sizeof sysvar_isset); con_puts("esp: Configuration received: "); con_puts(_configured ? "update\n" : "initial\n"); #if 0 con_printf("config_buf = %p\n", config_buf); for (enum sysvar_enum i = sysvar_null+1; i < sysvar_count; i++) { con_puts(sysvar_name[i]); con_putc('='); con_puts(notempty(getvar_tostr(i))); if (sysvar_types[i]->datasize) con_printf(" (%p)", sysvar_val[i].v_ptr); con_putc('\n'); } #endif if (!_configured) { _configured = true; return; } uint32_t busctl = ABC_BUSCTL; if (getvar_bool(config_abc_reset)) { ABC_BUSCTL = busctl | ABC_BUSCTL_RESET; udelay(20000); } if (getvar_bool(config_fpga_reset)) { shutdown(SYS_RESET_SOFT); } ABC_BUSCTL = busctl; }