exynos: video: Drop static variables in exynos_fimd.c
Drop these and use parameters instead. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Anatolij Gustschin <agust@denx.de> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
@@ -36,6 +36,6 @@ enum exynos_cpu_auto_cmd_rate {
|
|||||||
void exynos_fimd_lcd_init_mem(unsigned long screen_base, unsigned long fb_size,
|
void exynos_fimd_lcd_init_mem(unsigned long screen_base, unsigned long fb_size,
|
||||||
unsigned long palette_size);
|
unsigned long palette_size);
|
||||||
void exynos_fimd_lcd_init(struct vidinfo *vid, ulong lcd_base_address);
|
void exynos_fimd_lcd_init(struct vidinfo *vid, ulong lcd_base_address);
|
||||||
unsigned long exynos_fimd_calc_fbsize(void);
|
unsigned long exynos_fimd_calc_fbsize(struct vidinfo *pvid);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -21,11 +21,9 @@
|
|||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
static struct vidinfo *pvid;
|
static void exynos_fimd_set_dualrgb(struct vidinfo *pvid, unsigned int enabled)
|
||||||
static struct exynos_fb *fimd_ctrl;
|
|
||||||
|
|
||||||
static void exynos_fimd_set_dualrgb(unsigned int enabled)
|
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
@@ -43,6 +41,7 @@ static void exynos_fimd_set_dualrgb(unsigned int enabled)
|
|||||||
static void exynos_fimd_set_dp_clkcon(struct vidinfo *pvid,
|
static void exynos_fimd_set_dp_clkcon(struct vidinfo *pvid,
|
||||||
unsigned int enabled)
|
unsigned int enabled)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
|
|
||||||
if (enabled)
|
if (enabled)
|
||||||
@@ -53,6 +52,7 @@ static void exynos_fimd_set_dp_clkcon(struct vidinfo *pvid,
|
|||||||
|
|
||||||
static void exynos_fimd_set_par(struct vidinfo *pvid, unsigned int win_id)
|
static void exynos_fimd_set_par(struct vidinfo *pvid, unsigned int win_id)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
|
|
||||||
/* set window control */
|
/* set window control */
|
||||||
@@ -107,6 +107,7 @@ static void exynos_fimd_set_buffer_address(struct vidinfo *pvid,
|
|||||||
unsigned int win_id,
|
unsigned int win_id,
|
||||||
ulong lcd_base_addr)
|
ulong lcd_base_addr)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned long start_addr, end_addr;
|
unsigned long start_addr, end_addr;
|
||||||
|
|
||||||
start_addr = lcd_base_addr;
|
start_addr = lcd_base_addr;
|
||||||
@@ -121,6 +122,7 @@ static void exynos_fimd_set_buffer_address(struct vidinfo *pvid,
|
|||||||
|
|
||||||
static void exynos_fimd_set_clock(struct vidinfo *pvid)
|
static void exynos_fimd_set_clock(struct vidinfo *pvid)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0, div = 0, remainder, remainder_div;
|
unsigned int cfg = 0, div = 0, remainder, remainder_div;
|
||||||
unsigned long pixel_clock;
|
unsigned long pixel_clock;
|
||||||
unsigned long long src_clock;
|
unsigned long long src_clock;
|
||||||
@@ -172,8 +174,9 @@ static void exynos_fimd_set_clock(struct vidinfo *pvid)
|
|||||||
writel(cfg, &fimd_ctrl->vidcon0);
|
writel(cfg, &fimd_ctrl->vidcon0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void exynos_set_trigger(void)
|
void exynos_set_trigger(struct vidinfo *pvid)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
|
|
||||||
cfg = readl(&fimd_ctrl->trigcon);
|
cfg = readl(&fimd_ctrl->trigcon);
|
||||||
@@ -183,8 +186,9 @@ void exynos_set_trigger(void)
|
|||||||
writel(cfg, &fimd_ctrl->trigcon);
|
writel(cfg, &fimd_ctrl->trigcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
int exynos_is_i80_frame_done(void)
|
int exynos_is_i80_frame_done(struct vidinfo *pvid)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
@@ -197,8 +201,9 @@ int exynos_is_i80_frame_done(void)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void exynos_fimd_lcd_on(void)
|
static void exynos_fimd_lcd_on(struct vidinfo *pvid)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
|
|
||||||
/* display on */
|
/* display on */
|
||||||
@@ -207,8 +212,9 @@ static void exynos_fimd_lcd_on(void)
|
|||||||
writel(cfg, &fimd_ctrl->vidcon0);
|
writel(cfg, &fimd_ctrl->vidcon0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void exynos_fimd_window_on(unsigned int win_id)
|
static void exynos_fimd_window_on(struct vidinfo *pvid, unsigned int win_id)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
|
|
||||||
/* enable window */
|
/* enable window */
|
||||||
@@ -223,8 +229,9 @@ static void exynos_fimd_window_on(unsigned int win_id)
|
|||||||
writel(cfg, &fimd_ctrl->winshmap);
|
writel(cfg, &fimd_ctrl->winshmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void exynos_fimd_lcd_off(void)
|
void exynos_fimd_lcd_off(struct vidinfo *pvid)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
|
|
||||||
cfg = readl(&fimd_ctrl->vidcon0);
|
cfg = readl(&fimd_ctrl->vidcon0);
|
||||||
@@ -232,8 +239,9 @@ void exynos_fimd_lcd_off(void)
|
|||||||
writel(cfg, &fimd_ctrl->vidcon0);
|
writel(cfg, &fimd_ctrl->vidcon0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void exynos_fimd_window_off(unsigned int win_id)
|
void exynos_fimd_window_off(struct vidinfo *pvid, unsigned int win_id)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl = pvid->fimd_ctrl;
|
||||||
unsigned int cfg = 0;
|
unsigned int cfg = 0;
|
||||||
|
|
||||||
cfg = readl((unsigned int)&fimd_ctrl->wincon0 +
|
cfg = readl((unsigned int)&fimd_ctrl->wincon0 +
|
||||||
@@ -285,8 +293,9 @@ void exynos_fimd_disable_sysmmu(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void exynos_fimd_lcd_init(struct vidinfo *vid, ulong lcd_base_address)
|
void exynos_fimd_lcd_init(struct vidinfo *pvid, ulong lcd_base_address)
|
||||||
{
|
{
|
||||||
|
struct exynos_fb *fimd_ctrl;
|
||||||
unsigned int cfg = 0, rgb_mode;
|
unsigned int cfg = 0, rgb_mode;
|
||||||
unsigned int offset;
|
unsigned int offset;
|
||||||
unsigned int node;
|
unsigned int node;
|
||||||
@@ -296,22 +305,20 @@ void exynos_fimd_lcd_init(struct vidinfo *vid, ulong lcd_base_address)
|
|||||||
if (node <= 0)
|
if (node <= 0)
|
||||||
debug("exynos_fb: Can't get device node for fimd\n");
|
debug("exynos_fb: Can't get device node for fimd\n");
|
||||||
|
|
||||||
fimd_ctrl = (struct exynos_fb *)fdtdec_get_addr(gd->fdt_blob,
|
fimd_ctrl = (struct exynos_fb *)fdtdec_get_addr(gd->fdt_blob, node,
|
||||||
node, "reg");
|
"reg");
|
||||||
if (fimd_ctrl == NULL)
|
if (fimd_ctrl == NULL)
|
||||||
debug("Can't get the FIMD base address\n");
|
debug("Can't get the FIMD base address\n");
|
||||||
|
pvid->fimd_ctrl = fimd_ctrl;
|
||||||
|
|
||||||
if (fdtdec_get_bool(gd->fdt_blob, node, "samsung,disable-sysmmu"))
|
if (fdtdec_get_bool(gd->fdt_blob, node, "samsung,disable-sysmmu"))
|
||||||
exynos_fimd_disable_sysmmu();
|
exynos_fimd_disable_sysmmu();
|
||||||
|
|
||||||
offset = exynos_fimd_get_base_offset();
|
offset = exynos_fimd_get_base_offset();
|
||||||
|
|
||||||
/* store panel info to global variable */
|
rgb_mode = pvid->rgb_mode;
|
||||||
pvid = vid;
|
|
||||||
|
|
||||||
rgb_mode = vid->rgb_mode;
|
if (pvid->interface_mode == FIMD_RGB_INTERFACE) {
|
||||||
|
|
||||||
if (vid->interface_mode == FIMD_RGB_INTERFACE) {
|
|
||||||
cfg |= EXYNOS_VIDCON0_VIDOUT_RGB;
|
cfg |= EXYNOS_VIDCON0_VIDOUT_RGB;
|
||||||
writel(cfg, &fimd_ctrl->vidcon0);
|
writel(cfg, &fimd_ctrl->vidcon0);
|
||||||
|
|
||||||
@@ -381,18 +388,18 @@ void exynos_fimd_lcd_init(struct vidinfo *vid, ulong lcd_base_address)
|
|||||||
exynos_fimd_set_clock(pvid);
|
exynos_fimd_set_clock(pvid);
|
||||||
|
|
||||||
/* set rgb mode to dual lcd. */
|
/* set rgb mode to dual lcd. */
|
||||||
exynos_fimd_set_dualrgb(pvid->dual_lcd_enabled);
|
exynos_fimd_set_dualrgb(pvid, pvid->dual_lcd_enabled);
|
||||||
|
|
||||||
/* display on */
|
/* display on */
|
||||||
exynos_fimd_lcd_on();
|
exynos_fimd_lcd_on(pvid);
|
||||||
|
|
||||||
/* window on */
|
/* window on */
|
||||||
exynos_fimd_window_on(pvid->win_id);
|
exynos_fimd_window_on(pvid, pvid->win_id);
|
||||||
|
|
||||||
exynos_fimd_set_dp_clkcon(pvid, pvid->dp_enabled);
|
exynos_fimd_set_dp_clkcon(pvid, pvid->dp_enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long exynos_fimd_calc_fbsize(void)
|
unsigned long exynos_fimd_calc_fbsize(struct vidinfo *pvid)
|
||||||
{
|
{
|
||||||
return pvid->vl_col * pvid->vl_row * (NBITS(pvid->vl_bpix) / 8);
|
return pvid->vl_col * pvid->vl_row * (NBITS(pvid->vl_bpix) / 8);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ typedef struct vidinfo {
|
|||||||
unsigned int sclk_div;
|
unsigned int sclk_div;
|
||||||
|
|
||||||
unsigned int dual_lcd_enabled;
|
unsigned int dual_lcd_enabled;
|
||||||
|
struct exynos_fb *fimd_ctrl;
|
||||||
} vidinfo_t;
|
} vidinfo_t;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user