All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A
@ 2020-04-14  3:33 zhang.lyra
  2020-04-14  3:33 ` [PATCH v2 1/4] clk: sprd: check its parent status before reading gate clock zhang.lyra
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: zhang.lyra @ 2020-04-14  3:33 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Rob Herring, Mark Rutland
  Cc: linux-clk, devicetree, linux-kernel, Orson Zhai, Baolin Wang,
	Chunyan Zhang, Chunyan Zhang

From: Chunyan Zhang <chunyan.zhang@unisoc.com>

mipi_csi_xx clocks are used by camera sensors. These clocks cannot be
accessed (even read) if their parent gate clock is disabled. So this
patchset also add a check to parent clocks when reading these gate
clocks which marked with the specific flag (SPRD_GATE_NON_AON).

changes from v1:
* added Rob's acked-by;

Chunyan Zhang (4):
  clk: sprd: check its parent status before reading gate clock
  dt-bindings: clk: sprd: add mipi_csi_xx clocks for SC9863A
  clk: sprd: add dt-bindings include for mipi_csi_xx clocks
  clk: sprd: add mipi_csi_xx gate clocks

 .../bindings/clock/sprd,sc9863a-clk.yaml      |  1 +
 drivers/clk/sprd/gate.c                       |  7 ++++
 drivers/clk/sprd/gate.h                       |  9 ++++++
 drivers/clk/sprd/sc9863a-clk.c                | 32 +++++++++++++++++++
 include/dt-bindings/clock/sprd,sc9863a-clk.h  |  5 +++
 5 files changed, 54 insertions(+)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/4] clk: sprd: check its parent status before reading gate clock
  2020-04-14  3:33 [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A zhang.lyra
@ 2020-04-14  3:33 ` zhang.lyra
  2020-04-14  3:33 ` [PATCH v2 2/4] dt-bindings: clk: sprd: add mipi_csi_xx clocks for SC9863A zhang.lyra
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: zhang.lyra @ 2020-04-14  3:33 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Rob Herring, Mark Rutland
  Cc: linux-clk, devicetree, linux-kernel, Orson Zhai, Baolin Wang,
	Chunyan Zhang, Chunyan Zhang

From: Chunyan Zhang <chunyan.zhang@unisoc.com>

Some clocks only can be accessed if their parent is enabled. mipi_csi_xx
clocks on SC9863A are an examples. We have to ensure the parent clock is
enabled when reading those clocks.

Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
---
 drivers/clk/sprd/gate.c | 7 +++++++
 drivers/clk/sprd/gate.h | 9 +++++++++
 2 files changed, 16 insertions(+)

diff --git a/drivers/clk/sprd/gate.c b/drivers/clk/sprd/gate.c
index 574cfc116bbc..56e1714b541e 100644
--- a/drivers/clk/sprd/gate.c
+++ b/drivers/clk/sprd/gate.c
@@ -94,8 +94,15 @@ static int sprd_gate_is_enabled(struct clk_hw *hw)
 {
 	struct sprd_gate *sg = hw_to_sprd_gate(hw);
 	struct sprd_clk_common *common = &sg->common;
+	struct clk_hw *parent;
 	unsigned int reg;
 
+	if (sg->flags & SPRD_GATE_NON_AON) {
+		parent = clk_hw_get_parent(hw);
+		if (!parent || !clk_hw_is_enabled(parent))
+			return 0;
+	}
+
 	regmap_read(common->regmap, common->reg, &reg);
 
 	if (sg->flags & CLK_GATE_SET_TO_DISABLE)
diff --git a/drivers/clk/sprd/gate.h b/drivers/clk/sprd/gate.h
index b55817869367..e738dafa4fe9 100644
--- a/drivers/clk/sprd/gate.h
+++ b/drivers/clk/sprd/gate.h
@@ -19,6 +19,15 @@ struct sprd_gate {
 	struct sprd_clk_common	common;
 };
 
+/*
+ * sprd_gate->flags is used for:
+ * CLK_GATE_SET_TO_DISABLE	BIT(0)
+ * CLK_GATE_HIWORD_MASK		BIT(1)
+ * CLK_GATE_BIG_ENDIAN		BIT(2)
+ * so we define new flags from	BIT(3)
+ */
+#define SPRD_GATE_NON_AON BIT(3) /* not alway powered on, check before read */
+
 #define SPRD_SC_GATE_CLK_HW_INIT_FN(_struct, _name, _parent, _reg,	\
 				    _sc_offset, _enable_mask, _flags,	\
 				    _gate_flags, _udelay, _ops, _fn)	\
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/4] dt-bindings: clk: sprd: add mipi_csi_xx clocks for SC9863A
  2020-04-14  3:33 [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A zhang.lyra
  2020-04-14  3:33 ` [PATCH v2 1/4] clk: sprd: check its parent status before reading gate clock zhang.lyra
@ 2020-04-14  3:33 ` zhang.lyra
  2020-04-14  3:33 ` [PATCH v2 3/4] clk: sprd: add dt-bindings include for mipi_csi_xx clocks zhang.lyra
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: zhang.lyra @ 2020-04-14  3:33 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Rob Herring, Mark Rutland
  Cc: linux-clk, devicetree, linux-kernel, Orson Zhai, Baolin Wang,
	Chunyan Zhang, Chunyan Zhang

From: Chunyan Zhang <chunyan.zhang@unisoc.com>

mipi_csi_xx clocks are used by camera sensors.

Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/clock/sprd,sc9863a-clk.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/clock/sprd,sc9863a-clk.yaml b/Documentation/devicetree/bindings/clock/sprd,sc9863a-clk.yaml
index bb3a78d8105e..87e8349a539a 100644
--- a/Documentation/devicetree/bindings/clock/sprd,sc9863a-clk.yaml
+++ b/Documentation/devicetree/bindings/clock/sprd,sc9863a-clk.yaml
@@ -28,6 +28,7 @@ properties:
       - sprd,sc9863a-rpll
       - sprd,sc9863a-dpll
       - sprd,sc9863a-mm-gate
+      - sprd,sc9863a-mm-clk
       - sprd,sc9863a-apapb-gate
 
   clocks:
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/4] clk: sprd: add dt-bindings include for mipi_csi_xx clocks
  2020-04-14  3:33 [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A zhang.lyra
  2020-04-14  3:33 ` [PATCH v2 1/4] clk: sprd: check its parent status before reading gate clock zhang.lyra
  2020-04-14  3:33 ` [PATCH v2 2/4] dt-bindings: clk: sprd: add mipi_csi_xx clocks for SC9863A zhang.lyra
@ 2020-04-14  3:33 ` zhang.lyra
  2020-04-14  3:33 ` [PATCH v2 4/4] clk: sprd: add mipi_csi_xx gate clocks zhang.lyra
  2020-04-27  2:36 ` [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A Chunyan Zhang
  4 siblings, 0 replies; 6+ messages in thread
From: zhang.lyra @ 2020-04-14  3:33 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Rob Herring, Mark Rutland
  Cc: linux-clk, devicetree, linux-kernel, Orson Zhai, Baolin Wang,
	Chunyan Zhang, Chunyan Zhang

From: Chunyan Zhang <chunyan.zhang@unisoc.com>

mipi_csi_xx clocks are used by camera sensors.

Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 include/dt-bindings/clock/sprd,sc9863a-clk.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/dt-bindings/clock/sprd,sc9863a-clk.h b/include/dt-bindings/clock/sprd,sc9863a-clk.h
index 901ba59676c2..4e030421641f 100644
--- a/include/dt-bindings/clock/sprd,sc9863a-clk.h
+++ b/include/dt-bindings/clock/sprd,sc9863a-clk.h
@@ -308,6 +308,11 @@
 #define CLK_MCPHY_CFG_EB	14
 #define CLK_MM_GATE_NUM		(CLK_MCPHY_CFG_EB + 1)
 
+#define CLK_MIPI_CSI		0
+#define CLK_MIPI_CSI_S		1
+#define CLK_MIPI_CSI_M		2
+#define CLK_MM_CLK_NUM		(CLK_MIPI_CSI_M + 1)
+
 #define CLK_SIM0_EB		0
 #define CLK_IIS0_EB		1
 #define CLK_IIS1_EB		2
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 4/4] clk: sprd: add mipi_csi_xx gate clocks
  2020-04-14  3:33 [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A zhang.lyra
                   ` (2 preceding siblings ...)
  2020-04-14  3:33 ` [PATCH v2 3/4] clk: sprd: add dt-bindings include for mipi_csi_xx clocks zhang.lyra
@ 2020-04-14  3:33 ` zhang.lyra
  2020-04-27  2:36 ` [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A Chunyan Zhang
  4 siblings, 0 replies; 6+ messages in thread
From: zhang.lyra @ 2020-04-14  3:33 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Rob Herring, Mark Rutland
  Cc: linux-clk, devicetree, linux-kernel, Orson Zhai, Baolin Wang,
	Chunyan Zhang, Chunyan Zhang

From: Chunyan Zhang <chunyan.zhang@unisoc.com>

mipi_csi_xx clocks are used by camera sensors.

Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
---
 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	= &sc9863a_mm_gate_hws,
 };
 
+/* camera sensor clocks */
+static SPRD_GATE_CLK_HW(mipi_csi_clk, "mipi-csi-clk", &mahb_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", &mahb_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", &mahb_ckg_eb.common.hw,
+			0x28, BIT(16), 0, SPRD_GATE_NON_AON);
+
+static struct sprd_clk_common *sc9863a_mm_clk_clks[] = {
+	/* address base is 0x60900000 */
+	&mipi_csi_clk.common,
+	&mipi_csi_s_clk.common,
+	&mipi_csi_m_clk.common,
+};
+
+static struct clk_hw_onecell_data sc9863a_mm_clk_hws = {
+	.hws	= {
+		[CLK_MIPI_CSI]		= &mipi_csi_clk.common.hw,
+		[CLK_MIPI_CSI_S]	= &mipi_csi_s_clk.common.hw,
+		[CLK_MIPI_CSI_M]	= &mipi_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	= &sc9863a_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 = &sc9863a_aonapb_gate_desc },
 	{ .compatible = "sprd,sc9863a-mm-gate",	/* 0x60800000 */
 	  .data = &sc9863a_mm_gate_desc },
+	{ .compatible = "sprd,sc9863a-mm-clk",	/* 0x60900000 */
+	  .data = &sc9863a_mm_clk_desc },
 	{ .compatible = "sprd,sc9863a-apapb-gate",	/* 0x71300000 */
 	  .data = &sc9863a_apapb_gate_desc },
 	{ }
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A
  2020-04-14  3:33 [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A zhang.lyra
                   ` (3 preceding siblings ...)
  2020-04-14  3:33 ` [PATCH v2 4/4] clk: sprd: add mipi_csi_xx gate clocks zhang.lyra
@ 2020-04-27  2:36 ` Chunyan Zhang
  4 siblings, 0 replies; 6+ messages in thread
From: Chunyan Zhang @ 2020-04-27  2:36 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Rob Herring, Mark Rutland
  Cc: linux-clk, DTML, Linux Kernel Mailing List, Orson Zhai,
	Baolin Wang, Chunyan Zhang

Hi Stephen,

On Tue, 14 Apr 2020 at 11:33, <zhang.lyra@gmail.com> wrote:
>
> From: Chunyan Zhang <chunyan.zhang@unisoc.com>
>
> mipi_csi_xx clocks are used by camera sensors. These clocks cannot be
> accessed (even read) if their parent gate clock is disabled. So this
> patchset also add a check to parent clocks when reading these gate
> clocks which marked with the specific flag (SPRD_GATE_NON_AON).
>
> changes from v1:
> * added Rob's acked-by;
>
> Chunyan Zhang (4):
>   clk: sprd: check its parent status before reading gate clock
>   dt-bindings: clk: sprd: add mipi_csi_xx clocks for SC9863A
>   clk: sprd: add dt-bindings include for mipi_csi_xx clocks
>   clk: sprd: add mipi_csi_xx gate clocks
>

Do you have comments or could you please take this patchset to your tree?

Thanks,
Chunyan

>  .../bindings/clock/sprd,sc9863a-clk.yaml      |  1 +
>  drivers/clk/sprd/gate.c                       |  7 ++++
>  drivers/clk/sprd/gate.h                       |  9 ++++++
>  drivers/clk/sprd/sc9863a-clk.c                | 32 +++++++++++++++++++
>  include/dt-bindings/clock/sprd,sc9863a-clk.h  |  5 +++
>  5 files changed, 54 insertions(+)
>
> --
> 2.20.1
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-04-27  2:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-14  3:33 [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A zhang.lyra
2020-04-14  3:33 ` [PATCH v2 1/4] clk: sprd: check its parent status before reading gate clock zhang.lyra
2020-04-14  3:33 ` [PATCH v2 2/4] dt-bindings: clk: sprd: add mipi_csi_xx clocks for SC9863A zhang.lyra
2020-04-14  3:33 ` [PATCH v2 3/4] clk: sprd: add dt-bindings include for mipi_csi_xx clocks zhang.lyra
2020-04-14  3:33 ` [PATCH v2 4/4] clk: sprd: add mipi_csi_xx gate clocks zhang.lyra
2020-04-27  2:36 ` [PATCH v2 0/4] add mipi_csi_xx gate clocks for SC9863A Chunyan Zhang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.