summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShengjiu Wang <shengjiu.wang@freescale.com>2017-07-24 14:51:21 +0800
committerLeonard Crestez <leonard.crestez@nxp.com>2018-08-24 12:41:33 +0300
commit903824b3286317c91172693bf2af3a119088fb03 (patch)
treef0c10b354fd0b66e18e0c1c8d451e0b2a5f29500
parent651018d16d67a89410d4c31c5c496772809765a0 (diff)
MLK-16077-2: clk: imx: update cm40 clock for imx8qxp
Add cm40 I2C clock for imx8qxp Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
-rw-r--r--drivers/clk/imx/clk-imx8qxp.c6
-rw-r--r--include/dt-bindings/clock/imx8qxp-clock.h8
-rw-r--r--include/dt-bindings/soc/imx8_pd.h4
-rw-r--r--include/soc/imx8/imx8qxp/lpcg.h3
4 files changed, 20 insertions, 1 deletions
diff --git a/drivers/clk/imx/clk-imx8qxp.c b/drivers/clk/imx/clk-imx8qxp.c
index b9d05506aa1e..77d3aeeb8f0d 100644
--- a/drivers/clk/imx/clk-imx8qxp.c
+++ b/drivers/clk/imx/clk-imx8qxp.c
@@ -142,6 +142,7 @@ static int imx8qxp_clk_probe(struct platform_device *pdev)
clks[IMX8QXP_IMG_PXL_CLK] = imx_clk_fixed("pxl_img_clk_root", SC_600MHZ);
clks[IMX8QXP_HSIO_AXI_CLK] = imx_clk_fixed("axi_hsio_clk_root", SC_400MHZ);
clks[IMX8QXP_HSIO_PER_CLK] = imx_clk_fixed("per_hsio_clk_root", SC_133MHZ);
+ clks[IMX8QXP_CM40_IPG_CLK] = imx_clk_fixed("ipg_cm40_clk_root", SC_132MHZ);
clks[IMX8QXP_UART0_DIV] = imx_clk_divider_scu("uart0_div", SC_R_UART_0, SC_PM_CLK_PER);
clks[IMX8QXP_UART0_IPG_CLK] = imx_clk_gate2_scu("uart0_ipg_clk", "ipg_dma_clk_root", (void __iomem *)(LPUART_0_LPCG), 16, FUNCTION_NAME(PD_DMA_UART0));
@@ -512,6 +513,11 @@ static int imx8qxp_clk_probe(struct platform_device *pdev)
clks[IMX8QXP_HSIO_GPIO_CLK] = imx_clk_gate2_scu("hsio_gpio_clk", "per_hsio_clk_root", (void __iomem *)(HSIO_GPIO_LPCG), 16, FUNCTION_NAME(PD_HSIO_PCIE_B));
clks[IMX8QXP_HSIO_PHY_X1_PCLK] = imx_clk_gate2_scu("hsio_phy_x1_pclk", "dummy", (void __iomem *)(HSIO_PHY_X1_LPCG), 0, FUNCTION_NAME(PD_HSIO_PCIE_B));
+ /* CM40 */
+ clks[IMX8QXP_CM40_I2C_DIV] = imx_clk_divider_scu("cm40_i2c_div", SC_R_M4_0_I2C, SC_PM_CLK_PER);
+ clks[IMX8QXP_CM40_I2C_CLK] = imx_clk_gate_scu("cm40_i2c_clk", "cm40_i2c_div", SC_R_M4_0_I2C, SC_PM_CLK_PER, (void __iomem *)(CM40_I2C_LPCG), 0, 0);
+ clks[IMX8QXP_CM40_I2C_IPG_CLK] = imx_clk_gate2_scu("cm40_i2c_ipg_clk", "ipg_cm40_clk_root", (void __iomem *)(CM40_I2C_LPCG), 16, FUNCTION_NAME(PD_CM40_I2C));
+
/* Audio */
clks[IMX8QXP_AUD_ACM_AUD_PLL_CLK0_DIV] = imx_clk_divider2_scu("aud_acm_aud_pll_clk0_div", "audio_pll0_clk", SC_R_AUDIO_PLL_0, SC_PM_CLK_MISC0);
clks[IMX8QXP_AUD_ACM_AUD_PLL_CLK1_DIV] = imx_clk_divider2_scu("aud_acm_aud_pll_clk1_div", "audio_pll1_clk", SC_R_AUDIO_PLL_1, SC_PM_CLK_MISC0);
diff --git a/include/dt-bindings/clock/imx8qxp-clock.h b/include/dt-bindings/clock/imx8qxp-clock.h
index 96205ba0c158..a31c120dc0ae 100644
--- a/include/dt-bindings/clock/imx8qxp-clock.h
+++ b/include/dt-bindings/clock/imx8qxp-clock.h
@@ -523,5 +523,11 @@
#define IMX8QXP_MIPI1_LVDS_PHY_CLK 475
#define IMX8QXP_MIPI1_LIS_IPG_CLK 476
-#define IMX8QXP_CLK_END 477
+/* CM40 */
+#define IMX8QXP_CM40_IPG_CLK 477
+#define IMX8QXP_CM40_I2C_DIV 478
+#define IMX8QXP_CM40_I2C_CLK 479
+#define IMX8QXP_CM40_I2C_IPG_CLK 480
+
+#define IMX8QXP_CLK_END 481
#endif /* __DT_BINDINGS_CLOCK_IMX8QXP_H */
diff --git a/include/dt-bindings/soc/imx8_pd.h b/include/dt-bindings/soc/imx8_pd.h
index 6e241e09e090..1483ac35f376 100644
--- a/include/dt-bindings/soc/imx8_pd.h
+++ b/include/dt-bindings/soc/imx8_pd.h
@@ -187,5 +187,9 @@
#define PD_HDMI_RX_I2C hdmi_rx_i2c
#define PD_HDMI_RX_PWM hdmi_rx_pwm
+#define PD_CM40 cm40_power_domain
+#define PD_CM40_I2C cm40_i2c
+#define PD_CM40_INTMUX cm40_intmux
+
#endif /* __DT_BINDINGS_IMX8_PD_H */
diff --git a/include/soc/imx8/imx8qxp/lpcg.h b/include/soc/imx8/imx8qxp/lpcg.h
index 6cad103b0975..061454f5f225 100644
--- a/include/soc/imx8/imx8qxp/lpcg.h
+++ b/include/soc/imx8/imx8qxp/lpcg.h
@@ -177,5 +177,8 @@
#define NAND_LPCG 0x5B290000
#define EDMA_LPCG 0x5B2A0000
+/* CM40 SS */
+#define CM40_I2C_LPCG 0x37630000
+
#endif