1
0
Fork 0
forked from len0rd/rockbox

Implement working lcd_off/lcd_on routine

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18070 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Maurus Cuelenaere 2008-07-16 13:56:41 +00:00
parent e3b2f4ffed
commit 753cac37b7
2 changed files with 60 additions and 9 deletions

View file

@ -106,9 +106,24 @@
#define ENTRY_MODE_AM (1 << 3)
#define ENTRY_MODE_EPF(n) (n & 3)
#define DISP_CTRL1_PTDE(n) ((n & 4) << 12)
#define DISP_CTRL1_BASEE (1 << 8)
#define DISP_CTRL1_VON (1 << 6)
#define DISP_CTRL1_GON (1 << 5)
#define DISP_CTRL1_DTE (1 << 4)
#define DISP_CTRL1_D(n) (n & 3)
#define PWR_CTRL1_SAP(n) ((n & 3) << 13)
#define PWR_CTRL1_SAPE (1 << 12)
#define PWR_CTRL1_BT(n) ((n & 7) << 8)
#define PWR_CTRL1_APE (1 << 7)
#define PWR_CTRL1_AP(n) ((n & 7) << 4)
#define PWR_CTRL1_DSTB (1 << 2)
#define PWR_CTRL1_SLP (1 << 1)
#define SOFT_RESET(n) (n << 0)
#define ENDIAN_CTRL_BIG
#define ENDIAN_CTRL_LITTLE
#endif /* __R61509_H */
#endif /* __R61509_H */

View file

@ -57,7 +57,7 @@ static void _display_pin_init(void)
#define SLCD_SET_DATA(x) WAIT_ON_SLCD; REG_SLCD_DATA = (x) | SLCD_DATA_RS_DATA;
#define SLCD_SET_COMMAND(x) WAIT_ON_SLCD; REG_SLCD_DATA = (x) | SLCD_DATA_RS_COMMAND;
#define SLCD_SEND_COMMAND(cmd,val) SLCD_SET_COMMAND(cmd); SLCD_SET_DATA(val);
static void _display_on(void)
static void _display_init(void)
{
int i;
@ -75,7 +75,7 @@ static void _display_on(void)
SLCD_SEND_COMMAND(REG_LPCTRL, 0x10);
SLCD_SEND_COMMAND(REG_EXT_DISP_CTRL1, 0);
SLCD_SEND_COMMAND(REG_EXT_DISP_CTRL2, 0);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, 1);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, DISP_CTRL1_D(1));
SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL1, 0x12);
SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL2, 0x202);
SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL3, 0x300);
@ -83,7 +83,7 @@ static void _display_on(void)
SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL5, 0x202);
SLCD_SEND_COMMAND(REG_PAN_INTF_CTRL6, 0x100);
SLCD_SEND_COMMAND(REG_FRM_MRKR_CTRL, 0x8000);
SLCD_SEND_COMMAND(REG_PWR_CTRL1, 0x16b0);
SLCD_SEND_COMMAND(REG_PWR_CTRL1, (PWR_CTRL1_SAPE | PWR_CTRL1_BT(6) | PWR_CTRL1_APE | PWR_CTRL1_AP(3)));
SLCD_SEND_COMMAND(REG_PWR_CTRL2, 0x147);
SLCD_SEND_COMMAND(REG_PWR_CTRL3, 0x1bd);
SLCD_SEND_COMMAND(REG_PWR_CTRL4, 0x2f00);
@ -131,14 +131,50 @@ static void _display_on(void)
SLCD_SEND_COMMAND(0x7f5, 1);
SLCD_SEND_COMMAND(0x7f0, 0);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, 0x173);
/* LCD ON: */
SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_BASEE | DISP_CTRL1_VON
| DISP_CTRL1_GON | DISP_CTRL1_DTE | DISP_CTRL1_D(3))
);
SLEEP(3500000);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, 0x171);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_BASEE | DISP_CTRL1_VON
| DISP_CTRL1_GON | DISP_CTRL1_DTE | DISP_CTRL1_D(2))
);
SLEEP(3500000);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, 0x173);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_BASEE | DISP_CTRL1_VON
| DISP_CTRL1_GON | DISP_CTRL1_DTE | DISP_CTRL1_D(3))
);
SLEEP(3500000);
}
static void _display_on(void)
{
int i;
SLCD_SEND_COMMAND(REG_PWR_CTRL1, (PWR_CTRL1_SAPE | PWR_CTRL1_BT(6) | PWR_CTRL1_APE | PWR_CTRL1_AP(3)));
SLEEP(3500000);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_VON | DISP_CTRL1_GON
| DISP_CTRL1_D(1))
);
SLEEP(3500000);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_VON | DISP_CTRL1_GON
| DISP_CTRL1_DTE | DISP_CTRL1_D(3)
| DISP_CTRL1_BASEE)
);
}
static void _display_off(void)
{
int i;
SLCD_SEND_COMMAND(REG_DISP_CTRL1, (DISP_CTRL1_VON | DISP_CTRL1_GON
| DISP_CTRL1_DTE | DISP_CTRL1_D(2))
);
SLEEP(3500000);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, DISP_CTRL1_D(1));
SLEEP(3500000);
SLCD_SEND_COMMAND(REG_DISP_CTRL1, DISP_CTRL1_D(0));
SLEEP(3500000);
SLCD_SEND_COMMAND(REG_PWR_CTRL1, PWR_CTRL1_SLP);
}
static void _set_lcd_bus(void)
{
REG_LCD_CFG &= ~LCD_CFG_LCDPIN_MASK;
@ -177,7 +213,7 @@ void lcd_init_controller(void)
_set_lcd_bus();
_set_lcd_clock();
SLEEP(1000);
_display_on();
_display_init();
}
void lcd_set_target(short x, short y, short width, short height)
@ -198,5 +234,5 @@ void lcd_on(void)
void lcd_off(void)
{
return;
_display_off();
}