* [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems
@ 2020-11-18 8:31 Liu Ying
2020-11-18 8:31 ` [PATCH 1/5] clk: imx: clk-imx8qxp: Add SCU clocks support for DC0 PLL clocks Liu Ying
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Liu Ying @ 2020-11-18 8:31 UTC (permalink / raw)
To: linux-arm-kernel, linux-clk, devicetree
Cc: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam, linux-imx,
robh+dt, aisheng.dong
This patch set adds some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems,
which includes some SCU controlled clocks and some LPCG clocks.
With this patch set, some basic clocks for i.MX8qxp LVDS displays can be got
by drivers.
This patch set follows the legacy/deprecated way to add the clocks support
in clock drivers instead of the new 'two cells' dt-binding way. The reason
behind this is that the existing i.MX8qxp SoC device tree is using the legacy
way(no conversion effort is seen) and there is not i.MX8qm(with a similar
architecture) SoC device tree for us to enable display yet.
Liu Ying (5):
clk: imx: clk-imx8qxp: Add SCU clocks support for DC0 PLL clocks
clk: imx: clk-imx8qxp-lpcg: Add display controller LPCG clocks support
clk: imx: clk-imx8qxp: Add some SCU clocks support for MIPI-LVDS
subsystems
dt-bindings: clock: imx8qxp-lpcg: Add compatibles for MIPI-LVDS
subsystems
clk: imx: clk-imx8qxp-lpcg: Add some LPCG clocks support for MIPI-LVDS
subsystems
.../devicetree/bindings/clock/imx8qxp-lpcg.yaml | 2 +
drivers/clk/imx/clk-imx8qxp-lpcg.c | 79 ++++++++++++++++++++++
drivers/clk/imx/clk-imx8qxp-lpcg.h | 29 ++++++++
drivers/clk/imx/clk-imx8qxp.c | 12 ++++
include/dt-bindings/clock/imx8-clock.h | 61 +++++++++++++++++
5 files changed, 183 insertions(+)
--
2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/5] clk: imx: clk-imx8qxp: Add SCU clocks support for DC0 PLL clocks
2020-11-18 8:31 [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Liu Ying
@ 2020-11-18 8:31 ` Liu Ying
2020-11-18 8:31 ` [PATCH 2/5] clk: imx: clk-imx8qxp-lpcg: Add display controller LPCG clocks support Liu Ying
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Liu Ying @ 2020-11-18 8:31 UTC (permalink / raw)
To: linux-arm-kernel, linux-clk, devicetree
Cc: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam, linux-imx,
robh+dt, aisheng.dong
This patch adds SCU clocks support for i.MX8qxp DC0 subsystem PLL clocks.
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Liu Ying <victor.liu@nxp.com>
---
drivers/clk/imx/clk-imx8qxp.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/clk/imx/clk-imx8qxp.c b/drivers/clk/imx/clk-imx8qxp.c
index 5b3d4ed..aeafa70 100644
--- a/drivers/clk/imx/clk-imx8qxp.c
+++ b/drivers/clk/imx/clk-imx8qxp.c
@@ -115,6 +115,8 @@ static int imx8qxp_clk_probe(struct platform_device *pdev)
clks[IMX_CONN_USB2_LPM_CLK] = imx_clk_scu("usb3_lpm_div", IMX_SC_R_USB_2, IMX_SC_PM_CLK_MISC, clk_cells);
/* Display controller SS */
+ clks[IMX_DC0_PLL0_CLK] = imx_clk_scu("dc0_pll0_clk", IMX_SC_R_DC_0_PLL_0, IMX_SC_PM_CLK_PLL, clk_cells);
+ clks[IMX_DC0_PLL1_CLK] = imx_clk_scu("dc0_pll1_clk", IMX_SC_R_DC_0_PLL_1, IMX_SC_PM_CLK_PLL, clk_cells);
clks[IMX_DC0_DISP0_CLK] = imx_clk_scu("dc0_disp0_clk", IMX_SC_R_DC_0, IMX_SC_PM_CLK_MISC0, clk_cells);
clks[IMX_DC0_DISP1_CLK] = imx_clk_scu("dc0_disp1_clk", IMX_SC_R_DC_0, IMX_SC_PM_CLK_MISC1, clk_cells);
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/5] clk: imx: clk-imx8qxp-lpcg: Add display controller LPCG clocks support
2020-11-18 8:31 [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Liu Ying
2020-11-18 8:31 ` [PATCH 1/5] clk: imx: clk-imx8qxp: Add SCU clocks support for DC0 PLL clocks Liu Ying
@ 2020-11-18 8:31 ` Liu Ying
2020-11-18 8:31 ` [PATCH 3/5] clk: imx: clk-imx8qxp: Add some SCU clocks support for MIPI-LVDS subsystems Liu Ying
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Liu Ying @ 2020-11-18 8:31 UTC (permalink / raw)
To: linux-arm-kernel, linux-clk, devicetree
Cc: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam, linux-imx,
robh+dt, aisheng.dong
This patch adds LPCG clocks support for display controller of i.MX8qxp SoC.
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Liu Ying <victor.liu@nxp.com>
---
drivers/clk/imx/clk-imx8qxp-lpcg.c | 41 ++++++++++++++++++++++++++++++++++
drivers/clk/imx/clk-imx8qxp-lpcg.h | 20 +++++++++++++++++
include/dt-bindings/clock/imx8-clock.h | 35 +++++++++++++++++++++++++++++
3 files changed, 96 insertions(+)
diff --git a/drivers/clk/imx/clk-imx8qxp-lpcg.c b/drivers/clk/imx/clk-imx8qxp-lpcg.c
index d3e905c..176d426 100644
--- a/drivers/clk/imx/clk-imx8qxp-lpcg.c
+++ b/drivers/clk/imx/clk-imx8qxp-lpcg.c
@@ -115,6 +115,46 @@ static const struct imx8qxp_ss_lpcg imx8qxp_ss_conn = {
.num_max = IMX_CONN_LPCG_CLK_END,
};
+static const struct imx8qxp_lpcg_data imx8qxp_lpcg_dc[] = {
+ { IMX_DC0_LPCG_DISP0_CLK, "dc0_lpcg_disp0_clk", "dc0_disp0_clk", 0, DC_DISP_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_DISP1_CLK, "dc0_lpcg_disp1_clk", "dc0_disp1_clk", 0, DC_DISP_LPCG, 4, 0, },
+ { IMX_DC0_LPCG_LIS_IPG_CLK, "dc0_lpcg_lis_ipg_clk", "dc_cfg_clk_root", 0, DC_LIS_IPG_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_DISP_CTL_LINK_MST0_CLK, "dc0_lpcg_disp_ctl_link_mst0_clk", "dc_cfg_clk_root", 0, DC_DISP_CTL_LINK_MST0_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_PIX_COMBINER_APB_CLK, "dc0_lpcg_pix_combiner_apb_clk", "dc_cfg_clk_root", 0, DC_PIX_COMBINER_APB_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_DC_AXI_CLK, "dc0_lpcg_dc_axi_clk", "dc_axi_int_clk_root", 0, DC_AXI_CFG_LPCG, 20, 0, },
+ { IMX_DC0_LPCG_DC_CFG_CLK, "dc0_lpcg_dc_cfg_clk", "dc_cfg_clk_root", 0, DC_AXI_CFG_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_DPR0_APB_CLK, "dc0_lpcg_dpr0_apb_clk", "dc_cfg_clk_root", 0, DC_DPR0_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_DPR0_B_CLK, "dc0_lpcg_dpr0_b_clk", "dc_axi_ext_clk_root", 0, DC_DPR0_LPCG, 20, 0, },
+ { IMX_DC0_LPCG_RTRAM0_CLK, "dc0_lpcg_rtram0_clk", "dc_axi_int_clk_root", 0, DC_RTRAM0_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG0_RTRAM_CLK, "dc0_lpcg_prg0_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG0_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG0_APB_CLK, "dc0_lpcg_prg0_apb_clk", "dc_cfg_clk_root", 0, DC_PRG0_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_PRG1_RTRAM_CLK, "dc0_lpcg_prg1_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG1_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG1_APB_CLK, "dc0_lpcg_prg1_apb_clk", "dc_cfg_clk_root", 0, DC_PRG1_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_PRG2_RTRAM_CLK, "dc0_lpcg_prg2_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG2_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG2_APB_CLK, "dc0_lpcg_prg2_apb_clk", "dc_cfg_clk_root", 0, DC_PRG2_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_DPR1_APB_CLK, "dc0_lpcg_dpr1_apb_clk", "dc_cfg_clk_root", 0, DC_DPR1_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_DPR1_B_CLK, "dc0_lpcg_dpr1_b_clk", "dc_axi_ext_clk_root", 0, DC_DPR1_LPCG, 20, 0, },
+ { IMX_DC0_LPCG_RTRAM1_CLK, "dc0_lpcg_rtram1_clk", "dc_axi_int_clk_root", 0, DC_RTRAM1_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG3_RTRAM_CLK, "dc0_lpcg_prg3_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG3_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG3_APB_CLK, "dc0_lpcg_prg3_apb_clk", "dc_cfg_clk_root", 0, DC_PRG3_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_PRG4_RTRAM_CLK, "dc0_lpcg_prg4_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG4_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG4_APB_CLK, "dc0_lpcg_prg4_apb_clk", "dc_cfg_clk_root", 0, DC_PRG4_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_PRG5_RTRAM_CLK, "dc0_lpcg_prg5_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG5_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG5_APB_CLK, "dc0_lpcg_prg5_apb_clk", "dc_cfg_clk_root", 0, DC_PRG5_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_PRG6_RTRAM_CLK, "dc0_lpcg_prg6_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG6_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG6_APB_CLK, "dc0_lpcg_prg6_apb_clk", "dc_cfg_clk_root", 0, DC_PRG6_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_PRG7_RTRAM_CLK, "dc0_lpcg_prg7_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG7_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG7_APB_CLK, "dc0_lpcg_prg7_apb_clk", "dc_cfg_clk_root", 0, DC_PRG7_LPCG, 16, 0, },
+ { IMX_DC0_LPCG_PRG8_RTRAM_CLK, "dc0_lpcg_prg8_rtram_clk", "dc_axi_int_clk_root", 0, DC_PRG8_LPCG, 0, 0, },
+ { IMX_DC0_LPCG_PRG8_APB_CLK, "dc0_lpcg_prg8_apb_clk", "dc_cfg_clk_root", 0, DC_PRG8_LPCG, 16, 0, },
+};
+
+static const struct imx8qxp_ss_lpcg imx8qxp_ss_dc = {
+ .lpcg = imx8qxp_lpcg_dc,
+ .num_lpcg = ARRAY_SIZE(imx8qxp_lpcg_dc),
+ .num_max = IMX_DC0_LPCG_CLK_END,
+};
+
static const struct imx8qxp_lpcg_data imx8qxp_lpcg_lsio[] = {
{ IMX_LSIO_LPCG_PWM0_IPG_CLK, "pwm0_lpcg_ipg_clk", "pwm0_clk", 0, LSIO_PWM_0_LPCG, 0, 0, },
{ IMX_LSIO_LPCG_PWM0_IPG_HF_CLK, "pwm0_lpcg_ipg_hf_clk", "pwm0_clk", 0, LSIO_PWM_0_LPCG, 4, 0, },
@@ -355,6 +395,7 @@ static int imx8qxp_lpcg_clk_probe(struct platform_device *pdev)
static const struct of_device_id imx8qxp_lpcg_match[] = {
{ .compatible = "fsl,imx8qxp-lpcg-adma", &imx8qxp_ss_adma, },
{ .compatible = "fsl,imx8qxp-lpcg-conn", &imx8qxp_ss_conn, },
+ { .compatible = "fsl,imx8qxp-lpcg-dc", &imx8qxp_ss_dc, },
{ .compatible = "fsl,imx8qxp-lpcg-lsio", &imx8qxp_ss_lsio, },
{ .compatible = "fsl,imx8qxp-lpcg", NULL },
{ /* sentinel */ }
diff --git a/drivers/clk/imx/clk-imx8qxp-lpcg.h b/drivers/clk/imx/clk-imx8qxp-lpcg.h
index 2a37ce5..e1423a9 100644
--- a/drivers/clk/imx/clk-imx8qxp-lpcg.h
+++ b/drivers/clk/imx/clk-imx8qxp-lpcg.h
@@ -99,4 +99,24 @@
#define ADMA_FLEXCAN_1_LPCG 0x1ce0000
#define ADMA_FLEXCAN_2_LPCG 0x1cf0000
+/* Display SS */
+#define DC_DISP_LPCG 0x00
+#define DC_LIS_IPG_LPCG 0x04
+#define DC_DISP_CTL_LINK_MST0_LPCG 0x08
+#define DC_PIX_COMBINER_APB_LPCG 0x10
+#define DC_AXI_CFG_LPCG 0x14
+#define DC_DPR0_LPCG 0x18
+#define DC_RTRAM0_LPCG 0x1c
+#define DC_PRG0_LPCG 0x20
+#define DC_PRG1_LPCG 0x24
+#define DC_PRG2_LPCG 0x28
+#define DC_DPR1_LPCG 0x2c
+#define DC_RTRAM1_LPCG 0x30
+#define DC_PRG3_LPCG 0x34
+#define DC_PRG4_LPCG 0x38
+#define DC_PRG5_LPCG 0x3c
+#define DC_PRG6_LPCG 0x40
+#define DC_PRG7_LPCG 0x44
+#define DC_PRG8_LPCG 0x48
+
#endif /* _IMX8QXP_LPCG_H */
diff --git a/include/dt-bindings/clock/imx8-clock.h b/include/dt-bindings/clock/imx8-clock.h
index 673a8c6..c9dd0c6 100644
--- a/include/dt-bindings/clock/imx8-clock.h
+++ b/include/dt-bindings/clock/imx8-clock.h
@@ -290,4 +290,39 @@
#define IMX_ADMA_LPCG_CLK_END 45
+/* DC0 SS LPCG */
+#define IMX_DC0_LPCG_DISP0_CLK 0
+#define IMX_DC0_LPCG_DISP1_CLK 1
+#define IMX_DC0_LPCG_LIS_IPG_CLK 2
+#define IMX_DC0_LPCG_DISP_CTL_LINK_MST0_CLK 3
+#define IMX_DC0_LPCG_PIX_COMBINER_APB_CLK 4
+#define IMX_DC0_LPCG_DC_AXI_CLK 5
+#define IMX_DC0_LPCG_DC_CFG_CLK 6
+#define IMX_DC0_LPCG_DPR0_APB_CLK 7
+#define IMX_DC0_LPCG_DPR0_B_CLK 8
+#define IMX_DC0_LPCG_RTRAM0_CLK 9
+#define IMX_DC0_LPCG_PRG0_RTRAM_CLK 10
+#define IMX_DC0_LPCG_PRG0_APB_CLK 11
+#define IMX_DC0_LPCG_PRG1_RTRAM_CLK 12
+#define IMX_DC0_LPCG_PRG1_APB_CLK 13
+#define IMX_DC0_LPCG_PRG2_RTRAM_CLK 14
+#define IMX_DC0_LPCG_PRG2_APB_CLK 15
+#define IMX_DC0_LPCG_DPR1_APB_CLK 16
+#define IMX_DC0_LPCG_DPR1_B_CLK 17
+#define IMX_DC0_LPCG_RTRAM1_CLK 18
+#define IMX_DC0_LPCG_PRG3_RTRAM_CLK 19
+#define IMX_DC0_LPCG_PRG3_APB_CLK 20
+#define IMX_DC0_LPCG_PRG4_RTRAM_CLK 21
+#define IMX_DC0_LPCG_PRG4_APB_CLK 22
+#define IMX_DC0_LPCG_PRG5_RTRAM_CLK 23
+#define IMX_DC0_LPCG_PRG5_APB_CLK 24
+#define IMX_DC0_LPCG_PRG6_RTRAM_CLK 25
+#define IMX_DC0_LPCG_PRG6_APB_CLK 26
+#define IMX_DC0_LPCG_PRG7_RTRAM_CLK 27
+#define IMX_DC0_LPCG_PRG7_APB_CLK 28
+#define IMX_DC0_LPCG_PRG8_RTRAM_CLK 29
+#define IMX_DC0_LPCG_PRG8_APB_CLK 30
+
+#define IMX_DC0_LPCG_CLK_END 31
+
#endif /* __DT_BINDINGS_CLOCK_IMX_H */
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/5] clk: imx: clk-imx8qxp: Add some SCU clocks support for MIPI-LVDS subsystems
2020-11-18 8:31 [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Liu Ying
2020-11-18 8:31 ` [PATCH 1/5] clk: imx: clk-imx8qxp: Add SCU clocks support for DC0 PLL clocks Liu Ying
2020-11-18 8:31 ` [PATCH 2/5] clk: imx: clk-imx8qxp-lpcg: Add display controller LPCG clocks support Liu Ying
@ 2020-11-18 8:31 ` Liu Ying
2020-11-18 8:31 ` [PATCH 4/5] dt-bindings: clock: imx8qxp-lpcg: Add compatibles " Liu Ying
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Liu Ying @ 2020-11-18 8:31 UTC (permalink / raw)
To: linux-arm-kernel, linux-clk, devicetree
Cc: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam, linux-imx,
robh+dt, aisheng.dong
This patch adds some SCU clocks support for i.MX8qxp MIPI-LVDS subsystems.
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Liu Ying <victor.liu@nxp.com>
---
drivers/clk/imx/clk-imx8qxp.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/clk/imx/clk-imx8qxp.c b/drivers/clk/imx/clk-imx8qxp.c
index aeafa70..57aa270 100644
--- a/drivers/clk/imx/clk-imx8qxp.c
+++ b/drivers/clk/imx/clk-imx8qxp.c
@@ -121,8 +121,18 @@ static int imx8qxp_clk_probe(struct platform_device *pdev)
clks[IMX_DC0_DISP1_CLK] = imx_clk_scu("dc0_disp1_clk", IMX_SC_R_DC_0, IMX_SC_PM_CLK_MISC1, clk_cells);
/* MIPI-LVDS SS */
+ clks[IMX_MIPI0_LVDS_PIXEL_CLK] = imx_clk_scu("mipi0_lvds_pixel_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_MISC2, clk_cells);
+ clks[IMX_MIPI0_LVDS_BYPASS_CLK] = imx_clk_scu("mipi0_lvds_bypass_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_BYPASS, clk_cells);
+ clks[IMX_MIPI0_LVDS_PHY_CLK] = imx_clk_scu("mipi0_lvds_phy_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_MISC3, clk_cells);
clks[IMX_MIPI0_I2C0_CLK] = imx_clk_scu("mipi0_i2c0_clk", IMX_SC_R_MIPI_0_I2C_0, IMX_SC_PM_CLK_MISC2, clk_cells);
clks[IMX_MIPI0_I2C1_CLK] = imx_clk_scu("mipi0_i2c1_clk", IMX_SC_R_MIPI_0_I2C_1, IMX_SC_PM_CLK_MISC2, clk_cells);
+ clks[IMX_MIPI0_PWM0_CLK] = imx_clk_scu("mipi0_pwm0_clk", IMX_SC_R_MIPI_0_PWM_0, IMX_SC_PM_CLK_PER, clk_cells);
+ clks[IMX_MIPI1_LVDS_PIXEL_CLK] = imx_clk_scu("mipi1_lvds_pixel_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_MISC2, clk_cells);
+ clks[IMX_MIPI1_LVDS_BYPASS_CLK] = imx_clk_scu("mipi1_lvds_bypass_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_BYPASS, clk_cells);
+ clks[IMX_MIPI1_LVDS_PHY_CLK] = imx_clk_scu("mipi1_lvds_phy_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_MISC3, clk_cells);
+ clks[IMX_MIPI1_I2C0_CLK] = imx_clk_scu("mipi1_i2c0_clk", IMX_SC_R_MIPI_1_I2C_0, IMX_SC_PM_CLK_MISC2, clk_cells);
+ clks[IMX_MIPI1_I2C1_CLK] = imx_clk_scu("mipi1_i2c1_clk", IMX_SC_R_MIPI_1_I2C_1, IMX_SC_PM_CLK_MISC2, clk_cells);
+ clks[IMX_MIPI1_PWM0_CLK] = imx_clk_scu("mipi1_pwm0_clk", IMX_SC_R_MIPI_1_PWM_0, IMX_SC_PM_CLK_PER, clk_cells);
/* MIPI CSI SS */
clks[IMX_CSI0_CORE_CLK] = imx_clk_scu("mipi_csi0_core_clk", IMX_SC_R_CSI_0, IMX_SC_PM_CLK_PER, clk_cells);
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/5] dt-bindings: clock: imx8qxp-lpcg: Add compatibles for MIPI-LVDS subsystems
2020-11-18 8:31 [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Liu Ying
` (2 preceding siblings ...)
2020-11-18 8:31 ` [PATCH 3/5] clk: imx: clk-imx8qxp: Add some SCU clocks support for MIPI-LVDS subsystems Liu Ying
@ 2020-11-18 8:31 ` Liu Ying
2020-11-18 8:31 ` [PATCH 5/5] clk: imx: clk-imx8qxp-lpcg: Add some LPCG clocks support " Liu Ying
2020-11-18 10:31 ` [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Aisheng Dong
5 siblings, 0 replies; 7+ messages in thread
From: Liu Ying @ 2020-11-18 8:31 UTC (permalink / raw)
To: linux-arm-kernel, linux-clk, devicetree
Cc: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam, linux-imx,
robh+dt, aisheng.dong
This patch adds compatibles for i.MX8qxp MIPI-LVDS subsystems.
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Liu Ying <victor.liu@nxp.com>
---
Documentation/devicetree/bindings/clock/imx8qxp-lpcg.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.yaml b/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.yaml
index e709e53..868731a0 100644
--- a/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.yaml
+++ b/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.yaml
@@ -40,6 +40,8 @@ properties:
- fsl,imx8qxp-lpcg-hsio
- fsl,imx8qxp-lpcg-img
- fsl,imx8qxp-lpcg-lsio
+ - fsl,imx8qxp-lpcg-mipi-lvds-0
+ - fsl,imx8qxp-lpcg-mipi-lvds-1
- fsl,imx8qxp-lpcg-vpu
deprecated: true
reg:
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/5] clk: imx: clk-imx8qxp-lpcg: Add some LPCG clocks support for MIPI-LVDS subsystems
2020-11-18 8:31 [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Liu Ying
` (3 preceding siblings ...)
2020-11-18 8:31 ` [PATCH 4/5] dt-bindings: clock: imx8qxp-lpcg: Add compatibles " Liu Ying
@ 2020-11-18 8:31 ` Liu Ying
2020-11-18 10:31 ` [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Aisheng Dong
5 siblings, 0 replies; 7+ messages in thread
From: Liu Ying @ 2020-11-18 8:31 UTC (permalink / raw)
To: linux-arm-kernel, linux-clk, devicetree
Cc: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam, linux-imx,
robh+dt, aisheng.dong
This patch adds some LPCG clocks support for i.MX8qxp MIPI-LVDS subsystems.
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Liu Ying <victor.liu@nxp.com>
---
drivers/clk/imx/clk-imx8qxp-lpcg.c | 38 ++++++++++++++++++++++++++++++++++
drivers/clk/imx/clk-imx8qxp-lpcg.h | 9 ++++++++
include/dt-bindings/clock/imx8-clock.h | 26 +++++++++++++++++++++++
3 files changed, 73 insertions(+)
diff --git a/drivers/clk/imx/clk-imx8qxp-lpcg.c b/drivers/clk/imx/clk-imx8qxp-lpcg.c
index 176d426..94c3468 100644
--- a/drivers/clk/imx/clk-imx8qxp-lpcg.c
+++ b/drivers/clk/imx/clk-imx8qxp-lpcg.c
@@ -199,6 +199,42 @@ static const struct imx8qxp_ss_lpcg imx8qxp_ss_lsio = {
.num_max = IMX_LSIO_LPCG_CLK_END,
};
+static const struct imx8qxp_lpcg_data imx8qxp_lpcg_mipi_lvds_0[] = {
+ { IMX_MIPI_LVDS_0_LPCG_LIS_IPG_CLK, "mipi_lvds_0_lpcg_lis_ipg_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_LIS_LPCG, 16, 0, },
+ { IMX_MIPI_LVDS_0_LPCG_DI_REGS_IPG_CLK, "mipi_lvds_0_lpcg_di_regs_ipg_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_DI_REGS_LPCG, 16, 0, },
+ { IMX_MIPI_LVDS_0_LPCG_GPIO_IPG_CLK, "mipi_lvds_0_lpcg_gpio_ipg_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_GPIO_LPCG, 16, 0, },
+ { IMX_MIPI_LVDS_0_LPCG_PWM_IPG_MASTER_CLK, "mipi_lvds_0_lpcg_pwm_ipg_master_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_PWM_LPCG, 20, 0, },
+ { IMX_MIPI_LVDS_0_LPCG_PWM_IPG_CLK, "mipi_lvds_0_lpcg_pwm_ipg_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_PWM_LPCG, 16, 0, },
+ { IMX_MIPI_LVDS_0_LPCG_PWM_PER_CLK, "mipi_lvds_0_lpcg_pwm_per_clk", "mipi0_pwm0_clk", 0, MIPI_LVDS_PWM_LPCG, 0, 0, },
+ { IMX_MIPI_LVDS_0_LPCG_PWM_32K_CLK, "mipi_lvds_0_lpcg_pwm_32k_clk", "xtal_32KHz", 0, MIPI_LVDS_PWM_LPCG, 4, 0, },
+ { IMX_MIPI_LVDS_0_LPCG_I2C0_PER_CLK, "mipi_lvds_0_lpcg_i2c0_per_clk", "mipi0_i2c0_clk", 0, MIPI_LVDS_LPI2C0_LPCG, 0, 0, },
+ { IMX_MIPI_LVDS_0_LPCG_I2C0_IPG_CLK, "mipi_lvds_0_lpcg_i2c0_ipg_clk", "mipi_ipg_root_clk", 0, MIPI_LVDS_LPI2C0_LPCG, 16, 0, },
+};
+
+static const struct imx8qxp_ss_lpcg imx8qxp_ss_mipi_lvds_0 = {
+ .lpcg = imx8qxp_lpcg_mipi_lvds_0,
+ .num_lpcg = ARRAY_SIZE(imx8qxp_lpcg_mipi_lvds_0),
+ .num_max = IMX_MIPI_LVDS_0_LPCG_CLK_END,
+};
+
+static const struct imx8qxp_lpcg_data imx8qxp_lpcg_mipi_lvds_1[] = {
+ { IMX_MIPI_LVDS_1_LPCG_LIS_IPG_CLK, "mipi_lvds_1_lpcg_lis_ipg_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_LIS_LPCG, 16, 0, },
+ { IMX_MIPI_LVDS_1_LPCG_DI_REGS_IPG_CLK, "mipi_lvds_1_lpcg_di_regs_ipg_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_DI_REGS_LPCG, 16, 0, },
+ { IMX_MIPI_LVDS_1_LPCG_GPIO_IPG_CLK, "mipi_lvds_1_lpcg_gpio_ipg_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_GPIO_LPCG, 16, 0, },
+ { IMX_MIPI_LVDS_1_LPCG_PWM_IPG_MASTER_CLK, "mipi_lvds_1_lpcg_pwm_ipg_master_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_PWM_LPCG, 20, 0, },
+ { IMX_MIPI_LVDS_1_LPCG_PWM_IPG_CLK, "mipi_lvds_1_lpcg_pwm_ipg_clk", "mipi_ipg_clk_root", 0, MIPI_LVDS_PWM_LPCG, 16, 0, },
+ { IMX_MIPI_LVDS_1_LPCG_PWM_PER_CLK, "mipi_lvds_1_lpcg_pwm_per_clk", "mipi1_pwm0_clk", 0, MIPI_LVDS_PWM_LPCG, 0, 0, },
+ { IMX_MIPI_LVDS_1_LPCG_PWM_32K_CLK, "mipi_lvds_1_lpcg_pwm_32k_clk", "xtal_32KHz", 0, MIPI_LVDS_PWM_LPCG, 4, 0, },
+ { IMX_MIPI_LVDS_1_LPCG_I2C0_PER_CLK, "mipi_lvds_1_lpcg_i2c0_per_clk", "mipi1_i2c0_clk", 0, MIPI_LVDS_LPI2C0_LPCG, 0, 0, },
+ { IMX_MIPI_LVDS_1_LPCG_I2C0_IPG_CLK, "mipi_lvds_1_lpcg_i2c0_ipg_clk", "mipi_ipg_root_clk", 0, MIPI_LVDS_LPI2C0_LPCG, 16, 0, },
+};
+
+static const struct imx8qxp_ss_lpcg imx8qxp_ss_mipi_lvds_1 = {
+ .lpcg = imx8qxp_lpcg_mipi_lvds_1,
+ .num_lpcg = ARRAY_SIZE(imx8qxp_lpcg_mipi_lvds_1),
+ .num_max = IMX_MIPI_LVDS_1_LPCG_CLK_END,
+};
+
#define IMX_LPCG_MAX_CLKS 8
static struct clk_hw *imx_lpcg_of_clk_src_get(struct of_phandle_args *clkspec,
@@ -397,6 +433,8 @@ static const struct of_device_id imx8qxp_lpcg_match[] = {
{ .compatible = "fsl,imx8qxp-lpcg-conn", &imx8qxp_ss_conn, },
{ .compatible = "fsl,imx8qxp-lpcg-dc", &imx8qxp_ss_dc, },
{ .compatible = "fsl,imx8qxp-lpcg-lsio", &imx8qxp_ss_lsio, },
+ { .compatible = "fsl,imx8qxp-lpcg-mipi-lvds-0", &imx8qxp_ss_mipi_lvds_0, },
+ { .compatible = "fsl,imx8qxp-lpcg-mipi-lvds-1", &imx8qxp_ss_mipi_lvds_1, },
{ .compatible = "fsl,imx8qxp-lpcg", NULL },
{ /* sentinel */ }
};
diff --git a/drivers/clk/imx/clk-imx8qxp-lpcg.h b/drivers/clk/imx/clk-imx8qxp-lpcg.h
index e1423a9..1505f9b 100644
--- a/drivers/clk/imx/clk-imx8qxp-lpcg.h
+++ b/drivers/clk/imx/clk-imx8qxp-lpcg.h
@@ -119,4 +119,13 @@
#define DC_PRG7_LPCG 0x44
#define DC_PRG8_LPCG 0x48
+/* MIPI-LVDS SS */
+#define MIPI_LVDS_LIS_LPCG 0x00
+#define MIPI_LVDS_DI_REGS_LPCG 0x04
+#define MIPI_LVDS_GPIO_LPCG 0x08
+#define MIPI_LVDS_PWM_LPCG 0x0c
+#define MIPI_LVDS_LPI2C0_LPCG 0x10
+#define MIPI_LVDS_LPI2C1_LPCG 0x14
+#define MIPI_LVDS_MIPI_DSI_LPCG 0x18
+
#endif /* _IMX8QXP_LPCG_H */
diff --git a/include/dt-bindings/clock/imx8-clock.h b/include/dt-bindings/clock/imx8-clock.h
index c9dd0c6..6922ea9 100644
--- a/include/dt-bindings/clock/imx8-clock.h
+++ b/include/dt-bindings/clock/imx8-clock.h
@@ -325,4 +325,30 @@
#define IMX_DC0_LPCG_CLK_END 31
+/* MIPI-LVDS0 SS LPCG */
+#define IMX_MIPI_LVDS_0_LPCG_LIS_IPG_CLK 0
+#define IMX_MIPI_LVDS_0_LPCG_DI_REGS_IPG_CLK 1
+#define IMX_MIPI_LVDS_0_LPCG_GPIO_IPG_CLK 2
+#define IMX_MIPI_LVDS_0_LPCG_PWM_IPG_MASTER_CLK 3
+#define IMX_MIPI_LVDS_0_LPCG_PWM_IPG_CLK 4
+#define IMX_MIPI_LVDS_0_LPCG_PWM_PER_CLK 5
+#define IMX_MIPI_LVDS_0_LPCG_PWM_32K_CLK 6
+#define IMX_MIPI_LVDS_0_LPCG_I2C0_PER_CLK 7
+#define IMX_MIPI_LVDS_0_LPCG_I2C0_IPG_CLK 8
+
+#define IMX_MIPI_LVDS_0_LPCG_CLK_END 9
+
+/* MIPI-LVDS1 SS LPCG */
+#define IMX_MIPI_LVDS_1_LPCG_LIS_IPG_CLK 0
+#define IMX_MIPI_LVDS_1_LPCG_DI_REGS_IPG_CLK 1
+#define IMX_MIPI_LVDS_1_LPCG_GPIO_IPG_CLK 2
+#define IMX_MIPI_LVDS_1_LPCG_PWM_IPG_MASTER_CLK 3
+#define IMX_MIPI_LVDS_1_LPCG_PWM_IPG_CLK 4
+#define IMX_MIPI_LVDS_1_LPCG_PWM_PER_CLK 5
+#define IMX_MIPI_LVDS_1_LPCG_PWM_32K_CLK 6
+#define IMX_MIPI_LVDS_1_LPCG_I2C0_PER_CLK 7
+#define IMX_MIPI_LVDS_1_LPCG_I2C0_IPG_CLK 8
+
+#define IMX_MIPI_LVDS_1_LPCG_CLK_END 9
+
#endif /* __DT_BINDINGS_CLOCK_IMX_H */
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* RE: [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems
2020-11-18 8:31 [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Liu Ying
` (4 preceding siblings ...)
2020-11-18 8:31 ` [PATCH 5/5] clk: imx: clk-imx8qxp-lpcg: Add some LPCG clocks support " Liu Ying
@ 2020-11-18 10:31 ` Aisheng Dong
5 siblings, 0 replies; 7+ messages in thread
From: Aisheng Dong @ 2020-11-18 10:31 UTC (permalink / raw)
To: Ying Liu, linux-arm-kernel@lists.infradead.org,
linux-clk@vger.kernel.org, devicetree@vger.kernel.org
Cc: mturquette@baylibre.com, sboyd@kernel.org, shawnguo@kernel.org,
s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com,
dl-linux-imx, robh+dt@kernel.org
> From: Ying Liu <victor.liu@nxp.com>
> Sent: Wednesday, November 18, 2020 4:31 PM
>
> This patch set adds some clocks support for i.MX8qxp DC0/MIPI-LVDS
> subsystems, which includes some SCU controlled clocks and some LPCG clocks.
>
> With this patch set, some basic clocks for i.MX8qxp LVDS displays can be got by
> drivers.
>
> This patch set follows the legacy/deprecated way to add the clocks support in
> clock drivers instead of the new 'two cells' dt-binding way. The reason behind
> this is that the existing i.MX8qxp SoC device tree is using the legacy way(no
> conversion effort is seen) and there is not i.MX8qm(with a similar
> architecture) SoC device tree for us to enable display yet.
Hi Ying,
Please don't do this.
You know the legacy clock binding will be removed and not used anymore.
Regards
Aisheng
>
> Liu Ying (5):
> clk: imx: clk-imx8qxp: Add SCU clocks support for DC0 PLL clocks
> clk: imx: clk-imx8qxp-lpcg: Add display controller LPCG clocks support
> clk: imx: clk-imx8qxp: Add some SCU clocks support for MIPI-LVDS
> subsystems
> dt-bindings: clock: imx8qxp-lpcg: Add compatibles for MIPI-LVDS
> subsystems
> clk: imx: clk-imx8qxp-lpcg: Add some LPCG clocks support for MIPI-LVDS
> subsystems
>
> .../devicetree/bindings/clock/imx8qxp-lpcg.yaml | 2 +
> drivers/clk/imx/clk-imx8qxp-lpcg.c | 79
> ++++++++++++++++++++++
> drivers/clk/imx/clk-imx8qxp-lpcg.h | 29 ++++++++
> drivers/clk/imx/clk-imx8qxp.c | 12 ++++
> include/dt-bindings/clock/imx8-clock.h | 61
> +++++++++++++++++
> 5 files changed, 183 insertions(+)
>
> --
> 2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-11-18 10:32 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-18 8:31 [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Liu Ying
2020-11-18 8:31 ` [PATCH 1/5] clk: imx: clk-imx8qxp: Add SCU clocks support for DC0 PLL clocks Liu Ying
2020-11-18 8:31 ` [PATCH 2/5] clk: imx: clk-imx8qxp-lpcg: Add display controller LPCG clocks support Liu Ying
2020-11-18 8:31 ` [PATCH 3/5] clk: imx: clk-imx8qxp: Add some SCU clocks support for MIPI-LVDS subsystems Liu Ying
2020-11-18 8:31 ` [PATCH 4/5] dt-bindings: clock: imx8qxp-lpcg: Add compatibles " Liu Ying
2020-11-18 8:31 ` [PATCH 5/5] clk: imx: clk-imx8qxp-lpcg: Add some LPCG clocks support " Liu Ying
2020-11-18 10:31 ` [PATCH 0/5] Add some clocks support for i.MX8qxp DC0/MIPI-LVDS subsystems Aisheng Dong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).