diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/imx233/debug-imx233.c | 88 |
1 files changed, 87 insertions, 1 deletions
diff --git a/firmware/target/arm/imx233/debug-imx233.c b/firmware/target/arm/imx233/debug-imx233.c index 0702fcbebc..c1701397b1 100644 --- a/firmware/target/arm/imx233/debug-imx233.c +++ b/firmware/target/arm/imx233/debug-imx233.c | |||
@@ -48,6 +48,46 @@ static struct | |||
48 | { "ssp2", APB_SSP(2) }, | 48 | { "ssp2", APB_SSP(2) }, |
49 | }; | 49 | }; |
50 | 50 | ||
51 | static struct | ||
52 | { | ||
53 | const char *name; | ||
54 | unsigned src; | ||
55 | } dbg_irqs[] = | ||
56 | { | ||
57 | { "ssp2_err", INT_SRC_SSP2_ERROR }, | ||
58 | { "vdd5v", INT_SRC_VDD5V }, | ||
59 | { "dac_dma", INT_SRC_DAC_DMA }, | ||
60 | { "dac_err", INT_SRC_DAC_ERROR }, | ||
61 | { "adc_dma", INT_SRC_ADC_DMA }, | ||
62 | { "adc_err", INT_SRC_ADC_ERROR }, | ||
63 | { "usbctrl", INT_SRC_USB_CTRL }, | ||
64 | { "ssp1_dma", INT_SRC_SSP1_DMA }, | ||
65 | { "ssp1_err", INT_SRC_SSP1_ERROR }, | ||
66 | { "gpio0", INT_SRC_GPIO0 }, | ||
67 | { "gpio1", INT_SRC_GPIO1 }, | ||
68 | { "gpio2", INT_SRC_GPIO2 }, | ||
69 | { "ssp2_dma", INT_SRC_SSP2_DMA }, | ||
70 | { "i2c_dma", INT_SRC_I2C_DMA }, | ||
71 | { "i2c_err", INT_SRC_I2C_ERROR }, | ||
72 | { "timer0", INT_SRC_TIMER(0) }, | ||
73 | { "timer1", INT_SRC_TIMER(1) }, | ||
74 | { "timer2", INT_SRC_TIMER(2) }, | ||
75 | { "timer3", INT_SRC_TIMER(3) }, | ||
76 | { "touch_det", INT_SRC_TOUCH_DETECT }, | ||
77 | { "lradc_ch0", INT_SRC_LRADC_CHx(0) }, | ||
78 | { "lradc_ch1", INT_SRC_LRADC_CHx(1) }, | ||
79 | { "lradc_ch2", INT_SRC_LRADC_CHx(2) }, | ||
80 | { "lradc_ch3", INT_SRC_LRADC_CHx(3) }, | ||
81 | { "lradc_ch4", INT_SRC_LRADC_CHx(4) }, | ||
82 | { "lradc_ch5", INT_SRC_LRADC_CHx(5) }, | ||
83 | { "lradc_ch6", INT_SRC_LRADC_CHx(6) }, | ||
84 | { "lradc_ch7", INT_SRC_LRADC_CHx(7) }, | ||
85 | { "lcdif_dma", INT_SRC_LCDIF_DMA }, | ||
86 | { "lcdif_err", INT_SRC_LCDIF_ERROR }, | ||
87 | { "rtc_1msec", INT_SRC_RTC_1MSEC }, | ||
88 | { "dcp", INT_SRC_DCP }, | ||
89 | }; | ||
90 | |||
51 | bool dbg_hw_info_dma(void) | 91 | bool dbg_hw_info_dma(void) |
52 | { | 92 | { |
53 | lcd_setfont(FONT_SYSFIXED); | 93 | lcd_setfont(FONT_SYSFIXED); |
@@ -395,6 +435,51 @@ bool dbg_hw_info_dcp(void) | |||
395 | } | 435 | } |
396 | } | 436 | } |
397 | 437 | ||
438 | bool dbg_hw_info_icoll(void) | ||
439 | { | ||
440 | lcd_setfont(FONT_SYSFIXED); | ||
441 | |||
442 | int first_irq = 0; | ||
443 | int dbg_irqs_count = sizeof(dbg_irqs) / sizeof(dbg_irqs[0]); | ||
444 | int line_count = lcd_getheight() / font_get(lcd_getfont())->height; | ||
445 | |||
446 | while(1) | ||
447 | { | ||
448 | int button = get_action(CONTEXT_STD, HZ / 10); | ||
449 | switch(button) | ||
450 | { | ||
451 | case ACTION_STD_NEXT: | ||
452 | first_irq++; | ||
453 | if(first_irq >= dbg_irqs_count) | ||
454 | first_irq = dbg_irqs_count - 1; | ||
455 | break; | ||
456 | case ACTION_STD_PREV: | ||
457 | first_irq--; | ||
458 | if(first_irq < 0) | ||
459 | first_irq = 0; | ||
460 | break; | ||
461 | case ACTION_STD_OK: | ||
462 | case ACTION_STD_MENU: | ||
463 | lcd_setfont(FONT_UI); | ||
464 | return true; | ||
465 | case ACTION_STD_CANCEL: | ||
466 | lcd_setfont(FONT_UI); | ||
467 | return false; | ||
468 | } | ||
469 | |||
470 | lcd_clear_display(); | ||
471 | for(int i = first_irq, j = 0; i < dbg_irqs_count && j < line_count; i++, j++) | ||
472 | { | ||
473 | struct imx233_icoll_irq_info_t info = imx233_icoll_get_irq_info(dbg_irqs[i].src); | ||
474 | lcd_putsf(0, j, "%s", dbg_irqs[i].name); | ||
475 | if(info.enabled) | ||
476 | lcd_putsf(10, j, "%d", info.freq); | ||
477 | } | ||
478 | lcd_update(); | ||
479 | yield(); | ||
480 | } | ||
481 | } | ||
482 | |||
398 | bool dbg_hw_info_pinctrl(void) | 483 | bool dbg_hw_info_pinctrl(void) |
399 | { | 484 | { |
400 | lcd_setfont(FONT_SYSFIXED); | 485 | lcd_setfont(FONT_SYSFIXED); |
@@ -456,7 +541,8 @@ bool dbg_hw_info(void) | |||
456 | { | 541 | { |
457 | return dbg_hw_info_clkctrl() && dbg_hw_info_dma() && dbg_hw_info_adc() && | 542 | return dbg_hw_info_clkctrl() && dbg_hw_info_dma() && dbg_hw_info_adc() && |
458 | dbg_hw_info_power() && dbg_hw_info_powermgmt() && dbg_hw_info_rtc() && | 543 | dbg_hw_info_power() && dbg_hw_info_powermgmt() && dbg_hw_info_rtc() && |
459 | dbg_hw_info_dcp() && dbg_hw_info_pinctrl() && dbg_hw_target_info(); | 544 | dbg_hw_info_dcp() && dbg_hw_info_pinctrl() && dbg_hw_info_icoll() && |
545 | dbg_hw_target_info(); | ||
460 | } | 546 | } |
461 | 547 | ||
462 | bool dbg_ports(void) | 548 | bool dbg_ports(void) |