From 975261f003ab7c8bc917a932f5c6fc657ea78143 Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Wed, 16 Jul 2008 15:25:35 +0000 Subject: Fix the LCD bug! git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18071 a1c6a512-1295-4272-9138-f99709370657 --- bootloader/ondavx747.c | 59 ++++++++-------------- firmware/export/r61509.h | 10 ++-- .../target/mips/ingenic_jz47xx/ata-nand-jz4740.c | 24 +++++++++ firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c | 13 +++-- .../ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c | 13 ++--- .../target/mips/ingenic_jz47xx/system-jz4740.c | 2 +- 6 files changed, 71 insertions(+), 50 deletions(-) diff --git a/bootloader/ondavx747.c b/bootloader/ondavx747.c index 5333ac3b1f..96c4c6cfb7 100644 --- a/bootloader/ondavx747.c +++ b/bootloader/ondavx747.c @@ -32,31 +32,7 @@ #include "button.h" #include "timefuncs.h" #include "rtc.h" - -int _line = 1; -char _printfbuf[256]; - -/* This is all rather hacky, but it works... */ -void _printf(const char *format, ...) -{ - int len; - unsigned char *ptr; - va_list ap; - va_start(ap, format); - - ptr = _printfbuf; - len = vsnprintf(ptr, sizeof(_printfbuf), format, ap); - va_end(ap); - - int i; - for(i=0; i<1; i++) - { - lcd_puts(0, _line++, ptr); - lcd_update(); - } - if(_line >= LCD_HEIGHT/SYSFONT_HEIGHT) - _line = 1; -} +#include "common.h" static void audiotest(void) { @@ -101,7 +77,7 @@ static void jz_nand_scan_id(void) dwNandID = ((cData[0] & 0xff) << 8) | (cData[1] & 0xff); - _printf("NAND Flash 1: 0x%x is found [0x%x 0x%x 0x%x]", dwNandID, cData[2], cData[3], cData[4]); + printf("NAND Flash 1: 0x%x is found [0x%x 0x%x 0x%x]", dwNandID, cData[2], cData[3], cData[4]); JZ_NAND_SELECT(2); REG_NAND_CMD = NAND_CMD_READ_ID1; @@ -115,7 +91,7 @@ static void jz_nand_scan_id(void) dwNandID = ((cData[0] & 0xff) << 8) | (cData[1] & 0xff); - _printf("NAND Flash 2: 0x%x is found [0x%x 0x%x 0x%x]", dwNandID, cData[2], cData[3], cData[4]); + printf("NAND Flash 2: 0x%x is found [0x%x 0x%x 0x%x]", dwNandID, cData[2], cData[3], cData[4]); JZ_NAND_SELECT(3); @@ -130,7 +106,7 @@ static void jz_nand_scan_id(void) dwNandID = ((cData[0] & 0xff) << 8) | (cData[1] & 0xff); - _printf("NAND Flash 3: 0x%x is found [0x%x 0x%x 0x%x]", dwNandID, cData[2], cData[3], cData[4]); + printf("NAND Flash 3: 0x%x is found [0x%x 0x%x 0x%x]", dwNandID, cData[2], cData[3], cData[4]); JZ_NAND_SELECT(4); REG_NAND_CMD = NAND_CMD_READ_ID1; @@ -144,7 +120,7 @@ static void jz_nand_scan_id(void) dwNandID = ((cData[0] & 0xff) << 8) | (cData[1] & 0xff); - _printf("NAND Flash 4: 0x%x is found [0x%x 0x%x 0x%x]", dwNandID, cData[2], cData[3], cData[4]); + printf("NAND Flash 4: 0x%x is found [0x%x 0x%x 0x%x]", dwNandID, cData[2], cData[3], cData[4]); } static void jz_store_icache(void) @@ -190,24 +166,33 @@ int main(void) int touch, btn; lcd_clear_display(); - _printf("Rockbox bootloader v0.000001"); + printf("Rockbox bootloader v0.000001"); jz_nand_scan_id(); - _printf("Test"); + printf("REG_EMC_SACR0: 0x%x", REG_EMC_SACR0 >> EMC_SACR_BASE_BIT); + printf("REG_EMC_SACR1: 0x%x", REG_EMC_SACR1 >> EMC_SACR_BASE_BIT); + printf("REG_EMC_SACR2: 0x%x", REG_EMC_SACR2 >> EMC_SACR_BASE_BIT); + printf("REG_EMC_SACR3: 0x%x", REG_EMC_SACR3 >> EMC_SACR_BASE_BIT); + printf("REG_EMC_SACR4: 0x%x", REG_EMC_SACR4 >> EMC_SACR_BASE_BIT); + printf("REG_EMC_DMAR0: 0x%x", REG_EMC_DMAR0 >> EMC_DMAR_BASE_BIT); while(1) { btn = button_read_device(&touch); if(btn & BUTTON_VOL_DOWN) - _printf("BUTTON_VOL_DOWN"); + printf("BUTTON_VOL_DOWN"); if(btn & BUTTON_MENU) - _printf("BUTTON_MENU"); + printf("BUTTON_MENU"); if(btn & BUTTON_VOL_UP) - _printf("BUTTON_VOL_UP"); + printf("BUTTON_VOL_UP"); if(btn & BUTTON_POWER) - _printf("BUTTON_POWER"); + printf("BUTTON_POWER"); if(button_hold()) - _printf("BUTTON_HOLD"); + printf("BUTTON_HOLD"); if(touch != 0) - _printf("X: %d Y: %d", touch>>16, touch&0xFFFF); + { + lcd_set_foreground(LCD_RGBPACK(touch & 0xFF, (touch >> 8)&0xFF, (touch >> 16)&0xFF)); + lcd_fillrect((touch>>16)-10, (touch&0xFFFF)-10, 20, 20); + lcd_update(); + } /*_printf("%02d/%02d/%04d %02d:%02d:%02d", get_time()->tm_mday, get_time()->tm_mon, get_time()->tm_year, get_time()->tm_hour, get_time()->tm_min, get_time()->tm_sec);*/ } diff --git a/firmware/export/r61509.h b/firmware/export/r61509.h index 519ad3ec86..53f0440742 100644 --- a/firmware/export/r61509.h +++ b/firmware/export/r61509.h @@ -29,6 +29,7 @@ #define REG_DRIVER_OUTPUT 0x001 #define REG_LCD_DR_WAVE_CTRL 0x002 #define REG_ENTRY_MODE 0x003 +#define REG_OUTL_SHARP_CTRL 0x006 #define REG_DISP_CTRL1 0x007 #define REG_DISP_CTRL2 0x008 #define REG_DISP_CTRL3 0x009 @@ -106,6 +107,12 @@ #define ENTRY_MODE_AM (1 << 3) #define ENTRY_MODE_EPF(n) (n & 3) +#define OUTL_SHARP_CTRL_EGMODE (1 << 15) +#define OUTL_SHARP_CTRL_AVST(n) ((n & 7) << 7) +#define OUTL_SHARP_CTRL_ADST(n) ((n & 7) << 4) +#define OUTL_SHARP_CTRL_DTHU(n) ((n & 3) << 2) +#define OUTL_SHARP_CTRL_DTHL(n) (n & 3) + #define DISP_CTRL1_PTDE(n) ((n & 4) << 12) #define DISP_CTRL1_BASEE (1 << 8) #define DISP_CTRL1_VON (1 << 6) @@ -123,7 +130,4 @@ #define SOFT_RESET(n) (n << 0) -#define ENDIAN_CTRL_BIG -#define ENDIAN_CTRL_LITTLE - #endif /* __R61509_H */ diff --git a/firmware/target/mips/ingenic_jz47xx/ata-nand-jz4740.c b/firmware/target/mips/ingenic_jz47xx/ata-nand-jz4740.c index ad053c7deb..00165b2d2d 100644 --- a/firmware/target/mips/ingenic_jz47xx/ata-nand-jz4740.c +++ b/firmware/target/mips/ingenic_jz47xx/ata-nand-jz4740.c @@ -66,3 +66,27 @@ int ata_write_sectors(IF_MV2(int drive,) unsigned long start, int count, const v (void)buf; return 0; } + +static int jz_device_ready(void) +{ + int ready, wait = 10; + while (wait--); + ready = __gpio_get_pin(32*2+30); + return ready; +} + +int ata_init(void) +{ + /* + * EMC setup + */ + + /* Set NFE bit */ + REG_EMC_NFCSR |= EMC_NFCSR_NFE1; + + /* Read/Write timings */ + REG_EMC_SMCR1 = (EMC_SMCR_BL_4 | EMC_SMCR_BW_8BIT | 4 << EMC_SMCR_TAS_BIT + | 4 << EMC_SMCR_TAH_BIT | 4 << EMC_SMCR_TBP_BIT | 4 << EMC_SMCR_TAW_BIT + | 4 << EMC_SMCR_STRV_BIT); + return 0; +} diff --git a/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c b/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c index 429178aeee..907351c64e 100644 --- a/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c +++ b/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c @@ -49,6 +49,13 @@ bool lcd_enabled(void) return _lcd_on; } +void lcd_copy_buffer_rect(fb_data* dest, fb_data* src, int width, int height) +{ + int i; + for(i=0; i 0x1ff ) - { - //printf("CPM_LPCDR too large, set it to 0x1ff\n"); - val = 0x1ff; - } + val = 0x1ff; /* CPM_LPCDR is too large, set it to 0x1ff */ __cpm_set_pixdiv(val); __cpm_start_lcd(); } diff --git a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c index ee50520243..2dca4619c0 100644 --- a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c +++ b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c @@ -26,7 +26,7 @@ void intr_handler(void) { - _printf("Interrupt!"); + //printf("Interrupt!"); return; } -- cgit v1.2.3