Commit 552f0cc7 authored by Maxime Ripard's avatar Maxime Ripard Committed by Linus Torvalds

drivers/video/ssd1307fb.c: fix bit order bug in the byte translation function

This was leading to a strange behaviour when using the fbcon driver on
top of this one: the letters were in the right order, but each letter
had a vertical symmetry.

This was because the addressing was right for the byte, but the
addressing of each individual bit was inverted.
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
Cc: Brian Lilly <brian@crystalfontz.com>
Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
Cc: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: Thomas Petazzoni <thomas@free-electrons.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 04fa5d6a
...@@ -145,8 +145,8 @@ static void ssd1307fb_update_display(struct ssd1307fb_par *par) ...@@ -145,8 +145,8 @@ static void ssd1307fb_update_display(struct ssd1307fb_par *par)
u32 page_length = SSD1307FB_WIDTH * i; u32 page_length = SSD1307FB_WIDTH * i;
u32 index = page_length + (SSD1307FB_WIDTH * k + j) / 8; u32 index = page_length + (SSD1307FB_WIDTH * k + j) / 8;
u8 byte = *(vmem + index); u8 byte = *(vmem + index);
u8 bit = byte & (1 << (7 - (j % 8))); u8 bit = byte & (1 << (j % 8));
bit = bit >> (7 - (j % 8)); bit = bit >> (j % 8);
buf |= bit << k; buf |= bit << k;
} }
ssd1307fb_write_data(par->client, buf); ssd1307fb_write_data(par->client, buf);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment