From: Chunyan Zhang
mipi_csi_xx clocks are used by camera sensors.
Signed-off-by: Chunyan Zhang
---
drivers/clk/sprd/sc9863a-clk.c | 32
1 file changed, 32 insertions(+)
diff --git a/drivers/clk/sprd/sc9863a-clk.c b/drivers/clk/sprd/sc9863a-clk.c
index a0631f7756cf..f67bd08f225c 100644
--- a/drivers/clk/sprd/sc9863a-clk.c
+++ b/drivers/clk/sprd/sc9863a-clk.c
@@ -1615,6 +1615,36 @@ static const struct sprd_clk_desc sc9863a_mm_gate_desc =
{
.hw_clks= _mm_gate_hws,
};
+/* camera sensor clocks */
+static SPRD_GATE_CLK_HW(mipi_csi_clk, "mipi-csi-clk", _ckg_eb.common.hw,
+ 0x20, BIT(16), 0, SPRD_GATE_NON_AON);
+static SPRD_GATE_CLK_HW(mipi_csi_s_clk, "mipi-csi-s-clk",
_ckg_eb.common.hw,
+ 0x24, BIT(16), 0, SPRD_GATE_NON_AON);
+static SPRD_GATE_CLK_HW(mipi_csi_m_clk, "mipi-csi-m-clk",
_ckg_eb.common.hw,
+ 0x28, BIT(16), 0, SPRD_GATE_NON_AON);
+
+static struct sprd_clk_common *sc9863a_mm_clk_clks[] = {
+ /* address base is 0x6090 */
+ _csi_clk.common,
+ _csi_s_clk.common,
+ _csi_m_clk.common,
+};
+
+static struct clk_hw_onecell_data sc9863a_mm_clk_hws = {
+ .hws= {
+ [CLK_MIPI_CSI] = _csi_clk.common.hw,
+ [CLK_MIPI_CSI_S]= _csi_s_clk.common.hw,
+ [CLK_MIPI_CSI_M]= _csi_m_clk.common.hw,
+ },
+ .num= CLK_MM_CLK_NUM,
+};
+
+static const struct sprd_clk_desc sc9863a_mm_clk_desc = {
+ .clk_clks = sc9863a_mm_clk_clks,
+ .num_clk_clks = ARRAY_SIZE(sc9863a_mm_clk_clks),
+ .hw_clks= _mm_clk_hws,
+};
+
static SPRD_SC_GATE_CLK_FW_NAME(sim0_eb, "sim0-eb", "ext-26m", 0x0,
0x1000, BIT(0), 0, 0);
static SPRD_SC_GATE_CLK_FW_NAME(iis0_eb, "iis0-eb", "ext-26m", 0x0,
@@ -1737,6 +1767,8 @@ static const struct of_device_id sprd_sc9863a_clk_ids[] =
{
.data = _aonapb_gate_desc },
{ .compatible = "sprd,sc9863a-mm-gate", /* 0x6080 */
.data = _mm_gate_desc },
+ { .compatible = "sprd,sc9863a-mm-clk", /* 0x6090 */
+ .data = _mm_clk_desc },
{ .compatible = "sprd,sc9863a-apapb-gate", /* 0x7130 */
.data = _apapb_gate_desc },
{ }
--
2.20.1