A note in the datasheet says: "Patterns other than those given in the Command Table are prohibited to enter the chip as a command; as unexpected results can occur." So do not send the charge pump command to displays that do not support it. Signed-off-by: Michal Vokáč <michal.vokac@xxxxxxxxx> --- drivers/video/fbdev/ssd1307fb.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index 1b0b2a096afa..54903ea2e3ac 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -497,14 +497,16 @@ static int ssd1307fb_init_regs(struct ssd1307fb_par *par) return ret; /* Turn on the DC-DC Charge Pump */ - ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CHARGE_PUMP); - if (ret < 0) - return ret; + if (par->device_info->need_chargepump) { + ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CHARGE_PUMP); + if (ret < 0) + return ret; - ret = ssd1307fb_write_cmd(par->client, - BIT(4) | (par->device_info->need_chargepump ? BIT(2) : 0)); - if (ret < 0) - return ret; + ret = ssd1307fb_write_cmd(par->client, + BIT(4) | (par->device_info->need_chargepump ? BIT(2) : 0)); + if (ret < 0) + return ret; + } /* Set lookup table */ if (par->lookup_table_set) { -- 2.1.4