forked from Minki/linux
video: fbdev: ssd1307fb: Extract ssd1307fb_set_{col,page}_range()
Extract the code to set the column and page ranges into two helper functions. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Link: https://patchwork.freedesktop.org/patch/msgid/20210727134730.3765898-4-geert@linux-m68k.org
This commit is contained in:
parent
ef9d793825
commit
8a15af3b86
@ -152,6 +152,40 @@ static inline int ssd1307fb_write_cmd(struct i2c_client *client, u8 cmd)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ssd1307fb_set_col_range(struct ssd1307fb_par *par, u8 col_start,
|
||||
u8 cols)
|
||||
{
|
||||
u8 col_end = col_start + cols - 1;
|
||||
int ret;
|
||||
|
||||
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_COL_RANGE);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = ssd1307fb_write_cmd(par->client, col_start);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return ssd1307fb_write_cmd(par->client, col_end);
|
||||
}
|
||||
|
||||
static int ssd1307fb_set_page_range(struct ssd1307fb_par *par, u8 page_start,
|
||||
u8 pages)
|
||||
{
|
||||
u8 page_end = page_start + pages - 1;
|
||||
int ret;
|
||||
|
||||
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PAGE_RANGE);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = ssd1307fb_write_cmd(par->client, page_start);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return ssd1307fb_write_cmd(par->client, page_end);
|
||||
}
|
||||
|
||||
static int ssd1307fb_update_display(struct ssd1307fb_par *par)
|
||||
{
|
||||
struct ssd1307fb_array *array;
|
||||
@ -462,30 +496,13 @@ static int ssd1307fb_init(struct ssd1307fb_par *par)
|
||||
return ret;
|
||||
|
||||
/* Set column range */
|
||||
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_COL_RANGE);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = ssd1307fb_write_cmd(par->client, par->col_offset);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = ssd1307fb_write_cmd(par->client, par->col_offset + par->width - 1);
|
||||
ret = ssd1307fb_set_col_range(par, par->col_offset, par->width);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Set page range */
|
||||
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PAGE_RANGE);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = ssd1307fb_write_cmd(par->client, par->page_offset);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = ssd1307fb_write_cmd(par->client,
|
||||
par->page_offset +
|
||||
DIV_ROUND_UP(par->height, 8) - 1);
|
||||
ret = ssd1307fb_set_page_range(par, par->page_offset,
|
||||
DIV_ROUND_UP(par->height, 8));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user