mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
vdin: add sm1 support [1/1]
PD#SWPL-6065 Problem: need add vdin support for sm1 Solution: add vdin support for sm1 Verify: pxp Change-Id: I55af5273607a88f4e5a2394de0acbb44811da8f9 Signed-off-by: Evoke Zhang <evoke.zhang@amlogic.com>
This commit is contained in:
committed by
Jianxiong Pan
parent
f3c9ff5205
commit
0b049e146e
@@ -589,7 +589,8 @@ static void vdin_set_meas_mux(unsigned int offset, enum tvin_port_e port_,
|
|||||||
meas_mux = MEAS_MUX_656_B;
|
meas_mux = MEAS_MUX_656_B;
|
||||||
else if ((is_meson_gxl_cpu() || is_meson_gxm_cpu() ||
|
else if ((is_meson_gxl_cpu() || is_meson_gxm_cpu() ||
|
||||||
is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
is_meson_tl1_cpu()) && (bt_path == BT_PATH_GPIO))
|
is_meson_tl1_cpu() || is_meson_sm1_cpu()) &&
|
||||||
|
(bt_path == BT_PATH_GPIO))
|
||||||
meas_mux = MEAS_MUX_656;
|
meas_mux = MEAS_MUX_656;
|
||||||
else
|
else
|
||||||
pr_info("cpu not define or do not support bt656");
|
pr_info("cpu not define or do not support bt656");
|
||||||
@@ -700,7 +701,8 @@ void vdin_set_top(unsigned int offset,
|
|||||||
VDI9_ASFIFO_CTRL_BIT, VDI9_ASFIFO_CTRL_WID);
|
VDI9_ASFIFO_CTRL_BIT, VDI9_ASFIFO_CTRL_WID);
|
||||||
} else if ((is_meson_gxm_cpu() || is_meson_gxl_cpu() ||
|
} else if ((is_meson_gxm_cpu() || is_meson_gxl_cpu() ||
|
||||||
is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
is_meson_tl1_cpu()) && (bt_path == BT_PATH_GPIO)) {
|
is_meson_tl1_cpu() || is_meson_sm1_cpu()) &&
|
||||||
|
(bt_path == BT_PATH_GPIO)) {
|
||||||
vdin_mux = VDIN_MUX_656;
|
vdin_mux = VDIN_MUX_656;
|
||||||
wr_bits(offset, VDIN_ASFIFO_CTRL0, 0xe4,
|
wr_bits(offset, VDIN_ASFIFO_CTRL0, 0xe4,
|
||||||
VDI1_ASFIFO_CTRL_BIT, VDI1_ASFIFO_CTRL_WID);
|
VDI1_ASFIFO_CTRL_BIT, VDI1_ASFIFO_CTRL_WID);
|
||||||
@@ -750,7 +752,7 @@ void vdin_set_top(unsigned int offset,
|
|||||||
VDI6_ASFIFO_CTRL_BIT, VDI6_ASFIFO_CTRL_WID);
|
VDI6_ASFIFO_CTRL_BIT, VDI6_ASFIFO_CTRL_WID);
|
||||||
else {
|
else {
|
||||||
if (/*is_meson_gxlx2_cpu() || */is_meson_g12b_cpu()
|
if (/*is_meson_gxlx2_cpu() || */is_meson_g12b_cpu()
|
||||||
|| is_meson_tl1_cpu())
|
|| is_meson_tl1_cpu() || is_meson_sm1_cpu())
|
||||||
wr_bits(offset, VDIN_ASFIFO_CTRL3, 0xd4,
|
wr_bits(offset, VDIN_ASFIFO_CTRL3, 0xd4,
|
||||||
VDI6_ASFIFO_CTRL_BIT,
|
VDI6_ASFIFO_CTRL_BIT,
|
||||||
VDI6_ASFIFO_CTRL_WID);
|
VDI6_ASFIFO_CTRL_WID);
|
||||||
@@ -767,7 +769,7 @@ void vdin_set_top(unsigned int offset,
|
|||||||
VDI8_ASFIFO_CTRL_BIT, VDI8_ASFIFO_CTRL_WID);
|
VDI8_ASFIFO_CTRL_BIT, VDI8_ASFIFO_CTRL_WID);
|
||||||
else {
|
else {
|
||||||
if (/*is_meson_gxlx2_cpu() || */is_meson_g12b_cpu()
|
if (/*is_meson_gxlx2_cpu() || */is_meson_g12b_cpu()
|
||||||
|| is_meson_tl1_cpu())
|
|| is_meson_tl1_cpu() || is_meson_sm1_cpu())
|
||||||
wr_bits(offset, VDIN_ASFIFO_CTRL3, 0xd4,
|
wr_bits(offset, VDIN_ASFIFO_CTRL3, 0xd4,
|
||||||
VDI6_ASFIFO_CTRL_BIT,
|
VDI6_ASFIFO_CTRL_BIT,
|
||||||
VDI6_ASFIFO_CTRL_WID);
|
VDI6_ASFIFO_CTRL_WID);
|
||||||
@@ -1510,7 +1512,8 @@ void vdin_set_matrix(struct vdin_dev_s *devp)
|
|||||||
*/
|
*/
|
||||||
wr_bits(offset, VDIN_MATRIX_CTRL, 0,
|
wr_bits(offset, VDIN_MATRIX_CTRL, 0,
|
||||||
VDIN_MATRIX1_EN_BIT, VDIN_MATRIX1_EN_WID);
|
VDIN_MATRIX1_EN_BIT, VDIN_MATRIX1_EN_WID);
|
||||||
if (is_meson_g12a_cpu() || is_meson_g12b_cpu())
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
|
is_meson_sm1_cpu())
|
||||||
vdin_set_color_matrix0_g12a(devp->addr_offset,
|
vdin_set_color_matrix0_g12a(devp->addr_offset,
|
||||||
devp->fmt_info_p,
|
devp->fmt_info_p,
|
||||||
devp->format_convert,
|
devp->format_convert,
|
||||||
@@ -1543,7 +1546,8 @@ void vdin_set_matrix(struct vdin_dev_s *devp)
|
|||||||
devp->prop.color_fmt_range,
|
devp->prop.color_fmt_range,
|
||||||
devp->prop.vdin_hdr_Flag,
|
devp->prop.vdin_hdr_Flag,
|
||||||
devp->color_range_mode);
|
devp->color_range_mode);
|
||||||
if (is_meson_g12a_cpu() || is_meson_g12b_cpu())
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
|
is_meson_sm1_cpu())
|
||||||
vdin_set_color_matrix0_g12a(devp->addr_offset,
|
vdin_set_color_matrix0_g12a(devp->addr_offset,
|
||||||
devp->fmt_info_p,
|
devp->fmt_info_p,
|
||||||
devp->format_convert,
|
devp->format_convert,
|
||||||
@@ -1578,7 +1582,8 @@ void vdin_set_matrixs(struct vdin_dev_s *devp, unsigned char id,
|
|||||||
{
|
{
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 0:
|
case 0:
|
||||||
if (is_meson_g12a_cpu() || is_meson_g12b_cpu())
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
|
is_meson_sm1_cpu())
|
||||||
vdin_set_color_matrix0_g12a(devp->addr_offset,
|
vdin_set_color_matrix0_g12a(devp->addr_offset,
|
||||||
devp->fmt_info_p,
|
devp->fmt_info_p,
|
||||||
devp->format_convert,
|
devp->format_convert,
|
||||||
@@ -1628,7 +1633,7 @@ void vdin_set_prob_xy(unsigned int offset,
|
|||||||
devp->prop.color_fmt_range,
|
devp->prop.color_fmt_range,
|
||||||
devp->prop.vdin_hdr_Flag,
|
devp->prop.vdin_hdr_Flag,
|
||||||
devp->color_range_mode);
|
devp->color_range_mode);
|
||||||
if (is_meson_g12a_cpu() || is_meson_g12b_cpu())
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() || is_meson_sm1_cpu())
|
||||||
vdin_set_color_matrix0_g12a(devp->addr_offset,
|
vdin_set_color_matrix0_g12a(devp->addr_offset,
|
||||||
devp->fmt_info_p,
|
devp->fmt_info_p,
|
||||||
devp->format_convert,
|
devp->format_convert,
|
||||||
@@ -2055,7 +2060,8 @@ void vdin_set_canvas_id(struct vdin_dev_s *devp, unsigned int rdma_enable,
|
|||||||
{
|
{
|
||||||
#ifdef CONFIG_AMLOGIC_MEDIA_RDMA
|
#ifdef CONFIG_AMLOGIC_MEDIA_RDMA
|
||||||
if (rdma_enable) {
|
if (rdma_enable) {
|
||||||
if (is_meson_g12a_cpu() || is_meson_g12b_cpu()) {
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
|
is_meson_sm1_cpu()) {
|
||||||
rdma_write_reg_bits(devp->rdma_handle,
|
rdma_write_reg_bits(devp->rdma_handle,
|
||||||
VDIN_COM_CTRL0+devp->addr_offset, 1,
|
VDIN_COM_CTRL0+devp->addr_offset, 1,
|
||||||
VDIN_FORCEGOLINE_EN_BIT, 1);
|
VDIN_FORCEGOLINE_EN_BIT, 1);
|
||||||
|
|||||||
@@ -2831,7 +2831,7 @@ static long vdin_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
|||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
memset(¶m, 0, sizeof(struct vdin_parm_s));
|
memset(¶m, 0, sizeof(struct vdin_parm_s));
|
||||||
if (is_meson_tl1_cpu())
|
if (is_meson_tl1_cpu() || is_meson_sm1_cpu())
|
||||||
param.port = TVIN_PORT_VIU1_WB0_VPP;
|
param.port = TVIN_PORT_VIU1_WB0_VPP;
|
||||||
else
|
else
|
||||||
param.port = TVIN_PORT_VIU1;
|
param.port = TVIN_PORT_VIU1;
|
||||||
@@ -3154,12 +3154,13 @@ static int vdin_drv_probe(struct platform_device *pdev)
|
|||||||
if (is_meson_gxbb_cpu() && vdevp->index)
|
if (is_meson_gxbb_cpu() && vdevp->index)
|
||||||
vdin_addr_offset[vdevp->index] = 0x70;
|
vdin_addr_offset[vdevp->index] = 0x70;
|
||||||
else if ((is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
else if ((is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
is_meson_tl1_cpu()) && vdevp->index)
|
is_meson_tl1_cpu() || is_meson_sm1_cpu()) && vdevp->index)
|
||||||
vdin_addr_offset[vdevp->index] = 0x100;
|
vdin_addr_offset[vdevp->index] = 0x100;
|
||||||
vdevp->addr_offset = vdin_addr_offset[vdevp->index];
|
vdevp->addr_offset = vdin_addr_offset[vdevp->index];
|
||||||
vdevp->flags = 0;
|
vdevp->flags = 0;
|
||||||
/*canvas align number*/
|
/*canvas align number*/
|
||||||
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() || is_meson_tl1_cpu())
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
|
is_meson_tl1_cpu() || is_meson_sm1_cpu())
|
||||||
vdevp->canvas_align = 64;
|
vdevp->canvas_align = 64;
|
||||||
else
|
else
|
||||||
vdevp->canvas_align = 32;
|
vdevp->canvas_align = 32;
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ static int viuin_open(struct tvin_frontend_s *fe, enum tvin_port_e port)
|
|||||||
switch (rd_bits_viu(VPU_VIU_VENC_MUX_CTRL, 0, 2)) {
|
switch (rd_bits_viu(VPU_VIU_VENC_MUX_CTRL, 0, 2)) {
|
||||||
case 0:
|
case 0:
|
||||||
if (is_meson_g12a_cpu() || is_meson_g12b_cpu()
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu()
|
||||||
|| is_meson_tl1_cpu())
|
|| is_meson_tl1_cpu() || is_meson_sm1_cpu())
|
||||||
viu_mux = 0x4;
|
viu_mux = 0x4;
|
||||||
else
|
else
|
||||||
viu_mux = 0x8;
|
viu_mux = 0x8;
|
||||||
@@ -216,7 +216,8 @@ static int viuin_open(struct tvin_frontend_s *fe, enum tvin_port_e port)
|
|||||||
wr_viu(VPU_VIU2VDIN_HDN_CTRL, 0x40f00);
|
wr_viu(VPU_VIU2VDIN_HDN_CTRL, 0x40f00);
|
||||||
} else
|
} else
|
||||||
wr_bits_viu(VPU_VIU2VDIN_HDN_CTRL, devp->parm.h_active, 0, 14);
|
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()) {
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu() ||
|
||||||
|
is_meson_tl1_cpu() || is_meson_sm1_cpu()) {
|
||||||
if (((port >= TVIN_PORT_VIU1_WB0_VD1) &&
|
if (((port >= TVIN_PORT_VIU1_WB0_VD1) &&
|
||||||
(port <= TVIN_PORT_VIU1_WB0_POST_BLEND)) ||
|
(port <= TVIN_PORT_VIU1_WB0_POST_BLEND)) ||
|
||||||
((port >= TVIN_PORT_VIU2_WB0_VD1) &&
|
((port >= TVIN_PORT_VIU2_WB0_VD1) &&
|
||||||
@@ -320,7 +321,7 @@ static void viuin_close(struct tvin_frontend_s *fe)
|
|||||||
open_cnt--;
|
open_cnt--;
|
||||||
if (open_cnt == 0) {
|
if (open_cnt == 0) {
|
||||||
if (is_meson_g12a_cpu() || is_meson_g12b_cpu()
|
if (is_meson_g12a_cpu() || is_meson_g12b_cpu()
|
||||||
|| is_meson_tl1_cpu()) {
|
|| is_meson_tl1_cpu() || is_meson_sm1_cpu()) {
|
||||||
wr_viu(VPU_VIU_VDIN_IF_MUX_CTRL, 0);
|
wr_viu(VPU_VIU_VDIN_IF_MUX_CTRL, 0);
|
||||||
wr_viu(VPP_WRBAK_CTRL, 0);
|
wr_viu(VPP_WRBAK_CTRL, 0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user