summaryrefslogtreecommitdiffstats
path: root/drivers/video/exynos/exynos_fimd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/exynos/exynos_fimd.c')
-rw-r--r--drivers/video/exynos/exynos_fimd.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/drivers/video/exynos/exynos_fimd.c b/drivers/video/exynos/exynos_fimd.c
index e6fb5d1b20..a1de9ac38c 100644
--- a/drivers/video/exynos/exynos_fimd.c
+++ b/drivers/video/exynos/exynos_fimd.c
@@ -21,16 +21,9 @@
DECLARE_GLOBAL_DATA_PTR;
-static unsigned long *lcd_base_addr;
static struct vidinfo *pvid;
static struct exynos_fb *fimd_ctrl;
-void exynos_fimd_lcd_init_mem(u_long screen_base, u_long fb_size,
- u_long palette_size)
-{
- lcd_base_addr = (unsigned long *)screen_base;
-}
-
static void exynos_fimd_set_dualrgb(unsigned int enabled)
{
unsigned int cfg = 0;
@@ -47,7 +40,8 @@ static void exynos_fimd_set_dualrgb(unsigned int enabled)
writel(cfg, &fimd_ctrl->dualrgb);
}
-static void exynos_fimd_set_dp_clkcon(unsigned int enabled)
+static void exynos_fimd_set_dp_clkcon(struct vidinfo *pvid,
+ unsigned int enabled)
{
unsigned int cfg = 0;
@@ -57,7 +51,7 @@ static void exynos_fimd_set_dp_clkcon(unsigned int enabled)
writel(cfg, &fimd_ctrl->dp_mie_clkcon);
}
-static void exynos_fimd_set_par(unsigned int win_id)
+static void exynos_fimd_set_par(struct vidinfo *pvid, unsigned int win_id)
{
unsigned int cfg = 0;
@@ -109,11 +103,13 @@ static void exynos_fimd_set_par(unsigned int win_id)
EXYNOS_VIDOSD(win_id));
}
-static void exynos_fimd_set_buffer_address(unsigned int win_id)
+static void exynos_fimd_set_buffer_address(struct vidinfo *pvid,
+ unsigned int win_id,
+ ulong lcd_base_addr)
{
unsigned long start_addr, end_addr;
- start_addr = (unsigned long)lcd_base_addr;
+ start_addr = lcd_base_addr;
end_addr = start_addr + ((pvid->vl_col * (NBITS(pvid->vl_bpix) / 8)) *
pvid->vl_row);
@@ -289,7 +285,7 @@ void exynos_fimd_disable_sysmmu(void)
}
}
-void exynos_fimd_lcd_init(struct vidinfo *vid)
+void exynos_fimd_lcd_init(struct vidinfo *vid, ulong lcd_base_address)
{
unsigned int cfg = 0, rgb_mode;
unsigned int offset;
@@ -367,10 +363,10 @@ void exynos_fimd_lcd_init(struct vidinfo *vid)
writel(cfg, &fimd_ctrl->vidcon0);
/* set par */
- exynos_fimd_set_par(pvid->win_id);
+ exynos_fimd_set_par(pvid, pvid->win_id);
/* set memory address */
- exynos_fimd_set_buffer_address(pvid->win_id);
+ exynos_fimd_set_buffer_address(pvid, pvid->win_id, lcd_base_address);
/* set buffer size */
cfg = EXYNOS_VIDADDR_PAGEWIDTH(pvid->vl_col * NBITS(pvid->vl_bpix) / 8) |
@@ -393,7 +389,7 @@ void exynos_fimd_lcd_init(struct vidinfo *vid)
/* window on */
exynos_fimd_window_on(pvid->win_id);
- exynos_fimd_set_dp_clkcon(pvid->dp_enabled);
+ exynos_fimd_set_dp_clkcon(pvid, pvid->dp_enabled);
}
unsigned long exynos_fimd_calc_fbsize(void)
OpenPOWER on IntegriCloud