#define HHI_HDMIRX_CLK_CNTL 0x200 /* 0x80 offset in datasheet1 */
#define HHI_HDMIRX_AUD_CLK_CNTL 0x204 /* 0x81 offset in datasheet1 */
#define HHI_VPU_CLKB_CNTL 0x20C /* 0x83 offset in datasheet1 */
+#define HHI_HDMIRX_METER_CLK_CNTL 0x234 /* 0x8d offset in datasheet1 */
#define HHI_VDIN_MEAS_CLK_CNTL 0x250 /* 0x94 offset in datasheet1 */
#define HHI_NAND_CLK_CNTL 0x25C /* 0x97 offset in datasheet1*/
#define HHI_ADC_PLL_CNTL2 0x2AC /* 0xab offset in datasheet */
#define HHI_ADC_PLL_CNTL3 0x2B0 /* 0xac offset in datasheet */
#define HHI_ADC_PLL_CNTL4 0x2B4 /* 0xad offset in datasheet */
+#define HHI_HDMIRX_AXI_CLK_CNTL 0x2E0 /* 0xb8 offset in datasheet */
#define HHI_SYS_PLL_CNTL0 0x2f4 /* 0xbd offset in datasheet */
#define HHI_SYS_PLL_CNTL1 0x2f8 /* 0xbe offset in datasheet */
PLL_RATE(1200000000ULL, 200, 1, 2), /*DCO=4800M*/
PLL_RATE(1296000000ULL, 216, 1, 2), /*DCO=5184M*/
PLL_RATE(1398000000ULL, 233, 1, 2), /*DCO=5592M*/
+ PLL_RATE(1404000000ULL, 234, 1, 2), /*DCO=5614M*/
PLL_RATE(1494000000ULL, 249, 1, 2), /*DCO=5976M*/
+ PLL_RATE(1500000000ULL, 125, 1, 1), /*DCO=3000M*/
PLL_RATE(1512000000ULL, 126, 1, 1), /*DCO=3024M*/
PLL_RATE(1608000000ULL, 134, 1, 1), /*DCO=3216M*/
PLL_RATE(1704000000ULL, 142, 1, 1), /*DCO=3408M*/
static GATE(hdmirx_modet_gate, HHI_HDMIRX_CLK_CNTL, 24, "hdmirx_modet_div",
CLK_GET_RATE_NOCACHE);
-/*hdmirx audmeas clock*/
PNAME(hdmirx_ref_parent_names) = { "fclk_div4",
"fclk_div3", "fclk_div5", "fclk_div7" };
-static MUX(hdmirx_audmeas_mux, HHI_HDMIRX_AUD_CLK_CNTL, 0x3, 9,
-hdmirx_ref_parent_names, CLK_GET_RATE_NOCACHE);
-static DIV(hdmirx_audmeas_div, HHI_HDMIRX_AUD_CLK_CNTL, 0, 7,
-"hdmirx_audmeas_mux", CLK_GET_RATE_NOCACHE);
-static GATE(hdmirx_audmeas_gate, HHI_HDMIRX_AUD_CLK_CNTL, 8,
-"hdmirx_audmeas_div", CLK_GET_RATE_NOCACHE);
/* hdmirx acr clock*/
static MUX(hdmirx_acr_mux, HHI_HDMIRX_AUD_CLK_CNTL, 0x3, 25,
hdmirx_ref_parent_names, CLK_GET_RATE_NOCACHE);
static GATE(hdcp22_esm_gate, HHI_HDCP22_CLK_CNTL, 8, "hdcp22_esm_div",
CLK_GET_RATE_NOCACHE | CLK_IGNORE_UNUSED);
+PNAME(hdmirx_meter_parent_names) = { "xtal",
+"fclk_div4", "fclk_div3", "fclk_div5" };
+static MUX(hdmirx_meter_mux, HHI_HDMIRX_METER_CLK_CNTL, 0x3, 9,
+hdmirx_meter_parent_names, CLK_GET_RATE_NOCACHE);
+static DIV(hdmirx_meter_div, HHI_HDMIRX_METER_CLK_CNTL, 0, 7,
+"hdmirx_meter_mux", CLK_GET_RATE_NOCACHE);
+static GATE(hdmirx_meter_gate, HHI_HDMIRX_METER_CLK_CNTL, 8,
+"hdmirx_meter_div", CLK_GET_RATE_NOCACHE);
+
+PNAME(hdmirx_axi_parent_names) = { "xtal",
+"fclk_div4", "fclk_div3", "fclk_div5" };
+static MUX(hdmirx_axi_mux, HHI_HDMIRX_AXI_CLK_CNTL, 0x3, 9,
+hdmirx_axi_parent_names, CLK_GET_RATE_NOCACHE);
+static DIV(hdmirx_axi_div, HHI_HDMIRX_AXI_CLK_CNTL, 0, 7,
+"hdmirx_axi_mux", CLK_GET_RATE_NOCACHE);
+static GATE(hdmirx_axi_gate, HHI_HDMIRX_AXI_CLK_CNTL, 8,
+"hdmirx_axi_div", CLK_GET_RATE_NOCACHE);
+
/*vdec clock*/
/* cts_vdec_clk */
PNAME(dec_parent_names) = { "fclk_div2p5", "fclk_div3",
&vpu_clkb_tmp_mux,
&hdmirx_cfg_mux,
&hdmirx_modet_mux,
- &hdmirx_audmeas_mux,
+ &hdmirx_meter_mux,
&hdmirx_acr_mux,
&hdcp22_skp_mux,
&hdcp22_esm_mux,
&tcon_pll_mux,
&cts_demod_mux,
&adc_extclk_in_mux,
+ &hdmirx_axi_mux,
};
/* for init div clocks reg base*/
&vpu_clkb_div,
&hdmirx_cfg_div,
&hdmirx_modet_div,
- &hdmirx_audmeas_div,
+ &hdmirx_meter_div,
&hdmirx_acr_div,
&hdcp22_skp_div,
&hdcp22_esm_div,
&tcon_pll_div,
&cts_demod_div,
&adc_extclk_in_div,
+ &hdmirx_axi_div,
};
/* for init gate clocks reg base*/
&vpu_clkb_gate,
&hdmirx_cfg_gate,
&hdmirx_modet_gate,
- &hdmirx_audmeas_gate,
+ &hdmirx_meter_gate,
&hdmirx_acr_gate,
&hdcp22_skp_gate,
&hdcp22_esm_gate,
&tcon_pll_gate,
&cts_demod_gate,
&adc_extclk_in_gate,
+ &hdmirx_axi_gate,
};
static struct meson_composite m_composite[] = {
},
{CLKID_VAPB_P0_COMP, "vapb_p0_composite",
- vpu_parent_names, ARRAY_SIZE(vpu_parent_names),
+ vapb_parent_names, ARRAY_SIZE(vapb_parent_names),
&vapb_p0_mux.hw, &vapb_p0_div.hw,
&vapb_p0_gate.hw, 0
},
{CLKID_VAPB_P1_COMP, "vapb_p1_composite",
- vpu_parent_names, ARRAY_SIZE(vpu_parent_names),
+ vapb_parent_names, ARRAY_SIZE(vapb_parent_names),
&vapb_p1_mux.hw, &vapb_p1_div.hw,
&vapb_p1_gate.hw, 0
},
&hdmirx_modet_gate.hw, 0
},
- {CLKID_HDMIRX_AUDMEAS_COMP, "hdmirx_audmeas_composite",
- hdmirx_ref_parent_names, ARRAY_SIZE(hdmirx_ref_parent_names),
- &hdmirx_audmeas_mux.hw, &hdmirx_audmeas_div.hw,
- &hdmirx_audmeas_gate.hw, 0
+ {CLKID_HDMIRX_METER_COMP, "hdmirx_meter_composite",
+ hdmirx_meter_parent_names, ARRAY_SIZE(hdmirx_meter_parent_names),
+ &hdmirx_meter_mux.hw, &hdmirx_meter_div.hw,
+ &hdmirx_meter_gate.hw, 0
+ },
+
+ {CLKID_HDMIRX_AXI_COMP, "hdmirx_axi_composite",
+ hdmirx_axi_parent_names, ARRAY_SIZE(hdmirx_axi_parent_names),
+ &hdmirx_axi_mux.hw, &hdmirx_axi_div.hw,
+ &hdmirx_axi_gate.hw, 0
},
{CLKID_HDMIRX_ACR_COMP, "hdmirx_acr_composite",
clks[CLKID_VPU_MUX] = clk_register(NULL, &vpu_mux.hw);
WARN_ON(IS_ERR(clks[CLKID_VPU_MUX]));
- clk_prepare_enable(clks[CLKID_VPU_MUX]);
+ /* clk_prepare_enable(clks[CLKID_VPU_MUX]); //do not enable*/
clks[CLKID_VAPB_MUX] = clk_register(NULL, &vapb_mux.hw);
WARN_ON(IS_ERR(clks[CLKID_VAPB_MUX]));
- clk_prepare_enable(clks[CLKID_VAPB_MUX]);
+ /* clk_prepare_enable(clks[CLKID_VAPB_MUX]); //do not enable*/
clks[CLKID_GE2D_GATE] = clk_register(NULL, &ge2d_gate.hw);
WARN_ON(IS_ERR(clks[CLKID_GE2D_GATE]));