* [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant
@ 2025-08-18 23:00 Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 1/7] dt-bindings: soc: rockchip: add rk3588 csidphy grf syscon Michael Riesch via B4 Relay
` (6 more replies)
0 siblings, 7 replies; 10+ messages in thread
From: Michael Riesch via B4 Relay @ 2025-08-18 23:00 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Heiko Stuebner, Collabora Kernel Team
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
linux-phy, Michael Riesch, stable
Habidere,
The Rockchip RK3588 features two MIPI CSI-2 DPHYs (not to be confused with
the two combo MIPI DSI/CSI CPHY/DPHY blocks). The CSI-2 DPHYs can be
supported using the existing phy-rockchip-inno-csidphy driver, the notable
differences being
- the control bits in the GRF
- the additional reset line
This patch series adds support for this variant.
As you may have guessed, this is part of the efforts to bring the support
for the RK3588 Video Capture (VICAP) unit mainline.
Looking forward to your comments!
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
Changes in v2:
- rebased onto v6.17-rc1
- added patch that makes 'power-domains' non-required (Diederik)
- added patch that allows for different sets of resets (Neil)
- introduced name for additional reset line (Neil)
- fixed example in bindings (Rob, Diederik)
- Link to v1: https://lore.kernel.org/r/20250616-rk3588-csi-dphy-v1-0-84eb3b2a736c@collabora.com
---
Michael Riesch (7):
dt-bindings: soc: rockchip: add rk3588 csidphy grf syscon
dt-bindings: phy: rockchip-inno-csi-dphy: make power-domains non-required
dt-bindings: phy: rockchip-inno-csi-dphy: add rk3588 variant
phy: rockchip: phy-rockchip-inno-csidphy: allow writes to grf register 0
phy: rockchip: phy-rockchip-inno-csidphy: allow for different reset lines
phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant
arm64: dts: rockchip: add mipi csi-2 dphy nodes to rk3588
.../bindings/phy/rockchip-inno-csi-dphy.yaml | 61 ++++++++++++++++++--
.../devicetree/bindings/soc/rockchip/grf.yaml | 1 +
arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 33 +++++++++++
drivers/phy/rockchip/phy-rockchip-inno-csidphy.c | 67 ++++++++++++++++++++--
4 files changed, 151 insertions(+), 11 deletions(-)
---
base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585
change-id: 20250616-rk3588-csi-dphy-c9ed2ad4cd9f
Best regards,
--
Michael Riesch <michael.riesch@collabora.com>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/7] dt-bindings: soc: rockchip: add rk3588 csidphy grf syscon
2025-08-18 23:00 [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
@ 2025-08-18 23:00 ` Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 2/7] dt-bindings: phy: rockchip-inno-csi-dphy: make power-domains non-required Michael Riesch via B4 Relay
` (5 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Michael Riesch via B4 Relay @ 2025-08-18 23:00 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Heiko Stuebner, Collabora Kernel Team
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
linux-phy, Michael Riesch
From: Michael Riesch <michael.riesch@collabora.com>
Add CSIDPHY GRF syscon compatible for the Rockchip RK3588.
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
Documentation/devicetree/bindings/soc/rockchip/grf.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
index 1ab0b092e2a5..b6e04e6491e9 100644
--- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
+++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
@@ -47,6 +47,7 @@ properties:
- rockchip,rk3576-vop-grf
- rockchip,rk3588-bigcore0-grf
- rockchip,rk3588-bigcore1-grf
+ - rockchip,rk3588-csidphy-grf
- rockchip,rk3588-dcphy-grf
- rockchip,rk3588-hdptxphy-grf
- rockchip,rk3588-ioc
--
2.39.5
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 2/7] dt-bindings: phy: rockchip-inno-csi-dphy: make power-domains non-required
2025-08-18 23:00 [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 1/7] dt-bindings: soc: rockchip: add rk3588 csidphy grf syscon Michael Riesch via B4 Relay
@ 2025-08-18 23:00 ` Michael Riesch via B4 Relay
2025-08-22 9:33 ` Krzysztof Kozlowski
2025-08-18 23:00 ` [PATCH v2 3/7] dt-bindings: phy: rockchip-inno-csi-dphy: add rk3588 variant Michael Riesch via B4 Relay
` (4 subsequent siblings)
6 siblings, 1 reply; 10+ messages in thread
From: Michael Riesch via B4 Relay @ 2025-08-18 23:00 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Heiko Stuebner, Collabora Kernel Team
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
linux-phy, Michael Riesch, stable
From: Michael Riesch <michael.riesch@collabora.com>
There are variants of the Rockchip Innosilicon CSI DPHY (e.g., the RK3568
variant) that are powered on by default as they are part of the ALIVE power
domain.
Remove 'power-domains' from the required properties in order to avoid false
negatives.
Fixes: 22c8e0a69b7f ("dt-bindings: phy: add compatible for rk356x to rockchip-inno-csi-dphy")
Cc: stable@kernel.org
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml | 1 -
1 file changed, 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml b/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
index 5ac994b3c0aa..42da616ae2e3 100644
--- a/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
+++ b/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
@@ -57,7 +57,6 @@ required:
- clocks
- clock-names
- '#phy-cells'
- - power-domains
- resets
- reset-names
- rockchip,grf
--
2.39.5
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 3/7] dt-bindings: phy: rockchip-inno-csi-dphy: add rk3588 variant
2025-08-18 23:00 [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 1/7] dt-bindings: soc: rockchip: add rk3588 csidphy grf syscon Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 2/7] dt-bindings: phy: rockchip-inno-csi-dphy: make power-domains non-required Michael Riesch via B4 Relay
@ 2025-08-18 23:00 ` Michael Riesch via B4 Relay
2025-08-25 22:41 ` Rob Herring
2025-08-18 23:00 ` [PATCH v2 4/7] phy: rockchip: phy-rockchip-inno-csidphy: allow writes to grf register 0 Michael Riesch via B4 Relay
` (3 subsequent siblings)
6 siblings, 1 reply; 10+ messages in thread
From: Michael Riesch via B4 Relay @ 2025-08-18 23:00 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Heiko Stuebner, Collabora Kernel Team
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
linux-phy, Michael Riesch
From: Michael Riesch <michael.riesch@collabora.com>
The Rockchip RK3588 variant of the CSI-2 DPHY features two reset lines.
Add the variant and allow for the additional reset.
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
.../bindings/phy/rockchip-inno-csi-dphy.yaml | 60 ++++++++++++++++++++--
1 file changed, 56 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml b/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
index 42da616ae2e3..10197cc9dc47 100644
--- a/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
+++ b/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
@@ -21,6 +21,7 @@ properties:
- rockchip,rk3326-csi-dphy
- rockchip,rk3368-csi-dphy
- rockchip,rk3568-csi-dphy
+ - rockchip,rk3588-csi-dphy
reg:
maxItems: 1
@@ -39,18 +40,50 @@ properties:
maxItems: 1
resets:
- items:
- - description: exclusive PHY reset line
+ minItems: 1
+ maxItems: 2
reset-names:
- items:
- - const: apb
+ minItems: 1
+ maxItems: 2
rockchip,grf:
$ref: /schemas/types.yaml#/definitions/phandle
description:
Some additional phy settings are access through GRF regs.
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - rockchip,px30-csi-dphy
+ - rockchip,rk1808-csi-dphy
+ - rockchip,rk3326-csi-dphy
+ - rockchip,rk3368-csi-dphy
+ - rockchip,rk3568-csi-dphy
+ then:
+ properties:
+ resets:
+ items:
+ - description: exclusive PHY reset line
+
+ reset-names:
+ items:
+ - const: apb
+ else:
+ properties:
+ resets:
+ items:
+ - description: APB reset line
+ - description: PHY reset line
+
+ reset-names:
+ items:
+ - const: apb
+ - const: phy
+
required:
- compatible
- reg
@@ -77,3 +110,22 @@ examples:
reset-names = "apb";
rockchip,grf = <&grf>;
};
+ - |
+ #include <dt-bindings/clock/rockchip,rk3588-cru.h>
+ #include <dt-bindings/reset/rockchip,rk3588-cru.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ phy@fedc0000 {
+ compatible = "rockchip,rk3588-csi-dphy";
+ reg = <0x0 0xfedc0000 0x0 0x8000>;
+ clocks = <&cru PCLK_CSIPHY0>;
+ clock-names = "pclk";
+ #phy-cells = <0>;
+ resets = <&cru SRST_P_CSIPHY0>, <&cru SRST_CSIPHY0>;
+ reset-names = "apb", "phy";
+ rockchip,grf = <&csidphy0_grf>;
+ };
+ };
--
2.39.5
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 4/7] phy: rockchip: phy-rockchip-inno-csidphy: allow writes to grf register 0
2025-08-18 23:00 [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
` (2 preceding siblings ...)
2025-08-18 23:00 ` [PATCH v2 3/7] dt-bindings: phy: rockchip-inno-csi-dphy: add rk3588 variant Michael Riesch via B4 Relay
@ 2025-08-18 23:00 ` Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 5/7] phy: rockchip: phy-rockchip-inno-csidphy: allow for different reset lines Michael Riesch via B4 Relay
` (2 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Michael Riesch via B4 Relay @ 2025-08-18 23:00 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Heiko Stuebner, Collabora Kernel Team
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
linux-phy, Michael Riesch
From: Michael Riesch <michael.riesch@collabora.com>
The driver for the Rockchip MIPI CSI-2 DPHY uses GRF register offset
value 0 to sort out undefined registers. However, the RK3588 CSIDPHY GRF
this offset is perfectly fine (in fact, register 0 is the only one in
this register file).
Introduce a boolean variable to indicate valid registers and allow writes
to register 0.
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
drivers/phy/rockchip/phy-rockchip-inno-csidphy.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c b/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
index 2ab99e1d47eb..75533d071025 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
@@ -87,10 +87,11 @@ struct dphy_reg {
u32 offset;
u32 mask;
u32 shift;
+ u8 valid;
};
#define PHY_REG(_offset, _width, _shift) \
- { .offset = _offset, .mask = BIT(_width) - 1, .shift = _shift, }
+ { .offset = _offset, .mask = BIT(_width) - 1, .shift = _shift, .valid = 1, }
static const struct dphy_reg rk1808_grf_dphy_regs[] = {
[GRF_DPHY_CSIPHY_FORCERXMODE] = PHY_REG(RK1808_GRF_PD_VI_CON_OFFSET, 4, 0),
@@ -145,7 +146,7 @@ static inline void write_grf_reg(struct rockchip_inno_csidphy *priv,
const struct dphy_drv_data *drv_data = priv->drv_data;
const struct dphy_reg *reg = &drv_data->grf_regs[index];
- if (reg->offset)
+ if (reg->valid)
regmap_write(priv->grf, reg->offset,
HIWORD_UPDATE(value, reg->mask, reg->shift));
}
--
2.39.5
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 5/7] phy: rockchip: phy-rockchip-inno-csidphy: allow for different reset lines
2025-08-18 23:00 [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
` (3 preceding siblings ...)
2025-08-18 23:00 ` [PATCH v2 4/7] phy: rockchip: phy-rockchip-inno-csidphy: allow writes to grf register 0 Michael Riesch via B4 Relay
@ 2025-08-18 23:00 ` Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 6/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 7/7] arm64: dts: rockchip: add mipi csi-2 dphy nodes to rk3588 Michael Riesch via B4 Relay
6 siblings, 0 replies; 10+ messages in thread
From: Michael Riesch via B4 Relay @ 2025-08-18 23:00 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Heiko Stuebner, Collabora Kernel Team
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
linux-phy, Michael Riesch
From: Michael Riesch <michael.riesch@collabora.com>
The RK3588 MIPI CSI-2 DPHY variant requires two reset lines. Add support
for different sets of reset lines to the phy-rockchip-inno-csidphy driver
as preparation for the introduction of the RK3588 variant.
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
drivers/phy/rockchip/phy-rockchip-inno-csidphy.c | 34 +++++++++++++++++++++---
1 file changed, 30 insertions(+), 4 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c b/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
index 75533d071025..6c4ddcd7e5de 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
@@ -67,6 +67,8 @@
#define RK1808_CSIDPHY_CLK_CALIB_EN 0x168
#define RK3568_CSIDPHY_CLK_CALIB_EN 0x168
+#define RESETS_MAX 2
+
/*
* The higher 16-bit of this register is used for write protection
* only if BIT(x + 16) set to 1 the BIT(x) can be written.
@@ -127,6 +129,8 @@ struct dphy_drv_data {
const struct hsfreq_range *hsfreq_ranges;
int num_hsfreq_ranges;
const struct dphy_reg *grf_regs;
+ const char *const *resets;
+ unsigned int resets_num;
};
struct rockchip_inno_csidphy {
@@ -134,7 +138,8 @@ struct rockchip_inno_csidphy {
void __iomem *phy_base;
struct clk *pclk;
struct regmap *grf;
- struct reset_control *rst;
+ struct reset_control_bulk_data resets[RESETS_MAX];
+ unsigned int resets_num;
const struct dphy_drv_data *drv_data;
struct phy_configure_opts_mipi_dphy config;
u8 hsfreq;
@@ -174,6 +179,10 @@ static const struct hsfreq_range rk3368_mipidphy_hsfreq_ranges[] = {
{1249, 0x0c}, {1349, 0x0d}, {1500, 0x0e}
};
+static const char *const rk3368_reset_names[] = {
+ "apb"
+};
+
static void rockchip_inno_csidphy_ths_settle(struct rockchip_inno_csidphy *priv,
int hsfreq, int offset)
{
@@ -344,6 +353,8 @@ static const struct dphy_drv_data rk1808_mipidphy_drv_data = {
.hsfreq_ranges = rk1808_mipidphy_hsfreq_ranges,
.num_hsfreq_ranges = ARRAY_SIZE(rk1808_mipidphy_hsfreq_ranges),
.grf_regs = rk1808_grf_dphy_regs,
+ .resets = rk3368_reset_names,
+ .resets_num = ARRAY_SIZE(rk3368_reset_names),
};
static const struct dphy_drv_data rk3326_mipidphy_drv_data = {
@@ -353,6 +364,8 @@ static const struct dphy_drv_data rk3326_mipidphy_drv_data = {
.hsfreq_ranges = rk3326_mipidphy_hsfreq_ranges,
.num_hsfreq_ranges = ARRAY_SIZE(rk3326_mipidphy_hsfreq_ranges),
.grf_regs = rk3326_grf_dphy_regs,
+ .resets = rk3368_reset_names,
+ .resets_num = ARRAY_SIZE(rk3368_reset_names),
};
static const struct dphy_drv_data rk3368_mipidphy_drv_data = {
@@ -362,6 +375,8 @@ static const struct dphy_drv_data rk3368_mipidphy_drv_data = {
.hsfreq_ranges = rk3368_mipidphy_hsfreq_ranges,
.num_hsfreq_ranges = ARRAY_SIZE(rk3368_mipidphy_hsfreq_ranges),
.grf_regs = rk3368_grf_dphy_regs,
+ .resets = rk3368_reset_names,
+ .resets_num = ARRAY_SIZE(rk3368_reset_names),
};
static const struct dphy_drv_data rk3568_mipidphy_drv_data = {
@@ -371,6 +386,8 @@ static const struct dphy_drv_data rk3568_mipidphy_drv_data = {
.hsfreq_ranges = rk1808_mipidphy_hsfreq_ranges,
.num_hsfreq_ranges = ARRAY_SIZE(rk1808_mipidphy_hsfreq_ranges),
.grf_regs = rk3568_grf_dphy_regs,
+ .resets = rk3368_reset_names,
+ .resets_num = ARRAY_SIZE(rk3368_reset_names),
};
static const struct of_device_id rockchip_inno_csidphy_match_id[] = {
@@ -404,6 +421,7 @@ static int rockchip_inno_csidphy_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct phy_provider *phy_provider;
struct phy *phy;
+ int ret;
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
@@ -435,10 +453,18 @@ static int rockchip_inno_csidphy_probe(struct platform_device *pdev)
return PTR_ERR(priv->pclk);
}
- priv->rst = devm_reset_control_get(dev, "apb");
- if (IS_ERR(priv->rst)) {
+ if (priv->drv_data->resets_num > RESETS_MAX) {
+ dev_err(dev, "invalid number of resets\n");
+ return -EINVAL;
+ }
+ priv->resets_num = priv->drv_data->resets_num;
+ for (unsigned int i = 0; i < priv->resets_num; i++)
+ priv->resets[i].id = priv->drv_data->resets[i];
+ ret = devm_reset_control_bulk_get_exclusive(dev, priv->resets_num,
+ priv->resets);
+ if (ret) {
dev_err(dev, "failed to get system reset control\n");
- return PTR_ERR(priv->rst);
+ return ret;
}
phy = devm_phy_create(dev, NULL, &rockchip_inno_csidphy_ops);
--
2.39.5
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 6/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant
2025-08-18 23:00 [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
` (4 preceding siblings ...)
2025-08-18 23:00 ` [PATCH v2 5/7] phy: rockchip: phy-rockchip-inno-csidphy: allow for different reset lines Michael Riesch via B4 Relay
@ 2025-08-18 23:00 ` Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 7/7] arm64: dts: rockchip: add mipi csi-2 dphy nodes to rk3588 Michael Riesch via B4 Relay
6 siblings, 0 replies; 10+ messages in thread
From: Michael Riesch via B4 Relay @ 2025-08-18 23:00 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Heiko Stuebner, Collabora Kernel Team
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
linux-phy, Michael Riesch
From: Michael Riesch <michael.riesch@collabora.com>
The Rockchip RK3588 MIPI CSI-2 DPHY can be supported using the existing
phy-rockchip-inno-csidphy driver, the notable differences being
- the control bits in the GRF
- the additional reset line
Add support for this variant.
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
drivers/phy/rockchip/phy-rockchip-inno-csidphy.c | 28 ++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c b/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
index 6c4ddcd7e5de..c79fb53d8ee5 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-csidphy.c
@@ -30,6 +30,8 @@
#define RK3568_GRF_VI_CON0 0x0340
#define RK3568_GRF_VI_CON1 0x0344
+#define RK3588_CSIDPHY_GRF_CON0 0x0000
+
/* PHY */
#define CSIDPHY_CTRL_LANE_ENABLE 0x00
#define CSIDPHY_CTRL_LANE_ENABLE_CK BIT(6)
@@ -117,6 +119,12 @@ static const struct dphy_reg rk3568_grf_dphy_regs[] = {
[GRF_DPHY_CSIPHY_CLKLANE_EN] = PHY_REG(RK3568_GRF_VI_CON0, 1, 8),
};
+static const struct dphy_reg rk3588_grf_dphy_regs[] = {
+ [GRF_DPHY_CSIPHY_FORCERXMODE] = PHY_REG(RK3588_CSIDPHY_GRF_CON0, 4, 0),
+ [GRF_DPHY_CSIPHY_DATALANE_EN] = PHY_REG(RK3588_CSIDPHY_GRF_CON0, 4, 4),
+ [GRF_DPHY_CSIPHY_CLKLANE_EN] = PHY_REG(RK3588_CSIDPHY_GRF_CON0, 1, 8),
+};
+
struct hsfreq_range {
u32 range_h;
u8 cfg_bit;
@@ -183,6 +191,11 @@ static const char *const rk3368_reset_names[] = {
"apb"
};
+static const char *const rk3588_reset_names[] = {
+ "apb",
+ "phy"
+};
+
static void rockchip_inno_csidphy_ths_settle(struct rockchip_inno_csidphy *priv,
int hsfreq, int offset)
{
@@ -390,6 +403,17 @@ static const struct dphy_drv_data rk3568_mipidphy_drv_data = {
.resets_num = ARRAY_SIZE(rk3368_reset_names),
};
+static const struct dphy_drv_data rk3588_mipidphy_drv_data = {
+ .pwrctl_offset = -1,
+ .ths_settle_offset = RK3568_CSIDPHY_CLK_WR_THS_SETTLE,
+ .calib_offset = RK3568_CSIDPHY_CLK_CALIB_EN,
+ .hsfreq_ranges = rk1808_mipidphy_hsfreq_ranges,
+ .num_hsfreq_ranges = ARRAY_SIZE(rk1808_mipidphy_hsfreq_ranges),
+ .grf_regs = rk3588_grf_dphy_regs,
+ .resets = rk3588_reset_names,
+ .resets_num = ARRAY_SIZE(rk3588_reset_names),
+};
+
static const struct of_device_id rockchip_inno_csidphy_match_id[] = {
{
.compatible = "rockchip,px30-csi-dphy",
@@ -411,6 +435,10 @@ static const struct of_device_id rockchip_inno_csidphy_match_id[] = {
.compatible = "rockchip,rk3568-csi-dphy",
.data = &rk3568_mipidphy_drv_data,
},
+ {
+ .compatible = "rockchip,rk3588-csi-dphy",
+ .data = &rk3588_mipidphy_drv_data,
+ },
{}
};
MODULE_DEVICE_TABLE(of, rockchip_inno_csidphy_match_id);
--
2.39.5
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 7/7] arm64: dts: rockchip: add mipi csi-2 dphy nodes to rk3588
2025-08-18 23:00 [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
` (5 preceding siblings ...)
2025-08-18 23:00 ` [PATCH v2 6/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
@ 2025-08-18 23:00 ` Michael Riesch via B4 Relay
6 siblings, 0 replies; 10+ messages in thread
From: Michael Riesch via B4 Relay @ 2025-08-18 23:00 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Heiko Stuebner, Collabora Kernel Team
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
linux-phy, Michael Riesch
From: Michael Riesch <michael.riesch@collabora.com>
The Rockchip RK3588 features two MIPI CSI-2 DPHYs. Add the device
tree nodes for them.
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 33 +++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
index 70f03e68ba55..eedf93247e9c 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
@@ -621,6 +621,16 @@ php_grf: syscon@fd5b0000 {
reg = <0x0 0xfd5b0000 0x0 0x1000>;
};
+ csidphy0_grf: syscon@fd5b4000 {
+ compatible = "rockchip,rk3588-csidphy-grf", "syscon";
+ reg = <0x0 0xfd5b4000 0x0 0x1000>;
+ };
+
+ csidphy1_grf: syscon@fd5b5000 {
+ compatible = "rockchip,rk3588-csidphy-grf", "syscon";
+ reg = <0x0 0xfd5b5000 0x0 0x1000>;
+ };
+
pipe_phy0_grf: syscon@fd5bc000 {
compatible = "rockchip,rk3588-pipe-phy-grf", "syscon";
reg = <0x0 0xfd5bc000 0x0 0x100>;
@@ -3052,6 +3062,29 @@ mipidcphy1: phy@fedb0000 {
<&cru SRST_S_MIPI_DCPHY1>;
reset-names = "m_phy", "apb", "grf", "s_phy";
#phy-cells = <1>;
+ };
+
+ csi_dphy0: phy@fedc0000 {
+ compatible = "rockchip,rk3588-csi-dphy";
+ reg = <0x0 0xfedc0000 0x0 0x8000>;
+ clocks = <&cru PCLK_CSIPHY0>;
+ clock-names = "pclk";
+ #phy-cells = <0>;
+ resets = <&cru SRST_P_CSIPHY0>, <&cru SRST_CSIPHY0>;
+ reset-names = "apb", "phy";
+ rockchip,grf = <&csidphy0_grf>;
+ status = "disabled";
+ };
+
+ csi_dphy1: phy@fedc8000 {
+ compatible = "rockchip,rk3588-csi-dphy";
+ reg = <0x0 0xfedc8000 0x0 0x8000>;
+ clocks = <&cru PCLK_CSIPHY1>;
+ clock-names = "pclk";
+ #phy-cells = <0>;
+ resets = <&cru SRST_P_CSIPHY1>, <&cru SRST_CSIPHY1>;
+ reset-names = "apb", "phy";
+ rockchip,grf = <&csidphy1_grf>;
status = "disabled";
};
--
2.39.5
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/7] dt-bindings: phy: rockchip-inno-csi-dphy: make power-domains non-required
2025-08-18 23:00 ` [PATCH v2 2/7] dt-bindings: phy: rockchip-inno-csi-dphy: make power-domains non-required Michael Riesch via B4 Relay
@ 2025-08-22 9:33 ` Krzysztof Kozlowski
0 siblings, 0 replies; 10+ messages in thread
From: Krzysztof Kozlowski @ 2025-08-22 9:33 UTC (permalink / raw)
To: Michael Riesch
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
Vinod Koul, Kishon Vijay Abraham I, Philipp Zabel, Kever Yang,
Jagan Teki, Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Collabora Kernel Team, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel, linux-phy, stable
On Tue, Aug 19, 2025 at 01:00:36AM +0200, Michael Riesch wrote:
> There are variants of the Rockchip Innosilicon CSI DPHY (e.g., the RK3568
> variant) that are powered on by default as they are part of the ALIVE power
> domain.
> Remove 'power-domains' from the required properties in order to avoid false
> negatives.
>
> Fixes: 22c8e0a69b7f ("dt-bindings: phy: add compatible for rk356x to rockchip-inno-csi-dphy")
> Cc: stable@kernel.org
> Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
> ---
> Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml b/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
> index 5ac994b3c0aa..42da616ae2e3 100644
> --- a/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
> +++ b/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
> @@ -57,7 +57,6 @@ required:
> - clocks
> - clock-names
> - '#phy-cells'
> - - power-domains
This could then be restricted per each variant in if:then:.
Best regards,
Krzysztof
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 3/7] dt-bindings: phy: rockchip-inno-csi-dphy: add rk3588 variant
2025-08-18 23:00 ` [PATCH v2 3/7] dt-bindings: phy: rockchip-inno-csi-dphy: add rk3588 variant Michael Riesch via B4 Relay
@ 2025-08-25 22:41 ` Rob Herring
0 siblings, 0 replies; 10+ messages in thread
From: Rob Herring @ 2025-08-25 22:41 UTC (permalink / raw)
To: Michael Riesch
Cc: Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Vinod Koul,
Kishon Vijay Abraham I, Philipp Zabel, Kever Yang, Jagan Teki,
Sebastian Reichel, Diederik de Haas, Neil Armstrong,
Collabora Kernel Team, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel, linux-phy
On Tue, Aug 19, 2025 at 01:00:37AM +0200, Michael Riesch wrote:
> The Rockchip RK3588 variant of the CSI-2 DPHY features two reset lines.
> Add the variant and allow for the additional reset.
>
> Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
> ---
> .../bindings/phy/rockchip-inno-csi-dphy.yaml | 60 ++++++++++++++++++++--
> 1 file changed, 56 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml b/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
> index 42da616ae2e3..10197cc9dc47 100644
> --- a/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
> +++ b/Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml
> @@ -21,6 +21,7 @@ properties:
> - rockchip,rk3326-csi-dphy
> - rockchip,rk3368-csi-dphy
> - rockchip,rk3568-csi-dphy
> + - rockchip,rk3588-csi-dphy
>
> reg:
> maxItems: 1
> @@ -39,18 +40,50 @@ properties:
> maxItems: 1
>
> resets:
> - items:
> - - description: exclusive PHY reset line
> + minItems: 1
> + maxItems: 2
Add a description for the 2nd reset here.
>
> reset-names:
> - items:
> - - const: apb
> + minItems: 1
> + maxItems: 2
Add 'phy' to the list here and just minItems.
>
> rockchip,grf:
> $ref: /schemas/types.yaml#/definitions/phandle
> description:
> Some additional phy settings are access through GRF regs.
>
> +allOf:
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - rockchip,px30-csi-dphy
> + - rockchip,rk1808-csi-dphy
> + - rockchip,rk3326-csi-dphy
> + - rockchip,rk3368-csi-dphy
> + - rockchip,rk3568-csi-dphy
> + then:
> + properties:
> + resets:
> + items:
> + - description: exclusive PHY reset line
> +
> + reset-names:
> + items:
> + - const: apb
Then just 'maxItems: 1' here.
> + else:
> + properties:
> + resets:
> + items:
> + - description: APB reset line
> + - description: PHY reset line
> +
> + reset-names:
> + items:
> + - const: apb
> + - const: phy
And 'minItems: 2' here.
> +
> required:
> - compatible
> - reg
> @@ -77,3 +110,22 @@ examples:
> reset-names = "apb";
> rockchip,grf = <&grf>;
> };
> + - |
> + #include <dt-bindings/clock/rockchip,rk3588-cru.h>
> + #include <dt-bindings/reset/rockchip,rk3588-cru.h>
> +
> + soc {
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + phy@fedc0000 {
> + compatible = "rockchip,rk3588-csi-dphy";
> + reg = <0x0 0xfedc0000 0x0 0x8000>;
> + clocks = <&cru PCLK_CSIPHY0>;
> + clock-names = "pclk";
> + #phy-cells = <0>;
> + resets = <&cru SRST_P_CSIPHY0>, <&cru SRST_CSIPHY0>;
> + reset-names = "apb", "phy";
> + rockchip,grf = <&csidphy0_grf>;
> + };
> + };
>
> --
> 2.39.5
>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-08-25 22:44 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-18 23:00 [PATCH v2 0/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 1/7] dt-bindings: soc: rockchip: add rk3588 csidphy grf syscon Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 2/7] dt-bindings: phy: rockchip-inno-csi-dphy: make power-domains non-required Michael Riesch via B4 Relay
2025-08-22 9:33 ` Krzysztof Kozlowski
2025-08-18 23:00 ` [PATCH v2 3/7] dt-bindings: phy: rockchip-inno-csi-dphy: add rk3588 variant Michael Riesch via B4 Relay
2025-08-25 22:41 ` Rob Herring
2025-08-18 23:00 ` [PATCH v2 4/7] phy: rockchip: phy-rockchip-inno-csidphy: allow writes to grf register 0 Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 5/7] phy: rockchip: phy-rockchip-inno-csidphy: allow for different reset lines Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 6/7] phy: rockchip: phy-rockchip-inno-csidphy: add support for rk3588 variant Michael Riesch via B4 Relay
2025-08-18 23:00 ` [PATCH v2 7/7] arm64: dts: rockchip: add mipi csi-2 dphy nodes to rk3588 Michael Riesch via B4 Relay
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).