forked from len0rd/rockbox
rk27xx: lcdif refactoring: make lcdif-rk27xx.c more generic
iomux_lcd now has parameter for display bit mode settings, so we doesn't need ifdef here. lcd_init_device moved to target specific code lcdif_init configure pins and lcd cotroller Change-Id: I3a2d7fd38b08fe3bc5ebefa8c9f7288c21f58212 Reviewed-on: http://gerrit.rockbox.org/153 Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com> Tested-by: Marcin Bukat <marcin.bukat@gmail.com>
This commit is contained in:
parent
4601a8b44a
commit
b069562ef4
4 changed files with 27 additions and 11 deletions
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
static bool display_on = false;
|
static bool display_on = false;
|
||||||
|
|
||||||
void lcd_display_init()
|
static void lcd_display_init(void)
|
||||||
{
|
{
|
||||||
unsigned int x, y;
|
unsigned int x, y;
|
||||||
|
|
||||||
|
|
@ -108,6 +108,12 @@ void lcd_display_init()
|
||||||
display_on = true;
|
display_on = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lcd_init_device(void)
|
||||||
|
{
|
||||||
|
lcdif_init(LCDIF_16BIT);
|
||||||
|
lcd_display_init();
|
||||||
|
}
|
||||||
|
|
||||||
void lcd_enable (bool on)
|
void lcd_enable (bool on)
|
||||||
{
|
{
|
||||||
if (on)
|
if (on)
|
||||||
|
|
|
||||||
|
|
@ -123,27 +123,26 @@ static void lcdctrl_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* configure pins to drive lcd in 18bit mode (16bit mode for HiFiMAN's) */
|
/* configure pins to drive lcd in 18bit mode (16bit mode for HiFiMAN's) */
|
||||||
static void iomux_lcd(void)
|
static void iomux_lcd(enum lcdif_mode_t mode)
|
||||||
{
|
{
|
||||||
unsigned long muxa;
|
unsigned long muxa;
|
||||||
|
|
||||||
muxa = SCU_IOMUXA_CON & ~(IOMUX_LCD_VSYNC|IOMUX_LCD_DEN|0xff);
|
muxa = SCU_IOMUXA_CON & ~(IOMUX_LCD_VSYNC|IOMUX_LCD_DEN|0xff);
|
||||||
|
|
||||||
#if !defined(HM801) && !defined(HM60x)
|
if (mode == LCDIF_18BIT)
|
||||||
muxa |= IOMUX_LCD_D18|IOMUX_LCD_D20|IOMUX_LCD_D22|IOMUX_LCD_D17|IOMUX_LCD_D16;
|
{
|
||||||
#endif
|
muxa |= IOMUX_LCD_D18|IOMUX_LCD_D20|IOMUX_LCD_D22|IOMUX_LCD_D17|IOMUX_LCD_D16;
|
||||||
|
}
|
||||||
|
|
||||||
SCU_IOMUXA_CON = muxa;
|
SCU_IOMUXA_CON = muxa;
|
||||||
SCU_IOMUXB_CON |= IOMUX_LCD_D815;
|
SCU_IOMUXB_CON |= IOMUX_LCD_D815;
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_init_device()
|
void lcdif_init(enum lcdif_mode_t mode)
|
||||||
{
|
{
|
||||||
iomux_lcd(); /* setup pins for 16bit lcd interface */
|
iomux_lcd(mode); /* setup pins for lcd interface */
|
||||||
lcdctrl_init(); /* basic lcdc module configuration */
|
lcdctrl_init(); /* basic lcdc module configuration */
|
||||||
|
|
||||||
lcdctrl_bypass(1); /* run in bypass mode - all writes goes directly to lcd controller */
|
lcdctrl_bypass(1); /* run in bypass mode - all writes goes directly to lcd controller */
|
||||||
lcd_display_init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is ugly hack. We drive lcd in bypass mode
|
/* This is ugly hack. We drive lcd in bypass mode
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,16 @@
|
||||||
#ifndef _LCDIF_RK27XX_H
|
#ifndef _LCDIF_RK27XX_H
|
||||||
#define _LCDIF_RK27XX_H
|
#define _LCDIF_RK27XX_H
|
||||||
|
|
||||||
|
enum lcdif_mode_t {
|
||||||
|
LCDIF_16BIT,
|
||||||
|
LCDIF_18BIT
|
||||||
|
};
|
||||||
|
|
||||||
unsigned int lcd_data_transform(unsigned int data);
|
unsigned int lcd_data_transform(unsigned int data);
|
||||||
|
|
||||||
void lcd_cmd(unsigned int cmd);
|
void lcd_cmd(unsigned int cmd);
|
||||||
void lcd_data(unsigned int data);
|
void lcd_data(unsigned int data);
|
||||||
void lcd_write_reg(unsigned int reg, unsigned int val);
|
void lcd_write_reg(unsigned int reg, unsigned int val);
|
||||||
void lcd_display_init(void);
|
void lcdif_init(enum lcdif_mode_t mode);
|
||||||
|
|
||||||
#endif /* _LCDIF_RK27XX_H */
|
#endif /* _LCDIF_RK27XX_H */
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ static void lcd_sleep(bool sleep)
|
||||||
lcd_cmd(GRAM_WRITE);
|
lcd_cmd(GRAM_WRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_display_init()
|
static void lcd_display_init(void)
|
||||||
{
|
{
|
||||||
unsigned int x, y;
|
unsigned int x, y;
|
||||||
|
|
||||||
|
|
@ -173,6 +173,12 @@ void lcd_display_init()
|
||||||
lcd_sleep(false);
|
lcd_sleep(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lcd_init_device(void)
|
||||||
|
{
|
||||||
|
lcdif_init(LCDIF_18BIT);
|
||||||
|
lcd_display_init();
|
||||||
|
}
|
||||||
|
|
||||||
void lcd_update_rect(int x, int y, int width, int height)
|
void lcd_update_rect(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
int px = x, py = y;
|
int px = x, py = y;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue