summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2012-05-19 13:29:30 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2012-05-19 16:10:52 +0200
commitd57e1e048ebb6a9b2eb005ffda6f551023b54b10 (patch)
treebab3893e35fe53efce798c3d3c520fcedbef36aa
parent068443caaf101bccfa5ff44b44e6f98e6612b27f (diff)
downloadrockbox-d57e1e048ebb6a9b2eb005ffda6f551023b54b10.tar.gz
rockbox-d57e1e048ebb6a9b2eb005ffda6f551023b54b10.zip
imx233: add icoll debug screen
Change-Id: Icbd91c2ea24dcf61cc6a649122263a4354f09ff4
-rw-r--r--firmware/target/arm/imx233/debug-imx233.c88
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
51static 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
51bool dbg_hw_info_dma(void) 91bool 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
438bool 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
398bool dbg_hw_info_pinctrl(void) 483bool 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
462bool dbg_ports(void) 548bool dbg_ports(void)