Add lcd_dev_s pointer to lcd_planeinfo_s
In order to support multiple LCD instances per board, add a pointer from lcd_planeinfo_s to the lcd_dev_s which it belongs to. Also enhance the putrun, getrun, putarea and getarea methods to pass through the lcd_dev_s pointer to the respective device driver. Port all LCD device drivers to this lcd_planeinfo_s extension. Enhance SSD1306 driver to support multiple LCDs. Signed-off-by: Michael Jung <michael.jung@secore.ly>
This commit is contained in:
parent
f68a5f0913
commit
9140693567
@ -102,13 +102,13 @@ struct sim_dev_s
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int sim_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sim_putrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels);
|
||||
static int sim_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
fb_coord_t col_start, fb_coord_t col_end,
|
||||
const uint8_t *buffer);
|
||||
static int sim_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int sim_putarea(struct lcd_dev_s *dev, fb_coord_t row_start,
|
||||
fb_coord_t row_end, fb_coord_t col_start,
|
||||
fb_coord_t col_end, const uint8_t *buffer);
|
||||
static int sim_getrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
|
||||
@ -217,6 +217,7 @@ static struct sim_dev_s g_lcddev =
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The LCD device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -225,10 +226,10 @@ static struct sim_dev_s g_lcddev =
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sim_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sim_putrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
lcdinfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
lcdinfo("row: %d col: %d npixels: %zu\n", row, col, npixels);
|
||||
|
||||
#ifdef CONFIG_SIM_X11FB
|
||||
memcpy(&g_planeinfo.buffer[row * g_stride + col * (g_planeinfo.bpp / 8)],
|
||||
@ -244,6 +245,7 @@ static int sim_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The LCD device
|
||||
* row_start - Starting row to write to (range: 0 <= row < yres)
|
||||
* row_end - Ending row to write to (range: row_start <= row < yres)
|
||||
* col_start - Starting column to write to (range: 0 <= col <= xres)
|
||||
@ -253,9 +255,9 @@ static int sim_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sim_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
fb_coord_t col_start, fb_coord_t col_end,
|
||||
const uint8_t *buffer)
|
||||
static int sim_putarea(struct lcd_dev_s *dev, fb_coord_t row_start,
|
||||
fb_coord_t row_end, fb_coord_t col_start,
|
||||
fb_coord_t col_end, const uint8_t *buffer)
|
||||
{
|
||||
fb_coord_t row;
|
||||
size_t rows;
|
||||
@ -301,6 +303,7 @@ static int sim_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The LCD device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -309,10 +312,10 @@ static int sim_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sim_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int sim_getrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
lcdinfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
lcdinfo("row: %d col: %d npixels: %zu\n", row, col, npixels);
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
@ -350,6 +353,7 @@ static int sim_getplaneinfo(struct lcd_dev_s *dev, unsigned int planeno,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
ginfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -96,11 +96,10 @@
|
||||
****************************************************************************/
|
||||
|
||||
static int init_graph_vga(int width, int height, int chain4);
|
||||
static int vga_putrun(fb_coord_t row,
|
||||
fb_coord_t col, const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int vga_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int vga_putrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels);
|
||||
static int vga_getrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels);
|
||||
static int vga_getvideoinfo(struct lcd_dev_s *dev,
|
||||
struct fb_videoinfo_s *vinfo);
|
||||
static int vga_getplaneinfo(struct lcd_dev_s *dev, unsigned int planeno,
|
||||
@ -414,16 +413,15 @@ static int init_graph_vga(int width, int height, int chain4)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vga_putrun(fb_coord_t row,
|
||||
fb_coord_t col, const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int vga_putrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
memcpy(&g_pscreen[row*VGA_XRES + col], buffer, npixels);
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int vga_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int vga_getrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
memcpy(buffer, &g_pscreen[row*VGA_XRES + col], npixels);
|
||||
return OK;
|
||||
@ -445,8 +443,8 @@ static int vga_getplaneinfo(struct lcd_dev_s *dev, unsigned int planeno,
|
||||
pinfo->putrun = vga_putrun; /* Put a run into LCD memory */
|
||||
pinfo->getrun = vga_getrun; /* Get a run from LCD memory */
|
||||
pinfo->buffer = g_runbuffer; /* Run scratch buffer */
|
||||
pinfo->display = 0;
|
||||
pinfo->bpp = VGA_BPP; /* Bits-per-pixel */
|
||||
pinfo->dev = dev; /* LCD device */
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -313,10 +313,12 @@ static void sam_dumpreg(uint8_t startreg, uint8_t endreg);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int sam_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -583,6 +585,7 @@ static void sam_dumpreg(uint8_t startreg, uint8_t endreg)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - LCD device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -591,7 +594,8 @@ static void sam_dumpreg(uint8_t startreg, uint8_t endreg)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
@ -654,6 +658,7 @@ static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - LCD device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -662,7 +667,9 @@ static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
static int sam_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
uint16_t *run = (uint16_t *)buffer;
|
||||
@ -746,6 +753,7 @@ static int sam_getplaneinfo(struct lcd_dev_s *dev, unsigned int planeno,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -295,10 +295,12 @@ static int sam_poweroff(struct sam_dev_s *priv);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int sam_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -666,7 +668,8 @@ static int sam_poweroff(struct sam_dev_s *priv)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
@ -729,7 +732,9 @@ static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
static int sam_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
uint8_t value[2];
|
||||
@ -819,6 +824,7 @@ static int sam_getplaneinfo(struct lcd_dev_s *dev, unsigned int planeno,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -302,10 +302,12 @@ static int sam_poweroff(struct sam_dev_s *priv);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int sam_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -704,7 +706,8 @@ static int sam_poweroff(struct sam_dev_s *priv)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
@ -763,7 +766,9 @@ static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
static int sam_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
#if defined(CONFIG_SAM4EEK_LCD_RGB565)
|
||||
@ -840,6 +845,7 @@ static int sam_getplaneinfo(struct lcd_dev_s *dev, unsigned int planeno,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -373,11 +373,14 @@ static int sam_lcd_rxtransfer(struct sam_dev_s *priv,
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int sam_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int sam_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int sam_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
|
||||
@ -1117,6 +1120,7 @@ static int sam_lcd_rxtransfer(struct sam_dev_s *priv,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - LCD device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -1125,8 +1129,10 @@ static int sam_lcd_rxtransfer(struct sam_dev_s *priv,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels)
|
||||
static int sam_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
struct sam_dev_s *priv = &g_lcddev;
|
||||
int ret;
|
||||
@ -1158,6 +1164,7 @@ static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - LCD device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -1166,7 +1173,9 @@ static int sam_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
static int sam_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
struct sam_dev_s *priv = &g_lcddev;
|
||||
@ -1226,6 +1235,7 @@ static int sam_getplaneinfo(struct lcd_dev_s *dev, unsigned int planeno,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
@ -1681,7 +1691,8 @@ void sam_lcdclear(uint16_t color)
|
||||
|
||||
for (row = 0; row < SAM_YRES; row++)
|
||||
{
|
||||
ret = sam_putrun(row, 0, (const uint8_t *)g_runbuffer, SAM_XRES);
|
||||
ret = sam_putrun(&priv->dev, row, 0, (const uint8_t *)g_runbuffer,
|
||||
SAM_XRES);
|
||||
if (ret < 0)
|
||||
{
|
||||
lcderr("ERROR: sam_putrun failed on row %d: %d\n", row, ret);
|
||||
|
@ -118,9 +118,9 @@ static void lcd_clear(uint16_t color);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int lcd_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int lcd_putrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels);
|
||||
static int lcd_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int lcd_getrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
@ -428,9 +428,8 @@ static void lcd_setcursor(unsigned int x, unsigned int y)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int lcd_putrun(fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int lcd_putrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
int i;
|
||||
const uint16_t *src = (const uint16_t *) buffer;
|
||||
@ -466,8 +465,8 @@ static int lcd_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int lcd_getrun(fb_coord_t row, fb_coord_t col, uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int lcd_getrun(struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
uint16_t *dest = (uint16_t *) buffer;
|
||||
int i;
|
||||
@ -528,6 +527,7 @@ static int lcd_getplaneinfo(struct lcd_dev_s *dev, unsigned int planeno,
|
||||
ginfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -417,9 +417,11 @@ static void stm32_setcursor(struct stm32_dev_s *priv,
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int stm32_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm32_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels);
|
||||
static int stm32_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm32_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
@ -843,6 +845,7 @@ static void stm32_dumprun(const char *msg,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - LCD device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -851,7 +854,8 @@ static void stm32_dumprun(const char *msg,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int stm32_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm32_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
struct stm32_dev_s *priv = &g_lcddev;
|
||||
@ -953,6 +957,7 @@ static int stm32_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - LCD device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -961,7 +966,8 @@ static int stm32_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int stm32_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm32_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
struct stm32_dev_s *priv = &g_lcddev;
|
||||
@ -1126,6 +1132,7 @@ static int stm32_getplaneinfo(struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -345,10 +345,12 @@ static void stm3210e_setcursor(uint16_t col, uint16_t row);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int stm3210e_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3210e_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int stm3210e_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3210e_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -704,6 +706,7 @@ static void stm3210e_dumprun(const char *msg, uint16_t *run,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -712,7 +715,8 @@ static void stm3210e_dumprun(const char *msg, uint16_t *run,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int stm3210e_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3210e_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
@ -798,6 +802,7 @@ static int stm3210e_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -806,7 +811,8 @@ static int stm3210e_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int stm3210e_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3210e_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
@ -959,6 +965,7 @@ static int stm3210e_getplaneinfo(struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
ginfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -289,9 +289,11 @@ static void stm3220g_setcursor(uint16_t col, uint16_t row);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int stm3220g_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3220g_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels);
|
||||
static int stm3220g_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3220g_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
@ -543,6 +545,7 @@ static void stm3220g_dumprun(const char *msg,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The LCD device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -551,10 +554,9 @@ static void stm3220g_dumprun(const char *msg,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int stm3220g_putrun(fb_coord_t row,
|
||||
fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int stm3220g_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
const uint16_t *src = (const uint16_t *)buffer;
|
||||
int i;
|
||||
@ -665,6 +667,7 @@ static int stm3220g_putrun(fb_coord_t row,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The LCD device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -673,7 +676,8 @@ static int stm3220g_putrun(fb_coord_t row,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int stm3220g_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3220g_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
uint16_t *dest = (uint16_t *)buffer;
|
||||
@ -838,6 +842,7 @@ static int stm3220g_getplaneinfo(struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -289,9 +289,11 @@ static void stm3240g_setcursor(uint16_t col, uint16_t row);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int stm3240g_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3240g_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels);
|
||||
static int stm3240g_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3240g_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
@ -542,6 +544,7 @@ static void stm3240g_dumprun(const char *msg,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -550,9 +553,9 @@ static void stm3240g_dumprun(const char *msg,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int stm3240g_putrun(fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int stm3240g_putrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
const uint16_t *src = (const uint16_t *)buffer;
|
||||
int i;
|
||||
@ -665,6 +668,7 @@ static int stm3240g_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -673,7 +677,8 @@ static int stm3240g_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int stm3240g_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int stm3240g_getrun(struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
uint16_t *dest = (uint16_t *)buffer;
|
||||
@ -838,6 +843,7 @@ static int stm3240g_getplaneinfo(struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -360,6 +360,14 @@ config LCD_SSD1306
|
||||
|
||||
if LCD_SSD1306
|
||||
|
||||
config SSD1306_NUMDEVS
|
||||
int "Number of SSD1306 displays"
|
||||
range 1 256
|
||||
default 1
|
||||
---help---
|
||||
Specifies the number of SSD1306 devices present on the respective board.
|
||||
Currently only multiple displays of the same type are supported.
|
||||
|
||||
choice
|
||||
prompt "SSD1306 Interface"
|
||||
default LCD_SSD1306_SPI
|
||||
|
@ -198,13 +198,16 @@ static void gc9a01_fill(FAR struct gc9a01_dev_s *dev, uint16_t color);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int gc9a01_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int gc9a01_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int gc9a01_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
static int gc9a01_putarea(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row_start, fb_coord_t row_end,
|
||||
fb_coord_t col_start, fb_coord_t col_end,
|
||||
FAR const uint8_t *buffer);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int gc9a01_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int gc9a01_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
#endif
|
||||
|
||||
@ -597,6 +600,7 @@ static void gc9a01_fill(FAR struct gc9a01_dev_s *dev, uint16_t color)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -605,10 +609,11 @@ static void gc9a01_fill(FAR struct gc9a01_dev_s *dev, uint16_t color)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int gc9a01_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int gc9a01_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct gc9a01_dev_s *priv = &g_lcddev;
|
||||
FAR struct gc9a01_dev_s *priv = (FAR struct gc9a01_dev_s *)dev;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
ginfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
@ -626,6 +631,7 @@ static int gc9a01_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to write a partial area to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row_start - Starting row to write to (range: 0 <= row < yres)
|
||||
* row_end - Ending row to write to (range: row_start <= row < yres)
|
||||
* col_start - Starting column to write to (range: 0 <= col <= xres)
|
||||
@ -635,11 +641,12 @@ static int gc9a01_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int gc9a01_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
static int gc9a01_putarea(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row_start, fb_coord_t row_end,
|
||||
fb_coord_t col_start, fb_coord_t col_end,
|
||||
FAR const uint8_t *buffer)
|
||||
{
|
||||
FAR struct gc9a01_dev_s *priv = &g_lcddev;
|
||||
FAR struct gc9a01_dev_s *priv = (FAR struct gc9a01_dev_s *)dev;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
ginfo("row_start: %d row_end: %d col_start: %d col_end: %d\n",
|
||||
@ -660,6 +667,7 @@ static int gc9a01_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -669,10 +677,11 @@ static int gc9a01_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int gc9a01_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int gc9a01_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct gc9a01_dev_s *priv = &g_lcddev;
|
||||
FAR struct gc9a01_dev_s *priv = (FAR struct gc9a01_dev_s *)dev;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
|
||||
ginfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
@ -731,6 +740,7 @@ static int gc9a01_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
#endif
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->bpp = priv->bpp; /* Bits-per-pixel */
|
||||
pinfo->dev = dev; /* The lcd device */
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -186,11 +186,13 @@ static void ili9225_fill(FAR struct ili9225_dev_s *dev, uint16_t color);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int ili9225_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int ili9225_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int ili9225_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
static int ili9225_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
#endif
|
||||
|
||||
/* LCD Configuration */
|
||||
@ -547,6 +549,7 @@ static void ili9225_fill(FAR struct ili9225_dev_s *dev, uint16_t color)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -555,10 +558,11 @@ static void ili9225_fill(FAR struct ili9225_dev_s *dev, uint16_t color)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ili9225_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ili9225_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct ili9225_dev_s *priv = &g_lcddev;
|
||||
FAR struct ili9225_dev_s *priv = (FAR struct ili9225_dev_s *)dev;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
ginfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
@ -576,6 +580,7 @@ static int ili9225_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -585,10 +590,11 @@ static int ili9225_putrun(fb_coord_t row, fb_coord_t col,
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int ili9225_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ili9225_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct ili9225_dev_s *priv = &g_lcddev;
|
||||
FAR struct ili9225_dev_s *priv = (FAR struct ili9225_dev_s *)dev;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
|
||||
ginfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
@ -646,6 +652,7 @@ static int ili9225_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
#endif
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->bpp = priv->bpp; /* Bits-per-pixel */
|
||||
pinfo->dev = dev; /* The lcd device */
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -366,16 +366,6 @@ struct ili9340_dev_s
|
||||
|
||||
FAR struct ili9340_lcd_s *lcd;
|
||||
|
||||
/* Driver specific putrun function */
|
||||
|
||||
int (*putrun)(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
/* Driver specific getrun function */
|
||||
|
||||
int (*getrun)(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels);
|
||||
#endif
|
||||
/* Run buffer for the device */
|
||||
|
||||
uint16_t *runbuffer;
|
||||
@ -408,35 +398,13 @@ static inline uint16_t ili9340_getyres(FAR struct ili9340_dev_s *dev);
|
||||
|
||||
/* lcd data transfer methods */
|
||||
|
||||
static int ili9340_putrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels);
|
||||
static int ili9340_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int ili9340_getrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels);
|
||||
#endif
|
||||
|
||||
/* Definition of the public visible getrun / putrun methods
|
||||
* each for a single LCD driver
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_LCD_ILI9340_IFACE0
|
||||
static int ili9340_putrun0(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixsels);
|
||||
#endif
|
||||
#ifdef CONFIG_LCD_ILI9340_IFACE1
|
||||
static int ili9340_putrun1(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixsels);
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
# ifdef CONFIG_LCD_ILI9340_IFACE0
|
||||
static int ili9340_getrun0(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixsels);
|
||||
# endif
|
||||
# ifdef CONFIG_LCD_ILI9340_IFACE1
|
||||
static int ili9340_getrun1(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixsels);
|
||||
# endif
|
||||
static int ili9340_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
#endif
|
||||
|
||||
/* lcd configuration */
|
||||
@ -472,10 +440,6 @@ static struct ili9340_dev_s g_lcddev[CONFIG_LCD_ILI9340_NINTERFACES] =
|
||||
#ifdef CONFIG_LCD_ILI9340_IFACE0
|
||||
{
|
||||
.lcd = 0,
|
||||
.putrun = ili9340_putrun0,
|
||||
# ifndef CONFIG_LCD_NOGETRUN
|
||||
.getrun = ili9340_getrun0,
|
||||
# endif
|
||||
.runbuffer = g_runbuffer0,
|
||||
.orient = ILI9340_IFACE0_ORIENT,
|
||||
.pxfmt = ILI9340_IFACE0_PXFMT,
|
||||
@ -486,10 +450,6 @@ static struct ili9340_dev_s g_lcddev[CONFIG_LCD_ILI9340_NINTERFACES] =
|
||||
#ifdef CONFIG_LCD_ILI9340_IFACE1
|
||||
{
|
||||
.lcd = 0,
|
||||
.putrun = ili9340_putrun1,
|
||||
# ifndef CONFIG_LCD_NOGETRUN
|
||||
.getrun = ili9340_getrun1,
|
||||
# endif
|
||||
.runbuffer = g_runbuffer1,
|
||||
.orient = ILI9340_IFACE1_ORIENT,
|
||||
.pxfmt = ILI9340_IFACE1_PXFMT,
|
||||
@ -600,7 +560,7 @@ static void ili9340_selectarea(FAR struct ili9340_lcd_s *lcd,
|
||||
* Write a partial raster line to the LCD.
|
||||
*
|
||||
* Parameters:
|
||||
* devno - Number of lcd device
|
||||
* lcd_dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -614,10 +574,11 @@ static void ili9340_selectarea(FAR struct ili9340_lcd_s *lcd,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ili9340_putrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
static int ili9340_putrun(FAR struct lcd_dev_s *lcd_dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct ili9340_dev_s *dev = &g_lcddev[devno];
|
||||
FAR struct ili9340_dev_s *dev = (FAR struct ili9340_dev_s *)lcd_dev;
|
||||
FAR struct ili9340_lcd_s *lcd = dev->lcd;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
@ -660,7 +621,7 @@ static int ili9340_putrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
* Read a partial raster line from the LCD.
|
||||
*
|
||||
* Parameter:
|
||||
* devno - Number of the lcd device
|
||||
* lcd_dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -675,10 +636,11 @@ static int ili9340_putrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
****************************************************************************/
|
||||
|
||||
# ifndef CONFIG_LCD_NOGETRUN
|
||||
static int ili9340_getrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels)
|
||||
static int ili9340_getrun(FAR struct lcd_dev_s *lcd_dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct ili9340_dev_s *dev = &g_lcddev[devno];
|
||||
FAR struct ili9340_dev_s *dev = (FAR struct ili9340_dev_s *)lcd_dev;
|
||||
FAR struct ili9340_lcd_s *lcd = dev->lcd;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
|
||||
@ -813,80 +775,6 @@ static int ili9340_hwinitialize(FAR struct ili9340_dev_s *dev)
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ili9340_putrunx
|
||||
*
|
||||
* Description:
|
||||
* Write a partial raster line to the LCD.
|
||||
*
|
||||
* Parameter:
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
* npixels - The number of pixels to write to the
|
||||
* (range: 0 < npixels <= xres-col)
|
||||
*
|
||||
* Returned Value:
|
||||
*
|
||||
* On success - OK
|
||||
* On error - -EINVAL
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_LCD_ILI9340_IFACE0
|
||||
static int ili9340_putrun0(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
return ili9340_putrun(0, row, col, buffer, npixels);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_LCD_ILI9340_IFACE1
|
||||
static int ili9340_putrun1(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
return ili9340_putrun(1, row, col, buffer, npixels);
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ili9340_getrunx
|
||||
*
|
||||
* Description:
|
||||
* Read a partial raster line from the LCD.
|
||||
*
|
||||
* Parameter:
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read from (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
* npixels - The number of pixels to read from the
|
||||
* (range: 0 < npixels <= xres-col)
|
||||
*
|
||||
* Returned Value:
|
||||
*
|
||||
* On success - OK
|
||||
* On error - -EINVAL
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
# ifdef CONFIG_LCD_ILI9340_IFACE0
|
||||
static int ili9340_getrun0(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
return ili9340_getrun(0, row, col, buffer, npixels);
|
||||
}
|
||||
# endif
|
||||
|
||||
# ifdef CONFIG_LCD_ILI9340_IFACE1
|
||||
static int ili9340_getrun1(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
return ili9340_getrun(1, row, col, buffer, npixels);
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ili9340_getvideoinfo
|
||||
*
|
||||
@ -951,12 +839,13 @@ static int ili9340_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
{
|
||||
FAR struct ili9340_dev_s *priv = (FAR struct ili9340_dev_s *)dev;
|
||||
|
||||
pinfo->putrun = priv->putrun;
|
||||
pinfo->putrun = ili9340_putrun;
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
pinfo->getrun = priv->getrun;
|
||||
pinfo->getrun = ili9340_getrun;
|
||||
#endif
|
||||
pinfo->bpp = priv->bpp;
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->dev = dev;
|
||||
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, pinfo->bpp);
|
||||
|
||||
|
@ -366,16 +366,6 @@ struct ili9341_dev_s
|
||||
|
||||
FAR struct ili9341_lcd_s *lcd;
|
||||
|
||||
/* Driver specific putrun function */
|
||||
|
||||
int (*putrun)(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
/* Driver specific getrun function */
|
||||
|
||||
int (*getrun)(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels);
|
||||
#endif
|
||||
/* Run buffer for the device */
|
||||
|
||||
uint16_t *runbuffer;
|
||||
@ -408,35 +398,13 @@ static inline uint16_t ili9341_getyres(FAR struct ili9341_dev_s *dev);
|
||||
|
||||
/* lcd data transfer methods */
|
||||
|
||||
static int ili9341_putrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels);
|
||||
static int ili9341_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int ili9341_getrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels);
|
||||
#endif
|
||||
|
||||
/* Definition of the public visible getrun / putrun methods
|
||||
* each for a single LCD driver
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_LCD_ILI9341_IFACE0
|
||||
static int ili9341_putrun0(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixsels);
|
||||
#endif
|
||||
#ifdef CONFIG_LCD_ILI9341_IFACE1
|
||||
static int ili9341_putrun1(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixsels);
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
# ifdef CONFIG_LCD_ILI9341_IFACE0
|
||||
static int ili9341_getrun0(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixsels);
|
||||
# endif
|
||||
# ifdef CONFIG_LCD_ILI9341_IFACE1
|
||||
static int ili9341_getrun1(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixsels);
|
||||
# endif
|
||||
static int ili9341_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t * buffer,
|
||||
size_t npixels);
|
||||
#endif
|
||||
|
||||
/* lcd configuration */
|
||||
@ -472,10 +440,6 @@ static struct ili9341_dev_s g_lcddev[CONFIG_LCD_ILI9341_NINTERFACES] =
|
||||
#ifdef CONFIG_LCD_ILI9341_IFACE0
|
||||
{
|
||||
.lcd = 0,
|
||||
.putrun = ili9341_putrun0,
|
||||
# ifndef CONFIG_LCD_NOGETRUN
|
||||
.getrun = ili9341_getrun0,
|
||||
# endif
|
||||
.runbuffer = g_runbuffer0,
|
||||
.orient = ILI9341_IFACE0_ORIENT,
|
||||
.pxfmt = ILI9341_IFACE0_PXFMT,
|
||||
@ -486,10 +450,6 @@ static struct ili9341_dev_s g_lcddev[CONFIG_LCD_ILI9341_NINTERFACES] =
|
||||
#ifdef CONFIG_LCD_ILI9341_IFACE1
|
||||
{
|
||||
.lcd = 0,
|
||||
.putrun = ili9341_putrun1,
|
||||
# ifndef CONFIG_LCD_NOGETRUN
|
||||
.getrun = ili9341_getrun1,
|
||||
# endif
|
||||
.runbuffer = g_runbuffer1,
|
||||
.orient = ILI9341_IFACE1_ORIENT,
|
||||
.pxfmt = ILI9341_IFACE1_PXFMT,
|
||||
@ -600,7 +560,7 @@ static void ili9341_selectarea(FAR struct ili9341_lcd_s *lcd,
|
||||
* Write a partial raster line to the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* devno - Number of lcd device
|
||||
* lcd_dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -614,10 +574,11 @@ static void ili9341_selectarea(FAR struct ili9341_lcd_s *lcd,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ili9341_putrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
static int ili9341_putrun(FAR struct lcd_dev_s *lcd_dev, fb_coord_t row,
|
||||
fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
FAR struct ili9341_dev_s *dev = &g_lcddev[devno];
|
||||
FAR struct ili9341_dev_s *dev = (FAR struct ili9341_dev_s *)dev;
|
||||
FAR struct ili9341_lcd_s *lcd = dev->lcd;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
@ -660,7 +621,7 @@ static int ili9341_putrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
* Read a partial raster line from the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* devno - Number of the lcd device
|
||||
* lcd_dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -675,10 +636,11 @@ static int ili9341_putrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
****************************************************************************/
|
||||
|
||||
# ifndef CONFIG_LCD_NOGETRUN
|
||||
static int ili9341_getrun(int devno, fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels)
|
||||
static int ili9341_getrun(FAR struct lcd_dev_s *lcd_dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t * buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct ili9341_dev_s *dev = &g_lcddev[devno];
|
||||
FAR struct ili9341_dev_s *dev = (FAR struct ili9341_dev_s *)lcd_dev;
|
||||
FAR struct ili9341_lcd_s *lcd = dev->lcd;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
|
||||
@ -813,80 +775,6 @@ static int ili9341_hwinitialize(FAR struct ili9341_dev_s *dev)
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ili9341_putrunx
|
||||
*
|
||||
* Description:
|
||||
* Write a partial raster line to the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
* npixels - The number of pixels to write to the
|
||||
* (range: 0 < npixels <= xres-col)
|
||||
*
|
||||
* Returned Value:
|
||||
*
|
||||
* On success - OK
|
||||
* On error - -EINVAL
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_LCD_ILI9341_IFACE0
|
||||
static int ili9341_putrun0(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
return ili9341_putrun(0, row, col, buffer, npixels);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_LCD_ILI9341_IFACE1
|
||||
static int ili9341_putrun1(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
return ili9341_putrun(1, row, col, buffer, npixels);
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ili9341_getrunx
|
||||
*
|
||||
* Description:
|
||||
* Read a partial raster line from the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read from (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
* npixels - The number of pixels to read from the
|
||||
* (range: 0 < npixels <= xres-col)
|
||||
*
|
||||
* Returned Value:
|
||||
*
|
||||
* On success - OK
|
||||
* On error - -EINVAL
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
# ifdef CONFIG_LCD_ILI9341_IFACE0
|
||||
static int ili9341_getrun0(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
return ili9341_getrun(0, row, col, buffer, npixels);
|
||||
}
|
||||
# endif
|
||||
|
||||
# ifdef CONFIG_LCD_ILI9341_IFACE1
|
||||
static int ili9341_getrun1(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
return ili9341_getrun(1, row, col, buffer, npixels);
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ili9341_getvideoinfo
|
||||
*
|
||||
@ -951,12 +839,13 @@ static int ili9341_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
{
|
||||
FAR struct ili9341_dev_s *priv = (FAR struct ili9341_dev_s *)dev;
|
||||
|
||||
pinfo->putrun = priv->putrun;
|
||||
pinfo->putrun = ili9341_putrun;
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
pinfo->getrun = priv->getrun;
|
||||
pinfo->getrun = ili9341_getrun;
|
||||
#endif
|
||||
pinfo->bpp = priv->bpp;
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->dev = dev;
|
||||
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, pinfo->bpp);
|
||||
|
||||
|
@ -102,8 +102,9 @@ static int lcddev_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
FAR struct lcddev_run_s *lcd_run =
|
||||
(FAR struct lcddev_run_s *)arg;
|
||||
|
||||
ret = priv->planeinfo.getrun(lcd_run->row, lcd_run->col,
|
||||
lcd_run->data, lcd_run->npixels);
|
||||
ret = priv->planeinfo.getrun(priv->lcd_ptr, lcd_run->row,
|
||||
lcd_run->col, lcd_run->data,
|
||||
lcd_run->npixels);
|
||||
}
|
||||
break;
|
||||
case LCDDEVIO_PUTRUN:
|
||||
@ -111,7 +112,8 @@ static int lcddev_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
FAR const struct lcddev_run_s *lcd_run =
|
||||
(FAR const struct lcddev_run_s *)arg;
|
||||
|
||||
ret = priv->planeinfo.putrun(lcd_run->row, lcd_run->col,
|
||||
ret = priv->planeinfo.putrun(priv->lcd_ptr,
|
||||
lcd_run->row, lcd_run->col,
|
||||
lcd_run->data, lcd_run->npixels);
|
||||
}
|
||||
break;
|
||||
@ -122,7 +124,8 @@ static int lcddev_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
|
||||
if (priv->planeinfo.getarea)
|
||||
{
|
||||
ret = priv->planeinfo.getarea(lcd_area->row_start,
|
||||
ret = priv->planeinfo.getarea(priv->lcd_ptr,
|
||||
lcd_area->row_start,
|
||||
lcd_area->row_end,
|
||||
lcd_area->col_start,
|
||||
lcd_area->col_end,
|
||||
@ -138,7 +141,8 @@ static int lcddev_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
|
||||
for (row = lcd_area->row_start; row <= lcd_area->row_end; row++)
|
||||
{
|
||||
ret = priv->planeinfo.getrun(row, lcd_area->col_start, buf,
|
||||
ret = priv->planeinfo.getrun(priv->lcd_ptr, row,
|
||||
lcd_area->col_start, buf,
|
||||
npixels);
|
||||
if (ret < 0)
|
||||
{
|
||||
@ -157,7 +161,8 @@ static int lcddev_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
|
||||
if (priv->planeinfo.putarea)
|
||||
{
|
||||
ret = priv->planeinfo.putarea(lcd_area->row_start,
|
||||
ret = priv->planeinfo.putarea(priv->lcd_ptr,
|
||||
lcd_area->row_start,
|
||||
lcd_area->row_end,
|
||||
lcd_area->col_start,
|
||||
lcd_area->col_end,
|
||||
@ -173,7 +178,8 @@ static int lcddev_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
||||
|
||||
for (row = lcd_area->row_start; row <= lcd_area->row_end; row++)
|
||||
{
|
||||
ret = priv->planeinfo.putrun(row, lcd_area->col_start, buf,
|
||||
ret = priv->planeinfo.putrun(priv->lcd_ptr, row,
|
||||
lcd_area->col_start, buf,
|
||||
npixels);
|
||||
if (ret < 0)
|
||||
{
|
||||
|
@ -226,7 +226,7 @@ static int lcdfb_updateearea(FAR struct fb_vtable_s *vtable,
|
||||
* memory.
|
||||
*/
|
||||
|
||||
ret = pinfo->putrun(row, startx, run, width);
|
||||
ret = pinfo->putrun(pinfo->dev, row, startx, run, width);
|
||||
if (ret < 0)
|
||||
{
|
||||
return ret;
|
||||
|
@ -82,10 +82,12 @@ static int lpm013m091a_hwinitialize(FAR struct lpm013m091a_dev_s *dev);
|
||||
|
||||
/* lcd data transfer methods */
|
||||
|
||||
static int lpm013m091a_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int lpm013m091a_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int lpm013m091a_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int lpm013m091a_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
#endif
|
||||
@ -276,7 +278,7 @@ static int lpm013m091a_hwinitialize(FAR struct lpm013m091a_dev_s *dev)
|
||||
* Write a partial raster line to the LCD.
|
||||
*
|
||||
* Parameters:
|
||||
* devno - Number of lcd device
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -290,11 +292,12 @@ static int lpm013m091a_hwinitialize(FAR struct lpm013m091a_dev_s *dev)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int lpm013m091a_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int lpm013m091a_putrun(FAR struct lcd_dev_s *lcd_dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct lpm013m091a_dev_s *dev = (FAR struct lpm013m091a_dev_s *)
|
||||
&g_lpm013m091a_dev;
|
||||
lcd_dev;
|
||||
FAR struct lpm013m091a_lcd_s *lcd = dev->lcd;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
@ -337,7 +340,7 @@ static int lpm013m091a_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Read a partial raster line from the LCD.
|
||||
*
|
||||
* Parameter:
|
||||
* devno - Number of the lcd device
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -352,8 +355,10 @@ static int lpm013m091a_putrun(fb_coord_t row, fb_coord_t col,
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
int lpm013m091a_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t * buffer,
|
||||
size_t npixels)
|
||||
static int lpm013m091a_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
lcderr("getrun is not supported for now.\n");
|
||||
return -ENOSYS;
|
||||
@ -418,6 +423,7 @@ static int lpm013m091a_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
if (dev && pinfo && planeno == 0)
|
||||
{
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, pinfo->bpp);
|
||||
|
||||
|
@ -161,10 +161,12 @@ static void max7219_deselect(FAR struct spi_dev_s *spi);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int max7219_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int max7219_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
static int max7219_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int max7219_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
|
||||
@ -389,6 +391,7 @@ static void max7219_deselect(FAR struct spi_dev_s *spi)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -397,14 +400,15 @@ static void max7219_deselect(FAR struct spi_dev_s *spi)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int max7219_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
static int max7219_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* MAX7219 device .
|
||||
*/
|
||||
|
||||
FAR struct max7219_dev_s *priv = &g_max7219dev;
|
||||
FAR struct max7219_dev_s *priv = (FAR struct max7219_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
FAR uint8_t *ptr;
|
||||
uint16_t data;
|
||||
@ -522,6 +526,7 @@ static int max7219_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -530,14 +535,15 @@ static int max7219_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int max7219_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
static int max7219_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* MAX7219 device.
|
||||
*/
|
||||
|
||||
FAR struct max7219_dev_s *priv = &g_max7219dev;
|
||||
FAR struct max7219_dev_s *priv = (FAR struct max7219_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
FAR uint8_t *ptr;
|
||||
uint8_t usrmask;
|
||||
@ -646,6 +652,8 @@ static int max7219_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
ginfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -139,9 +139,11 @@ static void memlcd_deselect(FAR struct spi_dev_s *spi);
|
||||
|
||||
/* lcd data transfer methods */
|
||||
|
||||
static int memlcd_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int memlcd_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels);
|
||||
static int memlcd_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int memlcd_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels);
|
||||
|
||||
/* lcd configuration */
|
||||
@ -383,6 +385,7 @@ static int memlcd_extcominisr(int irq, FAR void *context, void *arg)
|
||||
* This method can be used to write a partial raster line to the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -391,10 +394,11 @@ static int memlcd_extcominisr(int irq, FAR void *context, void *arg)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int memlcd_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int memlcd_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
FAR struct memlcd_dev_s *mlcd = (FAR struct memlcd_dev_s *)&g_memlcddev;
|
||||
FAR struct memlcd_dev_s *mlcd = (FAR struct memlcd_dev_s *)dev;
|
||||
uint16_t cmd;
|
||||
uint8_t *p;
|
||||
uint8_t *pfb;
|
||||
@ -475,6 +479,7 @@ static int memlcd_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD.
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -483,10 +488,11 @@ static int memlcd_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int memlcd_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int memlcd_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer, size_t npixels)
|
||||
{
|
||||
FAR struct memlcd_dev_s *mlcd = (FAR struct memlcd_dev_s *)&g_memlcddev;
|
||||
FAR struct memlcd_dev_s *mlcd = (FAR struct memlcd_dev_s *)dev;
|
||||
uint8_t *p;
|
||||
uint8_t *pfb;
|
||||
uint8_t usrmask;
|
||||
@ -574,6 +580,7 @@ static int memlcd_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -281,10 +281,12 @@ static void mio283qt2_setarea(FAR struct mio283qt2_lcd_s *lcd,
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int mio283qt2_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int mio283qt2_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int mio283qt2_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int mio283qt2_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -325,8 +327,6 @@ static inline int mio283qt2_hwinitialize(FAR struct mio283qt2_dev_s *priv);
|
||||
****************************************************************************/
|
||||
|
||||
/* This driver can support only a signal MIO283QT2 device.
|
||||
* This is due to an unfortunate decision made whent he getrun and
|
||||
* putrun methods were designed.
|
||||
* The following is the single MIO283QT2 driver state instance:
|
||||
*/
|
||||
|
||||
@ -513,6 +513,7 @@ static void mio283qt2_dumprun(FAR const char *msg,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -521,11 +522,12 @@ static void mio283qt2_dumprun(FAR const char *msg,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int mio283qt2_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int mio283qt2_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct mio283qt2_dev_s *priv = &g_lcddev;
|
||||
FAR struct mio283qt2_dev_s *priv = (FAR struct mio283qt2_dev_s *)dev;
|
||||
FAR struct mio283qt2_lcd_s *lcd = priv->lcd;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
int i;
|
||||
@ -562,6 +564,7 @@ static int mio283qt2_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -570,12 +573,13 @@ static int mio283qt2_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int mio283qt2_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int mio283qt2_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
FAR struct mio283qt2_dev_s *priv = &g_lcddev;
|
||||
FAR struct mio283qt2_dev_s *priv = (FAR struct mio283qt2_dev_s *)dev;
|
||||
FAR struct mio283qt2_lcd_s *lcd = priv->lcd;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
uint16_t accum;
|
||||
@ -662,6 +666,7 @@ static int mio283qt2_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
pinfo->getrun = mio283qt2_getrun; /* Get a run from LCD memory */
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->bpp = MIO283QT2_BPP; /* Bits-per-pixel */
|
||||
pinfo->dev = dev; /* LCD device */
|
||||
return OK;
|
||||
}
|
||||
|
||||
@ -965,9 +970,7 @@ FAR struct lcd_dev_s *mio283qt2_lcdinitialize(
|
||||
lcdinfo("Initializing\n");
|
||||
|
||||
/* If we ccould support multiple MIO283QT2 devices, this is where we
|
||||
* would allocate a new driver data structure... but we can't.
|
||||
* Why not?
|
||||
* Because of a bad should the form of the getrun() and putrun methods.
|
||||
* would allocate a new driver data structure.
|
||||
*/
|
||||
|
||||
FAR struct mio283qt2_dev_s *priv = &g_lcddev;
|
||||
|
@ -166,10 +166,12 @@ static void mio283qt9a_setarea(FAR struct mio283qt9a_lcd_s *lcd,
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int mio283qt9a_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int mio283qt9a_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int mio283qt9a_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int mio283qt9a_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -211,8 +213,6 @@ static inline int mio283qt9a_hwinitialize(
|
||||
****************************************************************************/
|
||||
|
||||
/* This driver can support only a signal MIO283QT9A device.
|
||||
* This is due to an unfortunate decision made when the getrun and putrun
|
||||
* methods were designed.
|
||||
* The following is the single MIO283QT9A driver state instance:
|
||||
*/
|
||||
|
||||
@ -416,6 +416,7 @@ static void mio283qt9a_dumprun(FAR const char *msg,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -424,11 +425,12 @@ static void mio283qt9a_dumprun(FAR const char *msg,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int mio283qt9a_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int mio283qt9a_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct mio283qt9a_dev_s *priv = &g_lcddev;
|
||||
FAR struct mio283qt9a_dev_s *priv = (FAR struct mio283qt9a_dev_s *)dev;
|
||||
FAR struct mio283qt9a_lcd_s *lcd = priv->lcd;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
int i;
|
||||
@ -464,6 +466,7 @@ static int mio283qt9a_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -472,15 +475,17 @@ static int mio283qt9a_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int mio283qt9a_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int mio283qt9a_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
FAR struct mio283qt9a_dev_s *priv = &g_lcddev;
|
||||
FAR struct mio283qt9a_dev_s *priv = (FAR struct mio283qt9a_dev_s *)dev;
|
||||
FAR struct mio283qt9a_lcd_s *lcd = priv->lcd;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
uint16_t accum, test;
|
||||
uint16_t accum;
|
||||
uint16_t test;
|
||||
int i;
|
||||
|
||||
/* Buffer must be provided and aligned to a 16-bit address boundary */
|
||||
@ -562,6 +567,7 @@ static int mio283qt9a_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
pinfo->getrun = mio283qt9a_getrun; /* Get a run from LCD memory */
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->bpp = MIO283QT9A_BPP; /* Bits-per-pixel */
|
||||
pinfo->dev = dev; /* The lcd device */
|
||||
|
||||
return OK;
|
||||
}
|
||||
@ -851,9 +857,7 @@ FAR struct lcd_dev_s *mio283qt9a_lcdinitialize(
|
||||
lcdinfo("Initializing\n");
|
||||
|
||||
/* If we could support multiple MIO283QT9A devices, this is where we would
|
||||
* allocate a new driver data structure... but we can't.
|
||||
* Why not?
|
||||
* Because of a bad should the form of the getrun() and putrun methods.
|
||||
* allocate a new driver data structure.
|
||||
*/
|
||||
|
||||
priv = &g_lcddev;
|
||||
|
@ -201,10 +201,12 @@ static void rit_sndcmds(FAR struct rit_dev_s *priv,
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int rit_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int rit_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int rit_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int rit_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -634,6 +636,7 @@ static inline void rit_clear(FAR struct rit_dev_s *priv)
|
||||
* This method can be used to write a partial raster line to the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -643,11 +646,12 @@ static inline void rit_clear(FAR struct rit_dev_s *priv)
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_P14201_FRAMEBUFFER
|
||||
static int rit_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int rit_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct rit_dev_s *priv = (FAR struct rit_dev_s *)&g_oleddev;
|
||||
FAR struct rit_dev_s *priv = (FAR struct rit_dev_s *)dev;
|
||||
uint8_t cmd[3];
|
||||
uint8_t *run;
|
||||
int start;
|
||||
@ -809,11 +813,12 @@ static int rit_putrun(fb_coord_t row, fb_coord_t col,
|
||||
return OK;
|
||||
}
|
||||
#else
|
||||
static int rit_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int rit_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct rit_dev_s *priv = (FAR struct rit_dev_s *)&g_oleddev;
|
||||
FAR struct rit_dev_s *priv = (FAR struct rit_dev_s *)dev;
|
||||
uint8_t cmd[3];
|
||||
|
||||
ritinfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
@ -871,6 +876,7 @@ static int rit_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -880,7 +886,9 @@ static int rit_putrun(fb_coord_t row, fb_coord_t col,
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_P14201_FRAMEBUFFER
|
||||
static int rit_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
static int rit_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
uint8_t *run;
|
||||
@ -980,8 +988,8 @@ static int rit_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
return OK;
|
||||
}
|
||||
#else
|
||||
static int rit_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int rit_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
/* Can't read from OLED GDDRAM in SPI mode */
|
||||
|
||||
@ -1023,6 +1031,7 @@ static int rit_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(pinfo && planeno == 0);
|
||||
ginfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -210,9 +210,11 @@ static void pcd8544_deselect(FAR struct spi_dev_s *spi);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int pcd8544_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int pcd8544_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int pcd8544_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int pcd8544_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
@ -409,6 +411,7 @@ static void pcd8544_deselect(FAR struct spi_dev_s *spi)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -417,14 +420,15 @@ static void pcd8544_deselect(FAR struct spi_dev_s *spi)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int pcd8544_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int pcd8544_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* PCD8544 device
|
||||
*/
|
||||
|
||||
FAR struct pcd8544_dev_s *priv = &g_pcd8544dev;
|
||||
FAR struct pcd8544_dev_s *priv = (FAR struct pcd8544_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
FAR uint8_t *ptr;
|
||||
uint8_t fbmask;
|
||||
@ -559,6 +563,7 @@ static int pcd8544_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -567,14 +572,15 @@ static int pcd8544_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int pcd8544_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int pcd8544_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* PCD8544 device
|
||||
*/
|
||||
|
||||
FAR struct pcd8544_dev_s *priv = &g_pcd8544dev;
|
||||
FAR struct pcd8544_dev_s *priv = (FAR struct pcd8544_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
uint8_t page;
|
||||
uint8_t fbmask;
|
||||
@ -716,6 +722,7 @@ static int pcd8544_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
ginfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -263,10 +263,12 @@ static void ra8875_showrun(FAR struct ra8875_dev_s *priv, fb_coord_t row,
|
||||
# define ra8875_showrun(p,r,c,n,b)
|
||||
#endif
|
||||
|
||||
static int ra8875_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ra8875_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int ra8875_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ra8875_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -306,9 +308,8 @@ static inline int ra8875_hwinitialize(FAR struct ra8875_dev_s *priv);
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/* This driver can support only a signal RA8875 device. This is due to an
|
||||
* unfortunate decision made when the getrun and putrun methods were
|
||||
* designed. The following is the single RA8875 driver state instance:
|
||||
/* This driver can support only a signal RA8875 device.
|
||||
* The following is the single RA8875 driver state instance:
|
||||
*/
|
||||
|
||||
static struct ra8875_dev_s g_lcddev;
|
||||
@ -617,6 +618,7 @@ static void ra8875_showrun(FAR struct ra8875_dev_s *priv, fb_coord_t row,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -625,11 +627,12 @@ static void ra8875_showrun(FAR struct ra8875_dev_s *priv, fb_coord_t row,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ra8875_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ra8875_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct ra8875_dev_s *priv = &g_lcddev;
|
||||
FAR struct ra8875_dev_s *priv = (FAR struct ra8875_dev_s *)dev;
|
||||
FAR struct ra8875_lcd_s *lcd = priv->lcd;
|
||||
int16_t curhinc = 0;
|
||||
int16_t curvinc = 0;
|
||||
@ -737,6 +740,7 @@ static int ra8875_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -745,11 +749,13 @@ static int ra8875_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ra8875_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
static int ra8875_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
FAR struct ra8875_dev_s *priv = &g_lcddev;
|
||||
FAR struct ra8875_dev_s *priv = (FAR struct ra8875_dev_s *)dev;
|
||||
FAR struct ra8875_lcd_s *lcd = priv->lcd;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
int i;
|
||||
@ -876,6 +882,7 @@ static int ra8875_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
pinfo->getrun = ra8875_getrun; /* Get a run from LCD memory */
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->bpp = RA8875_BPP; /* Bits-per-pixel */
|
||||
pinfo->dev = dev; /* The lcd device */
|
||||
return OK;
|
||||
}
|
||||
|
||||
@ -891,8 +898,10 @@ static int ra8875_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
|
||||
static int ra8875_getpower(FAR struct lcd_dev_s *dev)
|
||||
{
|
||||
FAR struct ra8875_dev_s *priv = (FAR struct ra8875_dev_s *)dev;
|
||||
|
||||
lcdinfo("power: %d\n", 0);
|
||||
return g_lcddev.power;
|
||||
return priv->power;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -916,9 +925,6 @@ static int ra8875_poweroff(FAR struct ra8875_lcd_s *lcd)
|
||||
|
||||
ra8875_putreg(lcd, RA8875_PWRR, RA8875_PWRR_DISPLAY_OFF);
|
||||
|
||||
/* Remember the power off state */
|
||||
|
||||
g_lcddev.power = 0;
|
||||
return OK;
|
||||
}
|
||||
|
||||
@ -944,7 +950,7 @@ static int ra8875_setpower(FAR struct lcd_dev_s *dev, int power)
|
||||
|
||||
if (power > 0)
|
||||
{
|
||||
if (g_lcddev.power == 0)
|
||||
if (priv->power == 0)
|
||||
{
|
||||
/* Set the backlight level */
|
||||
|
||||
@ -959,13 +965,17 @@ static int ra8875_setpower(FAR struct lcd_dev_s *dev, int power)
|
||||
|
||||
ra8875_putreg(lcd, RA8875_PWRR, RA8875_PWRR_DISPLAY_ON);
|
||||
|
||||
g_lcddev.power = power;
|
||||
priv->power = power;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Turn the display off */
|
||||
|
||||
ra8875_poweroff(lcd);
|
||||
|
||||
/* Remember the power off state */
|
||||
|
||||
priv->power = 0;
|
||||
}
|
||||
|
||||
return OK;
|
||||
@ -1125,9 +1135,7 @@ FAR struct lcd_dev_s *ra8875_lcdinitialize(FAR struct ra8875_lcd_s *lcd)
|
||||
lcdinfo("Initializing\n");
|
||||
|
||||
/* If we could support multiple RA8875 devices, this is where we would
|
||||
* allocate a new driver data structure... but we can't.
|
||||
* Why not? Because of a bad should the form of the getrun() and putrun
|
||||
* methods.
|
||||
* allocate a new driver data structure.
|
||||
*/
|
||||
|
||||
FAR struct ra8875_dev_s *priv = &g_lcddev;
|
||||
@ -1157,7 +1165,7 @@ FAR struct lcd_dev_s *ra8875_lcdinitialize(FAR struct ra8875_lcd_s *lcd)
|
||||
|
||||
lcdinfo("Initialized\n");
|
||||
|
||||
return &g_lcddev.dev;
|
||||
return &priv->dev;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -106,10 +106,12 @@ struct skel_dev_s
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int skel_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int skel_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int skel_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int skel_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -135,10 +137,10 @@ static int skel_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
|
||||
/* LCD Specific Controls */
|
||||
|
||||
static int skel_getpower(struct lcd_dev_s *dev);
|
||||
static int skel_setpower(struct lcd_dev_s *dev, int power);
|
||||
static int skel_getcontrast(struct lcd_dev_s *dev);
|
||||
static int skel_setcontrast(struct lcd_dev_s *dev,
|
||||
static int skel_getpower(FAR struct lcd_dev_s *dev);
|
||||
static int skel_setpower(FAR struct lcd_dev_s *dev, int power);
|
||||
static int skel_getcontrast(FAR struct lcd_dev_s *dev);
|
||||
static int skel_setcontrast(FAR struct lcd_dev_s *dev,
|
||||
unsigned int contrast);
|
||||
|
||||
/****************************************************************************
|
||||
@ -220,7 +222,8 @@ static struct skel_dev_s g_lcddev =
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int skel_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int skel_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
@ -250,7 +253,9 @@ static int skel_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int skel_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
static int skel_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Buffer must be provided and aligned to a 16-bit address boundary */
|
||||
@ -327,7 +332,7 @@ static int skel_getpower(struct lcd_dev_s *dev)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int skel_setpower(struct lcd_dev_s *dev, int power)
|
||||
static int skel_setpower(FAR struct lcd_dev_s *dev, int power)
|
||||
{
|
||||
struct skel_dev_s *priv = (struct skel_dev_s *)dev;
|
||||
|
||||
@ -348,7 +353,7 @@ static int skel_setpower(struct lcd_dev_s *dev, int power)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int skel_getcontrast(struct lcd_dev_s *dev)
|
||||
static int skel_getcontrast(FAR struct lcd_dev_s *dev)
|
||||
{
|
||||
ginfo("Not implemented\n");
|
||||
#warning "Missing logic"
|
||||
@ -363,7 +368,7 @@ static int skel_getcontrast(struct lcd_dev_s *dev)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int skel_setcontrast(struct lcd_dev_s *dev, unsigned int contrast)
|
||||
static int skel_setcontrast(FAR struct lcd_dev_s *dev, unsigned int contrast)
|
||||
{
|
||||
ginfo("contrast: %d\n", contrast);
|
||||
#warning "Missing logic"
|
||||
@ -380,8 +385,8 @@ static int skel_setcontrast(struct lcd_dev_s *dev, unsigned int contrast)
|
||||
* Description:
|
||||
* Initialize the LCD video hardware.
|
||||
* The initial state of the LCD is fully initialized, display memory
|
||||
* cleared, and the LCD ready to use, but with the power setting at 0
|
||||
* (full off).
|
||||
* cleared, and the LCD ready to use, but with the power setting at 0
|
||||
* (full off).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
@ -293,10 +293,12 @@ static void ssd1289_showrun(FAR struct ssd1289_dev_s *priv, fb_coord_t row,
|
||||
# define ssd1289_showrun(p,r,c,n,b)
|
||||
#endif
|
||||
|
||||
static int ssd1289_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ssd1289_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int ssd1289_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ssd1289_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -336,9 +338,8 @@ static inline int ssd1289_hwinitialize(FAR struct ssd1289_dev_s *priv);
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/* This driver can support only a signal SSD1289 device. This is due to an
|
||||
* unfortunate decision made whent he getrun and putrun methods were
|
||||
* designed. The following is the single SSD1289 driver state instance:
|
||||
/* This driver can support only a signal SSD1289 device.
|
||||
* The following is the single SSD1289 driver state instance:
|
||||
*/
|
||||
|
||||
static struct ssd1289_dev_s g_lcddev;
|
||||
@ -580,6 +581,7 @@ static void ssd1289_showrun(FAR struct ssd1289_dev_s *priv, fb_coord_t row,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -588,11 +590,12 @@ static void ssd1289_showrun(FAR struct ssd1289_dev_s *priv, fb_coord_t row,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ssd1289_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ssd1289_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct ssd1289_dev_s *priv = &g_lcddev;
|
||||
FAR struct ssd1289_dev_s *priv = (FAR struct ssd1289_dev_s *)dev;
|
||||
FAR struct ssd1289_lcd_s *lcd = priv->lcd;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
int i;
|
||||
@ -713,6 +716,7 @@ static int ssd1289_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -721,12 +725,13 @@ static int ssd1289_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ssd1289_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ssd1289_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
FAR struct ssd1289_dev_s *priv = &g_lcddev;
|
||||
FAR struct ssd1289_dev_s *priv = (FAR struct ssd1289_dev_s *)dev;
|
||||
FAR struct ssd1289_lcd_s *lcd = priv->lcd;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
uint16_t accum;
|
||||
@ -889,6 +894,7 @@ static int ssd1289_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
pinfo->getrun = ssd1289_getrun; /* Get a run from LCD memory */
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->bpp = SSD1289_BPP; /* Bits-per-pixel */
|
||||
pinfo->dev = dev; /* The lcd device */
|
||||
return OK;
|
||||
}
|
||||
|
||||
@ -1335,10 +1341,8 @@ FAR struct lcd_dev_s *ssd1289_lcdinitialize(FAR struct ssd1289_lcd_s *lcd)
|
||||
|
||||
lcdinfo("Initializing\n");
|
||||
|
||||
/* If we ccould support multiple SSD1289 devices, this is where we would
|
||||
* allocate a new driver data structure... but we can't.
|
||||
* Why not? Because of a bad should the form of the getrun() and
|
||||
* putrun methods.
|
||||
/* If we support multiple SSD1289 devices, this is where we would allocate
|
||||
* a new driver data structure.
|
||||
*/
|
||||
|
||||
FAR struct ssd1289_dev_s *priv = &g_lcddev;
|
||||
|
@ -283,6 +283,7 @@ struct ssd1306_dev_s
|
||||
FAR struct i2c_master_s *i2c; /* Cached I2C device reference */
|
||||
uint8_t addr; /* 7-bit I2C address */
|
||||
#endif
|
||||
uint8_t devno; /* LCD device instance */
|
||||
uint8_t contrast; /* Current contrast setting */
|
||||
bool on; /* true: display is on */
|
||||
bool is_conf; /* true: display had been configured */
|
||||
@ -296,6 +297,7 @@ struct ssd1306_dev_s
|
||||
*/
|
||||
|
||||
uint8_t fb[SSD1306_DEV_FBSIZE];
|
||||
uint8_t runbuffer[SSD1306_DEV_ROWSIZE];
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -139,10 +139,12 @@
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int ssd1306_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int ssd1306_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
static int ssd1306_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int ssd1306_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
|
||||
@ -180,19 +182,6 @@ static int ssd1306_redrawfb(struct ssd1306_dev_s *priv);
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/* This is working memory allocated by the LCD driver for each LCD device
|
||||
* and for each color plane. This memory will hold one raster line of data.
|
||||
* The size of the allocated run buffer must therefore be at least
|
||||
* (bpp * xres / 8). Actual alignment of the buffer must conform to the
|
||||
* bitwidth of the underlying pixel type.
|
||||
*
|
||||
* If there are multiple planes, they may share the same working buffer
|
||||
* because different planes will not be operate on concurrently. However,
|
||||
* if there are multiple LCD devices, they must each have unique run buffers.
|
||||
*/
|
||||
|
||||
static uint8_t g_runbuffer[SSD1306_DEV_ROWSIZE];
|
||||
|
||||
/* This structure describes the overall LCD video controller */
|
||||
|
||||
static const struct fb_videoinfo_s g_videoinfo =
|
||||
@ -203,16 +192,6 @@ static const struct fb_videoinfo_s g_videoinfo =
|
||||
.nplanes = 1, /* Number of color planes supported */
|
||||
};
|
||||
|
||||
/* This is the standard, NuttX Plane information object */
|
||||
|
||||
static const struct lcd_planeinfo_s g_planeinfo =
|
||||
{
|
||||
.putrun = ssd1306_putrun, /* Put a run into LCD memory */
|
||||
.getrun = ssd1306_getrun, /* Get a run from LCD memory */
|
||||
.buffer = (FAR uint8_t *)g_runbuffer, /* Run scratch buffer */
|
||||
.bpp = SSD1306_DEV_BPP, /* Bits-per-pixel */
|
||||
};
|
||||
|
||||
/* This is the outside visible interface for the OLED driver */
|
||||
|
||||
static const struct lcd_dev_s g_oleddev_dev =
|
||||
@ -238,7 +217,7 @@ static const struct lcd_dev_s g_oleddev_dev =
|
||||
* for now.
|
||||
*/
|
||||
|
||||
static struct ssd1306_dev_s g_oleddev;
|
||||
static struct ssd1306_dev_s g_oleddev[CONFIG_SSD1306_NUMDEVS];
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
@ -260,11 +239,11 @@ static struct ssd1306_dev_s g_oleddev;
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RLANDSCAPE)
|
||||
static int ssd1306_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
static int ssd1306_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct ssd1306_dev_s *priv = (FAR struct ssd1306_dev_s *)&g_oleddev;
|
||||
FAR struct ssd1306_dev_s *priv = (FAR struct ssd1306_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
FAR uint8_t *ptr;
|
||||
uint8_t devcol;
|
||||
@ -489,10 +468,11 @@ static int ssd1306_putrun(fb_coord_t row, fb_coord_t col,
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RLANDSCAPE)
|
||||
static int ssd1306_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
static int ssd1306_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct ssd1306_dev_s *priv = &g_oleddev;
|
||||
FAR struct ssd1306_dev_s *priv = (FAR struct ssd1306_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
uint8_t page;
|
||||
uint8_t fbmask;
|
||||
@ -664,10 +644,19 @@ static int ssd1306_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
unsigned int planeno,
|
||||
FAR struct lcd_planeinfo_s *pinfo)
|
||||
{
|
||||
FAR struct ssd1306_dev_s *priv = (FAR struct ssd1306_dev_s *)dev;
|
||||
|
||||
DEBUGASSERT(pinfo && planeno == 0);
|
||||
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, SSD1306_DEV_BPP);
|
||||
|
||||
memset(pinfo, 0, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->putrun = ssd1306_putrun;
|
||||
pinfo->getrun = ssd1306_getrun;
|
||||
pinfo->bpp = SSD1306_DEV_BPP;
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer;
|
||||
pinfo->dev = dev;
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
@ -1434,12 +1423,13 @@ FAR struct lcd_dev_s *ssd1306_initialize(FAR struct i2c_master_s *dev,
|
||||
unsigned int devno)
|
||||
#endif
|
||||
{
|
||||
FAR struct ssd1306_dev_s *priv = &g_oleddev;
|
||||
FAR struct ssd1306_dev_s *priv = &g_oleddev[devno];
|
||||
|
||||
priv->dev = g_oleddev_dev;
|
||||
|
||||
DEBUGASSERT(dev && devno == 0);
|
||||
DEBUGASSERT(dev && devno < CONFIG_SSD1306_NUMDEVS);
|
||||
|
||||
priv->devno = (uint8_t)devno;
|
||||
priv->on = false;
|
||||
priv->is_conf = false;
|
||||
|
||||
|
@ -118,7 +118,7 @@ void ssd1306_select(FAR struct ssd1306_dev_s *priv, bool cs)
|
||||
|
||||
/* Select/deselect SPI device */
|
||||
|
||||
SPI_SELECT(priv->spi, SPIDEV_DISPLAY(0), cs);
|
||||
SPI_SELECT(priv->spi, SPIDEV_DISPLAY(priv->devno), cs);
|
||||
|
||||
/* If we are deselecting the device */
|
||||
|
||||
@ -142,6 +142,6 @@ void ssd1306_cmddata(FAR struct ssd1306_dev_s *priv, bool cmd)
|
||||
{
|
||||
/* Select command transfer */
|
||||
|
||||
SPI_CMDDATA(priv->spi, SPIDEV_DISPLAY(0), cmd);
|
||||
SPI_CMDDATA(priv->spi, SPIDEV_DISPLAY(priv->devno), cmd);
|
||||
}
|
||||
#endif /* CONFIG_LCD_SSD1306 && CONFIG_LCD_SSD1306_SPI */
|
||||
|
@ -408,9 +408,11 @@ static void ssd1351_write(FAR struct ssd1351_dev_s *priv, uint8_t cmd,
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int ssd1351_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ssd1351_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int ssd1351_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ssd1351_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
@ -690,6 +692,7 @@ static void ssd1351_setcursor(FAR struct ssd1351_dev_s *priv, uint8_t col,
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -698,10 +701,11 @@ static void ssd1351_setcursor(FAR struct ssd1351_dev_s *priv, uint8_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ssd1351_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ssd1351_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct ssd1351_dev_s *priv = &g_lcddev;
|
||||
FAR struct ssd1351_dev_s *priv = (FAR struct ssd1351_dev_s *)dev;
|
||||
|
||||
/* Sanity check */
|
||||
|
||||
@ -736,6 +740,7 @@ static int ssd1351_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* This method can be used to read a partial raster line from the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read from (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -744,11 +749,12 @@ static int ssd1351_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ssd1351_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ssd1351_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
#if defined(CONFIG_SSD1351_PARALLEL8BIT) && !defined(CONFIG_LCD_NOGETRUN)
|
||||
FAR struct ssd1351_dev_s *priv = &g_lcddev;
|
||||
FAR struct ssd1351_dev_s *priv = (FAR struct ssd1351_dev_s *)dev;
|
||||
|
||||
/* Sanity check */
|
||||
|
||||
@ -822,6 +828,7 @@ static int ssd1351_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
pinfo->getrun = ssd1351_getrun;
|
||||
pinfo->buffer = (uint8_t *)priv->runbuffer;
|
||||
pinfo->bpp = SSD1351_BPP;
|
||||
pinfo->dev = dev;
|
||||
|
||||
ginfo("planeno: %u bpp: %u\n", planeno, pinfo->bpp);
|
||||
return OK;
|
||||
|
@ -163,11 +163,13 @@ static void ssd1680_configspi(FAR struct spi_dev_s *spi);
|
||||
static void ssd1680_select(FAR struct ssd1680_dev_s *priv, bool cs);
|
||||
static void ssd1680_cmddata(FAR struct ssd1680_dev_s *priv, bool cmd);
|
||||
|
||||
static int ssd1680_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int ssd1680_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
static int ssd1680_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
static int ssd1680_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
|
||||
@ -287,6 +289,7 @@ static const uint8_t ssd1680_lut[] =
|
||||
* This method can be used to write a partial raster line to the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -295,10 +298,11 @@ static const uint8_t ssd1680_lut[] =
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ssd1680_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
static int ssd1680_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
FAR struct ssd1680_dev_s *priv = (FAR struct ssd1680_dev_s *)&g_epaperdev;
|
||||
FAR struct ssd1680_dev_s *priv = (FAR struct ssd1680_dev_s *)dev;
|
||||
|
||||
uint8_t *dst = priv->shadow_fb +
|
||||
row * SSD1680_DEV_ROWSIZE + (col >> SSD1680_PDF);
|
||||
@ -324,6 +328,7 @@ static int ssd1680_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
* Input Parameters:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read
|
||||
* (range: 0 <= col <= xres-npixels)
|
||||
@ -332,11 +337,12 @@ static int ssd1680_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* (range: 0 < npixels <= xres-col)
|
||||
*/
|
||||
|
||||
static int ssd1680_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
static int ssd1680_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
lcdinfo("(%d, %d, %d)\n", row, col, npixels);
|
||||
FAR struct ssd1680_dev_s *priv = (FAR struct ssd1680_dev_s *)&g_epaperdev;
|
||||
FAR struct ssd1680_dev_s *priv = (FAR struct ssd1680_dev_s *)dev;
|
||||
|
||||
bitscpy_ss(buffer,
|
||||
priv->shadow_fb + row * SSD1680_DEV_FBSIZE + (col >> SSD1680_PDF),
|
||||
@ -381,6 +387,7 @@ static int ssd1680_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -192,10 +192,11 @@ static inline int st7565_backlight(FAR struct st7565_dev_s *priv, int level);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int st7565_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels);
|
||||
static int st7565_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer,
|
||||
static int st7565_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int st7565_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
/* LCD Configuration */
|
||||
@ -416,6 +417,7 @@ static inline int st7565_backlight(FAR struct st7565_dev_s *priv, int level)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -424,14 +426,11 @@ static inline int st7565_backlight(FAR struct st7565_dev_s *priv, int level)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int st7565_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t * buffer, size_t npixels)
|
||||
static int st7565_putrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* ST7565 device.
|
||||
*/
|
||||
|
||||
FAR struct st7565_dev_s *priv = &g_st7565dev;
|
||||
FAR struct st7565_dev_s *priv = (FAR struct st7565_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
FAR uint8_t *ptr;
|
||||
uint8_t fbmask;
|
||||
@ -578,15 +577,11 @@ static int st7565_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int st7565_getrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t * buffer,
|
||||
static int st7565_getrun(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* ST7565 device.
|
||||
*/
|
||||
|
||||
FAR struct st7565_dev_s *priv = &g_st7565dev;
|
||||
FAR struct st7565_dev_s *priv = (FAR struct st7565_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
uint8_t page;
|
||||
uint8_t fbmask;
|
||||
|
@ -224,10 +224,12 @@ static void st7567_deselect(FAR struct spi_dev_s *spi);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int st7567_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7567_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int st7567_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7567_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -395,6 +397,7 @@ static void st7567_deselect(FAR struct spi_dev_s *spi)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -403,15 +406,12 @@ static void st7567_deselect(FAR struct spi_dev_s *spi)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int st7567_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7567_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* ST7567 device
|
||||
*/
|
||||
|
||||
FAR struct st7567_dev_s *priv = &g_st7567dev;
|
||||
FAR struct st7567_dev_s *priv = (FAR struct st7567_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
FAR uint8_t *ptr;
|
||||
uint8_t fbmask;
|
||||
@ -547,6 +547,7 @@ static int st7567_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -555,14 +556,12 @@ static int st7567_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int st7567_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int st7567_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* ST7567 device
|
||||
*/
|
||||
|
||||
FAR struct st7567_dev_s *priv = &g_st7567dev;
|
||||
FAR struct st7567_dev_s *priv = (FAR struct st7567_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
uint8_t page;
|
||||
uint8_t fbmask;
|
||||
@ -704,6 +703,7 @@ static int st7567_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
ginfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -208,10 +208,12 @@ static void st7735_fill(FAR struct st7735_dev_s *dev, uint16_t color);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int st7735_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7735_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int st7735_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7735_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
#endif
|
||||
|
||||
@ -520,6 +522,7 @@ static void st7735_fill(FAR struct st7735_dev_s *dev, uint16_t color)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -528,10 +531,11 @@ static void st7735_fill(FAR struct st7735_dev_s *dev, uint16_t color)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int st7735_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7735_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct st7735_dev_s *priv = &g_lcddev;
|
||||
FAR struct st7735_dev_s *priv = (FAR struct st7735_dev_s *)dev;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
ginfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
@ -558,10 +562,11 @@ static int st7735_putrun(fb_coord_t row, fb_coord_t col,
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int st7735_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int st7735_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct st7735_dev_s *priv = &g_lcddev;
|
||||
FAR struct st7735_dev_s *priv = (FAR struct st7735_dev_s *)dev;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
|
||||
ginfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
@ -619,6 +624,7 @@ static int st7735_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
#endif
|
||||
pinfo->buffer = (FAR uint8_t *)priv->runbuffer; /* Run scratch buffer */
|
||||
pinfo->bpp = priv->bpp; /* Bits-per-pixel */
|
||||
pinfo->dev = dev; /* The lcd device */
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -195,13 +195,16 @@ static void st7789_fill(FAR struct st7789_dev_s *dev, uint16_t color);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int st7789_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7789_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int st7789_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
static int st7789_putarea(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row_start, fb_coord_t row_end,
|
||||
fb_coord_t col_start, fb_coord_t col_end,
|
||||
FAR const uint8_t *buffer);
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int st7789_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7789_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels);
|
||||
#endif
|
||||
|
||||
@ -503,6 +506,7 @@ static void st7789_fill(FAR struct st7789_dev_s *dev, uint16_t color)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -511,10 +515,11 @@ static void st7789_fill(FAR struct st7789_dev_s *dev, uint16_t color)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int st7789_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int st7789_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct st7789_dev_s *priv = &g_lcddev;
|
||||
FAR struct st7789_dev_s *priv = (FAR struct st7789_dev_s *)dev;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
ginfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
@ -532,6 +537,7 @@ static int st7789_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to write a partial area to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row_start - Starting row to write to (range: 0 <= row < yres)
|
||||
* row_end - Ending row to write to (range: row_start <= row < yres)
|
||||
* col_start - Starting column to write to (range: 0 <= col <= xres)
|
||||
@ -541,11 +547,12 @@ static int st7789_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int st7789_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
static int st7789_putarea(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row_start, fb_coord_t row_end,
|
||||
fb_coord_t col_start, fb_coord_t col_end,
|
||||
FAR const uint8_t *buffer)
|
||||
{
|
||||
FAR struct st7789_dev_s *priv = &g_lcddev;
|
||||
FAR struct st7789_dev_s *priv = (FAR struct st7789_dev_s *)dev;
|
||||
FAR const uint16_t *src = (FAR const uint16_t *)buffer;
|
||||
|
||||
ginfo("row_start: %d row_end: %d col_start: %d col_end: %d\n",
|
||||
@ -566,6 +573,7 @@ static int st7789_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -575,10 +583,11 @@ static int st7789_putarea(fb_coord_t row_start, fb_coord_t row_end,
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_LCD_NOGETRUN
|
||||
static int st7789_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int st7789_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
FAR struct st7789_dev_s *priv = &g_lcddev;
|
||||
FAR struct st7789_dev_s *priv = (FAR struct st7789_dev_s *)dev;
|
||||
FAR uint16_t *dest = (FAR uint16_t *)buffer;
|
||||
|
||||
ginfo("row: %d col: %d npixels: %d\n", row, col, npixels);
|
||||
|
@ -290,9 +290,11 @@ static void ug2864ambag01_unlock(FAR struct spi_dev_s *spi);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int ug2864ambag01_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ug2864ambag01_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
static int ug2864ambag01_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ug2864ambag01_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -455,6 +457,7 @@ static inline void ug2864ambag01_unlock(FAR struct spi_dev_s *spi)
|
||||
* This method can be used to write a partial raster line to the LCD.
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -464,16 +467,12 @@ static inline void ug2864ambag01_unlock(FAR struct spi_dev_s *spi)
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RLANDSCAPE)
|
||||
static int ug2864ambag01_putrun(fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
static int ug2864ambag01_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* UG device
|
||||
*/
|
||||
|
||||
FAR struct ug2864ambag01_dev_s *priv =
|
||||
(FAR struct ug2864ambag01_dev_s *)&g_oleddev;
|
||||
FAR struct ug2864ambag01_dev_s *priv = (FAR struct ug2864ambag01_dev_s *)
|
||||
dev;
|
||||
FAR uint8_t *fbptr;
|
||||
FAR uint8_t *ptr;
|
||||
uint8_t devcol;
|
||||
@ -673,6 +672,7 @@ static int ug2864ambag01_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD.
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -682,15 +682,13 @@ static int ug2864ambag01_putrun(fb_coord_t row, fb_coord_t col,
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RLANDSCAPE)
|
||||
static int ug2864ambag01_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ug2864ambag01_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* UG device
|
||||
*/
|
||||
|
||||
FAR struct ug2864ambag01_dev_s *priv = &g_oleddev;
|
||||
FAR struct ug2864ambag01_dev_s *priv = (FAR struct ug2864ambag01_dev_s *)
|
||||
dev;
|
||||
FAR uint8_t *fbptr;
|
||||
uint8_t page;
|
||||
uint8_t fbmask;
|
||||
@ -867,6 +865,7 @@ static int ug2864ambag01_getplaneinfo(FAR struct lcd_dev_s *dev,
|
||||
DEBUGASSERT(pinfo && planeno == 0);
|
||||
lcdinfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -234,10 +234,12 @@ static void ug_deselect(FAR struct spi_dev_s *spi);
|
||||
|
||||
/* LCD Data Transfer Methods */
|
||||
|
||||
static int ug_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ug_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
static int ug_getrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ug_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
|
||||
@ -432,6 +434,7 @@ static void ug_deselect(FAR struct spi_dev_s *spi)
|
||||
* Description:
|
||||
* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -440,15 +443,12 @@ static void ug_deselect(FAR struct spi_dev_s *spi)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ug_putrun(fb_coord_t row, fb_coord_t col,
|
||||
static int ug_putrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* UG device
|
||||
*/
|
||||
|
||||
FAR struct ug_dev_s *priv = &g_ugdev;
|
||||
FAR struct ug_dev_s *priv = (FAR struct ug_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
FAR uint8_t *ptr;
|
||||
uint8_t devcol;
|
||||
@ -634,6 +634,7 @@ static int ug_putrun(fb_coord_t row, fb_coord_t col,
|
||||
* Description:
|
||||
* This method can be used to read a partial raster line from the LCD.
|
||||
*
|
||||
* dev - The lcd device
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer in which to return the run read from the LCD
|
||||
@ -642,14 +643,12 @@ static int ug_putrun(fb_coord_t row, fb_coord_t col,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int ug_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
static int ug_getrun(FAR struct lcd_dev_s *dev,
|
||||
fb_coord_t row, fb_coord_t col,
|
||||
FAR uint8_t *buffer,
|
||||
size_t npixels)
|
||||
{
|
||||
/* Because of this line of code, we will only be able to support a single
|
||||
* UG device
|
||||
*/
|
||||
|
||||
FAR struct ug_dev_s *priv = &g_ugdev;
|
||||
FAR struct ug_dev_s *priv = (FAR struct ug_dev_s *)dev;
|
||||
FAR uint8_t *fbptr;
|
||||
uint8_t page;
|
||||
uint8_t fbmask;
|
||||
@ -822,6 +821,7 @@ static int ug_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int planeno,
|
||||
DEBUGASSERT(dev && pinfo && planeno == 0);
|
||||
ginfo("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp);
|
||||
memcpy(pinfo, &g_planeinfo, sizeof(struct lcd_planeinfo_s));
|
||||
pinfo->dev = dev;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -92,7 +92,7 @@ void NXGL_FUNCNAME(nxgl_copyrectangle, NXGLIB_SUFFIX)
|
||||
pinfo->buffer,
|
||||
remainder,
|
||||
ncols);
|
||||
pinfo->putrun(row, dest->pt1.x, pinfo->buffer, ncols);
|
||||
pinfo->putrun(pinfo->dev, row, dest->pt1.x, pinfo->buffer, ncols);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@ -101,7 +101,7 @@ void NXGL_FUNCNAME(nxgl_copyrectangle, NXGLIB_SUFFIX)
|
||||
* Copy the image data directly from the image memory.
|
||||
*/
|
||||
|
||||
pinfo->putrun(row, dest->pt1.x, sline, ncols);
|
||||
pinfo->putrun(pinfo->dev, row, dest->pt1.x, sline, ncols);
|
||||
}
|
||||
|
||||
/* Then adjust the source pointer to refer to the next line in
|
||||
|
@ -78,6 +78,6 @@ void NXGL_FUNCNAME(nxgl_fillrectangle, NXGLIB_SUFFIX)
|
||||
{
|
||||
/* Draw the raster line at this row */
|
||||
|
||||
pinfo->putrun(row, rect->pt1.x, pinfo->buffer, ncols);
|
||||
pinfo->putrun(pinfo->dev, row, rect->pt1.x, pinfo->buffer, ncols);
|
||||
}
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ void NXGL_FUNCNAME(nxgl_filltrapezoid, NXGLIB_SUFFIX)
|
||||
/* Then draw the run from ix1 to ix2 at row */
|
||||
|
||||
ncols = ix2 - ix1 + 1;
|
||||
pinfo->putrun(row, ix1, pinfo->buffer, ncols);
|
||||
pinfo->putrun(pinfo->dev, row, ix1, pinfo->buffer, ncols);
|
||||
}
|
||||
|
||||
/* Add the dx/dy value to get the run positions on the next row */
|
||||
|
@ -66,7 +66,7 @@ void NXGL_FUNCNAME(nxgl_getrectangle, NXGLIB_SUFFIX)
|
||||
|
||||
for (srcrow = rect->pt1.y; srcrow <= rect->pt2.y; srcrow++)
|
||||
{
|
||||
pinfo->getrun(srcrow, rect->pt1.x, dline, ncols);
|
||||
pinfo->getrun(pinfo->dev, srcrow, rect->pt1.x, dline, ncols);
|
||||
dline += deststride;
|
||||
}
|
||||
}
|
||||
|
@ -72,8 +72,10 @@ void NXGL_FUNCNAME(nxgl_moverectangle, NXGLIB_SUFFIX)
|
||||
srcrow <= rect->pt2.y;
|
||||
srcrow++, destrow++)
|
||||
{
|
||||
pinfo->getrun(srcrow, rect->pt1.x, pinfo->buffer, ncols);
|
||||
pinfo->putrun(destrow, offset->x, pinfo->buffer, ncols);
|
||||
pinfo->getrun(pinfo->dev, srcrow, rect->pt1.x, pinfo->buffer,
|
||||
ncols);
|
||||
pinfo->putrun(pinfo->dev, destrow, offset->x, pinfo->buffer,
|
||||
ncols);
|
||||
}
|
||||
}
|
||||
|
||||
@ -91,8 +93,10 @@ void NXGL_FUNCNAME(nxgl_moverectangle, NXGLIB_SUFFIX)
|
||||
srcrow >= rect->pt1.y;
|
||||
srcrow--, destrow--)
|
||||
{
|
||||
pinfo->getrun(srcrow, rect->pt1.x, pinfo->buffer, ncols);
|
||||
pinfo->putrun(destrow, offset->x, pinfo->buffer, ncols);
|
||||
pinfo->getrun(pinfo->dev, srcrow, rect->pt1.x, pinfo->buffer,
|
||||
ncols);
|
||||
pinfo->putrun(pinfo->dev, destrow, offset->x, pinfo->buffer,
|
||||
ncols);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ void NXGL_FUNCNAME(nxgl_setpixel, NXGLIB_SUFFIX)
|
||||
|
||||
/* Read the byte that contains the pixel to be changed */
|
||||
|
||||
pinfo->getrun(pos->y, pos->x, &pixel, 8 / NXGLIB_BITSPERPIXEL);
|
||||
pinfo->getrun(pinfo->dev, pos->y, pos->x, &pixel, 8 / NXGLIB_BITSPERPIXEL);
|
||||
|
||||
/* Shift the color into the proper position */
|
||||
|
||||
@ -114,13 +114,14 @@ void NXGL_FUNCNAME(nxgl_setpixel, NXGLIB_SUFFIX)
|
||||
|
||||
/* Write the modified byte back to graphics memory */
|
||||
|
||||
pinfo->putrun(pos->y,
|
||||
pinfo->putrun(pinfo->dev,
|
||||
pos->y,
|
||||
pos->x,
|
||||
(FAR uint8_t *)&pixel,
|
||||
8 / NXGLIB_BITSPERPIXEL);
|
||||
#else
|
||||
/* Draw a single pixel at this position raster line at this row */
|
||||
|
||||
pinfo->putrun(pos->y, pos->x, (FAR uint8_t *)&color, 1);
|
||||
pinfo->putrun(pinfo->dev, pos->y, pos->x, (FAR uint8_t *)&color, 1);
|
||||
#endif
|
||||
}
|
||||
|
@ -45,6 +45,8 @@
|
||||
* Type Definitions
|
||||
****************************************************************************/
|
||||
|
||||
struct lcd_dev_s;
|
||||
|
||||
/* This structure describes one color plane. Some YUV formats may support
|
||||
* up to 4 planes (although they probably wouldn't be used on LCD hardware).
|
||||
* The framebuffer driver provides the video memory address in its
|
||||
@ -58,6 +60,7 @@ struct lcd_planeinfo_s
|
||||
|
||||
/* This method can be used to write a partial raster line to the LCD:
|
||||
*
|
||||
* dev - LCD interface to write to
|
||||
* row - Starting row to write to (range: 0 <= row < yres)
|
||||
* col - Starting column to write to (range: 0 <= col <= xres-npixels)
|
||||
* buffer - The buffer containing the run to be written to the LCD
|
||||
@ -65,11 +68,12 @@ struct lcd_planeinfo_s
|
||||
* (range: 0 < npixels <= xres-col)
|
||||
*/
|
||||
|
||||
int (*putrun)(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer,
|
||||
size_t npixels);
|
||||
int (*putrun)(FAR struct lcd_dev_s *dev, fb_coord_t row, fb_coord_t col,
|
||||
FAR const uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* This method can be used to write a rectangular area to the LCD:
|
||||
*
|
||||
* dev - LCD interface to write to
|
||||
* row_start - Starting row to write to (range: 0 <= row < yres)
|
||||
* row_end - Ending row to write to (range: row_start <= row < yres)
|
||||
* col_start - Starting column to write to (range: 0 <= col <= xres)
|
||||
@ -82,12 +86,13 @@ struct lcd_planeinfo_s
|
||||
* used.
|
||||
*/
|
||||
|
||||
int (*putarea)(fb_coord_t row_start, fb_coord_t row_end,
|
||||
fb_coord_t col_start, fb_coord_t col_end,
|
||||
FAR const uint8_t *buffer);
|
||||
int (*putarea)(FAR struct lcd_dev_s *dev, fb_coord_t row_start,
|
||||
fb_coord_t row_end, fb_coord_t col_start,
|
||||
fb_coord_t col_end, FAR const uint8_t *buffer);
|
||||
|
||||
/* This method can be used to read a partial raster line from the LCD:
|
||||
*
|
||||
* dev - LCD interface to read from
|
||||
* row - Starting row to read from (range: 0 <= row < yres)
|
||||
* col - Starting column to read read
|
||||
* (range: 0 <= col <= xres-npixels)
|
||||
@ -96,11 +101,12 @@ struct lcd_planeinfo_s
|
||||
* (range: 0 < npixels <= xres-col)
|
||||
*/
|
||||
|
||||
int (*getrun)(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||
size_t npixels);
|
||||
int (*getrun)(FAR struct lcd_dev_s *dev, fb_coord_t row,
|
||||
fb_coord_t col, FAR uint8_t *buffer, size_t npixels);
|
||||
|
||||
/* This method can be used to read a rectangular area from the LCD:
|
||||
*
|
||||
* dev - LCD interface to read from
|
||||
* row_start - Starting row to read from (range: 0 <= row < yres)
|
||||
* row_end - Ending row to read from (range: row_start <= row < yres)
|
||||
* col_start - Starting column to read from (range: 0 <= col <= xres)
|
||||
@ -113,9 +119,9 @@ struct lcd_planeinfo_s
|
||||
* used.
|
||||
*/
|
||||
|
||||
int (*getarea)(fb_coord_t row_start, fb_coord_t row_end,
|
||||
fb_coord_t col_start, fb_coord_t col_end,
|
||||
FAR uint8_t *buffer);
|
||||
int (*getarea)(FAR struct lcd_dev_s *dev, fb_coord_t row_start,
|
||||
fb_coord_t row_end, fb_coord_t col_start,
|
||||
fb_coord_t col_end, FAR uint8_t *buffer);
|
||||
|
||||
/* Plane color characteristics ********************************************/
|
||||
|
||||
@ -131,7 +137,7 @@ struct lcd_planeinfo_s
|
||||
* buffers.
|
||||
*/
|
||||
|
||||
uint8_t *buffer;
|
||||
FAR uint8_t *buffer;
|
||||
|
||||
/* This is the number of bits in one pixel. This may be one of {1, 2, 4,
|
||||
* 8, 16, 24, or 32} unless support for one or more of those resolutions
|
||||
@ -139,6 +145,12 @@ struct lcd_planeinfo_s
|
||||
*/
|
||||
|
||||
uint8_t bpp;
|
||||
|
||||
/* This is the LCD interface corresponding to which this color plane
|
||||
* belongs.
|
||||
*/
|
||||
|
||||
FAR struct lcd_dev_s *dev;
|
||||
};
|
||||
|
||||
/* This structure defines an LCD interface */
|
||||
|
@ -110,7 +110,7 @@ extern "C"
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: mio283qt2_lcdinitialize
|
||||
* Name: mio283qt9a_lcdinitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize the LCD video hardware. The initial state of the LCD is fully
|
||||
@ -119,11 +119,11 @@ extern "C"
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
FAR struct lcd_dev_s *mio283qt2_lcdinitialize(
|
||||
FAR struct lcd_dev_s *mio283qt9a_lcdinitialize(
|
||||
FAR struct mio283qt9a_lcd_s *lcd);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: mio283qt2_clear
|
||||
* Name: mio283qt9a_clear
|
||||
*
|
||||
* Description:
|
||||
* This is a non-standard LCD interface. Because of the various rotations,
|
||||
@ -133,7 +133,7 @@ FAR struct lcd_dev_s *mio283qt2_lcdinitialize(
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void mio283qt2_clear(FAR struct lcd_dev_s *dev, uint16_t color);
|
||||
void mio283qt9a_clear(FAR struct lcd_dev_s *dev, uint16_t color);
|
||||
|
||||
#undef EXTERN
|
||||
#ifdef __cplusplus
|
||||
|
Loading…
x
Reference in New Issue
Block a user