Skip to content

Commit

Permalink
fbdev: ssd1307fb: return proper error code if write command fails
Browse files Browse the repository at this point in the history
this patch fixes ssd1307fb_ssd1306_init() function to return
proper error codes in case of failures.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Prabhakar Lad authored and Tomi Valkeinen committed Jan 30, 2015
1 parent 4d07329 commit 5b72ae9
Showing 1 changed file with 53 additions and 14 deletions.
67 changes: 53 additions & 14 deletions drivers/video/fbdev/ssd1307fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,10 @@ static int ssd1307fb_ssd1306_init(struct ssd1307fb_par *par)

/* Set initial contrast */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CONTRAST);
ret = ret & ssd1307fb_write_cmd(par->client, 0x7f);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0x7f);
if (ret < 0)
return ret;

Expand All @@ -319,63 +322,99 @@ static int ssd1307fb_ssd1306_init(struct ssd1307fb_par *par)

/* Set multiplex ratio value */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_MULTIPLEX_RATIO);
ret = ret & ssd1307fb_write_cmd(par->client, par->height - 1);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, par->height - 1);
if (ret < 0)
return ret;

/* set display offset value */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_DISPLAY_OFFSET);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0x20);
if (ret < 0)
return ret;

/* Set clock frequency */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_CLOCK_FREQ);
ret = ret & ssd1307fb_write_cmd(par->client, 0xf0);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0xf0);
if (ret < 0)
return ret;

/* Set precharge period in number of ticks from the internal clock */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PRECHARGE_PERIOD);
ret = ret & ssd1307fb_write_cmd(par->client, 0x22);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0x22);
if (ret < 0)
return ret;

/* Set COM pins configuration */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_COM_PINS_CONFIG);
ret = ret & ssd1307fb_write_cmd(par->client, 0x22);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0x22);
if (ret < 0)
return ret;

/* Set VCOMH */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_VCOMH);
ret = ret & ssd1307fb_write_cmd(par->client, 0x49);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0x49);
if (ret < 0)
return ret;

/* Turn on the DC-DC Charge Pump */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CHARGE_PUMP);
ret = ret & ssd1307fb_write_cmd(par->client, 0x14);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0x14);
if (ret < 0)
return ret;

/* Switch to horizontal addressing mode */
ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_ADDRESS_MODE);
ret = ret & ssd1307fb_write_cmd(par->client,
SSD1307FB_SET_ADDRESS_MODE_HORIZONTAL);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client,
SSD1307FB_SET_ADDRESS_MODE_HORIZONTAL);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_COL_RANGE);
ret = ret & ssd1307fb_write_cmd(par->client, 0x0);
ret = ret & ssd1307fb_write_cmd(par->client, par->width - 1);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0x0);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, par->width - 1);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PAGE_RANGE);
ret = ret & ssd1307fb_write_cmd(par->client, 0x0);
ret = ret & ssd1307fb_write_cmd(par->client,
par->page_offset + (par->height / 8) - 1);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client, 0x0);
if (ret < 0)
return ret;

ret = ssd1307fb_write_cmd(par->client,
par->page_offset + (par->height / 8) - 1);
if (ret < 0)
return ret;

Expand Down

0 comments on commit 5b72ae9

Please sign in to comment.