From: Michael Riesch <michael.riesch@collabora.com>
To: Jason Yang <jason98166@gmail.com>, Vinod Koul <vkoul@kernel.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Manivannan Sadhasivam <mani@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Guochun Huang <hero.huang@rock-chips.com>,
Philipp Zabel <p.zabel@pengutronix.de>
Cc: Sebastian Reichel <sebastian.reichel@collabora.com>,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
linux-phy@lists.infradead.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 7/9] phy: rockchip-samsung-dcphy: Support the new phy-type and direction binding
Date: Wed, 11 Nov 2026 14:32:34 +0100 [thread overview]
Message-ID: <a11909bf-01f4-4905-81d9-e5c295feb595@collabora.com> (raw)
In-Reply-To: <20261110-dcphy-rx-v1-v6-7-d681ba20b36a@gmail.com>
Hi Jason,
Thanks for the patch!
On 11/10/26 09:18, Jason Yang wrote:
> The binding now selects the PHY with the cell and the mode of the block
> with the phy-type property of the provider. Read phy-type in probe,
> D-PHY by default.
>
> of_xlate() returns the transmitter for PHY_DIRECTION_TX. The deprecated
> PHY_TYPE_DPHY and PHY_TYPE_CPHY select the transmitter as today, so
> existing DTs are unaffected.
>
> A phy-type other than D-PHY or C-PHY fails probe. A deprecated cell
> value that does not match phy-type gets a warning, and the transmitter
> then refuses to power on, as in C-PHY mode today.
>
> Signed-off-by: Jason Yang <jason98166@gmail.com>
Reviewed-by: Michael Riesch <michael.riesch@collabora.com>
Best regards,
Michael
> ---
> drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c | 32 ++++++++++++++++++-----
> 1 file changed, 25 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> index c40c84791eca..e8e229fc4856 100644
> --- a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> +++ b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> @@ -297,6 +297,7 @@ struct samsung_mipi_dcphy {
> struct reset_control *grf_apb_rst;
> struct samsung_mipi_phy tx;
> u8 type;
> + bool legacy_mismatch;
>
> const struct samsung_mipi_dcphy_plat_data *pdata;
> struct {
> @@ -1376,6 +1377,9 @@ static int samsung_mipi_dcphy_tx_power_on(struct phy *phy)
> {
> struct samsung_mipi_dcphy *samsung = phy_get_drvdata(phy);
>
> + if (samsung->legacy_mismatch)
> + return -EOPNOTSUPP;
> +
> switch (samsung->type) {
> case PHY_TYPE_DPHY:
> return samsung_mipi_dphy_tx_power_on(samsung);
> @@ -1549,13 +1553,21 @@ static struct phy *samsung_mipi_dcphy_xlate(struct device *dev,
> return ERR_PTR(-EINVAL);
> }
>
> - if (samsung->type != PHY_NONE && samsung->type != args->args[0])
> - dev_warn(dev, "phy type select %d overwriting type %d\n",
> - args->args[0], samsung->type);
> -
> - samsung->type = args->args[0];
> -
> - return samsung->tx.phy;
> + switch (args->args[0]) {
> + case PHY_DIRECTION_TX:
> + return samsung->tx.phy;
> + case PHY_TYPE_DPHY:
> + case PHY_TYPE_CPHY:
> + if (args->args[0] != samsung->type) {
> + dev_warn(dev, "unsupported phy cell %u with phy-type %u\n",
> + args->args[0], samsung->type);
> + samsung->legacy_mismatch = true;
> + }
> + return samsung->tx.phy;
> + default:
> + dev_err(dev, "invalid phy cell %u\n", args->args[0]);
> + return ERR_PTR(-EINVAL);
> + }
> }
>
> static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> @@ -1566,6 +1578,7 @@ static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> struct phy_provider *phy_provider;
> struct resource *res;
> void __iomem *regs;
> + u32 type = PHY_TYPE_DPHY;
> int ret;
>
> samsung = devm_kzalloc(dev, sizeof(*samsung), GFP_KERNEL);
> @@ -1620,6 +1633,11 @@ static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> return dev_err_probe(dev, PTR_ERR(samsung->grf_apb_rst),
> "Failed to get system grf_apb_rst control\n");
>
> + of_property_read_u32(np, "phy-type", &type);
> + if (type != PHY_TYPE_DPHY && type != PHY_TYPE_CPHY)
> + return dev_err_probe(dev, -EINVAL, "unsupported phy-type %u\n", type);
> + samsung->type = type;
> +
> ret = devm_pm_runtime_enable(dev);
> if (ret)
> return dev_err_probe(dev, ret, "Failed to enable runtime PM\n");
>
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
WARNING: multiple messages have this Message-ID (diff)
From: Michael Riesch <michael.riesch@collabora.com>
To: Jason Yang <jason98166@gmail.com>, Vinod Koul <vkoul@kernel.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Manivannan Sadhasivam <mani@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Guochun Huang <hero.huang@rock-chips.com>,
Philipp Zabel <p.zabel@pengutronix.de>
Cc: Sebastian Reichel <sebastian.reichel@collabora.com>,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
linux-phy@lists.infradead.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 7/9] phy: rockchip-samsung-dcphy: Support the new phy-type and direction binding
Date: Wed, 11 Nov 2026 14:32:34 +0100 [thread overview]
Message-ID: <a11909bf-01f4-4905-81d9-e5c295feb595@collabora.com> (raw)
In-Reply-To: <20261110-dcphy-rx-v1-v6-7-d681ba20b36a@gmail.com>
Hi Jason,
Thanks for the patch!
On 11/10/26 09:18, Jason Yang wrote:
> The binding now selects the PHY with the cell and the mode of the block
> with the phy-type property of the provider. Read phy-type in probe,
> D-PHY by default.
>
> of_xlate() returns the transmitter for PHY_DIRECTION_TX. The deprecated
> PHY_TYPE_DPHY and PHY_TYPE_CPHY select the transmitter as today, so
> existing DTs are unaffected.
>
> A phy-type other than D-PHY or C-PHY fails probe. A deprecated cell
> value that does not match phy-type gets a warning, and the transmitter
> then refuses to power on, as in C-PHY mode today.
>
> Signed-off-by: Jason Yang <jason98166@gmail.com>
Reviewed-by: Michael Riesch <michael.riesch@collabora.com>
Best regards,
Michael
> ---
> drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c | 32 ++++++++++++++++++-----
> 1 file changed, 25 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> index c40c84791eca..e8e229fc4856 100644
> --- a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> +++ b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> @@ -297,6 +297,7 @@ struct samsung_mipi_dcphy {
> struct reset_control *grf_apb_rst;
> struct samsung_mipi_phy tx;
> u8 type;
> + bool legacy_mismatch;
>
> const struct samsung_mipi_dcphy_plat_data *pdata;
> struct {
> @@ -1376,6 +1377,9 @@ static int samsung_mipi_dcphy_tx_power_on(struct phy *phy)
> {
> struct samsung_mipi_dcphy *samsung = phy_get_drvdata(phy);
>
> + if (samsung->legacy_mismatch)
> + return -EOPNOTSUPP;
> +
> switch (samsung->type) {
> case PHY_TYPE_DPHY:
> return samsung_mipi_dphy_tx_power_on(samsung);
> @@ -1549,13 +1553,21 @@ static struct phy *samsung_mipi_dcphy_xlate(struct device *dev,
> return ERR_PTR(-EINVAL);
> }
>
> - if (samsung->type != PHY_NONE && samsung->type != args->args[0])
> - dev_warn(dev, "phy type select %d overwriting type %d\n",
> - args->args[0], samsung->type);
> -
> - samsung->type = args->args[0];
> -
> - return samsung->tx.phy;
> + switch (args->args[0]) {
> + case PHY_DIRECTION_TX:
> + return samsung->tx.phy;
> + case PHY_TYPE_DPHY:
> + case PHY_TYPE_CPHY:
> + if (args->args[0] != samsung->type) {
> + dev_warn(dev, "unsupported phy cell %u with phy-type %u\n",
> + args->args[0], samsung->type);
> + samsung->legacy_mismatch = true;
> + }
> + return samsung->tx.phy;
> + default:
> + dev_err(dev, "invalid phy cell %u\n", args->args[0]);
> + return ERR_PTR(-EINVAL);
> + }
> }
>
> static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> @@ -1566,6 +1578,7 @@ static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> struct phy_provider *phy_provider;
> struct resource *res;
> void __iomem *regs;
> + u32 type = PHY_TYPE_DPHY;
> int ret;
>
> samsung = devm_kzalloc(dev, sizeof(*samsung), GFP_KERNEL);
> @@ -1620,6 +1633,11 @@ static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> return dev_err_probe(dev, PTR_ERR(samsung->grf_apb_rst),
> "Failed to get system grf_apb_rst control\n");
>
> + of_property_read_u32(np, "phy-type", &type);
> + if (type != PHY_TYPE_DPHY && type != PHY_TYPE_CPHY)
> + return dev_err_probe(dev, -EINVAL, "unsupported phy-type %u\n", type);
> + samsung->type = type;
> +
> ret = devm_pm_runtime_enable(dev);
> if (ret)
> return dev_err_probe(dev, ret, "Failed to enable runtime PM\n");
>
WARNING: multiple messages have this Message-ID (diff)
From: Michael Riesch <michael.riesch@collabora.com>
To: Jason Yang <jason98166@gmail.com>, Vinod Koul <vkoul@kernel.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Manivannan Sadhasivam <mani@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Guochun Huang <hero.huang@rock-chips.com>,
Philipp Zabel <p.zabel@pengutronix.de>
Cc: Sebastian Reichel <sebastian.reichel@collabora.com>,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
linux-phy@lists.infradead.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 7/9] phy: rockchip-samsung-dcphy: Support the new phy-type and direction binding
Date: Wed, 11 Nov 2026 14:32:34 +0100 [thread overview]
Message-ID: <a11909bf-01f4-4905-81d9-e5c295feb595@collabora.com> (raw)
In-Reply-To: <20261110-dcphy-rx-v1-v6-7-d681ba20b36a@gmail.com>
Hi Jason,
Thanks for the patch!
On 11/10/26 09:18, Jason Yang wrote:
> The binding now selects the PHY with the cell and the mode of the block
> with the phy-type property of the provider. Read phy-type in probe,
> D-PHY by default.
>
> of_xlate() returns the transmitter for PHY_DIRECTION_TX. The deprecated
> PHY_TYPE_DPHY and PHY_TYPE_CPHY select the transmitter as today, so
> existing DTs are unaffected.
>
> A phy-type other than D-PHY or C-PHY fails probe. A deprecated cell
> value that does not match phy-type gets a warning, and the transmitter
> then refuses to power on, as in C-PHY mode today.
>
> Signed-off-by: Jason Yang <jason98166@gmail.com>
Reviewed-by: Michael Riesch <michael.riesch@collabora.com>
Best regards,
Michael
> ---
> drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c | 32 ++++++++++++++++++-----
> 1 file changed, 25 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> index c40c84791eca..e8e229fc4856 100644
> --- a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> +++ b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> @@ -297,6 +297,7 @@ struct samsung_mipi_dcphy {
> struct reset_control *grf_apb_rst;
> struct samsung_mipi_phy tx;
> u8 type;
> + bool legacy_mismatch;
>
> const struct samsung_mipi_dcphy_plat_data *pdata;
> struct {
> @@ -1376,6 +1377,9 @@ static int samsung_mipi_dcphy_tx_power_on(struct phy *phy)
> {
> struct samsung_mipi_dcphy *samsung = phy_get_drvdata(phy);
>
> + if (samsung->legacy_mismatch)
> + return -EOPNOTSUPP;
> +
> switch (samsung->type) {
> case PHY_TYPE_DPHY:
> return samsung_mipi_dphy_tx_power_on(samsung);
> @@ -1549,13 +1553,21 @@ static struct phy *samsung_mipi_dcphy_xlate(struct device *dev,
> return ERR_PTR(-EINVAL);
> }
>
> - if (samsung->type != PHY_NONE && samsung->type != args->args[0])
> - dev_warn(dev, "phy type select %d overwriting type %d\n",
> - args->args[0], samsung->type);
> -
> - samsung->type = args->args[0];
> -
> - return samsung->tx.phy;
> + switch (args->args[0]) {
> + case PHY_DIRECTION_TX:
> + return samsung->tx.phy;
> + case PHY_TYPE_DPHY:
> + case PHY_TYPE_CPHY:
> + if (args->args[0] != samsung->type) {
> + dev_warn(dev, "unsupported phy cell %u with phy-type %u\n",
> + args->args[0], samsung->type);
> + samsung->legacy_mismatch = true;
> + }
> + return samsung->tx.phy;
> + default:
> + dev_err(dev, "invalid phy cell %u\n", args->args[0]);
> + return ERR_PTR(-EINVAL);
> + }
> }
>
> static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> @@ -1566,6 +1578,7 @@ static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> struct phy_provider *phy_provider;
> struct resource *res;
> void __iomem *regs;
> + u32 type = PHY_TYPE_DPHY;
> int ret;
>
> samsung = devm_kzalloc(dev, sizeof(*samsung), GFP_KERNEL);
> @@ -1620,6 +1633,11 @@ static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
> return dev_err_probe(dev, PTR_ERR(samsung->grf_apb_rst),
> "Failed to get system grf_apb_rst control\n");
>
> + of_property_read_u32(np, "phy-type", &type);
> + if (type != PHY_TYPE_DPHY && type != PHY_TYPE_CPHY)
> + return dev_err_probe(dev, -EINVAL, "unsupported phy-type %u\n", type);
> + samsung->type = type;
> +
> ret = devm_pm_runtime_enable(dev);
> if (ret)
> return dev_err_probe(dev, ret, "Failed to enable runtime PM\n");
>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2026-11-11 13:32 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-10 8:18 [PATCH v6 0/9] phy: rockchip-samsung-dcphy: Add the MIPI D-PHY receiver Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` [PATCH v6 1/9] dt-bindings: phy: Add PHY_DIRECTION_TX/RX definitions Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-11 10:29 ` Michael Riesch
2026-11-11 10:29 ` Michael Riesch
2026-11-11 10:29 ` Michael Riesch
2026-11-10 8:18 ` [PATCH v6 2/9] dt-bindings: phy: rockchip,rk3588-mipi-dcphy: Select TX or RX, add phy-type Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 18:02 ` Rob Herring (Arm)
2026-11-10 18:02 ` Rob Herring (Arm)
2026-11-10 18:02 ` Rob Herring (Arm)
2026-11-11 10:33 ` Michael Riesch
2026-11-11 10:33 ` Michael Riesch
2026-11-11 10:33 ` Michael Riesch
2026-11-10 8:18 ` [PATCH v6 3/9] phy: rockchip-samsung-dcphy: Unwind power-on on PLL lock failure Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-11 13:02 ` Michael Riesch
2026-11-11 13:02 ` Michael Riesch
2026-11-11 13:02 ` Michael Riesch
2026-11-10 8:18 ` [PATCH v6 4/9] phy: rockchip-samsung-dcphy: Always write the rate-dependent registers Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-11 13:05 ` Michael Riesch
2026-11-11 13:05 ` Michael Riesch
2026-11-11 13:05 ` Michael Riesch
2026-11-10 8:18 ` [PATCH v6 5/9] phy: rockchip-samsung-dcphy: Move block-level setup to runtime resume Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:40 ` sashiko-bot
2026-11-10 8:40 ` sashiko-bot
2026-11-11 13:14 ` Michael Riesch
2026-11-11 13:14 ` Michael Riesch
2026-11-11 13:14 ` Michael Riesch
2026-11-10 8:18 ` [PATCH v6 6/9] phy: rockchip-samsung-dcphy: Name the transmitter helpers and ops Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` [PATCH v6 7/9] phy: rockchip-samsung-dcphy: Support the new phy-type and direction binding Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-11 13:32 ` Michael Riesch [this message]
2026-11-11 13:32 ` Michael Riesch
2026-11-11 13:32 ` Michael Riesch
2026-11-10 8:18 ` [PATCH v6 8/9] phy: rockchip-samsung-dcphy: Add MIPI D-PHY receiver support Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-11 15:22 ` Michael Riesch
2026-11-11 15:22 ` Michael Riesch
2026-11-11 15:22 ` Michael Riesch
2026-11-10 8:18 ` [PATCH v6 9/9] arm64: dts: rockchip: add the dcphy mipi csi-2 receiver nodes to rk3588 Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-10 8:18 ` Jason Yang
2026-11-11 12:32 ` Michael Riesch
2026-11-11 12:32 ` Michael Riesch
2026-11-11 12:32 ` Michael Riesch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a11909bf-01f4-4905-81d9-e5c295feb595@collabora.com \
--to=michael.riesch@collabora.com \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=heiko@sntech.de \
--cc=hero.huang@rock-chips.com \
--cc=jason98166@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mani@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=sebastian.reichel@collabora.com \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.