mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-11 06:05:21 -05:00
M:Robe 500: Start adding some composite output stuff based on OF. Initialize LCD pins with pin-setup function.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23986 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ac3fe260f1
commit
26fa2d81f6
1 changed files with 67 additions and 21 deletions
|
|
@ -76,7 +76,7 @@ void lcd_sleep()
|
||||||
IO_VID_ENC_VMOD &= ~(0x01);
|
IO_VID_ENC_VMOD &= ~(0x01);
|
||||||
|
|
||||||
/* Disabling the LCD saves ~50mA */
|
/* Disabling the LCD saves ~50mA */
|
||||||
IO_GIO_BITCLR2=1<<4;
|
IO_GIO_BITCLR2=1<<4; /* pin 36 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -103,6 +103,30 @@ void lcd_awake(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void lcd_enable_composite(bool enable)
|
||||||
|
{
|
||||||
|
/* Pin 39 appears to be related to the composite output */
|
||||||
|
/* 39: output, non-inverted, no-irq, falling edge, no-chat, normal */
|
||||||
|
dm320_set_io(39, false, false, false, false, false, 0x00);
|
||||||
|
|
||||||
|
short vidtemp = (IO_VID_ENC_VMOD & 0x7E8);
|
||||||
|
|
||||||
|
if(enable)
|
||||||
|
{
|
||||||
|
IO_GIO_BITSET2 = 0x80;
|
||||||
|
vidtemp |= 0x0003;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IO_GIO_BITCLR2 = 0x80;
|
||||||
|
vidtemp |= 0x2015;
|
||||||
|
IO_VID_ENC_DCLKCTL = 0x0800;
|
||||||
|
IO_VID_ENC_DCLKPTN0 = 0x0001;
|
||||||
|
}
|
||||||
|
|
||||||
|
IO_VID_ENC_VMOD = vidtemp;
|
||||||
|
}
|
||||||
|
|
||||||
/* Note this is expecting a screen size of 480x640 or 240x320, other screen
|
/* Note this is expecting a screen size of 480x640 or 240x320, other screen
|
||||||
* sizes need to be considered for fudge factors
|
* sizes need to be considered for fudge factors
|
||||||
*/
|
*/
|
||||||
|
|
@ -115,14 +139,48 @@ void lcd_init_device(void)
|
||||||
{
|
{
|
||||||
unsigned int addr;
|
unsigned int addr;
|
||||||
|
|
||||||
/* Pin 32 controls the LED above the LCD */
|
/* LCD related pins:
|
||||||
IO_GIO_DIR2 &= ~(0x01); /* output */
|
* 32 - LED above LCD
|
||||||
IO_GIO_INV2 &= ~(0x01); /* non-inverted */
|
* 33 - ??
|
||||||
IO_GIO_FSEL2 &= ~(0x03<<14); /* normal pins */
|
* 34 - R2 for 18 bit output
|
||||||
|
* 35 - Resolution (MO?)
|
||||||
|
* 36 - LCD power (INI?)
|
||||||
|
* 37 - Backlight and LCD power
|
||||||
|
* 38 - B2 for 18 bit output
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Setup main LCD pins */
|
||||||
|
/* 32: output, non-inverted, no-irq, falling edge, no-chat, normal */
|
||||||
|
dm320_set_io(32, false, false, false, false, false, 0x00);
|
||||||
|
IO_GIO_BITCLR2 = 1; /* Turn the LED off */
|
||||||
|
|
||||||
/* Turn the LED off */
|
/* 33: output, non-inverted, no-irq, falling edge, no-chat, normal */
|
||||||
IO_GIO_BITCLR2 = 1;
|
dm320_set_io(33, false, false, false, false, false, 0x00);
|
||||||
|
/* To-do: figure out value from OF */
|
||||||
|
|
||||||
|
/* 34: output, non-inverted, no-irq, falling edge, no-chat, R2 */
|
||||||
|
dm320_set_io(34, false, false, false, false, false, 0x02);
|
||||||
|
|
||||||
|
/* 35: output, non-inverted, no-irq, falling edge, no-chat, normal */
|
||||||
|
dm320_set_io(35, false, false, false, false, false, 0x00);
|
||||||
|
#if LCD_NATIVE_HEIGHT > 320
|
||||||
|
IO_GIO_BITSET2 = 1<<3; /* Set LCD resolution to VGA */
|
||||||
|
#else
|
||||||
|
IO_GIO_BITCLR2 = 1<<3; /* Set LCD resolution to QVGA */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 36: output, non-inverted, no-irq, falling edge, no-chat, normal */
|
||||||
|
dm320_set_io(36, false, false, false, false, false, 0x00);
|
||||||
|
IO_GIO_BITSET2 = 0x10; /* LCD on */
|
||||||
|
|
||||||
|
/* 37: output, non-inverted, no-irq, falling edge, no-chat, normal */
|
||||||
|
dm320_set_io(37, false, false, false, false, false, 0x00);
|
||||||
|
IO_GIO_BITCLR2 = (1 << 5); /* output low (backlight/lcd on) */
|
||||||
|
|
||||||
|
/* 38: output, non-inverted, no-irq, falling edge, no-chat, B2 */
|
||||||
|
dm320_set_io(38, false, false, false, false, false, 0x02);
|
||||||
|
|
||||||
|
|
||||||
/* Clear the Frame */
|
/* Clear the Frame */
|
||||||
memset16(FRAME, 0x0000, LCD_WIDTH*LCD_HEIGHT);
|
memset16(FRAME, 0x0000, LCD_WIDTH*LCD_HEIGHT);
|
||||||
|
|
||||||
|
|
@ -158,8 +216,6 @@ void lcd_init_device(void)
|
||||||
IO_VID_ENC_ACCTL = 0x0000;
|
IO_VID_ENC_ACCTL = 0x0000;
|
||||||
IO_VID_ENC_PWMP = 0x0000;
|
IO_VID_ENC_PWMP = 0x0000;
|
||||||
IO_VID_ENC_PWMW = 0x0000;
|
IO_VID_ENC_PWMW = 0x0000;
|
||||||
|
|
||||||
IO_VID_ENC_DCLKPTN0 = 0x0001;
|
|
||||||
|
|
||||||
/* Setup the display */
|
/* Setup the display */
|
||||||
IO_OSD_MODE = 0x00ff;
|
IO_OSD_MODE = 0x00ff;
|
||||||
|
|
@ -230,19 +286,9 @@ void lcd_init_device(void)
|
||||||
IO_OSD_VIDWIN0XL = LCD_NATIVE_WIDTH;
|
IO_OSD_VIDWIN0XL = LCD_NATIVE_WIDTH;
|
||||||
IO_OSD_VIDWIN0YL = LCD_NATIVE_HEIGHT;
|
IO_OSD_VIDWIN0YL = LCD_NATIVE_HEIGHT;
|
||||||
|
|
||||||
/* Set pin 36 and 35 (LCD POWER and LCD RESOLUTION) to an output */
|
|
||||||
IO_GIO_DIR2 &= ~(3<<3);
|
|
||||||
|
|
||||||
#if LCD_NATIVE_HEIGHT > 320
|
|
||||||
/* Set LCD resolution to VGA */
|
|
||||||
IO_GIO_BITSET2 = 1<<3;
|
|
||||||
#else
|
|
||||||
/* Set LCD resolution to QVGA */
|
|
||||||
IO_GIO_BITCLR2 = 1<<3;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
IO_OSD_OSDWINMD0 |= 0x01;
|
IO_OSD_OSDWINMD0 |= 0x01;
|
||||||
IO_VID_ENC_VMOD |= 0x01;
|
|
||||||
|
lcd_enable_composite(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_LCD_MODES)
|
#if defined(HAVE_LCD_MODES)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue