Skip to contentSkip to conversation

Add GPU & Video Clock controller driver for SC7180

PATCH Applied Taniya Das 4 participants 15 messages Dec 27, 2019 – Jan 5, 2020

Subsystems (4)

v3 of 7 Applied Latest is v7 →

lore
Share & tools
lore

Taniya Das

author
#0 lore raw

v3 cover Add GPU & Video Clock controller driver for SC7180

[v3]
* Update the clock items in Documentation binding with the GPLL0 branch names.
* Update gpu_cc_parent_data to remove .name for GCC GPLL0 source.
* Mark video_cc_xo_clk clock critical from videocc probe.

[v2]
* Split Fabia code cleanup and calibration code.
* Few cleanups for GPU/Video CC are
* header file inclusion, const for pll vco table.
* removal of always enabled clock from gpucc.
* compatibles added in sorted order.
* move from core_initcall to subsys_initcall().
* cleanup clk_parent_data for clocks to be provided from DT.

[v1]
* Fabia PLLs could fail latching in the case where the PLL is not calibrated, so add support to calibrate in prepare clock ops.

* Add driver support for Graphics clock controller for SC7180 and also update device tree bindings for the various clocks supported in the clock controller.

* Add driver support for Video clock controller for SC7180 and also update device tree bindings for the various clocks supported in the clock controller.

Taniya Das (6):
dt-bindings: clock: Add YAML schemas for the QCOM GPUCC clock bindings
dt-bindings: clock: Introduce QCOM Graphics clock bindings
clk: qcom: Add graphics clock controller driver for SC7180
dt-bindings: clock: Add YAML schemas for the QCOM VIDEOCC clock
bindings
dt-bindings: clock: Introduce SC7180 QCOM Video clock bindings
clk: qcom: Add video clock controller driver for SC7180

 .../devicetree/bindings/clock/qcom,gpucc.txt       |  24 --
 .../devicetree/bindings/clock/qcom,gpucc.yaml      |  72 ++++++
 .../devicetree/bindings/clock/qcom,videocc.txt     |  18 --
 .../devicetree/bindings/clock/qcom,videocc.yaml    |  62 +++++
 drivers/clk/qcom/Kconfig                           |  16 ++
 drivers/clk/qcom/Makefile                          |   2 +
 drivers/clk/qcom/gpucc-sc7180.c                    | 266 +++++++++++++++++++++
 drivers/clk/qcom/videocc-sc7180.c                  | 259 ++++++++++++++++++++
 include/dt-bindings/clock/qcom,gpucc-sc7180.h      |  21 ++
 include/dt-bindings/clock/qcom,videocc-sc7180.h    |  23 ++
 10 files changed, 721 insertions(+), 42 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/clock/qcom,gpucc.txt
 create mode 100644 Documentation/devicetree/bindings/clock/qcom,gpucc.yaml
 delete mode 100644 Documentation/devicetree/bindings/clock/qcom,videocc.txt
 create mode 100644 Documentation/devicetree/bindings/clock/qcom,videocc.yaml
 create mode 100644 drivers/clk/qcom/gpucc-sc7180.c
 create mode 100644 drivers/clk/qcom/videocc-sc7180.c
 create mode 100644 include/dt-bindings/clock/qcom,gpucc-sc7180.h
 create mode 100644 include/dt-bindings/clock/qcom,videocc-sc7180.h

--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.

author
#1 lore raw

PATCH v3 1/6 dt-bindings: clock: Add YAML schemas for the QCOM GPUCC clock bindings

The GPUCC clock provider have a bunch of generic properties that are needed in a device tree. Add a YAML schemas for those.

---
 .../devicetree/bindings/clock/qcom,gpucc.txt       | 24 --------
 .../devicetree/bindings/clock/qcom,gpucc.yaml      | 71 ++++++++++++++++++++++
 2 files changed, 71 insertions(+), 24 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/clock/qcom,gpucc.txt
 create mode 100644 Documentation/devicetree/bindings/clock/qcom,gpucc.yaml
Documentation/devicetree/bindings/clock/qcom,gpucc.txt deleted +0 -24
deleted file mode 100644
index 269afe8a..0000000
@@ -1,24 +0,0 @@
-Qualcomm Graphics Clock & Reset Controller Binding
---------------------------------------------------
-
-Required properties :
-- compatible : shall contain "qcom,sdm845-gpucc" or "qcom,msm8998-gpucc"
-- reg : shall contain base register location and length
-- #clock-cells : from common clock binding, shall contain 1
-- #reset-cells : from common reset binding, shall contain 1
-- #power-domain-cells : from generic power domain binding, shall contain 1
-- clocks : shall contain the XO clock
-	   shall contain the gpll0 out main clock (msm8998)
-- clock-names : shall be "xo"
-		shall be "gpll0" (msm8998)
-
-Example:
-	gpucc: clock-controller@5090000 {
-		compatible = "qcom,sdm845-gpucc";
-		reg = <0x5090000 0x9000>;
-		#clock-cells = <1>;
-		#reset-cells = <1>;
-		#power-domain-cells = <1>;
-		clocks = <&rpmhcc RPMH_CXO_CLK>;
-		clock-names = "xo";
-	};
Documentation/devicetree/bindings/clock/qcom,gpucc.yaml new file +71 -0

71 lines not on this page · raw message

--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.

maintainer Reviewed-by on v3 1/6
#2 lore raw

Re: [PATCH v3 1/6] dt-bindings: clock: Add YAML schemas for the QCOM GPUCC clock bindings

Quoted 11 lines · Taniya Das

The GPUCC clock provider have a bunch of generic properties that are needed in a device tree. Add a YAML schemas for those.

---
 .../devicetree/bindings/clock/qcom,gpucc.txt       | 24 --------
 .../devicetree/bindings/clock/qcom,gpucc.yaml      | 71 ++++++++++++++++++++++
 2 files changed, 71 insertions(+), 24 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/clock/qcom,gpucc.txt
 create mode 100644 Documentation/devicetree/bindings/clock/qcom,gpucc.yaml
maintainer Applied
#3 lore raw

Re: [PATCH v3 1/6] dt-bindings: clock: Add YAML schemas for the QCOM GPUCC clock bindings

In reply to Taniya Das

Quoting Taniya Das (2019-12-26 22:38:29)

Quoted 5 lines

The GPUCC clock provider have a bunch of generic properties that are needed in a device tree. Add a YAML schemas for those.

---

Applied to clk-next

author
#4 lore raw

PATCH v3 2/6 dt-bindings: clock: Introduce QCOM Graphics clock bindings

In reply to Taniya Das

Add device tree bindings for graphics clock controller for Qualcomm Technology Inc's SC7180 SoCs.

---
 .../devicetree/bindings/clock/qcom,gpucc.yaml       |  1 +
 include/dt-bindings/clock/qcom,gpucc-sc7180.h       | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+)
 create mode 100644 include/dt-bindings/clock/qcom,gpucc-sc7180.h
Documentation/devicetree/bindings/clock/qcom,gpucc.yaml +1 -0
index 993913d..622845a 100644
@@ -17,6 +17,7 @@ properties:
   compatible:
     enum:
       - qcom,msm8998-gpucc
+      - qcom,sc7180-gpucc
       - qcom,sdm845-gpucc
 
   clocks:
include/dt-bindings/clock/qcom,gpucc-sc7180.h new file +21 -0
new file mode 100644
index 0000000..0e4643b
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2019, The Linux Foundation. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_GPU_CC_SC7180_H
+#define _DT_BINDINGS_CLK_QCOM_GPU_CC_SC7180_H
+
+#define GPU_CC_PLL1			0
+#define GPU_CC_AHB_CLK			1
+#define GPU_CC_CRC_AHB_CLK		2
+#define GPU_CC_CX_GMU_CLK		3
+#define GPU_CC_CX_SNOC_DVM_CLK		4
+#define GPU_CC_CXO_AON_CLK		5
+#define GPU_CC_CXO_CLK			6
+#define GPU_CC_GMU_CLK_SRC		7
+
+/* CAM_CC GDSCRs */
+#define CX_GDSC				0
+
+#endif

--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.

author
#6 lore raw

PATCH v3 3/6 clk: qcom: Add graphics clock controller driver for SC7180

In reply to Taniya Das

Add support for the graphics clock controller found on SC7180 based devices. This would allow graphics drivers to probe and control their clocks.

---
 drivers/clk/qcom/Kconfig        |   8 ++
 drivers/clk/qcom/Makefile       |   1 +
 drivers/clk/qcom/gpucc-sc7180.c | 266 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 275 insertions(+)
 create mode 100644 drivers/clk/qcom/gpucc-sc7180.c
drivers/clk/qcom/Kconfig +8 -0
index 3b33ef1..e648a60 100644
@@ -245,6 +245,14 @@ config SC_GCC_7180
 	  Say Y if you want to use peripheral devices such as UART, SPI,
 	  I2C, USB, UFS, SDCC, etc.
 
+config SC_GPUCC_7180
+	tristate "SC7180 Graphics Clock Controller"
+	select SC_GCC_7180
+	help
+	  Support for the graphics clock controller on SC7180 devices.
+	  Say Y if you want to support graphics controller devices and
+	  functionality such as 3D graphics.
+
 config SDM_CAMCC_845
 	tristate "SDM845 Camera Clock Controller"
 	select SDM_GCC_845
drivers/clk/qcom/Makefile +1 -0
index d899661..5477482 100644
@@ -46,6 +46,7 @@ obj-$(CONFIG_QCS_GCC_404) += gcc-qcs404.o
 obj-$(CONFIG_QCS_Q6SSTOP_404) += q6sstop-qcs404.o
 obj-$(CONFIG_QCS_TURING_404) += turingcc-qcs404.o
 obj-$(CONFIG_SC_GCC_7180) += gcc-sc7180.o
+obj-$(CONFIG_SC_GPUCC_7180) += gpucc-sc7180.o
 obj-$(CONFIG_SDM_CAMCC_845) += camcc-sdm845.o
 obj-$(CONFIG_SDM_DISPCC_845) += dispcc-sdm845.o
 obj-$(CONFIG_SDM_GCC_660) += gcc-sdm660.o
drivers/clk/qcom/gpucc-sc7180.c new file +266 -0

266 lines not on this page · raw message

--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.

maintainer Applied
#7 lore raw

Re: [PATCH v3 3/6] clk: qcom: Add graphics clock controller driver for SC7180

Quoting Taniya Das (2019-12-26 22:38:31)

Quoted 6 lines

Add support for the graphics clock controller found on SC7180 based devices. This would allow graphics drivers to probe and control their clocks.

---

Applied to clk-next

author
#8 lore raw

PATCH v3 4/6 dt-bindings: clock: Add YAML schemas for the QCOM VIDEOCC clock bindings

In reply to Taniya Das

The VIDEOCC clock provider have a bunch of generic properties that are needed in a device tree. Add a YAML schemas for those.

---
 .../devicetree/bindings/clock/qcom,videocc.txt     | 18 -------
 .../devicetree/bindings/clock/qcom,videocc.yaml    | 61 ++++++++++++++++++++++
 2 files changed, 61 insertions(+), 18 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/clock/qcom,videocc.txt
 create mode 100644 Documentation/devicetree/bindings/clock/qcom,videocc.yaml
Documentation/devicetree/bindings/clock/qcom,videocc.txt deleted +0 -18
deleted file mode 100644
index 8a8622c..0000000
@@ -1,18 +0,0 @@
-Qualcomm Video Clock & Reset Controller Binding
------------------------------------------------
-
-Required properties :
-- compatible : shall contain "qcom,sdm845-videocc"
-- reg : shall contain base register location and length
-- #clock-cells : from common clock binding, shall contain 1.
-- #power-domain-cells : from generic power domain binding, shall contain 1.
-- #reset-cells : from common reset binding, shall contain 1.
-
-Example:
-	videocc: clock-controller@ab00000 {
-		compatible = "qcom,sdm845-videocc";
-		reg = <0xab00000 0x10000>;
-		#clock-cells = <1>;
-		#power-domain-cells = <1>;
-		#reset-cells = <1>;
-	};
Documentation/devicetree/bindings/clock/qcom,videocc.yaml new file +61 -0

61 lines not on this page · raw message

--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.

maintainer Applied
#9 lore raw

Re: [PATCH v3 4/6] dt-bindings: clock: Add YAML schemas for the QCOM VIDEOCC clock bindings

Quoting Taniya Das (2019-12-26 22:38:32)

Quoted 6 lines

The VIDEOCC clock provider have a bunch of generic properties that are needed in a device tree. Add a YAML schemas for those.

---

Applied to clk-next

author
#10 lore raw

PATCH v3 5/6 dt-bindings: clock: Introduce SC7180 QCOM Video clock bindings

In reply to Taniya Das

Add device tree bindings for video clock controller for Qualcomm Technology Inc's SC7180 SoCs.

---
 .../devicetree/bindings/clock/qcom,videocc.yaml    |  1 +
 include/dt-bindings/clock/qcom,videocc-sc7180.h    | 23 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 include/dt-bindings/clock/qcom,videocc-sc7180.h
Documentation/devicetree/bindings/clock/qcom,videocc.yaml +1 -0
index fc3fcca..43cfc89 100644
@@ -16,6 +16,7 @@ description: |
 properties:
   compatible:
     enum:
+      - qcom,sc7180-videocc
       - qcom,sdm845-videocc
 
   clocks:
include/dt-bindings/clock/qcom,videocc-sc7180.h new file +23 -0
new file mode 100644
index 0000000..7acaf13
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2019, The Linux Foundation. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_VIDEO_CC_SC7180_H
+#define _DT_BINDINGS_CLK_QCOM_VIDEO_CC_SC7180_H
+
+/* VIDEO_CC clocks */
+#define VIDEO_PLL0				0
+#define VIDEO_CC_VCODEC0_AXI_CLK		1
+#define VIDEO_CC_VCODEC0_CORE_CLK		2
+#define VIDEO_CC_VENUS_AHB_CLK			3
+#define VIDEO_CC_VENUS_CLK_SRC			4
+#define VIDEO_CC_VENUS_CTL_AXI_CLK		5
+#define VIDEO_CC_VENUS_CTL_CORE_CLK		6
+#define VIDEO_CC_XO_CLK				7
+
+/* VIDEO_CC GDSCRs */
+#define VENUS_GDSC				0
+#define VCODEC0_GDSC				1
+
+#endif

--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.

author
#12 lore raw

PATCH v3 6/6 clk: qcom: Add video clock controller driver for SC7180

In reply to Taniya Das

Add support for the video clock controller found on SC7180 based devices. This would allow video drivers to probe and control their clocks.

---
 drivers/clk/qcom/Kconfig          |   8 ++
 drivers/clk/qcom/Makefile         |   1 +
 drivers/clk/qcom/videocc-sc7180.c | 259 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 268 insertions(+)
 create mode 100644 drivers/clk/qcom/videocc-sc7180.c
drivers/clk/qcom/Kconfig +8 -0
index e648a60..cf21d5c 100644
@@ -253,6 +253,14 @@ config SC_GPUCC_7180
 	  Say Y if you want to support graphics controller devices and
 	  functionality such as 3D graphics.
 
+config SC_VIDEOCC_7180
+	tristate "SC7180 Video Clock Controller"
+	select SC_GCC_7180
+	help
+	  Support for the video clock controller on SC7180 devices.
+	  Say Y if you want to support video devices and functionality such as
+	  video encode and decode.
+
 config SDM_CAMCC_845
 	tristate "SDM845 Camera Clock Controller"
 	select SDM_GCC_845
drivers/clk/qcom/Makefile +1 -0
index 5477482..4cdd08f 100644
@@ -47,6 +47,7 @@ obj-$(CONFIG_QCS_Q6SSTOP_404) += q6sstop-qcs404.o
 obj-$(CONFIG_QCS_TURING_404) += turingcc-qcs404.o
 obj-$(CONFIG_SC_GCC_7180) += gcc-sc7180.o
 obj-$(CONFIG_SC_GPUCC_7180) += gpucc-sc7180.o
+obj-$(CONFIG_SC_VIDEOCC_7180) += videocc-sc7180.o
 obj-$(CONFIG_SDM_CAMCC_845) += camcc-sdm845.o
 obj-$(CONFIG_SDM_DISPCC_845) += dispcc-sdm845.o
 obj-$(CONFIG_SDM_GCC_660) += gcc-sdm660.o
drivers/clk/qcom/videocc-sc7180.c new file +259 -0

259 lines not on this page · raw message

--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.

#13 lore raw

Re: [PATCH v3 6/6] clk: qcom: Add video clock controller driver for SC7180

Hi Taniya,

Quoted 12 lines · Taniya Das

Add support for the video clock controller found on SC7180 based devices. This would allow video drivers to probe and control their clocks.

---
 drivers/clk/qcom/Kconfig          |   8 ++
 drivers/clk/qcom/Makefile         |   1 +
 drivers/clk/qcom/videocc-sc7180.c | 259 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 268 insertions(+)
 create mode 100644 drivers/clk/qcom/videocc-sc7180.c

<cut>

drivers/clk/qcom/videocc-sc7180.c line 63

Quoted 2 lines
drivers/clk/qcom/videocc-sc7180.c new file +2 -0
+static const struct freq_tbl ftbl_video_cc_venus_clk_src[] = {
+	F(19200000, P_BI_TCXO, 1, 0, 0),

Do you know is this frequency (19.2MHz) has real usage? The lower freq I've seen for Venus was 75MHz.

Quoted 8 lines
drivers/clk/qcom/videocc-sc7180.c new file +8 -0
+	F(150000000, P_VIDEO_PLL0_OUT_MAIN, 4, 0, 0),
+	F(270000000, P_VIDEO_PLL0_OUT_MAIN, 2.5, 0, 0),
+	F(340000000, P_VIDEO_PLL0_OUT_MAIN, 2, 0, 0),
+	F(434000000, P_VIDEO_PLL0_OUT_MAIN, 2, 0, 0),
+	F(500000000, P_VIDEO_PLL0_OUT_MAIN, 2, 0, 0),
+	{ }
+};
+
Signature · 2 lines
regards,
Stan
maintainer Applied
#14 lore raw

Re: [PATCH v3 6/6] clk: qcom: Add video clock controller driver for SC7180

In reply to Taniya Das

Quoting Taniya Das (2019-12-26 22:38:34)

Quoted 6 lines

Add support for the video clock controller found on SC7180 based devices. This would allow video drivers to probe and control their clocks.

---

Applied to clk-next