summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaekhyun Kim <takim@nvidia.com>2011-01-25 15:31:45 -0800
committerVarun Colbert <vcolbert@nvidia.com>2011-02-17 17:40:51 -0800
commit5f8ff57fd8a870f6f99f61bb5ef90d863894ff40 (patch)
tree919d2428e1486c4af4cd37aa8bdce64cfffba4e1
parentee977cb00984349a540a5300c8d7f357db48f98e (diff)
video: tegra: Fix handling non-zero Y offset
Change-Id: I6ce3f66075856397b394f433a4ee29ff3357b548 Reviewed-on: http://git-master/r/16977 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/include/mach/dc.h1
-rw-r--r--drivers/video/tegra/dc/dc.c4
-rw-r--r--drivers/video/tegra/fb.c7
3 files changed, 8 insertions, 4 deletions
diff --git a/arch/arm/mach-tegra/include/mach/dc.h b/arch/arm/mach-tegra/include/mach/dc.h
index 1dc9c556d6fa..0f87f993fe52 100644
--- a/arch/arm/mach-tegra/include/mach/dc.h
+++ b/arch/arm/mach-tegra/include/mach/dc.h
@@ -126,6 +126,7 @@ struct tegra_dc_win {
void *virt_addr;
dma_addr_t phys_addr;
+ unsigned offset;
unsigned offset_u;
unsigned offset_v;
unsigned stride;
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index f5ce9ecc3275..f8159331877a 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -549,7 +549,9 @@ int tegra_dc_update_windows(struct tegra_dc_win *windows[], int n)
tegra_dc_writel(dc, 0, DC_WIN_BUF_STRIDE);
tegra_dc_writel(dc, 0, DC_WIN_UV_BUF_STRIDE);
- tegra_dc_writel(dc, (unsigned long)win->phys_addr,
+ tegra_dc_writel(dc,
+ (unsigned long)win->phys_addr +
+ (unsigned long)win->offset,
DC_WINBUF_START_ADDR);
if (!yuvp) {
diff --git a/drivers/video/tegra/fb.c b/drivers/video/tegra/fb.c
index 5941dfbbca28..d22603f7e2bd 100644
--- a/drivers/video/tegra/fb.c
+++ b/drivers/video/tegra/fb.c
@@ -429,9 +429,10 @@ static int tegra_fb_set_windowattr(struct tegra_fb_info *tegra_fb,
win->cur_handle = flip_win->handle;
/* STOPSHIP verify that this won't read outside of the surface */
- win->phys_addr = flip_win->phys_addr + flip_win->attr.offset;
- win->offset_u = flip_win->attr.offset_u + flip_win->attr.offset;
- win->offset_v = flip_win->attr.offset_v + flip_win->attr.offset;
+ win->phys_addr = flip_win->phys_addr;
+ win->offset = flip_win->attr.offset;
+ win->offset_u = flip_win->attr.offset_u;
+ win->offset_v = flip_win->attr.offset_v;
win->stride = flip_win->attr.stride;
win->stride_uv = flip_win->attr.stride_uv;