SAM4E-EK LCD finally works
This commit is contained in:
parent
49b88e3c66
commit
1c3d2b3c1a
@ -215,12 +215,12 @@
|
|||||||
/* Display/Color Properties ***********************************************************/
|
/* Display/Color Properties ***********************************************************/
|
||||||
/* Display Resolution */
|
/* Display Resolution */
|
||||||
|
|
||||||
#if defined(CONFIG_LCD_PORTAIT) || defined(CONFIG_LCD_RPORTAIT)
|
#if defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RLANDSCAPE)
|
||||||
# define SAM_XRES 240
|
|
||||||
# define SAM_YRES 320
|
|
||||||
#else
|
|
||||||
# define SAM_XRES 320
|
# define SAM_XRES 320
|
||||||
# define SAM_YRES 240
|
# define SAM_YRES 240
|
||||||
|
#else
|
||||||
|
# define SAM_XRES 240
|
||||||
|
# define SAM_YRES 320
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Color depth and format */
|
/* Color depth and format */
|
||||||
@ -502,20 +502,22 @@ static void sam_setwindow(sam_color_t row, sam_color_t col,
|
|||||||
{
|
{
|
||||||
uint8_t buffer[4];
|
uint8_t buffer[4];
|
||||||
|
|
||||||
|
lcdvdbg("row=%d col=%d width=%d height=%d\n", row, col, width, height);
|
||||||
|
|
||||||
/* Set Column Address Position */
|
/* Set Column Address Position */
|
||||||
|
|
||||||
buffer[0] = (row >> 8) & 0xff;
|
buffer[0] = (col >> 8) & 0xff;
|
||||||
buffer[1] = row & 0xff;
|
buffer[1] = col & 0xff;
|
||||||
buffer[2] = ((row + width - 1) >> 8) & 0xff;
|
buffer[2] = ((col + width - 1) >> 8) & 0xff;
|
||||||
buffer[3] = (row + width - 1) & 0xff;
|
buffer[3] = (col + width - 1) & 0xff;
|
||||||
sam_putreg(ILI9341_COLUMN_ADDRESS_SET, buffer, 4);
|
sam_putreg(ILI9341_COLUMN_ADDRESS_SET, buffer, 4);
|
||||||
|
|
||||||
/* Set Page Address Position */
|
/* Set Page Address Position */
|
||||||
|
|
||||||
buffer[0] = (col >> 8) & 0xff;
|
buffer[0] = (row >> 8) & 0xff;
|
||||||
buffer[1] = col & 0xff;
|
buffer[1] = row & 0xff;
|
||||||
buffer[2] = ((col + height - 1) >> 8) & 0xff;
|
buffer[2] = ((row + height - 1) >> 8) & 0xff;
|
||||||
buffer[3] = (col + height - 1) & 0xff;
|
buffer[3] = (row + height - 1) & 0xff;
|
||||||
sam_putreg(ILI9341_PAGE_ADDRESS_SET, buffer, 4);
|
sam_putreg(ILI9341_PAGE_ADDRESS_SET, buffer, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -650,6 +652,8 @@ static void sam_set_backlight(unsigned int power)
|
|||||||
unsigned int level;
|
unsigned int level;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
lcdvdbg("power=%d\n", power);
|
||||||
|
|
||||||
/* Scale the power setting to the range 1...BKL_LEVELS */
|
/* Scale the power setting to the range 1...BKL_LEVELS */
|
||||||
|
|
||||||
DEBUGASSERT(power > 0 && power <= CONFIG_LCD_MAXPOWER);
|
DEBUGASSERT(power > 0 && power <= CONFIG_LCD_MAXPOWER);
|
||||||
@ -690,6 +694,8 @@ static void sam_set_backlight(unsigned int power)
|
|||||||
|
|
||||||
static int sam_poweroff(FAR struct sam_dev_s *priv)
|
static int sam_poweroff(FAR struct sam_dev_s *priv)
|
||||||
{
|
{
|
||||||
|
lcdvdbg("OFF\n");
|
||||||
|
|
||||||
/* Turn the display off */
|
/* Turn the display off */
|
||||||
|
|
||||||
sam_putreg(ILI9341_DISPLAY_OFF, NULL, 0);
|
sam_putreg(ILI9341_DISPLAY_OFF, NULL, 0);
|
||||||
@ -743,7 +749,7 @@ static int sam_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer,
|
|||||||
|
|
||||||
/* Determine the refresh window area */
|
/* Determine the refresh window area */
|
||||||
|
|
||||||
sam_setwindow(row, col, npixels+1, 2);
|
sam_setwindow(row, col, npixels, 1);
|
||||||
|
|
||||||
/* Prepare to write in GRAM */
|
/* Prepare to write in GRAM */
|
||||||
|
|
||||||
@ -801,7 +807,7 @@ static int sam_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
|||||||
|
|
||||||
/* Determine the refresh window area */
|
/* Determine the refresh window area */
|
||||||
|
|
||||||
sam_setwindow(row, col, npixels+1, 2);
|
sam_setwindow(row, col, npixels, 1);
|
||||||
|
|
||||||
/* Prepare to read GRAM data */
|
/* Prepare to read GRAM data */
|
||||||
|
|
||||||
@ -1063,7 +1069,7 @@ static void sam_lcd9341_initialize(void)
|
|||||||
|
|
||||||
/* Memory Access Control configuration */
|
/* Memory Access Control configuration */
|
||||||
|
|
||||||
#if defined(CONFIG_LCD_PORTAIT)
|
#if defined(CONFIG_LCD_LANDSCAPE)
|
||||||
/* Horizontal refresh order (MH): 0
|
/* Horizontal refresh order (MH): 0
|
||||||
* RGB/BGR order (BGR) : 1
|
* RGB/BGR order (BGR) : 1
|
||||||
* Vertical refresh order (ML) : 0
|
* Vertical refresh order (ML) : 0
|
||||||
@ -1075,19 +1081,18 @@ static void sam_lcd9341_initialize(void)
|
|||||||
buffer[0] = ILI9341_MEMORY_ACCESS_CONTROL_BGR |
|
buffer[0] = ILI9341_MEMORY_ACCESS_CONTROL_BGR |
|
||||||
ILI9341_MEMORY_ACCESS_CONTROL_MV;
|
ILI9341_MEMORY_ACCESS_CONTROL_MV;
|
||||||
|
|
||||||
#elif defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RPORTAIT)
|
#elif defined(CONFIG_LCD_PORTRAIT)
|
||||||
/* Horizontal refresh order (MH): 0
|
/* Horizontal refresh order (MH): 0
|
||||||
* RGB/BGR order (BGR) : 1
|
* RGB/BGR order (BGR) : 1
|
||||||
* Vertical refresh order (ML) : 0
|
* Vertical refresh order (ML) : 0
|
||||||
* Row/column exchange (MV) : 0
|
* Row/column exchange (MV) : 0
|
||||||
* Column address order (MX) : 1
|
* Column address order (MX) : 0
|
||||||
* Row address order (MY) : 0
|
* Row address order (MY) : 0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
buffer[0] = ILI9341_MEMORY_ACCESS_CONTROL_BGR |
|
buffer[0] = ILI9341_MEMORY_ACCESS_CONTROL_BGR;
|
||||||
ILI9341_MEMORY_ACCESS_CONTROL_MX;
|
|
||||||
|
|
||||||
#elif defined(CONFIG_LCD_RPORTAIT)
|
#elif defined(CONFIG_LCD_RLANDSCAPE)
|
||||||
/* Horizontal refresh order (MH): 0
|
/* Horizontal refresh order (MH): 0
|
||||||
* RGB/BGR order (BGR) : 1
|
* RGB/BGR order (BGR) : 1
|
||||||
* Vertical refresh order (ML) : 0
|
* Vertical refresh order (ML) : 0
|
||||||
@ -1100,16 +1105,17 @@ static void sam_lcd9341_initialize(void)
|
|||||||
ILI9341_MEMORY_ACCESS_CONTROL_MV |
|
ILI9341_MEMORY_ACCESS_CONTROL_MV |
|
||||||
ILI9341_MEMORY_ACCESS_CONTROL_MX;
|
ILI9341_MEMORY_ACCESS_CONTROL_MX;
|
||||||
|
|
||||||
#else /* if defined(CONFIG_LCD_RLANDSCAPE) */
|
#elif defined(CONFIG_LCD_RPORTRAIT)
|
||||||
/* Horizontal refresh order (MH): 0
|
/* Horizontal refresh order (MH): 0
|
||||||
* RGB/BGR order (BGR) : 1
|
* RGB/BGR order (BGR) : 1
|
||||||
* Vertical refresh order (ML) : 0
|
* Vertical refresh order (ML) : 0
|
||||||
* Row/column exchange (MV) : 0
|
* Row/column exchange (MV) : 1
|
||||||
* Column address order (MX) : 0
|
* Column address order (MX) : 0
|
||||||
* Row address order (MY) : 1
|
* Row address order (MY) : 1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
buffer[0] = ILI9341_MEMORY_ACCESS_CONTROL_BGR |
|
buffer[0] = ILI9341_MEMORY_ACCESS_CONTROL_BGR |
|
||||||
|
ILI9341_MEMORY_ACCESS_CONTROL_MX |
|
||||||
ILI9341_MEMORY_ACCESS_CONTROL_MY;
|
ILI9341_MEMORY_ACCESS_CONTROL_MY;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user