mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 11:50:43 +09:00
vdin: merge from mainline
PD#SWPL-15312 Change-Id: I39e4ed6014292a32f04f3e08724093ff0751757a Signed-off-by: Lei Qian <lei.qian@amlogic.com>
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) */
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
/* *************************************************** */
|
||||
|
||||
Reference in New Issue
Block a user