linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/3] Add JH7110 MIPI DPHY RX support
@ 2023-03-15 10:04 Changhuang Liang
  2023-03-15 10:04 ` [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx Changhuang Liang
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Changhuang Liang @ 2023-03-15 10:04 UTC (permalink / raw)
  To: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
	Krzysztof Kozlowski, Emil Renner Berthing, Conor Dooley,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Philipp Zabel
  Cc: Jack Zhu, Changhuang Liang, linux-phy, devicetree, linux-kernel,
	linux-riscv

This patchset adds mipi dphy rx driver for the StarFive JH7110 SoC.
It is used to transfer CSI camera data. The series has been tested on
the VisionFive 2 board.

This patchset should be applied after the patchset [1] [2]:
[1] https://lore.kernel.org/all/20230314124404.117592-1-xingyu.wu@starfivetech.com/
[2] https://lore.kernel.org/all/20230315055813.94740-1-william.qiu@starfivetech.com/

changes since v2:
- Rebased on tag v6.3-rc1.

patch 1:
- Changed the 'Starfive' to 'StarFive'.
- Changed the "items" to "- items".
- Add description to clocks.

patch 2:
- Changed the 'Starfive' to 'StarFive'.
- Updated the driver order in MAINTAINERS.

patch 3:
- Changed the 'Starfive' to 'StarFive'.
- Update clocks&resets macros follow patchset [1].

v2: https://lore.kernel.org/all/20230223015952.201841-1-changhuang.liang@starfivetech.com/

changes since v1:
- Rebased on tag v6.2.
- Dropped patch 1, it will be added by the patch [2].

patch 1:
- Changed the node name 'dphy' to 'phy'.
- Changed the "starfive,aon-syscon" description.
- Changed the MIPI DPHY RX IP description.
- Add description to resets.
- Update devicetree binding examples.

patch 2:
- Changed the commit message.

patch 3:
- Changed the commit message.
- Changed the node name 'dphy' to 'phy'.
- Sorted the node by address.

v1: https://lore.kernel.org/all/20230210061713.6449-1-changhuang.liang@starfivetech.com/

Changhuang Liang (3):
  dt-bindings: phy: Add starfive,jh7110-dphy-rx
  phy: starfive: Add mipi dphy rx support
  riscv: dts: starfive: Add dphy rx node

 .../bindings/phy/starfive,jh7110-dphy-rx.yaml |  77 ++++
 MAINTAINERS                                   |   7 +
 arch/riscv/boot/dts/starfive/jh7110.dtsi      |  13 +
 drivers/phy/Kconfig                           |   1 +
 drivers/phy/Makefile                          |   1 +
 drivers/phy/starfive/Kconfig                  |  13 +
 drivers/phy/starfive/Makefile                 |   2 +
 drivers/phy/starfive/phy-starfive-dphy-rx.c   | 362 ++++++++++++++++++
 8 files changed, 476 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
 create mode 100644 drivers/phy/starfive/Kconfig
 create mode 100644 drivers/phy/starfive/Makefile
 create mode 100644 drivers/phy/starfive/phy-starfive-dphy-rx.c


base-commit: fe15c26ee26efa11741a7b632e9f23b01aca4cc6
prerequisite-patch-id: c3a6b87df79b338fc97766406d010fedb79ab428
prerequisite-patch-id: 761b5c9adb87cbf1abc3bc113a24bd505961efbe
prerequisite-patch-id: ebaead89601acf604e83224f4df8d57a7f4331b8
prerequisite-patch-id: 609d5d7c55b0b8e2967966673dab8f62a6fceab9
prerequisite-patch-id: ac150a8c622e858e088df8121093d448df49c245
prerequisite-patch-id: a4255724d4698f1238663443024de56de38d717b
prerequisite-patch-id: 89f049f951e5acf75aab92541992f816fd0acc0d
prerequisite-patch-id: dfb8d5a1fb262127d7a8e1ef3e97f455aaa19509
prerequisite-patch-id: 11b0f5746bbfbf8aa5c5746dcd7b0dce62e7f922
prerequisite-patch-id: 315303931e4b6499de7127a88113763f86e97e16
prerequisite-patch-id: 40cb8212ddb024c20593f73d8b87d9894877e172
prerequisite-patch-id: a1673a9e9f19d6fab5a51abb721e54e36636f067
prerequisite-patch-id: 189a0f41ba4eecd4f3f35c503baac8aed8ccd7de
prerequisite-patch-id: 1117ecaa40a353c667b71802ab34ecf9568d8bb2
prerequisite-patch-id: 25923a0c77e92631ed3cd8a163d789daad35f0f8
prerequisite-patch-id: 6a6f6215f09932e68fdfd294df2e813ec9d2481f
prerequisite-patch-id: 2cc95b47cad25fd9b875d27f4e8e3d84eb70274b
prerequisite-patch-id: 258ea5f9b8bf41b6981345dcc81795f25865d38f
prerequisite-patch-id: 8b6f2c9660c0ac0ee4e73e4c21aca8e6b75e81b9
prerequisite-patch-id: dbb0c0151b8bdf093e6ce79fd2fe3f60791a6e0b
prerequisite-patch-id: e7773c977a7b37692e9792b21cc4f17fa58f9215
prerequisite-patch-id: d57e95d31686772abc4c4d5aa1cadc344dc293cd
prerequisite-patch-id: 0a0ac5a8a90655b415f6b62e324f3db083cdaaee
prerequisite-patch-id: 2ddada18ab6ea5cd1da14212aaf59632f5203d40
prerequisite-patch-id: 8c735dffc6d5388a35a76b16e914a2f9722ad979
prerequisite-patch-id: be3d7a6a13098884ec26cd5e543cc95c39045e35
prerequisite-patch-id: 94259179ed334d305ae364288bb6f0d67d8e4f9f
prerequisite-patch-id: cd96f85fbc377fc68139b77755bb880db6794bd0
prerequisite-patch-id: 9da71dcd3af4c68da9d855b43aab6927103e7525
prerequisite-patch-id: 7a42f7bdd55d73ba0a4c15b1150335a9c33dfc58
prerequisite-patch-id: 81f7c65712c4901a7a178ddcd98ffc55f3b473ff
prerequisite-patch-id: cd0b464336aabfbfad96c1a3595c0f9ce9401638
prerequisite-patch-id: 3a86c55eb713c5453650ed851a588360be87971f
prerequisite-patch-id: d5abfba63fc07ff97b5023911513c260bb7a53e1
prerequisite-patch-id: b37ac15032973e1fcd918f157c82a0606775c9e9
prerequisite-patch-id: 2ffbced093555055b5796c0c0572b3b0216f8938
prerequisite-patch-id: ca653566085079839fb3dc1e722effafbc8109a4
--
2.25.1

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

* [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx
  2023-03-15 10:04 [PATCH v3 0/3] Add JH7110 MIPI DPHY RX support Changhuang Liang
@ 2023-03-15 10:04 ` Changhuang Liang
  2023-03-20 15:14   ` Rob Herring
  2023-03-15 10:04 ` [PATCH v3 2/3] phy: starfive: Add mipi dphy rx support Changhuang Liang
  2023-03-15 10:04 ` [PATCH v3 3/3] riscv: dts: starfive: Add dphy rx node Changhuang Liang
  2 siblings, 1 reply; 9+ messages in thread
From: Changhuang Liang @ 2023-03-15 10:04 UTC (permalink / raw)
  To: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
	Krzysztof Kozlowski, Emil Renner Berthing, Conor Dooley,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Philipp Zabel
  Cc: Jack Zhu, Changhuang Liang, linux-phy, devicetree, linux-kernel,
	linux-riscv

StarFive SoCs like the jh7110 use a MIPI D-PHY RX controller based on
a M31 IP. Add a binding for it.

Signed-off-by: Changhuang Liang <changhuang.liang@starfivetech.com>
---
 .../bindings/phy/starfive,jh7110-dphy-rx.yaml | 77 +++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml

diff --git a/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml b/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
new file mode 100644
index 000000000000..b72ac44bc29d
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/starfive,jh7110-dphy-rx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: StarFive SoC MIPI D-PHY Rx Controller
+
+maintainers:
+  - Jack Zhu <jack.zhu@starfivetech.com>
+  - Changhuang Liang <changhuang.liang@starfivetech.com>
+
+description:
+  The StarFive SoC uses the MIPI CSI D-PHY based on M31 IP to transfer
+  CSI camera data.
+
+properties:
+  compatible:
+    const: starfive,jh7110-dphy-rx
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: config clock
+      - description: reference clock
+      - description: escape mode transmit clock
+
+  clock-names:
+    items:
+      - const: cfg
+      - const: ref
+      - const: tx
+
+  resets:
+    items:
+      - description: DPHY_HW reset
+      - description: DPHY_B09_ALWAYS_ON reset
+
+  starfive,aon-syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      - items:
+          - description: phandle of AON SYSCON
+          - description: register offset
+    description: The power of dphy rx is configured by AON SYSCON
+      in this property.
+
+  "#phy-cells":
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - resets
+  - starfive,aon-syscon
+  - "#phy-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    phy@19820000 {
+      compatible = "starfive,jh7110-dphy-rx";
+      reg = <0x19820000 0x10000>;
+      clocks = <&ispcrg 3>,
+               <&ispcrg 4>,
+               <&ispcrg 5>;
+      clock-names = "cfg", "ref", "tx";
+      resets = <&ispcrg 2>,
+               <&ispcrg 3>;
+      starfive,aon-syscon = <&aon_syscon 0x00>;
+      #phy-cells = <0>;
+    };
-- 
2.25.1


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

* [PATCH v3 2/3] phy: starfive: Add mipi dphy rx support
  2023-03-15 10:04 [PATCH v3 0/3] Add JH7110 MIPI DPHY RX support Changhuang Liang
  2023-03-15 10:04 ` [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx Changhuang Liang
@ 2023-03-15 10:04 ` Changhuang Liang
  2023-03-15 10:04 ` [PATCH v3 3/3] riscv: dts: starfive: Add dphy rx node Changhuang Liang
  2 siblings, 0 replies; 9+ messages in thread
From: Changhuang Liang @ 2023-03-15 10:04 UTC (permalink / raw)
  To: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
	Krzysztof Kozlowski, Emil Renner Berthing, Conor Dooley,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Philipp Zabel
  Cc: Jack Zhu, Changhuang Liang, linux-phy, devicetree, linux-kernel,
	linux-riscv

Add mipi dphy rx support for the StarFive JH7110 SoC. It is used to
transfer CSI camera data.

Signed-off-by: Changhuang Liang <changhuang.liang@starfivetech.com>
---
 MAINTAINERS                                 |   7 +
 drivers/phy/Kconfig                         |   1 +
 drivers/phy/Makefile                        |   1 +
 drivers/phy/starfive/Kconfig                |  13 +
 drivers/phy/starfive/Makefile               |   2 +
 drivers/phy/starfive/phy-starfive-dphy-rx.c | 362 ++++++++++++++++++++
 6 files changed, 386 insertions(+)
 create mode 100644 drivers/phy/starfive/Kconfig
 create mode 100644 drivers/phy/starfive/Makefile
 create mode 100644 drivers/phy/starfive/phy-starfive-dphy-rx.c

diff --git a/MAINTAINERS b/MAINTAINERS
index fdad60cc9f2e..b6c811326355 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -19921,6 +19921,13 @@ F:	Documentation/devicetree/bindings/clock/starfive,jh71*.yaml
 F:	drivers/clk/starfive/clk-starfive-jh71*
 F:	include/dt-bindings/clock/starfive?jh71*.h
 
+STARFIVE JH7110 DPHY RX DRIVER
+M:	Jack Zhu <jack.zhu@starfivetech.com>
+M:	Changhuang Liang <changhuang.liang@starfivetech.com>
+S:	Supported
+F:	Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
+F:	drivers/phy/starfive/phy-starfive-dphy-rx.c
+
 STARFIVE JH7110 MMC/SD/SDIO DRIVER
 M:	William Qiu <william.qiu@starfivetech.com>
 S:	Supported
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index 7bd00a11d074..c4b2a86e2afb 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -91,6 +91,7 @@ source "drivers/phy/rockchip/Kconfig"
 source "drivers/phy/samsung/Kconfig"
 source "drivers/phy/socionext/Kconfig"
 source "drivers/phy/st/Kconfig"
+source "drivers/phy/starfive/Kconfig"
 source "drivers/phy/sunplus/Kconfig"
 source "drivers/phy/tegra/Kconfig"
 source "drivers/phy/ti/Kconfig"
diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
index 54f312c10a40..fb3dc9de6111 100644
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
@@ -31,6 +31,7 @@ obj-y					+= allwinner/	\
 					   samsung/	\
 					   socionext/	\
 					   st/		\
+					   starfive/	\
 					   sunplus/	\
 					   tegra/	\
 					   ti/		\
diff --git a/drivers/phy/starfive/Kconfig b/drivers/phy/starfive/Kconfig
new file mode 100644
index 000000000000..f989b8ff8bcb
--- /dev/null
+++ b/drivers/phy/starfive/Kconfig
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Phy drivers for StarFive platforms
+#
+
+config PHY_STARFIVE_DPHY_RX
+	tristate "StarFive D-PHY RX Support"
+	select GENERIC_PHY
+	select GENERIC_PHY_MIPI_DPHY
+	help
+	  Choose this option if you have a StarFive D-PHY in your
+	  system. If M is selected, the module will be called
+	  phy-starfive-dphy-rx.
diff --git a/drivers/phy/starfive/Makefile b/drivers/phy/starfive/Makefile
new file mode 100644
index 000000000000..7ec576cb30ae
--- /dev/null
+++ b/drivers/phy/starfive/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_PHY_STARFIVE_DPHY_RX)      += phy-starfive-dphy-rx.o
diff --git a/drivers/phy/starfive/phy-starfive-dphy-rx.c b/drivers/phy/starfive/phy-starfive-dphy-rx.c
new file mode 100644
index 000000000000..57071ec4cca8
--- /dev/null
+++ b/drivers/phy/starfive/phy-starfive-dphy-rx.c
@@ -0,0 +1,362 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * DPHY driver for the StarFive JH7110 SoC
+ *
+ * Copyright (C) 2023 StarFive Technology Co., Ltd.
+ */
+
+#include <linux/bitfield.h>
+#include <linux/bitops.h>
+#include <linux/clk.h>
+#include <linux/io.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/of_address.h>
+#include <linux/of_device.h>
+#include <linux/phy/phy.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/reset.h>
+
+#define STF_DPHY_APBCFGSAIF__SYSCFG(x)		(x)
+
+#define STF_DPHY_DA_CDPHY_R100_CTRL0_2D1C_EFUSE_EN BIT(6)
+#define STF_DPHY_DA_CDPHY_R100_CTRL0_2D1C_EFUSE_IN GENMASK(12, 7)
+#define STF_DPHY_DA_CDPHY_R100_CTRL1_2D1C_EFUSE_EN BIT(19)
+#define STF_DPHY_DA_CDPHY_R100_CTRL1_2D1C_EFUSE_IN GENMASK(25, 20)
+
+#define STF_DPHY_DATA_BUS16_8			BIT(8)
+#define STF_DPHY_DEBUG_MODE_SEL			GENMASK(15, 9)
+
+#define STF_DPHY_ENABLE_CLK			BIT(6)
+#define STF_DPHY_ENABLE_CLK1			BIT(7)
+#define STF_DPHY_ENABLE_LAN0			BIT(8)
+#define STF_DPHY_ENABLE_LAN1			BIT(9)
+#define STF_DPHY_ENABLE_LAN2			BIT(10)
+#define STF_DPHY_ENABLE_LAN3			BIT(11)
+#define STF_DPHY_GPI_EN				GENMASK(17, 12)
+#define STF_DPHY_HS_FREQ_CHANGE_CLK		BIT(18)
+#define STF_DPHY_HS_FREQ_CHANGE_CLK1		BIT(19)
+#define STF_DPHY_LANE_SWAP_CLK			GENMASK(22, 20)
+#define STF_DPHY_LANE_SWAP_CLK1			GENMASK(25, 23)
+#define STF_DPHY_LANE_SWAP_LAN0			GENMASK(28, 26)
+#define STF_DPHY_LANE_SWAP_LAN1			GENMASK(31, 29)
+
+#define STF_DPHY_LANE_SWAP_LAN2			GENMASK(2, 0)
+#define STF_DPHY_LANE_SWAP_LAN3			GENMASK(5, 3)
+#define STF_DPHY_MP_TEST_EN			BIT(6)
+#define STF_DPHY_MP_TEST_MODE_SEL		GENMASK(11, 7)
+#define STF_DPHY_PLL_CLK_SEL			GENMASK(21, 12)
+#define STF_DPHY_PRECOUNTER_IN_CLK		GENMASK(29, 22)
+
+#define STF_DPHY_PRECOUNTER_IN_CLK1		GENMASK(7, 0)
+#define STF_DPHY_PRECOUNTER_IN_LAN0		GENMASK(15, 8)
+#define STF_DPHY_PRECOUNTER_IN_LAN1		GENMASK(23, 16)
+#define STF_DPHY_PRECOUNTER_IN_LAN2		GENMASK(31, 24)
+
+#define STF_DPHY_PRECOUNTER_IN_LAN3		GENMASK(7, 0)
+#define STF_DPHY_RX_1C2C_SEL			BIT(8)
+
+struct regval_t {
+	u32 addr;
+	u32 val;
+};
+
+struct stf_dphy {
+	struct device *dev;
+	void __iomem *regs;
+	struct clk *cfg_clk;
+	struct clk *ref_clk;
+	struct clk *tx_clk;
+	struct reset_control *rstc;
+	struct regulator *mipi_0p9;
+	struct phy *phy;
+	struct regmap *stf_aon_syscon;
+	unsigned int aon_gp_reg;
+};
+
+struct stf_dphy_info {
+	bool external_support;
+	int (*external_get)(struct stf_dphy *dphy);
+	void (*external_init)(struct stf_dphy *dphy);
+	void (*external_exit)(struct stf_dphy *dphy);
+};
+
+static const struct stf_dphy_info *stf_dphy_info;
+
+static const struct regval_t stf_dphy_init_list[] = {
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(4), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(8), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(12), 0x0000fff0 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(16), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(20), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(24), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(28), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(32), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(36), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(40), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(40), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(48), 0x24000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(52), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(56), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(60), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(64), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(68), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(72), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(76), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(80), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(84), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(88), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(92), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(96), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(100), 0x02000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(104), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(108), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(112), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(116), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(120), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(124), 0x0000000c },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(128), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(132), 0xcc500000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(136), 0x000000cc },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(140), 0x00000000 },
+	{ STF_DPHY_APBCFGSAIF__SYSCFG(144), 0x00000000 },
+};
+
+static int stf_dphy_configure(struct phy *phy, union phy_configure_opts *opts)
+{
+	struct stf_dphy *dphy = phy_get_drvdata(phy);
+	int map[6] = {4, 0, 1, 2, 3, 5};
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(stf_dphy_init_list); i++)
+		writel(stf_dphy_init_list[i].val,
+		       dphy->regs + stf_dphy_init_list[i].addr);
+
+	writel(FIELD_PREP(STF_DPHY_DA_CDPHY_R100_CTRL0_2D1C_EFUSE_EN, 1) |
+	       FIELD_PREP(STF_DPHY_DA_CDPHY_R100_CTRL0_2D1C_EFUSE_IN, 0x1b) |
+	       FIELD_PREP(STF_DPHY_DA_CDPHY_R100_CTRL1_2D1C_EFUSE_EN, 1) |
+	       FIELD_PREP(STF_DPHY_DA_CDPHY_R100_CTRL1_2D1C_EFUSE_IN, 0x1b),
+	       dphy->regs + STF_DPHY_APBCFGSAIF__SYSCFG(0));
+
+	writel(FIELD_PREP(STF_DPHY_DATA_BUS16_8, 0) |
+	       FIELD_PREP(STF_DPHY_DEBUG_MODE_SEL, 0x5a),
+	       dphy->regs + STF_DPHY_APBCFGSAIF__SYSCFG(184));
+
+	writel(FIELD_PREP(STF_DPHY_ENABLE_CLK, 1) |
+	       FIELD_PREP(STF_DPHY_ENABLE_CLK1, 1) |
+	       FIELD_PREP(STF_DPHY_ENABLE_LAN0, 1) |
+	       FIELD_PREP(STF_DPHY_ENABLE_LAN1, 1) |
+	       FIELD_PREP(STF_DPHY_ENABLE_LAN2, 1) |
+	       FIELD_PREP(STF_DPHY_ENABLE_LAN3, 1) |
+	       FIELD_PREP(STF_DPHY_GPI_EN, 0) |
+	       FIELD_PREP(STF_DPHY_HS_FREQ_CHANGE_CLK, 0) |
+	       FIELD_PREP(STF_DPHY_HS_FREQ_CHANGE_CLK1, 0) |
+	       FIELD_PREP(STF_DPHY_LANE_SWAP_CLK, map[0]) |
+	       FIELD_PREP(STF_DPHY_LANE_SWAP_CLK1, map[5]) |
+	       FIELD_PREP(STF_DPHY_LANE_SWAP_LAN0, map[1]) |
+	       FIELD_PREP(STF_DPHY_LANE_SWAP_LAN1, map[2]),
+	       dphy->regs + STF_DPHY_APBCFGSAIF__SYSCFG(188));
+
+	writel(FIELD_PREP(STF_DPHY_LANE_SWAP_LAN2, map[3]) |
+	       FIELD_PREP(STF_DPHY_LANE_SWAP_LAN3, map[4]) |
+	       FIELD_PREP(STF_DPHY_MP_TEST_EN, 0) |
+	       FIELD_PREP(STF_DPHY_MP_TEST_MODE_SEL, 0) |
+	       FIELD_PREP(STF_DPHY_PLL_CLK_SEL, 0x37c) |
+	       FIELD_PREP(STF_DPHY_PRECOUNTER_IN_CLK, 8),
+	       dphy->regs + STF_DPHY_APBCFGSAIF__SYSCFG(192));
+
+	writel(FIELD_PREP(STF_DPHY_PRECOUNTER_IN_CLK1, 8) |
+	       FIELD_PREP(STF_DPHY_PRECOUNTER_IN_LAN0, 7) |
+	       FIELD_PREP(STF_DPHY_PRECOUNTER_IN_LAN1, 7) |
+	       FIELD_PREP(STF_DPHY_PRECOUNTER_IN_LAN2, 7),
+	       dphy->regs + STF_DPHY_APBCFGSAIF__SYSCFG(196));
+
+	writel(FIELD_PREP(STF_DPHY_PRECOUNTER_IN_LAN3, 7) |
+	       FIELD_PREP(STF_DPHY_RX_1C2C_SEL, 0),
+	       dphy->regs + STF_DPHY_APBCFGSAIF__SYSCFG(200));
+
+	return 0;
+}
+
+static int stf_dphy_init(struct phy *phy)
+{
+	struct stf_dphy *dphy = phy_get_drvdata(phy);
+	int ret;
+
+	ret = regulator_enable(dphy->mipi_0p9);
+	if (ret)
+		goto err_0p9;
+
+	if (stf_dphy_info->external_support && stf_dphy_info->external_init)
+		stf_dphy_info->external_init(dphy);
+
+	return 0;
+
+err_0p9:
+	return ret;
+}
+
+static int stf_dphy_exit(struct phy *phy)
+{
+	struct stf_dphy *dphy = phy_get_drvdata(phy);
+
+	if (stf_dphy_info->external_support && stf_dphy_info->external_exit)
+		stf_dphy_info->external_exit(dphy);
+
+	regulator_disable(dphy->mipi_0p9);
+
+	return 0;
+}
+
+static int stf_dphy_power_on(struct phy *phy)
+{
+	struct stf_dphy *dphy = phy_get_drvdata(phy);
+
+	clk_set_rate(dphy->cfg_clk, 99000000);
+	clk_set_rate(dphy->ref_clk, 49500000);
+	clk_set_rate(dphy->tx_clk, 19800000);
+	reset_control_deassert(dphy->rstc);
+
+	return 0;
+}
+
+static int stf_dphy_power_off(struct phy *phy)
+{
+	struct stf_dphy *dphy = phy_get_drvdata(phy);
+
+	reset_control_assert(dphy->rstc);
+
+	return 0;
+}
+
+static const struct phy_ops stf_dphy_ops = {
+	.init      = stf_dphy_init,
+	.exit      = stf_dphy_exit,
+	.configure = stf_dphy_configure,
+	.power_on  = stf_dphy_power_on,
+	.power_off = stf_dphy_power_off,
+};
+
+static int stf_dphy_probe(struct platform_device *pdev)
+{
+	struct phy_provider *phy_provider;
+	struct stf_dphy *dphy;
+	int ret;
+
+	dphy = devm_kzalloc(&pdev->dev, sizeof(*dphy), GFP_KERNEL);
+	if (!dphy)
+		return -ENOMEM;
+	stf_dphy_info = of_device_get_match_data(&pdev->dev);
+	dev_set_drvdata(&pdev->dev, dphy);
+	dphy->dev = &pdev->dev;
+
+	dphy->regs = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(dphy->regs))
+		return PTR_ERR(dphy->regs);
+
+	dphy->cfg_clk = devm_clk_get(&pdev->dev, "cfg");
+	if (IS_ERR(dphy->cfg_clk))
+		return PTR_ERR(dphy->cfg_clk);
+
+	dphy->ref_clk = devm_clk_get(&pdev->dev, "ref");
+	if (IS_ERR(dphy->ref_clk))
+		return PTR_ERR(dphy->ref_clk);
+
+	dphy->tx_clk = devm_clk_get(&pdev->dev, "tx");
+	if (IS_ERR(dphy->tx_clk))
+		return PTR_ERR(dphy->tx_clk);
+
+	dphy->rstc = devm_reset_control_array_get_exclusive(&pdev->dev);
+	if (IS_ERR(dphy->rstc))
+		return PTR_ERR(dphy->rstc);
+
+	dphy->mipi_0p9 = devm_regulator_get(&pdev->dev, "mipi_0p9");
+	if (IS_ERR(dphy->mipi_0p9))
+		return PTR_ERR(dphy->mipi_0p9);
+
+	if (stf_dphy_info->external_support && stf_dphy_info->external_get) {
+		ret = stf_dphy_info->external_get(dphy);
+		if (ret < 0) {
+			dev_err(&pdev->dev, "Failed to get PHY external info\n");
+			return ret;
+		}
+	}
+
+	dphy->phy = devm_phy_create(&pdev->dev, NULL, &stf_dphy_ops);
+	if (IS_ERR(dphy->phy)) {
+		dev_err(&pdev->dev, "Failed to create PHY\n");
+		return PTR_ERR(dphy->phy);
+	}
+
+	phy_set_drvdata(dphy->phy, dphy);
+	phy_provider = devm_of_phy_provider_register(&pdev->dev,
+						     of_phy_simple_xlate);
+
+	return PTR_ERR_OR_ZERO(phy_provider);
+}
+
+static int stf_external_get(struct stf_dphy *dphy)
+{
+	struct of_phandle_args args;
+	int ret;
+
+	ret = of_parse_phandle_with_fixed_args(dphy->dev->of_node,
+					       "starfive,aon-syscon",
+					       1, 0, &args);
+	if (ret < 0) {
+		dev_err(dphy->dev, "Failed to parse starfive,aon-syscon\n");
+		return -EINVAL;
+	}
+
+	dphy->stf_aon_syscon = syscon_node_to_regmap(args.np);
+	of_node_put(args.np);
+	if (IS_ERR(dphy->stf_aon_syscon))
+		return PTR_ERR(dphy->stf_aon_syscon);
+
+	dphy->aon_gp_reg = args.args[0];
+
+	return 0;
+}
+
+static void stf_external_init(struct stf_dphy *dphy)
+{
+	regmap_update_bits(dphy->stf_aon_syscon, dphy->aon_gp_reg,
+			   BIT(31), BIT(31));
+}
+
+static void stf_external_exit(struct stf_dphy *dphy)
+{
+	regmap_update_bits(dphy->stf_aon_syscon, dphy->aon_gp_reg,
+			   BIT(31), 0);
+}
+
+static const struct stf_dphy_info starfive_dphy_info = {
+	.external_support = true,
+	.external_get = stf_external_get,
+	.external_init = stf_external_init,
+	.external_exit = stf_external_exit,
+};
+
+static const struct of_device_id stf_dphy_dt_ids[] = {
+	{
+		.compatible = "starfive,jh7110-dphy-rx",
+		.data = &starfive_dphy_info,
+	},
+	{ /* sentinel */ },
+};
+MODULE_DEVICE_TABLE(of, stf_dphy_dt_ids);
+
+static struct platform_driver stf_dphy_driver = {
+	.probe = stf_dphy_probe,
+	.driver = {
+		.name	= "starfive-dphy-rx",
+		.of_match_table = stf_dphy_dt_ids,
+	},
+};
+module_platform_driver(stf_dphy_driver);
+
+MODULE_AUTHOR("Jack Zhu <jack.zhu@starfivetech.com>");
+MODULE_AUTHOR("Changhuang Liang <changhuang.liang@starfivetech.com>");
+MODULE_DESCRIPTION("StarFive DPHY RX driver");
+MODULE_LICENSE("GPL");
-- 
2.25.1


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

* [PATCH v3 3/3] riscv: dts: starfive: Add dphy rx node
  2023-03-15 10:04 [PATCH v3 0/3] Add JH7110 MIPI DPHY RX support Changhuang Liang
  2023-03-15 10:04 ` [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx Changhuang Liang
  2023-03-15 10:04 ` [PATCH v3 2/3] phy: starfive: Add mipi dphy rx support Changhuang Liang
@ 2023-03-15 10:04 ` Changhuang Liang
  2 siblings, 0 replies; 9+ messages in thread
From: Changhuang Liang @ 2023-03-15 10:04 UTC (permalink / raw)
  To: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
	Krzysztof Kozlowski, Emil Renner Berthing, Conor Dooley,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Philipp Zabel
  Cc: Jack Zhu, Changhuang Liang, linux-phy, devicetree, linux-kernel,
	linux-riscv

Add dphy rx node for the StarFive JH7110 SoC. It is used to transfer CSI
camera data.

Signed-off-by: Changhuang Liang <changhuang.liang@starfivetech.com>
---
 arch/riscv/boot/dts/starfive/jh7110.dtsi | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi
index 196dc14c14d4..e8bc092dabcd 100644
--- a/arch/riscv/boot/dts/starfive/jh7110.dtsi
+++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi
@@ -577,6 +577,19 @@ ispcrg: clock-controller@19810000 {
 			power-domains = <&pwrc JH7110_PD_ISP>;
 		};
 
+		csi_phy: phy@19820000 {
+			compatible = "starfive,jh7110-dphy-rx";
+			reg = <0x0 0x19820000 0x0 0x10000>;
+			clocks = <&ispcrg JH7110_ISPCLK_M31DPHY_CFG_IN>,
+				 <&ispcrg JH7110_ISPCLK_M31DPHY_REF_IN>,
+				 <&ispcrg JH7110_ISPCLK_M31DPHY_TX_ESC_LAN0>;
+			clock-names = "cfg", "ref", "tx";
+			resets = <&ispcrg JH7110_ISPRST_M31DPHY_HW>,
+				 <&ispcrg JH7110_ISPRST_M31DPHY_B09_AON>;
+			starfive,aon-syscon = <&aon_syscon 0x00>;
+			#phy-cells = <0>;
+		};
+
 		voutcrg: clock-controller@295c0000 {
 			compatible = "starfive,jh7110-voutcrg";
 			reg = <0x0 0x295c0000 0x0 0x10000>;
-- 
2.25.1


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

* Re: [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx
  2023-03-15 10:04 ` [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx Changhuang Liang
@ 2023-03-20 15:14   ` Rob Herring
  2023-03-21  1:56     ` Changhuang Liang
  2023-04-07  6:51     ` Changhuang Liang
  0 siblings, 2 replies; 9+ messages in thread
From: Rob Herring @ 2023-03-20 15:14 UTC (permalink / raw)
  To: Changhuang Liang
  Cc: Vinod Koul, Kishon Vijay Abraham I, Krzysztof Kozlowski,
	Emil Renner Berthing, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Philipp Zabel, Jack Zhu, linux-phy,
	devicetree, linux-kernel, linux-riscv

On Wed, Mar 15, 2023 at 03:04:19AM -0700, Changhuang Liang wrote:
> StarFive SoCs like the jh7110 use a MIPI D-PHY RX controller based on
> a M31 IP. Add a binding for it.
> 
> Signed-off-by: Changhuang Liang <changhuang.liang@starfivetech.com>
> ---
>  .../bindings/phy/starfive,jh7110-dphy-rx.yaml | 77 +++++++++++++++++++
>  1 file changed, 77 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
> 
> diff --git a/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml b/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
> new file mode 100644
> index 000000000000..b72ac44bc29d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
> @@ -0,0 +1,77 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/phy/starfive,jh7110-dphy-rx.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: StarFive SoC MIPI D-PHY Rx Controller
> +
> +maintainers:
> +  - Jack Zhu <jack.zhu@starfivetech.com>
> +  - Changhuang Liang <changhuang.liang@starfivetech.com>
> +
> +description:
> +  The StarFive SoC uses the MIPI CSI D-PHY based on M31 IP to transfer
> +  CSI camera data.
> +
> +properties:
> +  compatible:
> +    const: starfive,jh7110-dphy-rx
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    items:
> +      - description: config clock
> +      - description: reference clock
> +      - description: escape mode transmit clock
> +
> +  clock-names:
> +    items:
> +      - const: cfg
> +      - const: ref
> +      - const: tx
> +
> +  resets:
> +    items:
> +      - description: DPHY_HW reset
> +      - description: DPHY_B09_ALWAYS_ON reset
> +
> +  starfive,aon-syscon:
> +    $ref: /schemas/types.yaml#/definitions/phandle-array
> +    items:
> +      - items:
> +          - description: phandle of AON SYSCON
> +          - description: register offset
> +    description: The power of dphy rx is configured by AON SYSCON
> +      in this property.

Sounds like AON SYSCON should be a power-domains provider. Custom 
phandle links are for things which don't fit standard bindings.

> +
> +  "#phy-cells":
> +    const: 0
> +
> +required:
> +  - compatible
> +  - reg
> +  - clocks
> +  - clock-names
> +  - resets
> +  - starfive,aon-syscon
> +  - "#phy-cells"
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    phy@19820000 {
> +      compatible = "starfive,jh7110-dphy-rx";
> +      reg = <0x19820000 0x10000>;
> +      clocks = <&ispcrg 3>,
> +               <&ispcrg 4>,
> +               <&ispcrg 5>;
> +      clock-names = "cfg", "ref", "tx";
> +      resets = <&ispcrg 2>,
> +               <&ispcrg 3>;
> +      starfive,aon-syscon = <&aon_syscon 0x00>;
> +      #phy-cells = <0>;
> +    };
> -- 
> 2.25.1
> 

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

* Re: [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx
  2023-03-20 15:14   ` Rob Herring
@ 2023-03-21  1:56     ` Changhuang Liang
  2023-04-07  6:51     ` Changhuang Liang
  1 sibling, 0 replies; 9+ messages in thread
From: Changhuang Liang @ 2023-03-21  1:56 UTC (permalink / raw)
  To: Rob Herring
  Cc: Vinod Koul, Kishon Vijay Abraham I, Krzysztof Kozlowski,
	Emil Renner Berthing, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Philipp Zabel, Jack Zhu, linux-phy,
	devicetree, linux-kernel, linux-riscv



On 2023/3/20 23:14, Rob Herring wrote:
> On Wed, Mar 15, 2023 at 03:04:19AM -0700, Changhuang Liang wrote:
>> [...]
>> +  resets:
>> +    items:
>> +      - description: DPHY_HW reset
>> +      - description: DPHY_B09_ALWAYS_ON reset
>> +
>> +  starfive,aon-syscon:
>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
>> +    items:
>> +      - items:
>> +          - description: phandle of AON SYSCON
>> +          - description: register offset
>> +    description: The power of dphy rx is configured by AON SYSCON
>> +      in this property.
> 
> Sounds like AON SYSCON should be a power-domains provider. Custom 
> phandle links are for things which don't fit standard bindings.
> 
Hi, Rob

In starfive jh7110 SoC,we have achieved the power-domains provider as follow:
https://patchwork.kernel.org/project/linux-pm/cover/20230119094447.21939-1-walker.chen@starfivetech.com/

But this AON SYSCON is a miscellaneous register. It different offsets configure the different functions 
of the different modules. So we don't make a framework fot it. What do you think?

Thanks

>> +
>> +  "#phy-cells":
>> +    const: 0
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - clocks
>> +  - clock-names
>> +  - resets
>> +  - starfive,aon-syscon
>> +  - "#phy-cells"
>> [...]
>>

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

* Re: [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx
  2023-03-20 15:14   ` Rob Herring
  2023-03-21  1:56     ` Changhuang Liang
@ 2023-04-07  6:51     ` Changhuang Liang
  2023-04-07  6:54       ` Krzysztof Kozlowski
  1 sibling, 1 reply; 9+ messages in thread
From: Changhuang Liang @ 2023-04-07  6:51 UTC (permalink / raw)
  To: Rob Herring
  Cc: Vinod Koul, Kishon Vijay Abraham I, Krzysztof Kozlowski,
	Emil Renner Berthing, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Philipp Zabel, Jack Zhu, linux-phy,
	devicetree, linux-kernel, linux-riscv



On 2023/3/20 23:14, Rob Herring wrote:
> On Wed, Mar 15, 2023 at 03:04:19AM -0700, Changhuang Liang wrote:
>> StarFive SoCs like the jh7110 use a MIPI D-PHY RX controller based on
>> a M31 IP. Add a binding for it.
>>
>> Signed-off-by: Changhuang Liang <changhuang.liang@starfivetech.com>
>> ---
>>  .../bindings/phy/starfive,jh7110-dphy-rx.yaml | 77 +++++++++++++++++++
>>  1 file changed, 77 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml b/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
>> new file mode 100644
>> index 000000000000..b72ac44bc29d
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/phy/starfive,jh7110-dphy-rx.yaml
>> @@ -0,0 +1,77 @@
>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/phy/starfive,jh7110-dphy-rx.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: StarFive SoC MIPI D-PHY Rx Controller
>> +
>> +maintainers:
>> +  - Jack Zhu <jack.zhu@starfivetech.com>
>> +  - Changhuang Liang <changhuang.liang@starfivetech.com>
>> +
>> +description:
>> +  The StarFive SoC uses the MIPI CSI D-PHY based on M31 IP to transfer
>> +  CSI camera data.
>> +
>> +properties:
>> +  compatible:
>> +    const: starfive,jh7110-dphy-rx
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  clocks:
>> +    items:
>> +      - description: config clock
>> +      - description: reference clock
>> +      - description: escape mode transmit clock
>> +
>> +  clock-names:
>> +    items:
>> +      - const: cfg
>> +      - const: ref
>> +      - const: tx
>> +
>> +  resets:
>> +    items:
>> +      - description: DPHY_HW reset
>> +      - description: DPHY_B09_ALWAYS_ON reset
>> +
>> +  starfive,aon-syscon:
>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
>> +    items:
>> +      - items:
>> +          - description: phandle of AON SYSCON
>> +          - description: register offset
>> +    description: The power of dphy rx is configured by AON SYSCON
>> +      in this property.
> 
> Sounds like AON SYSCON should be a power-domains provider. Custom 
> phandle links are for things which don't fit standard bindings.
> 

Hi, Rob,

On visionfive2 jh7110 SoC, this AON SYSCON is the Secondary power switch to the DPHY Rx.
When we open the pmic switch, we also need to configure the AON SYSCON register to turn 
on the switch, it is used to link the pmic and the DPHY Rx, So I think it just use syscon
framework is enought. What about your comments.

I am looking forward to your reply.

thanks,

>> +
>> +  "#phy-cells":
>> +    const: 0
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - clocks
>> +  - clock-names
>> +  - resets
>> +  - starfive,aon-syscon
>> +  - "#phy-cells"
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    phy@19820000 {
>> +      compatible = "starfive,jh7110-dphy-rx";
>> +      reg = <0x19820000 0x10000>;
>> +      clocks = <&ispcrg 3>,
>> +               <&ispcrg 4>,
>> +               <&ispcrg 5>;
>> +      clock-names = "cfg", "ref", "tx";
>> +      resets = <&ispcrg 2>,
>> +               <&ispcrg 3>;
>> +      starfive,aon-syscon = <&aon_syscon 0x00>;
>> +      #phy-cells = <0>;
>> +    };
>> -- 
>> 2.25.1
>>

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

* Re: [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx
  2023-04-07  6:51     ` Changhuang Liang
@ 2023-04-07  6:54       ` Krzysztof Kozlowski
  2023-04-07  6:58         ` Changhuang Liang
  0 siblings, 1 reply; 9+ messages in thread
From: Krzysztof Kozlowski @ 2023-04-07  6:54 UTC (permalink / raw)
  To: Changhuang Liang, Rob Herring
  Cc: Vinod Koul, Kishon Vijay Abraham I, Krzysztof Kozlowski,
	Emil Renner Berthing, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Philipp Zabel, Jack Zhu, linux-phy,
	devicetree, linux-kernel, linux-riscv

On 07/04/2023 08:51, Changhuang Liang wrote:
>>> +
>>> +  resets:
>>> +    items:
>>> +      - description: DPHY_HW reset
>>> +      - description: DPHY_B09_ALWAYS_ON reset
>>> +
>>> +  starfive,aon-syscon:
>>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
>>> +    items:
>>> +      - items:
>>> +          - description: phandle of AON SYSCON
>>> +          - description: register offset
>>> +    description: The power of dphy rx is configured by AON SYSCON
>>> +      in this property.
>>
>> Sounds like AON SYSCON should be a power-domains provider. Custom 
>> phandle links are for things which don't fit standard bindings.
>>
> 
> Hi, Rob,
> 
> On visionfive2 jh7110 SoC, this AON SYSCON is the Secondary power switch to the DPHY Rx.
> When we open the pmic switch, we also need to configure the AON SYSCON register to turn 
> on the switch, it is used to link the pmic and the DPHY Rx, So I think it just use syscon
> framework is enought. What about your comments.

Which sounds exactly like power domain provider...

Best regards,
Krzysztof


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

* Re: [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx
  2023-04-07  6:54       ` Krzysztof Kozlowski
@ 2023-04-07  6:58         ` Changhuang Liang
  0 siblings, 0 replies; 9+ messages in thread
From: Changhuang Liang @ 2023-04-07  6:58 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring
  Cc: Vinod Koul, Kishon Vijay Abraham I, Krzysztof Kozlowski,
	Emil Renner Berthing, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Philipp Zabel, Jack Zhu, linux-phy,
	devicetree, linux-kernel, linux-riscv



On 2023/4/7 14:54, Krzysztof Kozlowski wrote:
> On 07/04/2023 08:51, Changhuang Liang wrote:
>>>> +
>>>> +  resets:
>>>> +    items:
>>>> +      - description: DPHY_HW reset
>>>> +      - description: DPHY_B09_ALWAYS_ON reset
>>>> +
>>>> +  starfive,aon-syscon:
>>>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
>>>> +    items:
>>>> +      - items:
>>>> +          - description: phandle of AON SYSCON
>>>> +          - description: register offset
>>>> +    description: The power of dphy rx is configured by AON SYSCON
>>>> +      in this property.
>>>
>>> Sounds like AON SYSCON should be a power-domains provider. Custom 
>>> phandle links are for things which don't fit standard bindings.
>>>
>>
>> Hi, Rob,
>>
>> On visionfive2 jh7110 SoC, this AON SYSCON is the Secondary power switch to the DPHY Rx.
>> When we open the pmic switch, we also need to configure the AON SYSCON register to turn 
>> on the switch, it is used to link the pmic and the DPHY Rx, So I think it just use syscon
>> framework is enought. What about your comments.
> 
> Which sounds exactly like power domain provider...
> 

OK, thanks for your comment, I will try to use power domain framework in next patch.

> Best regards,
> Krzysztof
> 

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

end of thread, other threads:[~2023-04-07  6:58 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-15 10:04 [PATCH v3 0/3] Add JH7110 MIPI DPHY RX support Changhuang Liang
2023-03-15 10:04 ` [PATCH v3 1/3] dt-bindings: phy: Add starfive,jh7110-dphy-rx Changhuang Liang
2023-03-20 15:14   ` Rob Herring
2023-03-21  1:56     ` Changhuang Liang
2023-04-07  6:51     ` Changhuang Liang
2023-04-07  6:54       ` Krzysztof Kozlowski
2023-04-07  6:58         ` Changhuang Liang
2023-03-15 10:04 ` [PATCH v3 2/3] phy: starfive: Add mipi dphy rx support Changhuang Liang
2023-03-15 10:04 ` [PATCH v3 3/3] riscv: dts: starfive: Add dphy rx node Changhuang Liang

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).