1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2008 by Maurus Cuelenaere
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
26 #include "backlight.h"
31 #include "timefuncs.h"
36 static void audiotest(void)
38 __i2s_internal_codec();
42 __aic_enable_loopback();
50 lcd_setfont(FONT_SYSFIXED
);
62 printf("Rockbox bootloader v0.000001");
63 printf("REG_EMC_SACR0: 0x%x", REG_EMC_SACR0
);
64 printf("REG_EMC_SACR1: 0x%x", REG_EMC_SACR1
);
65 printf("REG_EMC_SACR2: 0x%x", REG_EMC_SACR2
);
66 printf("REG_EMC_SACR3: 0x%x", REG_EMC_SACR3
);
67 printf("REG_EMC_SACR4: 0x%x", REG_EMC_SACR4
);
68 printf("REG_EMC_DMAR0: 0x%x", REG_EMC_DMAR0
);
69 unsigned int cpu_id
= read_c0_prid();
70 printf("CPU_ID: 0x%x", cpu_id
);
71 printf(" * Company ID: 0x%x", (cpu_id
>> 16) & 7);
72 printf(" * Processor ID: 0x%x", (cpu_id
>> 8) & 7);
73 printf(" * Revision ID: 0x%x", cpu_id
& 7);
74 unsigned int config_data
= read_c0_config();
75 printf("C0_CONFIG: 0x%x", config_data
);
76 printf(" * Architecture type: 0x%x", (config_data
>> 13) & 3);
77 printf(" * Architecture revision: 0x%x", (config_data
>> 10) & 7);
78 printf(" * MMU type: 0x%x", (config_data
>> 7) & 7);
79 printf("C0_CONFIG1: 0x%x", read_c0_config1());
80 if(read_c0_config1() & (1 << 0)) printf(" * FP available");
81 if(read_c0_config1() & (1 << 1)) printf(" * EJTAG available");
82 if(read_c0_config1() & (1 << 2)) printf(" * MIPS-16 available");
83 if(read_c0_config1() & (1 << 4)) printf(" * Performace counters available");
84 if(read_c0_config1() & (1 << 5)) printf(" * MDMX available");
85 if(read_c0_config1() & (1 << 6)) printf(" * CP2 available");
86 printf("C0_STATUS: 0x%x", read_c0_status());
89 unsigned char testdata
[4096];
94 memset(testdata
, 0, 4096);
96 jz_nand_read(0, j
, &testdata
);
99 for(i
=0; i
<768; i
+=16)
101 snprintf(msg
, 30, "%02x%02x%02x%02x%02x%02x%02x%02x %02x%02x%02x%02x%02x%02x%02x%02x",
102 testdata
[i
], testdata
[i
+1], testdata
[i
+2], testdata
[i
+3], testdata
[i
+4], testdata
[i
+5], testdata
[i
+6], testdata
[i
+7],
103 testdata
[i
+8], testdata
[i
+9], testdata
[i
+10], testdata
[i
+11], testdata
[i
+12], testdata
[i
+13], testdata
[i
+14], testdata
[i
+15]
107 while(!((btn
= button_read_device(&touch
)) & (BUTTON_VOL_UP
|BUTTON_VOL_DOWN
)));
108 if(btn
& BUTTON_VOL_UP
)
110 if(btn
& BUTTON_VOL_DOWN
)
120 btn
= button_get(false);
121 touch
= button_get_data();
123 btn
= button_read_device(&touch
);
126 btn
= button_read_device();
128 #define KNOP(x,y) lcd_set_foreground(LCD_BLACK); \
130 lcd_set_foreground(LCD_WHITE); \
131 lcd_putsxy(LCD_WIDTH-SYSFONT_WIDTH*strlen(#x), SYSFONT_HEIGHT*y, #x);
132 KNOP(BUTTON_VOL_UP
, 0);
133 KNOP(BUTTON_VOL_DOWN
, 1);
134 KNOP(BUTTON_MENU
, 2);
135 KNOP(BUTTON_POWER
, 3);
136 lcd_set_foreground(LCD_WHITE
);
139 printf("BUTTON_HOLD");
142 if(btn
& BUTTON_POWER
)
147 if(btn
& BUTTON_TOUCH
)
149 lcd_set_foreground(LCD_RGBPACK(touch
& 0xFF, (touch
>> 8)&0xFF, (touch
>> 16)&0xFF));
150 lcd_fillrect((touch
>>16)-10, (touch
&0xFFFF)-5, 10, 10);
152 lcd_set_foreground(LCD_WHITE
);
155 snprintf(datetime
, 30, "%02d/%02d/%04d %02d:%02d:%02d", get_time()->tm_mday
, get_time()->tm_mon
, get_time()->tm_year
,
156 get_time()->tm_hour
, get_time()->tm_min
, get_time()->tm_sec
);
157 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
, datetime
);
158 snprintf(datetime
, 30, "%d", current_tick
);
159 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
*2, datetime
);
160 snprintf(datetime
, 30, "X: %03d Y: %03d", touch
>>16, touch
& 0xFFFF);
161 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
*3, datetime
);
162 snprintf(datetime
, 30, "PIN3: 0x%08x", REG_GPIO_PXPIN(3));
163 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
*4, datetime
);
164 snprintf(datetime
, 30, "PIN2: 0x%08x", REG_GPIO_PXPIN(2));
165 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
*5, datetime
);
166 snprintf(datetime
, 30, "PIN1: 0x%08x", REG_GPIO_PXPIN(1));
167 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
*6, datetime
);
168 snprintf(datetime
, 30, "PIN0: 0x%08x", REG_GPIO_PXPIN(0));
169 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
*7, datetime
);
170 snprintf(datetime
, 30, "BadVAddr: 0x%08x", read_c0_badvaddr());
171 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
*8, datetime
);
172 snprintf(datetime
, 30, "ICSR: 0x%08x", REG_INTC_ISR
);
173 lcd_putsxy(LCD_WIDTH
-SYSFONT_WIDTH
*strlen(datetime
), LCD_HEIGHT
-SYSFONT_HEIGHT
*9, datetime
);