if (is_meson_gxtvbb_cpu() || is_meson_gxl_cpu() ||
is_meson_gxm_cpu() || is_meson_g12a_cpu() ||
- is_meson_g12b_cpu() || is_meson_tl1_cpu()) {
+ is_meson_g12b_cpu() || is_meson_tl1_cpu() ||
+ is_meson_tm2_cpu()) {
hw_cnt = 1;
} else if (is_meson_gxbb_cpu()) {
hw_cnt = 2;
meas_mux = MEAS_MUX_656_B;
else if ((is_meson_gxl_cpu() || is_meson_gxm_cpu() ||
is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
- is_meson_tl1_cpu() || is_meson_sm1_cpu()) &&
+ is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu()) &&
(bt_path == BT_PATH_GPIO))
meas_mux = MEAS_MUX_656;
else
VDI9_ASFIFO_CTRL_BIT, VDI9_ASFIFO_CTRL_WID);
} else if ((is_meson_gxm_cpu() || is_meson_gxl_cpu() ||
is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
- is_meson_tl1_cpu() || is_meson_sm1_cpu()) &&
+ is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu()) &&
(bt_path == BT_PATH_GPIO)) {
vdin_mux = VDIN_MUX_656;
wr_bits(offset, VDIN_ASFIFO_CTRL0, 0xe4,
VDI6_ASFIFO_CTRL_BIT, VDI6_ASFIFO_CTRL_WID);
else {
if (/*is_meson_gxlx2_cpu() || */is_meson_g12b_cpu()
- || is_meson_tl1_cpu() || is_meson_sm1_cpu())
+ || is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu())
wr_bits(offset, VDIN_ASFIFO_CTRL3, 0xd4,
VDI6_ASFIFO_CTRL_BIT,
VDI6_ASFIFO_CTRL_WID);
VDI8_ASFIFO_CTRL_BIT, VDI8_ASFIFO_CTRL_WID);
else {
if (/*is_meson_gxlx2_cpu() || */is_meson_g12b_cpu()
- || is_meson_tl1_cpu() || is_meson_sm1_cpu())
+ || is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu())
wr_bits(offset, VDIN_ASFIFO_CTRL3, 0xd4,
VDI6_ASFIFO_CTRL_BIT,
VDI6_ASFIFO_CTRL_WID);
wr_bits(offset, VDIN_MATRIX_CTRL, 0,
VDIN_MATRIX1_EN_BIT, VDIN_MATRIX1_EN_WID);
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
- is_meson_sm1_cpu())
+ is_meson_sm1_cpu() || is_meson_tm2_cpu())
vdin_set_color_matrix0_g12a(devp->addr_offset,
devp->fmt_info_p,
devp->format_convert,
devp->prop.vdin_hdr_Flag,
devp->color_range_mode);
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
- is_meson_sm1_cpu())
+ is_meson_sm1_cpu() || is_meson_tm2_cpu())
vdin_set_color_matrix0_g12a(devp->addr_offset,
devp->fmt_info_p,
devp->format_convert,
switch (id) {
case 0:
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
- is_meson_sm1_cpu())
+ is_meson_sm1_cpu() || is_meson_tm2_cpu())
vdin_set_color_matrix0_g12a(devp->addr_offset,
devp->fmt_info_p,
devp->format_convert,
devp->prop.color_fmt_range,
devp->prop.vdin_hdr_Flag,
devp->color_range_mode);
- if (is_meson_g12a_cpu() || is_meson_g12b_cpu() || is_meson_sm1_cpu())
+ if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
+ is_meson_sm1_cpu() || is_meson_tm2_cpu())
vdin_set_color_matrix0_g12a(devp->addr_offset,
devp->fmt_info_p,
devp->format_convert,
is_meson_gxtvbb_cpu() || is_meson_txl_cpu() ||
is_meson_txlx_cpu() || is_meson_tl1_cpu())
wr(offset, VDIN_LFIFO_CTRL, 0x00000f00);
+ else if (is_meson_tm2_cpu())
+ wr(offset, VDIN_LFIFO_CTRL, 0xc0020f00);
else
wr(offset, VDIN_LFIFO_CTRL, 0x00000780);
/* [15:14] clkgate.bbar = 0/(auto, off, on, on) */
(devp->parm.port != TVIN_PORT_CVBS3)) {
if (devp->h_active > 720 && ((devp->parm.info.fps == 50) ||
(devp->parm.info.fps == 60)))
- if (is_meson_tl1_cpu()) {
+ if (is_meson_tl1_cpu() || is_meson_tm2_cpu()) {
devp->game_mode = (VDIN_GAME_MODE_0 |
VDIN_GAME_MODE_1 |
VDIN_GAME_MODE_SWITCH_EN);
vdin_hw_enable(devp->addr_offset);
vdin_set_all_regs(devp);
- if (is_meson_tl1_cpu()) {
+ if (is_meson_tl1_cpu() || is_meson_tm2_cpu()) {
if (devp->afbce_mode == 0)
vdin_write_mif_or_afbce(devp, VDIN_OUTPUT_TO_MIF);
else if (devp->afbce_mode == 1)
devp->index, jiffies_to_msecs(jiffies),
jiffies_to_msecs(jiffies)-devp->start_time);
- if ((devp->afbce_mode == 1) && is_meson_tl1_cpu()) {
+ if ((devp->afbce_mode == 1) &&
+ (is_meson_tl1_cpu() || is_meson_tm2_cpu())) {
if ((devp->h_active >= 1920) && (devp->v_active >= 1080)) {
tl1_vdin1_preview_flag = 1;
tl1_vdin1_data_readied = 0;
disable_irq_nosync(devp->irq);
afbc_init_flag[devp->index] = 0;
- if (is_meson_tl1_cpu() && (devp->afbce_mode == 1)) {
+ if ((is_meson_tl1_cpu() || is_meson_tm2_cpu())
+ && (devp->afbce_mode == 1)) {
while (i++ < afbc_write_down_timeout) {
if (vdin_afbce_read_writedown_flag())
break;
vf_unreg_provider(&devp->vprov);
devp->dv.dv_config = 0;
- if (is_meson_tl1_cpu() && (devp->afbce_mode == 1)) {
+ if ((is_meson_tl1_cpu() || is_meson_tm2_cpu())
+ && (devp->afbce_mode == 1)) {
vdin_afbce_hw_disable();
vdin_afbce_soft_reset();
}
offset = devp->addr_offset;
- if (is_meson_tl1_cpu() && (devp->afbce_mode == 1)) {
+ if ((is_meson_tl1_cpu() || is_meson_tm2_cpu())
+ && (devp->afbce_mode == 1)) {
if (afbc_init_flag[devp->index] == 0) {
afbc_init_flag[devp->index] = 1;
/*set mem power on*/
vdin_vf_disp_mode_update(curr_wr_vfe, devp->vfp);
}
/*switch to game mode 2 from game mode 1,otherwise may appear blink*/
- if (is_meson_tl1_cpu()) {
+ if (is_meson_tl1_cpu() || is_meson_tm2_cpu()) {
if (devp->game_mode & VDIN_GAME_MODE_SWITCH_EN) {
/* make sure phase lock for next few frames */
if (vlock_get_phlock_flag())
return 0;
}
- if (is_meson_tl1_cpu() && (devp->afbce_mode == 1))
+ if ((devp->afbce_mode == 1) &&
+ (is_meson_tl1_cpu() || is_meson_tm2_cpu()))
switch_vpu_mem_pd_vmod(VPU_AFBCE, VPU_MEM_POWER_ON);
devp->flags |= VDIN_FLAG_FS_OPENED;
return 0;
}
- if (is_meson_tl1_cpu() && (devp->afbce_mode == 1))
+ if ((devp->afbce_mode == 1) &&
+ (is_meson_tl1_cpu() || is_meson_tm2_cpu()))
switch_vpu_mem_pd_vmod(VPU_AFBCE, VPU_MEM_POWER_DOWN);
devp->flags &= (~VDIN_FLAG_FS_OPENED);
return -EFAULT;
}
memset(¶m, 0, sizeof(struct vdin_parm_s));
- if (is_meson_tl1_cpu() || is_meson_sm1_cpu())
+ if (is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu())
param.port = TVIN_PORT_VIU1_WB0_VPP;
else
param.port = TVIN_PORT_VIU1;
} else {
vdevp->afbce_mode = val & 0xf;
vdevp->afbce_lossy_en = (val>>4)&0xf;
- if ((is_meson_tl1_cpu()) && (vdevp->index == 0)) {
+ if ((is_meson_tl1_cpu() || is_meson_tm2_cpu()) &&
+ (vdevp->index == 0)) {
/* just use afbce at vdin0 */
pr_info("afbce mode = %d\n", vdevp->afbce_mode);
pr_info("afbce loosy en = %d\n", vdevp->afbce_lossy_en);
if (is_meson_gxbb_cpu() && vdevp->index)
vdin_addr_offset[vdevp->index] = 0x70;
else if ((is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
- is_meson_tl1_cpu() || is_meson_sm1_cpu()) && vdevp->index)
+ is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu()) && vdevp->index)
vdin_addr_offset[vdevp->index] = 0x100;
vdevp->addr_offset = vdin_addr_offset[vdevp->index];
vdevp->flags = 0;
/*canvas align number*/
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
- is_meson_tl1_cpu() || is_meson_sm1_cpu())
+ is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu())
vdevp->canvas_align = 64;
else
vdevp->canvas_align = 32;
/*open the venc to vdin path*/
switch (rd_bits_viu(VPU_VIU_VENC_MUX_CTRL, 0, 2)) {
case 0:
- if (is_meson_g12a_cpu() || is_meson_g12b_cpu()
- || is_meson_tl1_cpu() || is_meson_sm1_cpu())
+ if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
+ is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu())
viu_mux = 0x4;
else
viu_mux = 0x8;
} else
wr_bits_viu(VPU_VIU2VDIN_HDN_CTRL, devp->parm.h_active, 0, 14);
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
- is_meson_tl1_cpu() || is_meson_sm1_cpu()) {
+ is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu()) {
if (((port >= TVIN_PORT_VIU1_WB0_VD1) &&
(port <= TVIN_PORT_VIU1_WB0_POST_BLEND)) ||
((port >= TVIN_PORT_VIU2_WB0_VD1) &&
if (open_cnt)
open_cnt--;
if (open_cnt == 0) {
- if (is_meson_g12a_cpu() || is_meson_g12b_cpu()
- || is_meson_tl1_cpu() || is_meson_sm1_cpu()) {
+ if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
+ is_meson_tl1_cpu() || is_meson_sm1_cpu() ||
+ is_meson_tm2_cpu()) {
wr_viu(VPU_VIU_VDIN_IF_MUX_CTRL, 0);
wr_viu(VPP_WRBAK_CTRL, 0);