From e3e12f52b214121840b44c91de5b3e5af5d3eb84 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 03:04:41 +0000 Subject: [PATCH] rk3568 rt init --- kernel/drivers/gpu/drm/rockchip/rockchip_drm_tve.h | 169 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 138 insertions(+), 31 deletions(-) diff --git a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_tve.h b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_tve.h index e7d3acc..376b2ff 100644 --- a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_tve.h +++ b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_tve.h @@ -17,6 +17,13 @@ #define RK3036_GRF_SOC_CON3 0x0154 #define RK312X_GRF_TVE_CON 0x0170 + #define m_EXTREF_EN BIT(0) + #define m_VBG_EN BIT(1) + #define m_DAC_EN BIT(2) + #define m_SENSE_EN BIT(3) + #define m_BIAS_EN (7 << 4) + #define m_DAC_GAIN (0x3f << 7) + #define v_DAC_GAIN(x) (((x) & 0x3f) << 7) #define TV_CTRL (0x00) #define m_CVBS_MODE BIT(24) @@ -87,40 +94,123 @@ #define TV_BRIGHTNESS_CONTRAST (0x90) -#define m_EXTREF_EN BIT(0) -#define m_VBG_EN BIT(1) -#define m_DAC_EN BIT(2) -#define m_SENSE_EN BIT(3) -#define m_BIAS_EN (7 << 4) -#define m_DAC_GAIN (0x3f << 7) -#define v_DAC_GAIN(x) (((x) & 0x3f) << 7) +#define VDAC_VDAC0 (0x00) + #define m_RST_ANA BIT(7) + #define m_RST_DIG BIT(6) -#define VDAC_VDAC0 (0x00) - #define m_RST_ANA BIT(7) - #define m_RST_DIG BIT(6) + #define v_RST_ANA(x) (((x) & 1) << 7) + #define v_RST_DIG(x) (((x) & 1) << 6) +#define VDAC_VDAC1 (0x280) + #define m_CUR_REG (0xf << 4) + #define m_DR_PWR_DOWN BIT(1) + #define m_BG_PWR_DOWN BIT(0) - #define v_RST_ANA(x) (((x) & 1) << 7) - #define v_RST_DIG(x) (((x) & 1) << 6) -#define VDAC_VDAC1 (0x280) - #define m_CUR_REG (0xf << 4) - #define m_DR_PWR_DOWN BIT(1) - #define m_BG_PWR_DOWN BIT(0) + #define v_CUR_REG(x) (((x) & 0xf) << 4) + #define v_DR_PWR_DOWN(x) (((x) & 1) << 1) + #define v_BG_PWR_DOWN(x) (((x) & 1) << 0) +#define VDAC_VDAC2 (0x284) + #define m_CUR_CTR (0X3f) - #define v_CUR_REG(x) (((x) & 0xf) << 4) - #define v_DR_PWR_DOWN(x) (((x) & 1) << 1) - #define v_BG_PWR_DOWN(x) (((x) & 1) << 0) -#define VDAC_VDAC2 (0x284) - #define m_CUR_CTR (0X3f) + #define v_CUR_CTR(x) (((x) & 0x3f)) +#define VDAC_VDAC3 (0x288) + #define m_CAB_EN BIT(5) + #define m_CAB_REF BIT(4) + #define m_CAB_FLAG BIT(0) - #define v_CUR_CTR(x) (((x) & 0x3f)) -#define VDAC_VDAC3 (0x288) - #define m_CAB_EN BIT(5) - #define m_CAB_REF BIT(4) - #define m_CAB_FLAG BIT(0) + #define v_CAB_EN(x) (((x) & 1) << 5) + #define v_CAB_REF(x) (((x) & 1) << 4) + #define v_CAB_FLAG(x) (((x) & 1) << 0) - #define v_CAB_EN(x) (((x) & 1) << 5) - #define v_CAB_REF(x) (((x) & 1) << 4) - #define v_CAB_FLAG(x) (((x) & 1) << 0) +// RK3528 CVBS GRF +#define RK3528_VO_GRF_CVBS_CON 0x60010 + #define m_TVE_DCLK_POL BIT(5) + #define m_TVE_DCLK_EN BIT(4) + #define m_DCLK_UPSAMPLE_2X4X BIT(3) + #define m_DCLK_UPSAMPLE_EN BIT(2) + #define m_TVE_MODE BIT(1) + #define m_TVE_EN BIT(0) + + #define v_TVE_DCLK_POL(x) (((x) & 1) << 5) + #define v_TVE_DCLK_EN(x) (((x) & 1) << 4) + #define v_DCLK_UPSAMPLE_2X4X(x) (((x) & 1) << 3) + #define v_DCLK_UPSAMPLE_EN(x) (((x) & 1) << 2) + #define v_TVE_MODE(x) (((x) & 1) << 1) + #define v_TVE_EN(x) (((x) & 1) << 0) + +// RK3528 CVBS BT656 +#define BT656_DECODER_CTRL (0x3D00) +#define BT656_DECODER_CROP (0x3D04) +#define BT656_DECODER_SIZE (0x3D08) +#define BT656_DECODER_HTOTAL_HS_END (0x3D0C) +#define BT656_DECODER_VACT_ST_HACT_ST (0x3D10) +#define BT656_DECODER_VTOTAL_VS_END (0x3D14) +#define BT656_DECODER_VS_ST_END_F1 (0x3D18) +#define BT656_DECODER_DBG_REG (0x3D1C) + +// RK3528 CVBS TVE +#define TVE_MODE_CTRL (0x3E00) +#define TVE_HOR_TIMING1 (0x3E04) +#define TVE_HOR_TIMING2 (0x3E08) +#define TVE_HOR_TIMING3 (0x3E0C) +#define TVE_SUB_CAR_FRQ (0x3E10) +#define TVE_LUMA_FILTER1 (0x3E14) +#define TVE_LUMA_FILTER2 (0x3E18) +#define TVE_LUMA_FILTER3 (0x3E1C) +#define TVE_LUMA_FILTER4 (0x3E20) +#define TVE_LUMA_FILTER5 (0x3E24) +#define TVE_LUMA_FILTER6 (0x3E28) +#define TVE_LUMA_FILTER7 (0x3E2C) +#define TVE_LUMA_FILTER8 (0x3E30) +#define TVE_IMAGE_POSITION (0x3E34) +#define TVE_ROUTING (0x3E38) +#define TVE_SYNC_ADJUST (0x3E50) +#define TVE_STATUS (0x3E54) +#define TVE_CTRL (0x3E68) +#define TVE_INTR_STATUS (0x3E6C) +#define TVE_INTR_EN (0x3E70) +#define TVE_INTR_CLR (0x3E74) +#define TVE_COLOR_BUSRT_SAT (0x3E78) +#define TVE_CHROMA_BANDWIDTH (0x3E8C) +#define TVE_BRIGHTNESS_CONTRAST (0x3E90) +#define TVE_ID (0x3E98) +#define TVE_REVISION (0x3E9C) +#define TVE_CLAMP (0x3EA0) + +// RK3528 CVBS VDAC +#define VDAC_CLK_RST (0x0000) + #define m_ANALOG_RST BIT(7) + #define m_DIGITAL_RST BIT(6) + #define m_INPUT_CLK_INV BIT(0) + + #define v_ANALOG_RST(x) (((x) & 1) << 7) + #define v_DIGITAL_RST(x) (((x) & 1) << 6) + #define v_INPUT_CLK_INV(x) (((x) & 1) << 0) +#define VDAC_SINE_CTRL (0x0004) +#define VDAC_SQUARE_CTRL (0x0008) +#define VDAC_LEVEL_CTRL0 (0x0018) +#define VDAC_LEVEL_CTRL1 (0x001C) +#define VDAC_PWM_REF_CTRL (0x0280) + #define m_REF_VOLTAGE (0xf << 4) + #define m_REF_RESISTOR BIT(3) + #define m_SMP_CLK_INV BIT(2) + #define m_DAC_PWN BIT(1) + #define m_BIAS_PWN BIT(0) + + #define v_REF_VOLTAGE(x) (((x) & 0xf) << 4) + #define v_SMP_CLK_INV(x) (((x) & 1) << 2) + #define v_REF_RESISTOR(x) (((x) & 1) << 3) + #define v_DAC_PWN(x) (((x) & 1) << 1) + #define v_BIAS_PWN(x) (((x) & 1) << 0) +#define VDAC_CURRENT_CTRL (0x0284) + #define m_OUT_CURRENT (0xff << 0) + + #define v_OUT_CURRENT(x) (((x) & 0xff) << 0) +#define VDAC_CABLE_CTRL (0x0288) +#define VDAC_VOLTAGE_CTRL (0x028C) +#define VDAC_BIAS_CLK_CTRL0 (0x0290) +#define VDAC_BIAS_CLK_CTRL1 (0x0294) +#define VDAC_AUTO_CLK_CTRL0 (0x0298) +#define VDAC_AUTO_CLK_CTRL1 (0x029C) enum { TVOUT_CVBS_NTSC = 0, @@ -136,7 +226,14 @@ SOC_RK3036 = 0, SOC_RK312X, SOC_RK322X, - SOC_RK3328 + SOC_RK3328, + SOC_RK3528 +}; + +enum { + DCLK_UPSAMPLEx1 = 0, + DCLK_UPSAMPLEx2, + DCLK_UPSAMPLEx4 }; #define grf_writel(offset, v) do { \ @@ -154,12 +251,16 @@ void __iomem *regbase; void __iomem *vdacbase; struct clk *aclk; - struct clk *dac_clk; + struct clk *hclk; + struct clk *pclk_vdac; + struct clk *dclk; + struct clk *dclk_4x; struct regmap *dac_grf; u32 reg_phy_base; u32 len; int input_format; int soc_type; + int upsample_mode; bool enable; u32 test_mode; u32 saturation; @@ -168,9 +269,15 @@ u32 lumafilter0; u32 lumafilter1; u32 lumafilter2; + u32 lumafilter3; + u32 lumafilter4; + u32 lumafilter5; + u32 lumafilter6; + u32 lumafilter7; u32 daclevel; u32 dac1level; u32 preferred_mode; + u8 vdac_out_current; struct mutex suspend_lock; /* mutex for tve resume operation*/ struct rockchip_drm_sub_dev sub_dev; }; -- Gitblit v1.6.2