Hi Geert,
On Wed, Jul 14, 2021 at 04:58:02PM +0200, Geert Uytterhoeven wrote:
Extract the code to set the column and page ranges into a helper function.
Signed-off-by: Geert Uytterhoeven geert@linux-m68k.org
drivers/video/fbdev/ssd1307fb.c | 61 +++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 25 deletions(-)
diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index 6d7bd025bca1a175..cfa27ea0feab4f01 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -152,6 +152,38 @@ static inline int ssd1307fb_write_cmd(struct i2c_client *client, u8 cmd) return ret; }
+static int ssd1307fb_set_address_range(struct ssd1307fb_par *par, u8 col_start,
u8 cols, u8 page_start, u8 pages)
+{
Bikeshedding, but I think a dedicated function for col_range and another for page_range had been simpler to read.
With or wihout this change: Acked-by: Sam Ravnborg sam@ravnborg.org
Sam
- u8 col_end = col_start + cols - 1;
- u8 page_end = page_start + pages - 1;
- int 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, col_start);
- if (ret < 0)
return ret;
- ret = ssd1307fb_write_cmd(par->client, col_end);
- 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, 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; @@ -461,31 +493,10 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) if (ret < 0) 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);
- 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);
- /* Set column and page range */
- ret = ssd1307fb_set_address_range(par, par->col_offset, par->width,
par->page_offset,
if (ret < 0) return ret;DIV_ROUND_UP(par->height, 8));
-- 2.25.1