config.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "common.h"
  2. #include "config.h"
  3. #include "console.h"
  4. #include "io.h"
  5. char __dram_bss config_buf[CONFIG_BUFSIZE];
  6. volatile bool do_update_config;
  7. bool _configured;
  8. void update_config(void)
  9. {
  10. do_update_config = false;
  11. memcpy(sysvar_val, config_buf, sizeof sysvar_val);
  12. memset(sysvar_isset, 1, sizeof sysvar_isset);
  13. con_puts("esp: Configuration received: ");
  14. con_puts(_configured ? "update\n" : "initial\n");
  15. #if 0
  16. con_printf("config_buf = %p\n", config_buf);
  17. for (enum sysvar_enum i = sysvar_null+1; i < sysvar_count; i++) {
  18. con_puts(sysvar_name[i]);
  19. con_putc('=');
  20. con_puts(notempty(getvar_tostr(i)));
  21. if (sysvar_types[i]->datasize)
  22. con_printf(" (%p)", sysvar_val[i].v_ptr);
  23. con_putc('\n');
  24. }
  25. #endif
  26. if (!_configured) {
  27. _configured = true;
  28. return;
  29. }
  30. uint32_t busctl = ABC_BUSCTL;
  31. if (getvar_bool(config_abc_reset)) {
  32. ABC_BUSCTL = busctl | ABC_BUSCTL_RESET;
  33. udelay(20000);
  34. }
  35. if (getvar_bool(config_fpga_reset)) {
  36. shutdown(SYS_RESET_SOFT);
  37. }
  38. ABC_BUSCTL = busctl;
  39. }