if (next_index == OSD1
&& osd_hw.osd_afbcd[next_index].enable
&& next_enable) {
- osd_reg_write(VIU_SW_RESET, 0x80000000);
- osd_reg_write(VIU_SW_RESET, 0);
+ if (osd_hw.osd_meson_dev.osd_ver == OSD_NORMAL) {
+ osd_reg_write(VIU_SW_RESET, 0x80000000);
+ osd_reg_write(VIU_SW_RESET, 0);
+ }
osd_afbc_dec_enable = 0;
osd_hw.reg[OSD_GBL_ALPHA].update_func(next_index);
}
osd_hw.reg[DISP_FREESCALE_ENABLE].
update_func(pre_index);
osd_hw.reg[OSD_ENABLE].update_func(pre_index);
- }
- osd_hw.reg[OSD_COLOR_MODE].update_func(next_index);
- if (next_scale)
- osd_hw.reg
- [OSD_FREESCALE_COEF].update_func(next_index);
- osd_hw.reg[DISP_GEOMETRY].update_func(next_index);
- osd_hw.reg[DISP_FREESCALE_ENABLE].update_func(next_index);
- osd_hw.reg[OSD_ENABLE].update_func(next_index);
+ osd_hw.reg[OSD_COLOR_MODE].update_func(next_index);
+ if (next_scale)
+ osd_hw.reg[OSD_FREESCALE_COEF].
+ update_func(next_index);
+ osd_hw.reg[DISP_GEOMETRY].update_func(next_index);
+ osd_hw.reg[DISP_FREESCALE_ENABLE].
+ update_func(next_index);
+ osd_hw.reg[OSD_ENABLE].update_func(next_index);
+ }
spin_unlock_irqrestore(&osd_lock, lock_flags);
osd_wait_vsync_hw(next_index);
} else {
static void osd_setting_default_hwc(void)
{
u32 blend_hsize, blend_vsize;
- u32 blend2_premult_en = 1, din_premult_en = 0;
- u32 blend_din_en = 0x1;
+ u32 blend2_premult_en = 3, din_premult_en = 0;
+ u32 blend_din_en = 0x5;
/* blend_din0 input to blend0 */
- u32 din0_byp_blend = 1;
+ u32 din0_byp_blend = 0;
/* blend1_dout to blend2 */
- u32 din2_osd_sel = 1;
+ u32 din2_osd_sel = 0;
/* blend1_din3 input to blend1 */
- u32 din3_osd_sel = 1;
- u32 din_reoder_sel = 0x1;
+ u32 din3_osd_sel = 0;
+ u32 din_reoder_sel = 0x4441;
u32 postbld_src3_sel = 3, postbld_src4_sel = 0;
u32 postbld_osd1_premult = 0, postbld_osd2_premult = 0;
for (idx = 0; idx < osd_hw.osd_meson_dev.viu1_osd_count; idx++)
osd_reg_write(
hw_osd_reg_array[idx].osd_ctrl_stat, data32);
+ if (osd_hw.osd_meson_dev.osd_ver == OSD_HIGH_ONE)
+ osd_setting_default_hwc();
}
if (osd_hw.osd_meson_dev.osd_ver <= OSD_NORMAL) {
osd_vpp_misc =
#endif
osd_set_basic_urgent(true);
osd_set_two_ports(true);
- osd_setting_default_hwc();
}
/* disable deband as default */
if (osd_hw.osd_meson_dev.has_deband)