vdin: merge from mainline

PD#SWPL-15312

Change-Id: I39e4ed6014292a32f04f3e08724093ff0751757a
Signed-off-by: Lei Qian <lei.qian@amlogic.com>
This commit is contained in:
Lei Qian
2019-10-17 11:34:55 +08:00
committed by Luke Go
parent 73e03dfefe
commit 2a7ea49a40
6 changed files with 82 additions and 23 deletions

View File

@@ -454,6 +454,7 @@ struct rx_s {
struct emp_buff empbuff;
uint32_t arc_port;
enum edid_ver_e edid_ver;
bool arc_5vsts;
};
struct _hdcp_ksv {

View File

@@ -3637,8 +3637,8 @@ void aml_phy_init(void)
{
uint32_t idx = rx.phy.phy_bw;
uint32_t data32;
uint32_t term_value =
hdmirx_rd_top(TOP_HPD_PWR5V) & 0x7;
uint32_t term_value =
hdmirx_rd_top(TOP_HPD_PWR5V) & 0x7;
data32 = phy_misci[idx][0];
data32 = (data32 & (~0x7));

View File

@@ -35,6 +35,7 @@
#include <linux/delay.h>
#include <linux/of_gpio.h>
#include <linux/amlogic/media/frame_provider/tvin/tvin.h>
#include <linux/amlogic/media/sound/hdmi_earc.h>
/* Local include */
#include "hdmi_rx_repeater.h"
@@ -1964,6 +1965,7 @@ static void rx_cable_clk_monitor(void)
pre_sts = sts;
}
}
/* ---------------------------------------------------------- */
/* func: port A,B,C,D hdmitx-5v monitor & HPD control */
/* note: G9TV portD no used */
@@ -1972,6 +1974,7 @@ void rx_5v_monitor(void)
{
static uint8_t check_cnt;
uint8_t tmp_5v = rx_get_hdmi5v_sts();
bool tmp_arc_5v;
if (auto_switch_off)
tmp_5v = 0x0f;
@@ -2000,6 +2003,13 @@ void rx_5v_monitor(void)
else
pwr_sts_to_esm = false;
}
if (rx.chip_id == CHIP_ID_TM2) {
tmp_arc_5v = (pwr_sts >> rx.arc_port) & 1;
if (rx.arc_5vsts != tmp_arc_5v) {
rx.arc_5vsts = tmp_arc_5v;
earc_hdmirx_hpdst(rx.arc_port, rx.arc_5vsts);
}
}
}
/*

View File

@@ -2316,6 +2316,11 @@ inline void tvafe_cvd2_adj_hs(struct tvafe_cvd2_s *cvd2,
W_APB_BIT(CVD2_ACTIVE_VIDEO_HSTART, temp,
HACTIVE_START_BIT, HACTIVE_START_WID);
/* 0x12d */
if (tvafe_cpu_type() == CPU_TYPE_TL1 ||
tvafe_cpu_type() == CPU_TYPE_TM2) {
temp = 0x20 * cvd2->info.hs_adj_level;
delta = temp / 4;
}
temp = delta << 16;
temp = temp | delta;
temp = acd_h_back - temp;

View File

@@ -498,6 +498,12 @@ static struct vdin_matrix_lup_s vdin_matrix_lup[] = {
/* 0 0 0 0.859 16 */
{0x00000000, 0x00000000, 0x03700000, 0x00000000, 0x03700000, 0x00000000,
0x00000370, 0x00400040, 0x00000040,},
/* VDIN_MATRIX_2020RGB_YUV2020 */
/* 0 0.224732 0.580008 0.050729 16 */
/* 0 -0.122176 -0.315324 0.437500 128 */
/* 0 0.437500 -0.402312 -0.035188 128 */
{0x00000000, 0x00000000, 0x00e60252, 0x00341f84, 0x1ebe01c0, 0x01c01e65,
0x00001fdd, 0x00400200, 0x00000200,},
};
/***************************Local function**********************************/
@@ -1095,9 +1101,14 @@ static inline void vdin_set_color_matrix1(unsigned int offset,
VDIN_MATRIX_RGBS_YUV709;
}
} else {
if (color_fmt_range == TVIN_RGB_FULL)
matrix_csc = VDIN_MATRIX_RGB_YUV709;
else
if (color_fmt_range == TVIN_RGB_FULL) {
if (vdin_hdr_flag == 1)
matrix_csc =
VDIN_MATRIX_RGB2020_YUV2020;
else
matrix_csc =
VDIN_MATRIX_RGB_YUV709;
} else
matrix_csc = VDIN_MATRIX_RGBS_YUV709;
}
} else {
@@ -1129,9 +1140,14 @@ static inline void vdin_set_color_matrix1(unsigned int offset,
VDIN_MATRIX_RGBS_YUV709;
}
} else {
if (color_fmt_range == TVIN_RGB_FULL)
matrix_csc = VDIN_MATRIX_RGB_YUV709;
else
if (color_fmt_range == TVIN_RGB_FULL) {
if (vdin_hdr_flag == 1)
matrix_csc =
VDIN_MATRIX_RGB2020_YUV2020;
else
matrix_csc =
VDIN_MATRIX_RGB_YUV709;
} else
matrix_csc = VDIN_MATRIX_RGBS_YUV709;
}
} else {
@@ -1274,9 +1290,14 @@ static inline void vdin_set_color_matrix0(unsigned int offset,
VDIN_MATRIX_RGBS_YUV709;
}
} else {
if (color_fmt_range == TVIN_RGB_FULL)
matrix_csc = VDIN_MATRIX_RGB_YUV709;
else
if (color_fmt_range == TVIN_RGB_FULL) {
if (vdin_hdr_flag == 1)
matrix_csc =
VDIN_MATRIX_RGB2020_YUV2020;
else
matrix_csc =
VDIN_MATRIX_RGB_YUV709;
} else
matrix_csc = VDIN_MATRIX_RGBS_YUV709;
}
} else {
@@ -1308,9 +1329,14 @@ static inline void vdin_set_color_matrix0(unsigned int offset,
VDIN_MATRIX_RGBS_YUV709;
}
} else {
if (color_fmt_range == TVIN_RGB_FULL)
matrix_csc = VDIN_MATRIX_RGB_YUV709;
else
if (color_fmt_range == TVIN_RGB_FULL) {
if (vdin_hdr_flag == 1)
matrix_csc =
VDIN_MATRIX_RGB2020_YUV2020;
else
matrix_csc =
VDIN_MATRIX_RGB_YUV709;
} else
matrix_csc = VDIN_MATRIX_RGBS_YUV709;
}
} else {
@@ -1449,9 +1475,14 @@ static void vdin_set_color_matrix0_g12a(unsigned int offset,
VDIN_MATRIX_RGBS_YUV709;
}
} else {
if (color_fmt_range == TVIN_RGB_FULL)
matrix_csc = VDIN_MATRIX_RGB_YUV709;
else
if (color_fmt_range == TVIN_RGB_FULL) {
if (vdin_hdr_flag == 1)
matrix_csc =
VDIN_MATRIX_RGB2020_YUV2020;
else
matrix_csc =
VDIN_MATRIX_RGB_YUV709;
} else
matrix_csc = VDIN_MATRIX_RGBS_YUV709;
}
} else {
@@ -1483,9 +1514,14 @@ static void vdin_set_color_matrix0_g12a(unsigned int offset,
VDIN_MATRIX_RGBS_YUV709;
}
} else {
if (color_fmt_range == TVIN_RGB_FULL)
matrix_csc = VDIN_MATRIX_RGB_YUV709;
else
if (color_fmt_range == TVIN_RGB_FULL) {
if (vdin_hdr_flag == 1)
matrix_csc =
VDIN_MATRIX_RGB2020_YUV2020;
else
matrix_csc =
VDIN_MATRIX_RGB_YUV709;
} else
matrix_csc = VDIN_MATRIX_RGBS_YUV709;
}
} else {
@@ -1562,9 +1598,14 @@ static void vdin_set_color_matrix0_g12a(unsigned int offset,
break;
}
if (matrix_csc == VDIN_MATRIX_NULL) {
if (matrix_csc == VDIN_MATRIX_NULL) {
wr_bits(offset, VDIN_MATRIX_CTRL, 0,
VDIN_MATRIX_EN_BIT, VDIN_MATRIX_EN_WID);
if (is_meson_tm2_cpu())
wr_bits(offset, VDIN_HDR2_MATRIXI_EN_CTRL, 0,
VDIN_MATRIX_EN_BIT,
VDIN_MATRIX_EN_WID);
} else {
matrix_tbl = &vdin_matrix_lup[matrix_csc - 1];
@@ -2786,9 +2827,10 @@ void vdin_set_default_regmap(unsigned int offset)
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())
else if (is_meson_tm2_cpu()) {
wr(offset, VDIN_LFIFO_CTRL, 0xc0020f00);
else
wr(offset, VDIN_HDR2_MATRIXI_EN_CTRL, 0);
} else
wr(offset, VDIN_LFIFO_CTRL, 0x00000780);
/* [15:14] clkgate.bbar = 0/(auto, off, on, on) */
/* [13:12] clkgate.bbar = 0/(auto, off, on, on) */

View File

@@ -87,6 +87,7 @@ enum vdin_matrix_csc_e {
VDIN_MATRIX_YUV709F_YUV601F,
VDIN_MATRIX_RGBS_RGB,
VDIN_MATRIX_RGB_RGBS,
VDIN_MATRIX_RGB2020_YUV2020,
};
/* *************************************************** */