From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikita Kiryanov Date: Thu, 04 Oct 2012 10:48:01 +0200 Subject: [U-Boot] [PATCH 5/7] lcd: Fix fb offset calculation for bpix == 16 in BMP display In-Reply-To: <1348881077-11246-6-git-send-email-sjg@chromium.org> References: <1348881077-11246-1-git-send-email-sjg@chromium.org> <1348881077-11246-6-git-send-email-sjg@chromium.org> Message-ID: <506D4D41.4030609@compulab.co.il> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Simon, On 09/29/2012 03:11 AM, Simon Glass wrote: > From: Tom Wai-Hong Tam > > For bpix == 16, each pixel is 2-byte. fb offset should shift more x bytes. > > Signed-off-by: Tom Wai-Hong Tam > Signed-off-by: Simon Glass > --- > common/lcd.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/common/lcd.c b/common/lcd.c > index 7c6cb09..004a6be 100644 > --- a/common/lcd.c > +++ b/common/lcd.c > @@ -775,8 +775,10 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y) > height = panel_info.vl_row - y; > > bmap = (uchar *)bmp + le32_to_cpu(bmp->header.data_offset); > - fb = (uchar *) (lcd_base + > - (y + height - 1) * lcd_line_length + x * bpix / 8); > + fb = (uchar *) (lcd_base + (y + height - 1) * lcd_line_length + x); > + /* additional fb shift for bpix == 16 since each pixel is 2-byte */ > + if (bpix == 16) > + fb += x; > Why is this change necessary? if bpix == 16 then x * bpix / 8 == 2 * x anyway. > switch (bmp_bpix) { > case 1: /* pass through */ >