static bool osd_update_window_axis;
static int osd_afbc_dec_enable;
//static u32 extern_canvas[2] = {EXTERN1_CANVAS, EXTERN2_CANVAS};
-#if 0
static int ext_canvas_id;
-#endif
static int osd_extra_idx[3][2];
static void osd_clone_pan(u32 index, u32 yoffset, int debug_flag);
OSD_TYPE_BOT_FIELD : OSD_TYPE_TOP_FIELD;
}
}
- if (osd_hw.osd_meson_dev.has_rdma && osd_hw.hw_rdma_en)
+ if (osd_hw.hw_rdma_en)
/* when RDMA enabled, top/bottom fields changed in next vsync */
odd_even = (odd_even == OSD_TYPE_TOP_FIELD) ?
OSD_TYPE_BOT_FIELD : OSD_TYPE_TOP_FIELD;
}
}
- } else if (osd_hw.osd_meson_dev.has_rdma)
+ } else
osd_rdma_reset_and_flush(reset_bit);
spin_unlock_irqrestore(&osd_lock, lock_flags);
/* maybe change reset bit */
para[0], para[1]);
if (osd_hw.hw_rdma_en) {
#ifdef CONFIG_AMLOGIC_VIDEO
- if (osd_hw.osd_meson_dev.has_rdma)
- amvideo_notifier_call_chain(
- AMVIDEO_UPDATE_OSD_MODE,
- (void *)¶[0]);
+ amvideo_notifier_call_chain(
+ AMVIDEO_UPDATE_OSD_MODE,
+ (void *)¶[0]);
#endif
}
return 0;
osd_update_vsync_hit();
osd_hw_reset();
osd_mali_afbc_restart();
- } else {
- if (osd_hw.osd_meson_dev.has_rdma)
- osd_rdma_interrupt_done_clear();
- else {
- osd_update_scan_mode();
- /* go through update list */
- walk_through_update_list();
- osd_update_3d_mode();
- osd_update_vsync_hit();
- osd_hw_reset();
- }
- }
+ } else
+ osd_rdma_interrupt_done_clear();
+
#ifndef FIQ_VSYNC
return IRQ_HANDLED;
#endif
spin_lock_irqsave(&osd_lock, lock_flags);
use_ext = true;
if (!fence_map->afbc_en) {
-#if 0
osd_hw.fb_gem[index].canvas_idx =
osd_extra_idx[index][ext_canvas_id];
ext_canvas_id ^= 1;
osd_hw.osd_afbcd[index].enable = DISABLE;
-#endif
} else
osd_hw.osd_afbcd[index].enable = ENABLE;
|| yoffset != osd_hw.pandata[index].y_start
|| (use_ext /*&& index == OSD1*/)) {
spin_lock_irqsave(&osd_lock, lock_flags);
- if ((use_ext)) {
+ if (use_ext) {
osd_hw.fb_gem[index].canvas_idx =
OSD1_CANVAS_INDEX;
spin_lock_irqsave(&osd_lock, lock_flags);
use_ext = true;
if (!fence_map->afbc_en) {
-#if 0
osd_hw.fb_gem[index].canvas_idx =
osd_extra_idx[index][ext_canvas_id];
ext_canvas_id ^= 1;
-#endif
osd_hw.osd_afbcd[index].enable = DISABLE;
} else
osd_hw.osd_afbcd[index].enable = ENABLE;
0x00000000);//yuv 0x000080880
VSYNCOSD_WR_MPEG_REG(VPP_POST_BLEND_DUMMY_ALPHA,
0x00000000);//dummy alpha yuv 0x10000000
-
- VSYNCOSD_WR_MPEG_REG(VPP_MISC,
- (1 << 7) | (0 << 6));
return 0;
}
0x00000000);//yuv 0x000080880
VSYNCOSD_WR_MPEG_REG(VPP_POST_BLEND_DUMMY_ALPHA,
0x00000000);//dummy alpha yuv 0x10000000
-
- VSYNCOSD_WR_MPEG_REG(VPP_MISC,
- (1 << 7) | (0 << 6));
return 0;
}
int osd_num = 2;
if (osd_hw.osd_meson_dev.osd_ver == OSD_HIGH_ONE)
- osd_num = 6;
-
+ osd_num = 4;
+ osd_extra_idx[0][0] = EXTERN1_CANVAS;
+ osd_extra_idx[0][1] = EXTERN2_CANVAS;
if (canvas_pool_alloc_canvas_table("osd_extra",
- &osd_extra_idx[0][0], osd_num, CANVAS_MAP_TYPE_1)) {
+ &osd_extra_idx[1][0], osd_num, CANVAS_MAP_TYPE_1)) {
osd_log_info("allocate osd extra canvas error.\n");
return -1;
}
osd_hw.hwc_enable = 0;
if (osd_hw.osd_meson_dev.osd_ver <= OSD_NORMAL) {
osd_hw.hw_cursor_en = 1;
- osd_hw.hw_rdma_en = 1;
+ if (osd_hw.osd_meson_dev.has_rdma)
+ osd_hw.hw_rdma_en = 1;
} else if (osd_hw.osd_meson_dev.osd_ver == OSD_HIGH_ONE) {
osd_hw.hw_cursor_en = 0;
osd_hw.hw_rdma_en = 0;
MALI_AFBC_SPLIT_ON;
osd_hw.osd_afbcd[idx].afbc_start = 0;
osd_hw.afbc_restart_in_vsync = 1;
- #if 0
/* enable for latch */
osd_hw.osd_use_latch = 1;
data32 = 0;
data32 |= 0x80000000;
osd_reg_write(
hw_osd_reg_array[idx].osd_ctrl_stat, data32);
- #endif
}
osd_setting_default_hwc();
}
request_fiq(INT_VIU_VSYNC, &osd_fiq_isr);
#endif
}
- if (osd_hw.osd_meson_dev.has_rdma && osd_hw.hw_rdma_en)
+ if (osd_hw.hw_rdma_en)
osd_rdma_enable(1);
}
if (osd_hw.osd_meson_dev.has_rdma)
enable_rdma(0);
#endif
- if (osd_hw.osd_meson_dev.has_rdma && osd_hw.hw_rdma_en)
+ if (osd_hw.hw_rdma_en)
osd_rdma_enable(0);
pr_info("osd_shutdown\n");
}
enable_rdma(0);
#endif
if (osd_hw.hw_rdma_en) {
- if (osd_hw.osd_meson_dev.has_rdma) {
- osd_rdma_enable(0);
- if (get_backup_reg(VIU_OSD1_BLK0_CFG_W0,
- &fb0_cfg_w0_save) != 0)
- fb0_cfg_w0_save =
- osd_reg_read(VIU_OSD1_BLK0_CFG_W0);
- } else
- fb0_cfg_w0_save = osd_reg_read(VIU_OSD1_BLK0_CFG_W0);
+ osd_rdma_enable(0);
+ if (get_backup_reg(VIU_OSD1_BLK0_CFG_W0,
+ &fb0_cfg_w0_save) != 0)
+ fb0_cfg_w0_save =
+ osd_reg_read(VIU_OSD1_BLK0_CFG_W0);
} else
fb0_cfg_w0_save = osd_reg_read(VIU_OSD1_BLK0_CFG_W0);
pr_debug("osd_freezed\n");
void osd_thaw_hw(void)
{
pr_debug("osd_thawed\n");
- if (osd_hw.osd_meson_dev.has_rdma && osd_hw.hw_rdma_en)
+ if (osd_hw.hw_rdma_en)
osd_rdma_enable(2);
#ifdef CONFIG_AMLOGIC_MEDIA_VSYNC_RDMA
if (osd_hw.osd_meson_dev.has_rdma)
int i;
osd_reg_write(VIU_OSD1_BLK0_CFG_W0, fb0_cfg_w0_save);
- if (osd_hw.osd_meson_dev.has_rdma && osd_hw.hw_rdma_en)
+ if (osd_hw.hw_rdma_en)
osd_rdma_enable(2);
#ifdef CONFIG_AMLOGIC_MEDIA_VSYNC_RDMA
if (osd_hw.osd_meson_dev.has_rdma)
osd_hw.vinfo_width = vinfo->width;
osd_hw.vinfo_height = vinfo->height;
}
-
if (osd_hw.osd_meson_dev.osd_ver <= OSD_NORMAL) {
if (plane_map->phy_addr && plane_map->src_w
&& plane_map->src_h && index == OSD1) {
-#if 0
osd_hw.fb_gem[index].canvas_idx =
osd_extra_idx[index][ext_canvas_id];
ext_canvas_id ^= 1;
-#endif
color = convert_panel_format(plane_map->format);
if (color) {
osd_hw.color_info[index] = color;
} else {
if (plane_map->phy_addr && plane_map->src_w
&& plane_map->src_h) {
-#if 0
osd_hw.fb_gem[index].canvas_idx =
osd_extra_idx[index][ext_canvas_id];
ext_canvas_id ^= 1;
-#endif
color = convert_panel_format(plane_map->format);
if (color) {
osd_hw.color_info[index] = color;
spin_lock_irqsave(&osd_lock, lock_flags); \
raw_local_save_flags(fiq_flag); \
local_fiq_disable(); \
- if (!osd_hw.osd_meson_dev.has_rdma || \
- !osd_hw.hw_rdma_en) \
- osd_hw.updated[osd_idx] |= (1<<cmd_idx); \
- else \
+ if (osd_hw.hw_rdma_en || osd_hw.osd_use_latch) \
osd_hw.reg[cmd_idx].update_func(osd_idx); \
+ else \
+ osd_hw.updated[osd_idx] |= (1<<cmd_idx); \
raw_local_irq_restore(fiq_flag); \
spin_unlock_irqrestore(&osd_lock, lock_flags); \
} while (0)
#define add_to_update_list(osd_idx, cmd_idx) \
do { \
spin_lock_irqsave(&osd_lock, lock_flags); \
- if (!osd_hw.osd_meson_dev.has_rdma || \
- !osd_hw.hw_rdma_en) \
- osd_hw.updated[osd_idx] |= (1<<cmd_idx); \
- else \
+ if (osd_hw.hw_rdma_en || osd_hw.osd_use_latch) \
osd_hw.reg[cmd_idx].update_func(osd_idx); \
+ else \
+ osd_hw.updated[osd_idx] |= (1<<cmd_idx); \
spin_unlock_irqrestore(&osd_lock, lock_flags); \
} while (0)
#endif
#ifdef CONFIG_AMLOGIC_MEDIA_FB_OSD_VSYNC_RDMA
#define remove_from_update_list(osd_idx, cmd_idx) \
do { \
- if (!osd_hw.osd_meson_dev.has_rdma || \
- !osd_hw.hw_rdma_en) \
+ if (!osd_hw.hw_rdma_en && \
+ !osd_hw.osd_use_latch) \
(osd_hw.updated[osd_idx] &= ~(1<<cmd_idx)); \
} while (0)
#else