summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/debug-imx233.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233/debug-imx233.c')
-rw-r--r--firmware/target/arm/imx233/debug-imx233.c65
1 files changed, 62 insertions, 3 deletions
diff --git a/firmware/target/arm/imx233/debug-imx233.c b/firmware/target/arm/imx233/debug-imx233.c
index 89365cb148..68865efc8d 100644
--- a/firmware/target/arm/imx233/debug-imx233.c
+++ b/firmware/target/arm/imx233/debug-imx233.c
@@ -31,6 +31,7 @@
31#include "clkctrl-imx233.h" 31#include "clkctrl-imx233.h"
32#include "powermgmt-imx233.h" 32#include "powermgmt-imx233.h"
33#include "rtc-imx233.h" 33#include "rtc-imx233.h"
34#include "dualboot-imx233.h"
34#include "dcp-imx233.h" 35#include "dcp-imx233.h"
35#include "pinctrl-imx233.h" 36#include "pinctrl-imx233.h"
36#include "ocotp-imx233.h" 37#include "ocotp-imx233.h"
@@ -535,10 +536,11 @@ bool dbg_hw_info_rtc(void)
535 lcd_clear_display(); 536 lcd_clear_display();
536 struct imx233_rtc_info_t info = imx233_rtc_get_info(); 537 struct imx233_rtc_info_t info = imx233_rtc_get_info();
537 538
538 lcd_putsf(0, 0, "seconds: %lu", info.seconds); 539 int line = 0;
539 lcd_putsf(0, 1, "alarm: %lu", info.alarm); 540 lcd_putsf(0, line++, "seconds: %lu", info.seconds);
541 lcd_putsf(0, line++, "alarm: %lu", info.alarm);
540 for(int i = 0; i < 6; i++) 542 for(int i = 0; i < 6; i++)
541 lcd_putsf(0, i + 2, "persist%d: 0x%lx", i, info.persistent[i]); 543 lcd_putsf(0, line++, "persist%d: 0x%lx", i, info.persistent[i]);
542 544
543 lcd_update(); 545 lcd_update();
544 yield(); 546 yield();
@@ -1255,6 +1257,60 @@ bool dbg_hw_info_sdmmc(void)
1255 } 1257 }
1256} 1258}
1257 1259
1260#ifdef HAVE_DUALBOOT_STUB
1261bool dbg_hw_info_dualboot(void)
1262{
1263 lcd_setfont(FONT_SYSFIXED);
1264
1265 while(1)
1266 {
1267 int button = my_get_action(HZ / 10);
1268 switch(button)
1269 {
1270 case ACT_NEXT:
1271 case ACT_PREV:
1272 {
1273 /* only if boot mode is supported... */
1274 if(!imx233_dualboot_get_field(DUALBOOT_CAP_BOOT))
1275 break;
1276 /* change it */
1277 unsigned boot = imx233_dualboot_get_field(DUALBOOT_BOOT);
1278 if(boot == IMX233_BOOT_NORMAL)
1279 boot = IMX233_BOOT_OF;
1280 else if(boot == IMX233_BOOT_OF)
1281 boot = IMX233_BOOT_UPDATER;
1282 else
1283 boot = IMX233_BOOT_NORMAL;
1284 imx233_dualboot_set_field(DUALBOOT_BOOT, boot);
1285 break;
1286 }
1287 case ACT_OK:
1288 lcd_setfont(FONT_UI);
1289 return true;
1290 case ACT_CANCEL:
1291 lcd_setfont(FONT_UI);
1292 return false;
1293 }
1294
1295 lcd_clear_display();
1296 int line = 0;
1297 unsigned cap_boot = imx233_dualboot_get_field(DUALBOOT_CAP_BOOT);
1298 lcd_putsf(0, line++, "cap_boot: %s", cap_boot ? "yes" : "no");
1299 if(cap_boot)
1300 {
1301 unsigned boot = imx233_dualboot_get_field(DUALBOOT_BOOT);
1302 lcd_putsf(0, line++, "boot: %s",
1303 boot == IMX233_BOOT_NORMAL ? "normal"
1304 : boot == IMX233_BOOT_OF ? "of"
1305 : boot == IMX233_BOOT_UPDATER ? "updater" : "?");
1306 }
1307
1308 lcd_update();
1309 yield();
1310 }
1311}
1312#endif
1313
1258static struct 1314static struct
1259{ 1315{
1260 const char *name; 1316 const char *name;
@@ -1281,6 +1337,9 @@ static struct
1281 {"timrot", dbg_hw_info_timrot}, 1337 {"timrot", dbg_hw_info_timrot},
1282 {"button", dbg_hw_info_button}, 1338 {"button", dbg_hw_info_button},
1283 {"sdmmc", dbg_hw_info_sdmmc}, 1339 {"sdmmc", dbg_hw_info_sdmmc},
1340#ifdef HAVE_DUALBOOT_STUB
1341 {"dualboot", dbg_hw_info_dualboot},
1342#endif
1284 {"target", dbg_hw_target_info}, 1343 {"target", dbg_hw_target_info},
1285}; 1344};
1286 1345