linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] add the imx8 pcie phy driver support
@ 2021-09-17  2:30 Richard Zhu
  2021-09-17  2:31 ` [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy Richard Zhu
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Richard Zhu @ 2021-09-17  2:30 UTC (permalink / raw)
  To: l.stach, kishon, vkoul, robh, galak, shawnguo
  Cc: linux-phy, devicetree, linux-arm-kernel, linux-kernel, kernel, linux-imx

refer to the discussion [1] when try to enable i.MX8MM PCIe support,
one standalone PCIe PHY driver should be seperated from i.MX PCIe
driver when enable i.MX8MM PCIe support.

This patch-set adds the standalone PCIe PHY driver suport, and as a
preparatory to add the i.MX8MM PCIe support later.

The PCIe works on i.MX8MM EVK board based the the blkctrl power driver
[2] and this PHY driver patch-set.

[1] https://patchwork.ozlabs.org/project/linux-pci/patch/20210510141509.929120-3-l.stach@pengutronix.de/
[2] https://patchwork.kernel.org/project/linux-arm-kernel/cover/20210910202640.980366-1-l.stach@pengutronix.de/

[PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad
[PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support
[PATCH 3/4] arm64: dts: imx8mm: add the pcie phy support
[PATCH 4/4] phy: freescale: pcie: initialize the imx8 pcie standalone

Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml |  66 ++++++++++++++++++++++++++++++++
arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi                |   4 ++
arch/arm64/boot/dts/freescale/imx8mm.dtsi                    |  12 ++++++
drivers/phy/freescale/Kconfig                                |   9 +++++
drivers/phy/freescale/Makefile                               |   1 +
drivers/phy/freescale/phy-fsl-imx8-pcie.c                    | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
include/dt-bindings/phy/phy-imx8-pcie.h                      |  14 +++++++
7 files changed, 273 insertions(+)


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

* [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy
  2021-09-17  2:30 [PATCH 0/4] add the imx8 pcie phy driver support Richard Zhu
@ 2021-09-17  2:31 ` Richard Zhu
  2021-09-22 19:25   ` Rob Herring
  2021-09-17  2:31 ` [PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support Richard Zhu
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Richard Zhu @ 2021-09-17  2:31 UTC (permalink / raw)
  To: l.stach, kishon, vkoul, robh, galak, shawnguo
  Cc: linux-phy, devicetree, linux-arm-kernel, linux-kernel, kernel,
	linux-imx, Richard Zhu

Add binding for reference clock PAD modes of the i.MX8 PCIe PHY.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
 include/dt-bindings/phy/phy-imx8-pcie.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
 create mode 100644 include/dt-bindings/phy/phy-imx8-pcie.h

diff --git a/include/dt-bindings/phy/phy-imx8-pcie.h b/include/dt-bindings/phy/phy-imx8-pcie.h
new file mode 100644
index 000000000000..fe198a0cc12c
--- /dev/null
+++ b/include/dt-bindings/phy/phy-imx8-pcie.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * This header provides constants for i.MX8 PCIe.
+ */
+
+#ifndef _DT_BINDINGS_IMX8_PCIE_H
+#define _DT_BINDINGS_IMX8_PCIE_H
+
+/* Reference clock PAD mode */
+#define IMX8_PCIE_REFCLK_PAD_NO_USED	0
+#define IMX8_PCIE_REFCLK_PAD_INPUT	1
+#define IMX8_PCIE_REFCLK_PAD_OUTPUT	2
+
+#endif /* _DT_BINDINGS_IMX8_PCIE_H */
-- 
2.25.1


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

* [PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support
  2021-09-17  2:30 [PATCH 0/4] add the imx8 pcie phy driver support Richard Zhu
  2021-09-17  2:31 ` [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy Richard Zhu
@ 2021-09-17  2:31 ` Richard Zhu
  2021-09-17 19:48   ` Rob Herring
  2021-09-17  2:31 ` [PATCH 3/4] arm64: dts: imx8mm: add the pcie phy support Richard Zhu
  2021-09-17  2:31 ` [PATCH 4/4] phy: freescale: pcie: initialize the imx8 pcie standalone phy driver Richard Zhu
  3 siblings, 1 reply; 11+ messages in thread
From: Richard Zhu @ 2021-09-17  2:31 UTC (permalink / raw)
  To: l.stach, kishon, vkoul, robh, galak, shawnguo
  Cc: linux-phy, devicetree, linux-arm-kernel, linux-kernel, kernel,
	linux-imx, Richard Zhu

Add dt-binding for the standalone i.MX8 PCIe PHY driver.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
 .../bindings/phy/fsl,imx8-pcie-phy.yaml       | 66 +++++++++++++++++++
 1 file changed, 66 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml

diff --git a/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml b/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml
new file mode 100644
index 000000000000..2a81a17f1779
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/fsl,imx8-pcie-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8 SoC series PCIe PHY Device Tree Bindings
+
+maintainers:
+  - Richard Zhu <hongxing.zhu@nxp.com>
+
+properties:
+  "#phy-cells":
+    const: 0
+
+  compatible:
+    enum:
+      - fsl,imx8mm-pcie-phy
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: PHY module clock
+
+  clock-names:
+    items:
+      - const: phy
+
+  fsl,refclk-pad-mode:
+    description:
+      Specifies the mode of the refclk pad used. It can be NO_USED(PHY
+      refclock is derived from SoC internal source), INPUT(PHY refclock
+      is provided externally via the refclk pad) or OUTPUT(PHY refclock
+      is derived from SoC internal source and provided on the refclk pad).
+      Refer include/dt-bindings/phy/phy-imx8-pcie.h for the constants
+      to be used.
+    enum: [ 0, 1, 2 ]
+
+required:
+  - "#phy-cells"
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - fsl,refclk-pad-mode
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8mm-clock.h>
+
+    pcie_phy: pcie-phy@32f00000 {
+            compatible = "fsl,imx8mm-pcie-phy";
+            reg = <0x32f00000 0x10000>;
+            clocks = <&clk IMX8MM_CLK_PCIE1_PHY>;
+            clock-names = "phy";
+            assigned-clocks = <&clk IMX8MM_CLK_PCIE1_PHY>;
+            assigned-clock-rates = <100000000>;
+            assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_100M>;
+            fsl,refclk-pad-mode = <1>;
+            #phy-cells = <0>;
+    };
+...
-- 
2.25.1


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

* [PATCH 3/4] arm64: dts: imx8mm: add the pcie phy support
  2021-09-17  2:30 [PATCH 0/4] add the imx8 pcie phy driver support Richard Zhu
  2021-09-17  2:31 ` [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy Richard Zhu
  2021-09-17  2:31 ` [PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support Richard Zhu
@ 2021-09-17  2:31 ` Richard Zhu
  2021-09-17  2:31 ` [PATCH 4/4] phy: freescale: pcie: initialize the imx8 pcie standalone phy driver Richard Zhu
  3 siblings, 0 replies; 11+ messages in thread
From: Richard Zhu @ 2021-09-17  2:31 UTC (permalink / raw)
  To: l.stach, kishon, vkoul, robh, galak, shawnguo
  Cc: linux-phy, devicetree, linux-arm-kernel, linux-kernel, kernel,
	linux-imx, Richard Zhu

Add the PCIe PHY support on iMX8MM platforms.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi |  4 ++++
 arch/arm64/boot/dts/freescale/imx8mm.dtsi     | 12 ++++++++++++
 2 files changed, 16 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi
index e033d0257b5a..e7f398433486 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi
@@ -289,6 +289,10 @@ pca6416: gpio@20 {
 	};
 };
 
+&pcie_phy {
+	status = "okay";
+};
+
 &sai3 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_sai3>;
diff --git a/arch/arm64/boot/dts/freescale/imx8mm.dtsi b/arch/arm64/boot/dts/freescale/imx8mm.dtsi
index e7648c3b8390..de231d531ba4 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm.dtsi
@@ -998,6 +998,18 @@ usbmisc2: usbmisc@32e50200 {
 				reg = <0x32e50200 0x200>;
 			};
 
+			pcie_phy: pcie-phy@32f00000 {
+				compatible = "fsl,imx8mm-pcie-phy";
+				reg = <0x32f00000 0x10000>;
+				clocks = <&clk IMX8MM_CLK_PCIE1_PHY>;
+				clock-names = "phy";
+				assigned-clocks = <&clk IMX8MM_CLK_PCIE1_PHY>;
+				assigned-clock-rates = <100000000>;
+				assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_100M>;
+				#phy-cells = <0>;
+				fsl,refclk-pad-mode = <1>;
+				status = "disabled";
+			};
 		};
 
 		dma_apbh: dma-controller@33000000 {
-- 
2.25.1


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

* [PATCH 4/4] phy: freescale: pcie: initialize the imx8 pcie standalone phy driver
  2021-09-17  2:30 [PATCH 0/4] add the imx8 pcie phy driver support Richard Zhu
                   ` (2 preceding siblings ...)
  2021-09-17  2:31 ` [PATCH 3/4] arm64: dts: imx8mm: add the pcie phy support Richard Zhu
@ 2021-09-17  2:31 ` Richard Zhu
  3 siblings, 0 replies; 11+ messages in thread
From: Richard Zhu @ 2021-09-17  2:31 UTC (permalink / raw)
  To: l.stach, kishon, vkoul, robh, galak, shawnguo
  Cc: linux-phy, devicetree, linux-arm-kernel, linux-kernel, kernel,
	linux-imx, Richard Zhu

Add the standalone i.MX8 PCIe PHY driver.
Some reset bits should be manipulated between PHY configurations and
status check(internal PLL is locked or not).
So, do the PHY configuration in the phy_calibrate().
And check the PHY is ready or not in the phy_init().

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
 drivers/phy/freescale/Kconfig             |   9 ++
 drivers/phy/freescale/Makefile            |   1 +
 drivers/phy/freescale/phy-fsl-imx8-pcie.c | 167 ++++++++++++++++++++++
 3 files changed, 177 insertions(+)
 create mode 100644 drivers/phy/freescale/phy-fsl-imx8-pcie.c

diff --git a/drivers/phy/freescale/Kconfig b/drivers/phy/freescale/Kconfig
index 320630ffe3cd..da078a676fbc 100644
--- a/drivers/phy/freescale/Kconfig
+++ b/drivers/phy/freescale/Kconfig
@@ -14,3 +14,12 @@ config PHY_MIXEL_MIPI_DPHY
 	help
 	  Enable this to add support for the Mixel DSI PHY as found
 	  on NXP's i.MX8 family of SOCs.
+
+config PHY_FSL_IMX8_PCIE
+	tristate "Freescale i.MX8 PCIE PHY"
+	depends on OF && HAS_IOMEM
+	select GENERIC_PHY
+	default ARCH_MXC
+	help
+	  Enable this to add support for the PCIE PHY as found on i.MX8
+	  family of SOCs.
diff --git a/drivers/phy/freescale/Makefile b/drivers/phy/freescale/Makefile
index 1d02e3869b45..9fd467b58621 100644
--- a/drivers/phy/freescale/Makefile
+++ b/drivers/phy/freescale/Makefile
@@ -1,3 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
 obj-$(CONFIG_PHY_FSL_IMX8MQ_USB)	+= phy-fsl-imx8mq-usb.o
 obj-$(CONFIG_PHY_MIXEL_MIPI_DPHY)	+= phy-fsl-imx8-mipi-dphy.o
+obj-$(CONFIG_PHY_FSL_IMX8_PCIE)		+= phy-fsl-imx8-pcie.o
diff --git a/drivers/phy/freescale/phy-fsl-imx8-pcie.c b/drivers/phy/freescale/phy-fsl-imx8-pcie.c
new file mode 100644
index 000000000000..ff47d6b83686
--- /dev/null
+++ b/drivers/phy/freescale/phy-fsl-imx8-pcie.c
@@ -0,0 +1,167 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+
+#include <linux/clk.h>
+#include <linux/io.h>
+#include <linux/iopoll.h>
+#include <linux/delay.h>
+#include <linux/module.h>
+#include <linux/phy/phy.h>
+#include <linux/platform_device.h>
+#include <dt-binding/phy/phy-fsl-imx8-pcie.h>
+
+#define IMX8MM_PCIE_PHY_CMN_REG061	0x184
+#define  ANA_PLL_CLK_OUT_TO_EXT_IO_EN	BIT(0)
+#define IMX8MM_PCIE_PHY_CMN_REG062	0x188
+#define  ANA_PLL_CLK_OUT_TO_EXT_IO_SEL	BIT(3)
+#define IMX8MM_PCIE_PHY_CMN_REG063	0x18C
+#define  AUX_PLL_REFCLK_SEL_SYS_PLL	GENMASK(7, 6)
+#define IMX8MM_PCIE_PHY_CMN_REG064	0x190
+#define  ANA_AUX_RX_TX_SEL_TX		BIT(7)
+#define  ANA_AUX_RX_TERM_GND_EN		BIT(3)
+#define  ANA_AUX_TX_TERM		BIT(2)
+#define IMX8MM_PCIE_PHY_CMN_REG065	0x194
+#define  ANA_AUX_RX_TERM		(BIT(7) | BIT(4))
+#define  ANA_AUX_TX_LVL			GENMASK(3, 0)
+#define IMX8MM_PCIE_PHY_CMN_REG75	0x1D4
+#define  PCIE_PHY_CMN_REG75_PLL_DONE	0x3
+#define PCIE_PHY_TRSV_REG5		0x414
+#define  PCIE_PHY_TRSV_REG5_GEN1_DEEMP	0x2D
+#define PCIE_PHY_TRSV_REG6		0x418
+#define  PCIE_PHY_TRSV_REG6_GEN2_DEEMP	0xF
+
+struct imx8_pcie_phy {
+	u32		refclk_pad_mode;
+	void __iomem	*base;
+	struct clk	*clk;
+	struct phy	*phy;
+};
+
+static int imx8_pcie_phy_init(struct phy *phy)
+{
+	int ret;
+	u32 val;
+	struct imx8_pcie_phy *imx8_phy = phy_get_drvdata(phy);
+
+	ret = readl_poll_timeout(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG75,
+				 val, val == PCIE_PHY_CMN_REG75_PLL_DONE,
+				 10, 20000);
+	return ret;
+}
+
+static int imx8_pcie_phy_cal(struct phy *phy)
+{
+	u32 value, pad_mode;
+	struct imx8_pcie_phy *imx8_phy = phy_get_drvdata(phy);
+
+	pad_mode = imx8_phy->refclk_pad_mode;
+	if (pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT) {
+		/* Configure the pad as input */
+		value = readl(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG061);
+		writel(value & ~ANA_PLL_CLK_OUT_TO_EXT_IO_EN,
+		       imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG061);
+	} else if (pad_mode == IMX8_PCIE_REFCLK_PAD_OUTPUT) {
+		/* Configure the PHY to output the refclock via pad */
+		writel(ANA_PLL_CLK_OUT_TO_EXT_IO_EN,
+		       imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG061);
+		writel(ANA_PLL_CLK_OUT_TO_EXT_IO_SEL,
+		       imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG062);
+		writel(AUX_PLL_REFCLK_SEL_SYS_PLL,
+		       imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG063);
+		value = ANA_AUX_RX_TX_SEL_TX | ANA_AUX_TX_TERM;
+		writel(value | ANA_AUX_RX_TERM_GND_EN,
+		       imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG064);
+		writel(ANA_AUX_RX_TERM | ANA_AUX_TX_LVL,
+		       imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG065);
+	}
+
+	/* Tune PHY de-emphasis setting to pass PCIe compliance. */
+	writel(PCIE_PHY_TRSV_REG5_GEN1_DEEMP,
+	       imx8_phy->base + PCIE_PHY_TRSV_REG5);
+	writel(PCIE_PHY_TRSV_REG6_GEN2_DEEMP,
+	       imx8_phy->base + PCIE_PHY_TRSV_REG6);
+
+	return 0;
+}
+
+static int imx8_pcie_phy_power_on(struct phy *phy)
+{
+	struct imx8_pcie_phy *imx8_phy = phy_get_drvdata(phy);
+
+	return clk_prepare_enable(imx8_phy->clk);
+}
+
+static int imx8_pcie_phy_power_off(struct phy *phy)
+{
+	struct imx8_pcie_phy *imx8_phy = phy_get_drvdata(phy);
+
+	clk_disable_unprepare(imx8_phy->clk);
+
+	return 0;
+}
+
+static const struct phy_ops imx8_pcie_phy_ops = {
+	.init		= imx8_pcie_phy_init,
+	.calibrate	= imx8_pcie_phy_cal,
+	.power_on	= imx8_pcie_phy_power_on,
+	.power_off	= imx8_pcie_phy_power_off,
+	.owner		= THIS_MODULE,
+};
+
+static int imx8_pcie_phy_probe(struct platform_device *pdev)
+{
+	struct phy_provider *phy_provider;
+	struct device *dev = &pdev->dev;
+	struct device_node *np = dev->of_node;
+	struct imx8_pcie_phy *imx8_phy;
+	struct resource *res;
+
+	imx8_phy = devm_kzalloc(dev, sizeof(*imx8_phy), GFP_KERNEL);
+	if (!imx8_phy)
+		return -ENOMEM;
+
+	/* get PHY refclk pad mode */
+	of_property_read_u32(np, "fsl,refclk-pad-mode",
+			     &imx8_phy->refclk_pad_mode);
+
+	imx8_phy->clk = devm_clk_get(dev, "phy");
+	if (IS_ERR(imx8_phy->clk)) {
+		dev_err(dev, "failed to get imx pcie phy clock\n");
+		return PTR_ERR(imx8_phy->clk);
+	}
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	imx8_phy->base = devm_ioremap_resource(dev, res);
+	if (IS_ERR(imx8_phy->base))
+		return PTR_ERR(imx8_phy->base);
+
+	imx8_phy->phy = devm_phy_create(dev, NULL, &imx8_pcie_phy_ops);
+	if (IS_ERR(imx8_phy->phy))
+		return PTR_ERR(imx8_phy->phy);
+
+	phy_set_drvdata(imx8_phy->phy, imx8_phy);
+
+	phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
+
+	return PTR_ERR_OR_ZERO(phy_provider);
+}
+
+static const struct of_device_id imx8_pcie_phy_of_match[] = {
+	{.compatible = "fsl,imx8mm-pcie-phy",},
+	{ },
+};
+MODULE_DEVICE_TABLE(of, imx8_pcie_phy_of_match);
+
+static struct platform_driver imx8_pcie_phy_driver = {
+	.probe	= imx8_pcie_phy_probe,
+	.driver = {
+		.name	= "imx8-pcie-phy",
+		.of_match_table	= imx8_pcie_phy_of_match,
+	}
+};
+module_platform_driver(imx8_pcie_phy_driver);
+
+MODULE_DESCRIPTION("FSL IMX8 PCIE PHY driver");
+MODULE_LICENSE("GPL");
-- 
2.25.1


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

* Re: [PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support
  2021-09-17  2:31 ` [PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support Richard Zhu
@ 2021-09-17 19:48   ` Rob Herring
  2021-09-22  8:24     ` Richard Zhu
  0 siblings, 1 reply; 11+ messages in thread
From: Rob Herring @ 2021-09-17 19:48 UTC (permalink / raw)
  To: Richard Zhu
  Cc: linux-imx, linux-phy, l.stach, linux-arm-kernel, kernel, kishon,
	linux-kernel, vkoul, shawnguo, devicetree, galak

On Fri, 17 Sep 2021 10:31:01 +0800, Richard Zhu wrote:
> Add dt-binding for the standalone i.MX8 PCIe PHY driver.
> 
> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> ---
>  .../bindings/phy/fsl,imx8-pcie-phy.yaml       | 66 +++++++++++++++++++
>  1 file changed, 66 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml
> 

My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml: properties:fsl,refclk-pad-mode: 'oneOf' conditional failed, one must be fixed:
	'type' is a required property
		hint: A vendor boolean property can use "type: boolean"
	Additional properties are not allowed ('enum' was unexpected)
		hint: A vendor boolean property can use "type: boolean"
	/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml: properties:fsl,refclk-pad-mode: 'oneOf' conditional failed, one must be fixed:
		'$ref' is a required property
		'allOf' is a required property
		hint: A vendor property needs a $ref to types.yaml
		from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml#
	0 is not of type 'string'
		hint: A vendor string property with exact values has an implicit type
	1 is not of type 'string'
		hint: A vendor string property with exact values has an implicit type
	2 is not of type 'string'
		hint: A vendor string property with exact values has an implicit type
	hint: Vendor specific properties must have a type and description unless they have a defined, common suffix.
	from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml#
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml: ignoring, error in schema: properties: fsl,refclk-pad-mode
warning: no schema found in file: ./Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml
Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.example.dt.yaml:0:0: /example-0/pcie-phy@32f00000: failed to match any schema with compatible: ['fsl,imx8mm-pcie-phy']

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/patch/1529140

This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit.


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

* RE: [PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support
  2021-09-17 19:48   ` Rob Herring
@ 2021-09-22  8:24     ` Richard Zhu
  0 siblings, 0 replies; 11+ messages in thread
From: Richard Zhu @ 2021-09-22  8:24 UTC (permalink / raw)
  To: Rob Herring
  Cc: dl-linux-imx, linux-phy, l.stach, linux-arm-kernel, kernel,
	kishon, linux-kernel, vkoul, shawnguo, devicetree, galak

> -----Original Message-----
> From: Rob Herring <robh@kernel.org>
> Sent: Saturday, September 18, 2021 3:49 AM
> To: Richard Zhu <hongxing.zhu@nxp.com>
> Cc: dl-linux-imx <linux-imx@nxp.com>; linux-phy@lists.infradead.org;
> l.stach@pengutronix.de; linux-arm-kernel@lists.infradead.org;
> kernel@pengutronix.de; kishon@ti.com; linux-kernel@vger.kernel.org;
> vkoul@kernel.org; shawnguo@kernel.org; devicetree@vger.kernel.org;
> galak@kernel.crashing.org
> Subject: Re: [PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support
> 
> On Fri, 17 Sep 2021 10:31:01 +0800, Richard Zhu wrote:
> > Add dt-binding for the standalone i.MX8 PCIe PHY driver.
> >
> > Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> > ---
> >  .../bindings/phy/fsl,imx8-pcie-phy.yaml       | 66 +++++++++++++++++++
> >  1 file changed, 66 insertions(+)
> >  create mode 100644
> > Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml
> >
> 
> My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
> on your patch (DT_CHECKER_FLAGS is new in v5.13):
> 
Thanks for your comments. The errors are fixed by adding "$ref" below.
       Refer include/dt-bindings/phy/phy-imx8-pcie.h for the constants
       to be used.
+    $ref: /schemas/types.yaml#/definitions/uint32
     enum: [ 0, 1, 2 ]

Best Regards
Richard Zhu
> yamllint warnings/errors:
> 
> dtschema/dtc warnings/errors:
> /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/phy/fsl,i
> mx8-pcie-phy.yaml: properties:fsl,refclk-pad-mode: 'oneOf' conditional failed,
> one must be fixed:
> 	'type' is a required property
> 		hint: A vendor boolean property can use "type: boolean"
> 	Additional properties are not allowed ('enum' was unexpected)
> 		hint: A vendor boolean property can use "type: boolean"
> 	/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/ph
> y/fsl,imx8-pcie-phy.yaml: properties:fsl,refclk-pad-mode: 'oneOf' conditional
> failed, one must be fixed:
> 		'$ref' is a required property
> 		'allOf' is a required property
> 		hint: A vendor property needs a $ref to types.yaml
> 		from schema $id:
> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdevicetree
> .org%2Fmeta-schemas%2Fvendor-props.yaml%23&amp;data=04%7C01%7Chon
> gxing.zhu%40nxp.com%7Cfacb5eafa5eb4fe72a1908d97a1430c0%7C686ea1d3
> bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637675049421428781%7CUnkno
> wn%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1ha
> WwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=lOkPSEyYhyhHPHQBi916FgdPeqK
> GWi1yCC1KyhlsUCU%3D&amp;reserved=0
> 	0 is not of type 'string'
> 		hint: A vendor string property with exact values has an implicit type
> 	1 is not of type 'string'
> 		hint: A vendor string property with exact values has an implicit type
> 	2 is not of type 'string'
> 		hint: A vendor string property with exact values has an implicit type
> 	hint: Vendor specific properties must have a type and description unless
> they have a defined, common suffix.
> 	from schema $id:
> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdevicetree
> .org%2Fmeta-schemas%2Fvendor-props.yaml%23&amp;data=04%7C01%7Chon
> gxing.zhu%40nxp.com%7Cfacb5eafa5eb4fe72a1908d97a1430c0%7C686ea1d3
> bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637675049421428781%7CUnkno
> wn%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1ha
> WwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=lOkPSEyYhyhHPHQBi916FgdPeqK
> GWi1yCC1KyhlsUCU%3D&amp;reserved=0
> /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/phy/fsl,i
> mx8-pcie-phy.yaml: ignoring, error in schema: properties: fsl,refclk-pad-mode
> warning: no schema found in
> file: ./Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml
> Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.example.dt.yaml:0:0:
> /example-0/pcie-phy@32f00000: failed to match any schema with compatible:
> ['fsl,imx8mm-pcie-phy']
> 
> doc reference errors (make refcheckdocs):
> 
> See
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwor
> k.ozlabs.org%2Fpatch%2F1529140&amp;data=04%7C01%7Chongxing.zhu%40
> nxp.com%7Cfacb5eafa5eb4fe72a1908d97a1430c0%7C686ea1d3bc2b4c6fa92c
> d99c5c301635%7C0%7C0%7C637675049421428781%7CUnknown%7CTWFpb
> GZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6
> Mn0%3D%7C1000&amp;sdata=qePjUlHV6abE0GeKxqqoddS8%2Bc28wRGOoLB
> NyDPpDc8%3D&amp;reserved=0
> 
> This check can fail if there are any dependencies. The base for a patch series is
> generally the most recent rc1.
> 
> If you already ran 'make dt_binding_check' and didn't see the above error(s),
> then make sure 'yamllint' is installed and dt-schema is up to
> date:
> 
> pip3 install dtschema --upgrade
> 
> Please check and re-submit.


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

* Re: [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy
  2021-09-17  2:31 ` [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy Richard Zhu
@ 2021-09-22 19:25   ` Rob Herring
  2021-09-23  5:56     ` Richard Zhu
  0 siblings, 1 reply; 11+ messages in thread
From: Rob Herring @ 2021-09-22 19:25 UTC (permalink / raw)
  To: Richard Zhu
  Cc: l.stach, kishon, vkoul, galak, shawnguo, linux-phy, devicetree,
	linux-arm-kernel, linux-kernel, kernel, linux-imx

On Fri, Sep 17, 2021 at 10:31:00AM +0800, Richard Zhu wrote:
> Add binding for reference clock PAD modes of the i.MX8 PCIe PHY.
> 
> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> ---
>  include/dt-bindings/phy/phy-imx8-pcie.h | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>  create mode 100644 include/dt-bindings/phy/phy-imx8-pcie.h
> 
> diff --git a/include/dt-bindings/phy/phy-imx8-pcie.h b/include/dt-bindings/phy/phy-imx8-pcie.h
> new file mode 100644
> index 000000000000..fe198a0cc12c
> --- /dev/null
> +++ b/include/dt-bindings/phy/phy-imx8-pcie.h
> @@ -0,0 +1,14 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

Perhaps this should match the dts files license...

> +/*
> + * This header provides constants for i.MX8 PCIe.
> + */
> +
> +#ifndef _DT_BINDINGS_IMX8_PCIE_H
> +#define _DT_BINDINGS_IMX8_PCIE_H
> +
> +/* Reference clock PAD mode */
> +#define IMX8_PCIE_REFCLK_PAD_NO_USED	0
> +#define IMX8_PCIE_REFCLK_PAD_INPUT	1
> +#define IMX8_PCIE_REFCLK_PAD_OUTPUT	2
> +
> +#endif /* _DT_BINDINGS_IMX8_PCIE_H */
> -- 
> 2.25.1
> 
> 

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

* RE: [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy
  2021-09-22 19:25   ` Rob Herring
@ 2021-09-23  5:56     ` Richard Zhu
  2021-09-23 14:43       ` Rob Herring
  0 siblings, 1 reply; 11+ messages in thread
From: Richard Zhu @ 2021-09-23  5:56 UTC (permalink / raw)
  To: Rob Herring
  Cc: l.stach, kishon, vkoul, galak, shawnguo, linux-phy, devicetree,
	linux-arm-kernel, linux-kernel, kernel, dl-linux-imx


> -----Original Message-----
> From: Rob Herring <robh@kernel.org>
> Sent: Thursday, September 23, 2021 3:26 AM
> To: Richard Zhu <hongxing.zhu@nxp.com>
> Cc: l.stach@pengutronix.de; kishon@ti.com; vkoul@kernel.org;
> galak@kernel.crashing.org; shawnguo@kernel.org;
> linux-phy@lists.infradead.org; devicetree@vger.kernel.org;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> kernel@pengutronix.de; dl-linux-imx <linux-imx@nxp.com>
> Subject: Re: [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the
> pad modes of imx8 pcie phy
> 
> On Fri, Sep 17, 2021 at 10:31:00AM +0800, Richard Zhu wrote:
> > Add binding for reference clock PAD modes of the i.MX8 PCIe PHY.
> >
> > Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> > ---
> >  include/dt-bindings/phy/phy-imx8-pcie.h | 14 ++++++++++++++
> >  1 file changed, 14 insertions(+)
> >  create mode 100644 include/dt-bindings/phy/phy-imx8-pcie.h
> >
> > diff --git a/include/dt-bindings/phy/phy-imx8-pcie.h
> b/include/dt-bindings/phy/phy-imx8-pcie.h
> > new file mode 100644
> > index 000000000000..fe198a0cc12c
> > --- /dev/null
> > +++ b/include/dt-bindings/phy/phy-imx8-pcie.h
> > @@ -0,0 +1,14 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> 
> Perhaps this should match the dts files license...
> 
Hi Rob: 
What's the means of the "dts files license"?
I'm not clear understand that.
I found that there are almost similar "/* SPDX-License-Identifier: GPL-2.0 */" license contained in the files of the /include/dt-bindings/phy folder.

Best Regards
Richard Zhu
> > +/*
> > + * This header provides constants for i.MX8 PCIe.
> > + */
> > +
> > +#ifndef _DT_BINDINGS_IMX8_PCIE_H
> > +#define _DT_BINDINGS_IMX8_PCIE_H
> > +
> > +/* Reference clock PAD mode */
> > +#define IMX8_PCIE_REFCLK_PAD_NO_USED	0
> > +#define IMX8_PCIE_REFCLK_PAD_INPUT	1
> > +#define IMX8_PCIE_REFCLK_PAD_OUTPUT	2
> > +
> > +#endif /* _DT_BINDINGS_IMX8_PCIE_H */
> > --
> > 2.25.1
> >
> >

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

* Re: [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy
  2021-09-23  5:56     ` Richard Zhu
@ 2021-09-23 14:43       ` Rob Herring
  2021-09-24  2:08         ` Richard Zhu
  0 siblings, 1 reply; 11+ messages in thread
From: Rob Herring @ 2021-09-23 14:43 UTC (permalink / raw)
  To: Richard Zhu
  Cc: l.stach, kishon, vkoul, galak, shawnguo, linux-phy, devicetree,
	linux-arm-kernel, linux-kernel, kernel, dl-linux-imx

On Thu, Sep 23, 2021 at 12:56 AM Richard Zhu <hongxing.zhu@nxp.com> wrote:
>
>
> > -----Original Message-----
> > From: Rob Herring <robh@kernel.org>
> > Sent: Thursday, September 23, 2021 3:26 AM
> > To: Richard Zhu <hongxing.zhu@nxp.com>
> > Cc: l.stach@pengutronix.de; kishon@ti.com; vkoul@kernel.org;
> > galak@kernel.crashing.org; shawnguo@kernel.org;
> > linux-phy@lists.infradead.org; devicetree@vger.kernel.org;
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> > kernel@pengutronix.de; dl-linux-imx <linux-imx@nxp.com>
> > Subject: Re: [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the
> > pad modes of imx8 pcie phy
> >
> > On Fri, Sep 17, 2021 at 10:31:00AM +0800, Richard Zhu wrote:
> > > Add binding for reference clock PAD modes of the i.MX8 PCIe PHY.
> > >
> > > Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> > > ---
> > >  include/dt-bindings/phy/phy-imx8-pcie.h | 14 ++++++++++++++
> > >  1 file changed, 14 insertions(+)
> > >  create mode 100644 include/dt-bindings/phy/phy-imx8-pcie.h
> > >
> > > diff --git a/include/dt-bindings/phy/phy-imx8-pcie.h
> > b/include/dt-bindings/phy/phy-imx8-pcie.h
> > > new file mode 100644
> > > index 000000000000..fe198a0cc12c
> > > --- /dev/null
> > > +++ b/include/dt-bindings/phy/phy-imx8-pcie.h
> > > @@ -0,0 +1,14 @@
> > > +/* SPDX-License-Identifier: GPL-2.0 */
> >
> > Perhaps this should match the dts files license...
> >
> Hi Rob:
> What's the means of the "dts files license"?

You include this into .dts files and those are dual licensed. The
licenses should match (or be compatible).

> I'm not clear understand that.
> I found that there are almost similar "/* SPDX-License-Identifier: GPL-2.0 */" license contained in the files of the /include/dt-bindings/phy folder.

Yes, licenses are a mess. But what other files in
include/dt-bindings/phy have don't matter. Where you use this file is
what matters.

Rob

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

* RE: [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy
  2021-09-23 14:43       ` Rob Herring
@ 2021-09-24  2:08         ` Richard Zhu
  0 siblings, 0 replies; 11+ messages in thread
From: Richard Zhu @ 2021-09-24  2:08 UTC (permalink / raw)
  To: Rob Herring
  Cc: l.stach, kishon, vkoul, galak, shawnguo, linux-phy, devicetree,
	linux-arm-kernel, linux-kernel, kernel, dl-linux-imx


> -----Original Message-----
> From: Rob Herring <robh@kernel.org>
> Sent: Thursday, September 23, 2021 10:44 PM
> To: Richard Zhu <hongxing.zhu@nxp.com>
> Cc: l.stach@pengutronix.de; kishon@ti.com; vkoul@kernel.org;
> galak@kernel.crashing.org; shawnguo@kernel.org;
> linux-phy@lists.infradead.org; devicetree@vger.kernel.org;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> kernel@pengutronix.de; dl-linux-imx <linux-imx@nxp.com>
> Subject: Re: [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the
> pad modes of imx8 pcie phy
> 
> On Thu, Sep 23, 2021 at 12:56 AM Richard Zhu <hongxing.zhu@nxp.com>
> wrote:
> >
> >
> > > -----Original Message-----
> > > From: Rob Herring <robh@kernel.org>
> > > Sent: Thursday, September 23, 2021 3:26 AM
> > > To: Richard Zhu <hongxing.zhu@nxp.com>
> > > Cc: l.stach@pengutronix.de; kishon@ti.com; vkoul@kernel.org;
> > > galak@kernel.crashing.org; shawnguo@kernel.org;
> > > linux-phy@lists.infradead.org; devicetree@vger.kernel.org;
> > > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> > > kernel@pengutronix.de; dl-linux-imx <linux-imx@nxp.com>
> > > Subject: Re: [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add
> > > binding for the pad modes of imx8 pcie phy
> > >
> > > On Fri, Sep 17, 2021 at 10:31:00AM +0800, Richard Zhu wrote:
> > > > Add binding for reference clock PAD modes of the i.MX8 PCIe PHY.
> > > >
> > > > Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> > > > ---
> > > >  include/dt-bindings/phy/phy-imx8-pcie.h | 14 ++++++++++++++
> > > >  1 file changed, 14 insertions(+)
> > > >  create mode 100644 include/dt-bindings/phy/phy-imx8-pcie.h
> > > >
> > > > diff --git a/include/dt-bindings/phy/phy-imx8-pcie.h
> > > b/include/dt-bindings/phy/phy-imx8-pcie.h
> > > > new file mode 100644
> > > > index 000000000000..fe198a0cc12c
> > > > --- /dev/null
> > > > +++ b/include/dt-bindings/phy/phy-imx8-pcie.h
> > > > @@ -0,0 +1,14 @@
> > > > +/* SPDX-License-Identifier: GPL-2.0 */
> > >
> > > Perhaps this should match the dts files license...
> > >
> > Hi Rob:
> > What's the means of the "dts files license"?
> 
> You include this into .dts files and those are dual licensed. The licenses should
> match (or be compatible).
> 
[Richard Zhu] Thanks a lot. I'm clear now.
Would change the license to "SPDX-License-Identifier: GPL-2.0+" to make it compatible later.

Best Regards
Richard Zhu
> > I'm not clear understand that.
> > I found that there are almost similar "/* SPDX-License-Identifier: GPL-2.0
> */" license contained in the files of the /include/dt-bindings/phy folder.
> 
> Yes, licenses are a mess. But what other files in include/dt-bindings/phy have
> don't matter. Where you use this file is what matters.
> 
> Rob

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

end of thread, other threads:[~2021-09-24  2:08 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-17  2:30 [PATCH 0/4] add the imx8 pcie phy driver support Richard Zhu
2021-09-17  2:31 ` [PATCH 1/4] dt-bindings: phy: phy-imx8-pcie: Add binding for the pad modes of imx8 pcie phy Richard Zhu
2021-09-22 19:25   ` Rob Herring
2021-09-23  5:56     ` Richard Zhu
2021-09-23 14:43       ` Rob Herring
2021-09-24  2:08         ` Richard Zhu
2021-09-17  2:31 ` [PATCH 2/4] dt-bindings: phy: add imx8 pcie phy driver support Richard Zhu
2021-09-17 19:48   ` Rob Herring
2021-09-22  8:24     ` Richard Zhu
2021-09-17  2:31 ` [PATCH 3/4] arm64: dts: imx8mm: add the pcie phy support Richard Zhu
2021-09-17  2:31 ` [PATCH 4/4] phy: freescale: pcie: initialize the imx8 pcie standalone phy driver Richard Zhu

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