1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2007 by Karl Kurbjun
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
18 ****************************************************************************/
32 #include "backlight.h"
33 #include "backlight-target.h"
39 #include "rbunicode.h"
42 #include "uart-target.h"
52 struct touch_calibration_point tl
, br
;
54 void touchpad_get_one_point(struct touch_calibration_point
*p
)
57 int start
= current_tick
;
58 while (TIME_AFTER(start
+(HZ
/3), current_tick
))
60 if (button_read_device()&BUTTON_TOUCHPAD
)
62 data
= button_get_last_touch();
64 p
->val_y
= data
&0xffff;
74 void touchpad_calibrate_screen(void)
77 printf("touch the center of the crosshairs to calibrate");
78 /* get the topleft value */
79 lcd_hline(MARGIN
-LEN
, MARGIN
+LEN
, MARGIN
);
80 lcd_vline(MARGIN
, MARGIN
-LEN
, MARGIN
+LEN
);
82 tl
.px_x
= MARGIN
; tl
.px_y
= MARGIN
;
83 touchpad_get_one_point(&tl
);
85 printf("touch the center of the crosshairs to calibrate");
86 /* get the topright value */
87 lcd_hline(LCD_WIDTH
-MARGIN
-LEN
, LCD_WIDTH
-MARGIN
+LEN
, LCD_HEIGHT
-MARGIN
);
88 lcd_vline(LCD_WIDTH
-MARGIN
, LCD_HEIGHT
-MARGIN
-LEN
, LCD_HEIGHT
-MARGIN
+LEN
);
90 br
.px_x
= LCD_WIDTH
-MARGIN
; br
.px_y
= LCD_HEIGHT
-MARGIN
;
91 touchpad_get_one_point(&br
);
94 printf("tl %d %d", tl
.val_x
, tl
.val_y
);
95 printf("br %d %d", br
.val_x
, br
.val_y
);
97 set_calibration_points(&tl
, &br
);
102 int button
=0, *address
=0x0;
103 use_calibration(false);
104 touchpad_calibrate_screen();
105 use_calibration(true);
108 struct tm
*t
= get_time();
109 printf("%d:%d:%d %d %d %d", t
->tm_hour
, t
->tm_min
, t
->tm_sec
, t
->tm_mday
, t
->tm_mon
, t
->tm_year
);
110 printf("time: %d", mktime(t
));
111 button
= button_read_device();
112 if (button
== BUTTON_POWER
)
115 IO_GIO_BITSET1
|=1<<10;
117 if(button
==BUTTON_RC_PLAY
)
119 else if (button
==BUTTON_RC_DOWN
)
121 else if (button
==BUTTON_RC_FF
)
123 else if (button
==BUTTON_RC_REW
)
125 if (button
&BUTTON_TOUCHPAD
)
127 unsigned int data
= button_get_last_touch();
128 printf("x: %d, y: %d", data
>>16, data
&0xffff);
138 unsigned char* loadbuffer
;
141 int(*kernel_entry
)(void);
155 lcd_setfont(FONT_SYSFIXED
);
157 /* Show debug messages if button is pressed */
158 // if(button_read_device())
161 printf("Rockbox boot loader");
162 printf("Version %s", APPSVERSION
);
166 /* Enter USB mode without USB thread */
169 const char msg
[] = "Bootloader USB mode";
171 lcd_putsxy( (LCD_WIDTH
- (SYSFONT_WIDTH
* strlen(msg
))) / 2,
172 (LCD_HEIGHT
- SYSFONT_HEIGHT
) / 2, msg
);
175 ide_power_enable(true);
182 ata_spin(); /* Prevent the drive from spinning down */
206 rc
= disk_mount_all();
212 printf("Loading firmware");
214 loadbuffer
= (unsigned char*) 0x00900000;
215 buffer_size
= (unsigned char*)0x04900000 - loadbuffer
;
217 rc
= load_firmware(loadbuffer
, BOOTFILE
, buffer_size
);
219 error(EBOOTFILE
, rc
);
223 kernel_entry
= (void*) loadbuffer
;