summaryrefslogtreecommitdiffstats
path: root/bootloader
diff options
context:
space:
mode:
authorRob Purchase <shotofadds@rockbox.org>2008-01-14 22:04:48 +0000
committerRob Purchase <shotofadds@rockbox.org>2008-01-14 22:04:48 +0000
commit47ea030e2e68a51f91a2c2302b7ea4d3ee1a2a07 (patch)
tree0a48ce653e22ec9a2673474f718217d9659e0c6b /bootloader
parentb30ca8ca5ab6c8ea27b8fe1f5fb38ebad09b7e62 (diff)
downloadrockbox-47ea030e2e68a51f91a2c2302b7ea4d3ee1a2a07.tar.gz
rockbox-47ea030e2e68a51f91a2c2302b7ea4d3ee1a2a07.zip
Initial Cowon D2 commit:
* bootloader test program (basic LCD & button drivers, reads touchscreen) * work-in-progress stubs for main build git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16090 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'bootloader')
-rw-r--r--bootloader/SOURCES2
-rw-r--r--bootloader/telechips.c49
2 files changed, 49 insertions, 2 deletions
diff --git a/bootloader/SOURCES b/bootloader/SOURCES
index b8d8d3ca6b..2753debe77 100644
--- a/bootloader/SOURCES
+++ b/bootloader/SOURCES
@@ -23,7 +23,7 @@ iaudio_x5.c
iriver_h300.c
#elif defined(MROBE_500)
mrobe500.c
-#elif defined(CPU_TCC77X)
+#elif defined(CPU_TCC77X) || defined(CPU_TCC780X)
telechips.c
#else
main.c
diff --git a/bootloader/telechips.c b/bootloader/telechips.c
index 6093701044..a51b6775a1 100644
--- a/bootloader/telechips.c
+++ b/bootloader/telechips.c
@@ -41,6 +41,10 @@
#include "file.h"
#include "common.h"
+#if defined(COWON_D2)
+#include "i2c.h"
+#endif
+
char version[] = APPSVERSION;
extern int line;
@@ -50,6 +54,7 @@ void* main(void)
int button;
int power_count = 0;
int count = 0;
+ int i;
bool do_power_off = false;
system_init();
@@ -57,6 +62,10 @@ void* main(void)
lcd_init();
font_init();
+#if defined(COWON_D2)
+ lcd_enable(true);
+#endif
+
_backlight_on();
while(!do_power_off) {
@@ -68,7 +77,7 @@ void* main(void)
/* Power-off if POWER button has been held for a long time
This loop is currently running at about 100 iterations/second
*/
- if (button & BUTTON_POWERPLAY) {
+ if (button & POWEROFF_BUTTON) {
power_count++;
if (power_count > 200)
do_power_off = true;
@@ -78,6 +87,40 @@ void* main(void)
printf("Btn: 0x%08x",button);
+#if defined(COWON_D2)
+ printf("GPIOA: 0x%08x",GPIOA);
+ printf("GPIOB: 0x%08x",GPIOB);
+ printf("GPIOC: 0x%08x",GPIOC);
+ printf("GPIOD: 0x%08x",GPIOD);
+ printf("GPIOE: 0x%08x",GPIOE);
+
+ for (i = 0; i<4; i++)
+ {
+ printf("ADC%d: 0x%04x",i,adc_read(i));
+ }
+
+ /* TODO: Establish how the touchscreen driver is going to work.
+ Since it needs I2C read/write, it can't easily go on a tick task */
+ {
+ unsigned char buf[] = { 0x2f, (0xE<<1) | 1, /* ADC start for X+Y */
+ 0, 0, 0 };
+ int x,y;
+ i2c_write(0x10, buf, 2);
+ i2c_readmem(0x10, 0x2e, buf, 5);
+ x = (buf[2] << 2) | (buf[3] & 3);
+ y = (buf[4] << 2) | ((buf[3] & 0xC) >> 2);
+ printf("X: 0x%03x Y: 0x%03x",x,y);
+
+ buf[0] = 0x2f;
+ buf[1] = (0xF<<1) | 1; /* ADC start for P1+P2 */
+ i2c_write(0x10, buf, 2);
+ i2c_readmem(0x10, 0x2e, buf, 5);
+ x = (buf[2] << 2) | (buf[3] & 3);
+ y = (buf[4] << 2) | ((buf[3] & 0xC) >> 2);
+ printf("P1: 0x%03x P2: 0x%03x",x,y);
+ }
+#endif
+
count++;
printf("Count: %d",count);
}
@@ -86,6 +129,10 @@ void* main(void)
line = 0;
printf("POWER-OFF");
+#if defined(COWON_D2)
+ lcd_enable(false);
+#endif
+
/* TODO: Power-off */
while(1);