Various Nano2g changes - enable the rest of crt0.S (including clock setup) and make the nano2g bootloader do something useful (displaying gpio ports). Also add checks for the fifo-full condition in the LCD driver - required after enabling all the crt0.S inits

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21948 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2009-07-18 11:31:19 +00:00
parent d58e358477
commit 386503502b
5 changed files with 59 additions and 4 deletions

View file

@ -82,7 +82,6 @@ newstart2:
// orr r0, r0, r2
// str r0, [r1] // switch backlight on
#if CONFIG_CPU==S5L8700
ldr r1, =0x3c500000 // CLKCON
ldr r0, =0x00800080
str r0, [r1]
@ -90,7 +89,11 @@ newstart2:
mov r0, #0
str r0, [r1]
ldr r1, =0x3c500004 // PLL0PMS
#ifdef IPOD_NANO2G
ldr r0, =0x21200
#else
ldr r0, =0x1ad200
#endif
str r0, [r1]
ldr r1, =0x3c500014 // PLL0LCNT
ldr r0, =8100
@ -226,6 +229,7 @@ newstart2:
mcr 15, 0, r0, c1, c0, 0 // enable protection unit
#if CONFIG_CPU==S5L8700
/* Copy interrupt vectors to iram */
ldr r2, =_intvectstart
ldr r3, =_intvectend

View file

@ -60,21 +60,28 @@ static int xoffset; /* needed for flip */
static inline void s5l_lcd_write_cmd_data(int cmd, int data)
{
while (LCD_STATUS & 0x10);
LCD_WCMD = cmd >> 8;
while (LCD_STATUS & 0x10);
LCD_WCMD = cmd & 0xff;
while (LCD_STATUS & 0x10);
LCD_WDATA = data >> 8;
while (LCD_STATUS & 0x10);
LCD_WDATA = data & 0xff;
}
static inline void s5l_lcd_write_cmd(unsigned short cmd)
{
while (LCD_STATUS & 0x10);
LCD_WCMD = cmd;
}
static inline void s5l_lcd_write_data(int data)
{
while (LCD_STATUS & 0x10);
LCD_WDATA = data >> 8;
while (LCD_STATUS & 0x10);
LCD_WDATA = data & 0xff;
}
@ -185,7 +192,9 @@ void lcd_update(void)
for (x = 0; x < LCD_WIDTH; x++) {
pixel = *(p++);
while (LCD_STATUS & 0x10);
LCD_WDATA = (pixel & 0xff00) >> 8;
while (LCD_STATUS & 0x10);
LCD_WDATA = pixel & 0xff;
}
}