* [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H
@ 2026-11-09 13:34 Paul Elder
2026-11-09 13:34 ` [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER} Paul Elder
` (12 more replies)
0 siblings, 13 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart, Phong Hoang,
Krzysztof Kozlowski
This series is based on Geert's
"topic/rcar-x5h-ironhide-scmi-cpg-mdlc-remapping-v4-rebased" branch [0].
A branch including this series is available here [1].
This series enables the FCPV{B,I,D} and the VSP{B,I,D} blocks on the Renesas
R-Car X5H SoC.
This has been tested on an Ironhide with the vsp-tests test suite [2].
Full summary:
/dev/media0 (VSP2-D (a)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media1 (VSP2-D (a)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media10 (VSP2-I): 157 tests: 150 passed, 0 failed, 7 skipped
/dev/media11 (VSP2-I): 157 tests: 150 passed, 0 failed, 7 skipped
/dev/media12 (VSP2-I): 157 tests: 150 passed, 0 failed, 7 skipped
/dev/media13 (VSP2-I): 157 tests: 150 passed, 0 failed, 7 skipped
/dev/media14 (VSP2-B): 127 tests: 116 passed, 0 failed, 11 skipped
/dev/media15 (VSP2-B): 127 tests: 116 passed, 0 failed, 11 skipped
/dev/media16 (VSP2-B): 127 tests: 116 passed, 0 failed, 11 skipped
/dev/media17 (VSP2-B): 127 tests: 116 passed, 0 failed, 11 skipped
/dev/media18 (VSP2-B): 127 tests: 116 passed, 0 failed, 11 skipped
/dev/media2 (VSP2-D (a)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media3 (VSP2-D (a)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media4 (VSP2-D (a)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media5 (VSP2-D (b)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media6 (VSP2-D (b)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media7 (VSP2-D (b)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media8 (VSP2-D (b)): 114 tests: 99 passed, 0 failed, 15 skipped
/dev/media9 (VSP2-D (b)): 114 tests: 99 passed, 0 failed, 15 skipped
The last patch checks the device revision and prints it, which is useful
for debugging but is unnecessary processing for driver operation so it
is marked as DNI as well.
In v3, most of the patches have become DNI because they depend on wip
cpg and mdlc driver work. The non-DNI patches are targets for immediate
upstreaming though.
In v4, thanks to Geert's new rebased branch, all the clocks and power
domains that were in DNI limbo have now graduated from DNI status.
[0] https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/log/?h=topic/rcar-x5h-ironhide-scmi-cpg-mdlc-remapping-v4-rebased
[1] https://git.ideasonboard.com/epaul/linux/src/branch/epaul/v7.4-rc1/x5h/vsp/fcp
[2] https://git.ideasonboard.com/renesas/vsp-tests/src/branch/epaul/fix
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
---
Changes in v4:
- Change the clocks in the dt nodes to use SGD1 instead of SGD4. (see
patch 1 for details)
- Removed "clk: renesas: r8a78000: Add clock for FCPV and VSP for SCP FW SDKv4.36"
- Removed "media: vsp1: Fix setting control register by display list"
- Link to v3: https://lore.kernel.org/r/20261015-epaul-v7-3-rc1-x5h-vsp-fcp-v3-0-e052903a3832@ideasonboard.com
Changes in v3:
- Added a couple bsp patches for upstreaming
- Marked dt patches as DNI
- Fix some VSPD instances hanging
- Update dt-bindings documentation for the expanded module identifier
bit width
- Link to v2: https://lore.kernel.org/r/20260919-epaul-v7-3-rc1-x5h-vsp-fcp-v2-0-dbe9236bfd22@ideasonboard.com
Changes in v2:
- Add FCPVD and VSPD
- Fixed author (I mistakenly overwrote a few when I renamed my email)
- Link to v1: https://lore.kernel.org/r/20260917-epaul-v7-3-rc1-x5h-vsp-fcp-v1-0-4c72d4e086dd@ideasonboard.com
---
Laurent Pinchart (3):
arm64: renesas: r8a78000: Add VSP[BI] nodes
media: vsp1: Support full VSPB on R-Car M3-W, M3-N and E3
[DNI] media: rcar-fcp: Check device revision at probe time
Paul Elder (8):
dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER}
pmdomain: renesas: r8a78000: Add SCMI maps for VIO
arm64: renesas: r8a78000: Add FCPV[BI] nodes
arm64: renesas: r8a78000: Add FCPVD and VSPD nodes
media: vsp1: Add device info entries for VSPD on X5H
media: rcar-fcp: Handle resets
dt-bindings: Increase Renesas X5H MDLC PD specifier bit width
media: vsp1: Complete buffers as queued in start_streaming error path
Phong Hoang (2):
media: vsp1: Fix access to reserved registers
media: vsp1: Fix du_complete race condition issue
.../bindings/power/renesas,r8a78000-mdlc.yaml | 7 +-
arch/arm64/boot/dts/renesas/r8a78000.dtsi | 361 +++++++++++++++++++++
drivers/media/platform/renesas/rcar-fcp.c | 156 ++++++++-
drivers/media/platform/renesas/vsp1/vsp1_drm.c | 10 +-
drivers/media/platform/renesas/vsp1/vsp1_drv.c | 74 ++++-
drivers/media/platform/renesas/vsp1/vsp1_regs.h | 4 +-
drivers/media/platform/renesas/vsp1/vsp1_video.c | 9 +-
drivers/pmdomain/renesas/r8a78000-mdlc.c | 55 ++++
include/dt-bindings/clock/renesas,r8a78000-cpg.h | 10 +
9 files changed, 655 insertions(+), 31 deletions(-)
---
base-commit: 6bc45699f7eb59faccc1b0d4b40fa25177e2a371
change-id: 20260917-epaul-v7-3-rc1-x5h-vsp-fcp-8afdeb2740f7
Best regards,
--
Paul Elder <paul.elder+renesas@ideasonboard.com>
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER}
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-10 9:30 ` Krzysztof Kozlowski
2026-11-11 9:16 ` Krzysztof Kozlowski
2026-11-09 13:34 ` [PATCH v4 02/13] pmdomain: renesas: r8a78000: Add SCMI maps for VIO Paul Elder
` (11 subsequent siblings)
12 siblings, 2 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder
Add the CPG_SGDn_VIO_DP_TX and CPG_SGDn_VIO_DP_OTHER clocks that are
used by FCPV, VSP, VCON, and DPTX cores.
It should be noted that there is likely a discrepancy regarding the
clocks. In practice it ought not to be an issue as all the clocks derive
from the same SGD1_VIO_MAIN clock and none of them are programmable or
gateable.
According to the datasheet, the FCPV[BID] and VSPD cores use
SGD*_VIO_DP_TXφ while the VSP[BI] cores use SGD*_VIO_DP_OTHERφ.
However, educated guessing suggests that IP cores in the same pipeline
should be using the same clocks:
- FCPV[BI] -> VSP[BI]: SGD*_VIO_DP_OTHERφ
- FCPVD -> VSPD -> VCON -> DPTX: SGD*_VIO_DP_TXφ
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
---
Changes in v4:
- Add all the clocks
- remove DNI
- add notes about suspected clock naming
---
include/dt-bindings/clock/renesas,r8a78000-cpg.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/include/dt-bindings/clock/renesas,r8a78000-cpg.h b/include/dt-bindings/clock/renesas,r8a78000-cpg.h
index 9d7f3afcb2c52ec4caac574b75810822ad3d59c4..0b2822785a669d99fc0724852e39ec7aa56839ea 100644
--- a/include/dt-bindings/clock/renesas,r8a78000-cpg.h
+++ b/include/dt-bindings/clock/renesas,r8a78000-cpg.h
@@ -32,5 +32,15 @@
#define R8A78000_CPG_SGASYNCD16_PERW_MAIN 22
#define R8A78000_CPG_S0ASYNCD8_PERW_MAIN 23
#define R8A78000_CPG_CANFD_SCP_MAIN 24
+#define R8A78000_CPG_SGD1_VIO_DP_TX 25
+#define R8A78000_CPG_SGD2_VIO_DP_TX 26
+#define R8A78000_CPG_SGD4_VIO_DP_TX 27
+#define R8A78000_CPG_SGD8_VIO_DP_TX 28
+#define R8A78000_CPG_SGD16_VIO_DP_TX 29
+#define R8A78000_CPG_SGD1_VIO_DP_OTHER 30
+#define R8A78000_CPG_SGD2_VIO_DP_OTHER 31
+#define R8A78000_CPG_SGD4_VIO_DP_OTHER 32
+#define R8A78000_CPG_SGD8_VIO_DP_OTHER 33
+#define R8A78000_CPG_SGD16_VIO_DP_OTHER 34
#endif /* __DT_BINDINGS_CLOCK_RENESAS_R8A78000_CPG_H__ */
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 02/13] pmdomain: renesas: r8a78000: Add SCMI maps for VIO
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
2026-11-09 13:34 ` [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER} Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 03/13] arm64: renesas: r8a78000: Add FCPV[BI] nodes Paul Elder
` (10 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
Add SCMI maps for the VIO domain to map the VSP and FCPV power domains
and module controls.
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
Changes in v2:
- add VSPD and FCPVD
---
drivers/pmdomain/renesas/r8a78000-mdlc.c | 55 ++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/drivers/pmdomain/renesas/r8a78000-mdlc.c b/drivers/pmdomain/renesas/r8a78000-mdlc.c
index 02699952f5c2d83f6f750025c37f951af3bab471..37869a666d458b801bc5e19daabab4d34d3b66f0 100644
--- a/drivers/pmdomain/renesas/r8a78000-mdlc.c
+++ b/drivers/pmdomain/renesas/r8a78000-mdlc.c
@@ -696,6 +696,57 @@ static const struct mod_map_in r8a78000_mdlc_scp_mod_fw[] = {
{ -1 }
};
+static const struct power_map_in r8a78000_mdlc_vio_power_fw[] = {
+ { 0, 4 }, /* PD_VIO0 */
+ { 1, 5 }, /* PD_VIO1 */
+ { 2, 6 }, /* PD_VIO2 */
+ { 3, 7 }, /* PD_VIO3 */
+ { 7, 11 }, /* PD_VIO4 */
+ { -1 }
+};
+
+static const struct mod_map_in r8a78000_mdlc_vio_mod_fw[] = {
+ { 0x70, 26, -1 }, /* VSPD0 */
+ { 0x71, 27, -1 }, /* VSPD1 */
+ { 0x72, 28, -1 }, /* VSPD2 */
+ { 0x73, 29, -1 }, /* VSPD3 */
+ { 0x74, 30, -1 }, /* VSPD4 */
+ { 0x75, 31, -1 }, /* VSPDB0 */
+ { 0x76, 32, -1 }, /* VSPDB1 */
+ { 0x77, 33, -1 }, /* VSPDB2 */
+ { 0x78, 34, -1 }, /* VSPDB3 */
+ { 0x79, 35, -1 }, /* VSPDB4 */
+ { 0x7e, 40, -1 }, /* FCPVD0 */
+ { 0x7f, 41, -1 }, /* FCPVD1 */
+ { 0x80, 42, -1 }, /* FCPVD2 */
+ { 0x81, 43, -1 }, /* FCPVD3 */
+ { 0x82, 44, -1 }, /* FCPVD4 */
+ { 0x83, 45, -1 }, /* FCPVD5 */
+ { 0x84, 46, -1 }, /* FCPVD6 */
+ { 0x85, 47, -1 }, /* FCPVD7 */
+ { 0x86, 48, -1 }, /* FCPVD8 */
+ { 0x87, 49, -1 }, /* FCPVD9 */
+ { 0xf9, 163, -1 }, /* VSPB0 */
+ { 0xfa, 164, -1 }, /* VSPB1 */
+ { 0xfb, 165, -1 }, /* VSPB2 */
+ { 0xfc, 166, -1 }, /* VSPB3 */
+ { 0xfd, 167, -1 }, /* VSPB4 */
+ { 0xfe, 168, -1 }, /* VSPI0 */
+ { 0xff, 169, -1 }, /* VSPI1 */
+ { 0x100, 170, -1 }, /* VSPI2 */
+ { 0x101, 171, -1 }, /* VSPI3 */
+ { 0x102, 172, -1 }, /* FCPVB0 */
+ { 0x103, 173, -1 }, /* FCPVB1 */
+ { 0x104, 174, -1 }, /* FCPVB2 */
+ { 0x105, 175, -1 }, /* FCPVB3 */
+ { 0x106, 176, -1 }, /* FCPVB4 */
+ { 0x107, 177, -1 }, /* FCPVI0 */
+ { 0x108, 178, -1 }, /* FCPVI1 */
+ { 0x109, 179, -1 }, /* FCPVI2 */
+ { 0x10a, 180, -1 }, /* FCPVI3 */
+ { -1 }
+};
+
static const struct mdlc_info r8a78000_mdlc_fw[] = {
{
.base = 0xc1338000 /* mdlc_aon */,
@@ -712,6 +763,10 @@ static const struct mdlc_info r8a78000_mdlc_fw[] = {
}, {
.base = 0xc1330000 /* mdlc_scp */,
.mod_map = r8a78000_mdlc_scp_mod_fw,
+ }, {
+ .base = 0xc5000000 /* mdlc_vio */,
+ .power_map = r8a78000_mdlc_vio_power_fw,
+ .mod_map = r8a78000_mdlc_vio_mod_fw,
},
{ /* sentinel */ }
};
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 03/13] arm64: renesas: r8a78000: Add FCPV[BI] nodes
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
2026-11-09 13:34 ` [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER} Paul Elder
2026-11-09 13:34 ` [PATCH v4 02/13] pmdomain: renesas: r8a78000: Add SCMI maps for VIO Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 04/13] arm64: renesas: r8a78000: Add VSP[BI] nodes Paul Elder
` (9 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
Add DT nodes for the FCPVB and FCPVI IP cores in the R-Car X5H SoC.
Use the SGD1 clock as it is likely to be the clock used for data flow.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
Changes in v4:
- change clock from SGD4 to SGD1
---
arch/arm64/boot/dts/renesas/r8a78000.dtsi | 72 +++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/r8a78000.dtsi b/arch/arm64/boot/dts/renesas/r8a78000.dtsi
index 437e49c58ff299a05411eb3aa50a0bb0d7fdda98..5caa9ab1c83a93a606c5191b71f5172158b0cc53 100644
--- a/arch/arm64/boot/dts/renesas/r8a78000.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a78000.dtsi
@@ -1574,6 +1574,78 @@ mdlc_aon: system-controller@c1338000 {
bootph-all;
};
+ fcpvi0: fcp@c5030000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5030000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x107>;
+ resets = <&mdlc_vio 0x107>;
+ };
+
+ fcpvi1: fcp@c5031000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5031000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x108>;
+ resets = <&mdlc_vio 0x108>;
+ };
+
+ fcpvi2: fcp@c5032000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5032000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x109>;
+ resets = <&mdlc_vio 0x109>;
+ };
+
+ fcpvi3: fcp@c5033000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5033000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x10a>;
+ resets = <&mdlc_vio 0x10a>;
+ };
+
+ fcpvb0: fcp@c5038000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5038000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x102>;
+ resets = <&mdlc_vio 0x102>;
+ };
+
+ fcpvb1: fcp@c5039000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5039000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x103>;
+ resets = <&mdlc_vio 0x103>;
+ };
+
+ fcpvb2: fcp@c503a000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc503a000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x104>;
+ resets = <&mdlc_vio 0x104>;
+ };
+
+ fcpvb3: fcp@c503b000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc503b000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x105>;
+ resets = <&mdlc_vio 0x105>;
+ };
+
+ fcpvb4: fcp@c503c000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc503c000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x106>;
+ resets = <&mdlc_vio 0x106>;
+ };
+
mdlc_cmnn: system-controller@ca410000 {
compatible = "renesas,r8a78000-mdlc";
reg = <0 0xca410000 0 0x1000>;
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 04/13] arm64: renesas: r8a78000: Add VSP[BI] nodes
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (2 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 03/13] arm64: renesas: r8a78000: Add FCPV[BI] nodes Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 05/13] arm64: renesas: r8a78000: Add FCPVD and VSPD nodes Paul Elder
` (8 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Add DT nodes for the VSPB and VSPI IP cores in the R-Car X5H SoC.
Use the SGD1 clock as it is likely to be the clock used for data flow.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
Changes in v4:
- change clock from SGD4 to SGD1
---
arch/arm64/boot/dts/renesas/r8a78000.dtsi | 99 +++++++++++++++++++++++++++++++
1 file changed, 99 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/r8a78000.dtsi b/arch/arm64/boot/dts/renesas/r8a78000.dtsi
index 5caa9ab1c83a93a606c5191b71f5172158b0cc53..6db03112eaf3e37bb2577b286621d6825205cffe 100644
--- a/arch/arm64/boot/dts/renesas/r8a78000.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a78000.dtsi
@@ -1646,6 +1646,105 @@ fcpvb4: fcp@c503c000 {
resets = <&mdlc_vio 0x106>;
};
+ vspi0: vsp@c5080000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc5080000 0 0x8000>;
+ interrupts = <GIC_SPI 643 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0xfe>;
+ resets = <&mdlc_vio 0xfe>;
+
+ renesas,fcp = <&fcpvi0>;
+ };
+
+ vspi1: vsp@c5088000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc5088000 0 0x8000>;
+ interrupts = <GIC_SPI 644 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0xff>;
+ resets = <&mdlc_vio 0xff>;
+
+ renesas,fcp = <&fcpvi1>;
+ };
+
+ vspi2: vsp@c5090000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc5090000 0 0x8000>;
+ interrupts = <GIC_SPI 645 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0x100>;
+ resets = <&mdlc_vio 0x100>;
+
+ renesas,fcp = <&fcpvi2>;
+ };
+
+ vspi3: vsp@c5098000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc5098000 0 0x8000>;
+ interrupts = <GIC_SPI 646 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0x101>;
+ resets = <&mdlc_vio 0x101>;
+
+ renesas,fcp = <&fcpvi3>;
+ };
+
+ vspb0: vsp@c50c0000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc50c0000 0 0x8000>;
+ interrupts = <GIC_SPI 618 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0xf9>;
+ resets = <&mdlc_vio 0xf9>;
+
+ renesas,fcp = <&fcpvb0>;
+ };
+
+ vspb1: vsp@c50c8000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc50c8000 0 0x8000>;
+ interrupts = <GIC_SPI 619 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0xfa>;
+ resets = <&mdlc_vio 0xfa>;
+
+ renesas,fcp = <&fcpvb1>;
+ };
+
+ vspb2: vsp@c50d0000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc50d0000 0 0x8000>;
+ interrupts = <GIC_SPI 620 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0xfb>;
+ resets = <&mdlc_vio 0xfb>;
+
+ renesas,fcp = <&fcpvb2>;
+ };
+
+ vspb3: vsp@c50d8000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc50d8000 0 0x8000>;
+ interrupts = <GIC_SPI 621 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0xfc>;
+ resets = <&mdlc_vio 0xfc>;
+
+ renesas,fcp = <&fcpvb3>;
+ };
+
+ vspb4: vsp@c50e0000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc50e0000 0 0x8000>;
+ interrupts = <GIC_SPI 622 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_OTHER>;
+ power-domains = <&mdlc_vio 0x07 0xfd>;
+ resets = <&mdlc_vio 0xfd>;
+
+ renesas,fcp = <&fcpvb4>;
+ };
+
mdlc_cmnn: system-controller@ca410000 {
compatible = "renesas,r8a78000-mdlc";
reg = <0 0xca410000 0 0x1000>;
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 05/13] arm64: renesas: r8a78000: Add FCPVD and VSPD nodes
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (3 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 04/13] arm64: renesas: r8a78000: Add VSP[BI] nodes Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 06/13] media: vsp1: Support full VSPB on R-Car M3-W, M3-N and E3 Paul Elder
` (7 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
Add DT nodes for the FCPVD and VSPD IP cores in the R-Car X5H SoC.
Use the SGD1 clock as it is likely to be the clock used for data flow.
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
Changes in v4:
- change clock from SGD4 to SGD1
Changes in v3:
- Fix the mapping between VSPD and FCPVD nodes so that they all work
---
arch/arm64/boot/dts/renesas/r8a78000.dtsi | 190 ++++++++++++++++++++++++++++++
1 file changed, 190 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/r8a78000.dtsi b/arch/arm64/boot/dts/renesas/r8a78000.dtsi
index 6db03112eaf3e37bb2577b286621d6825205cffe..d62a3500790e2cbae1f9760b0eaf628e9678b355 100644
--- a/arch/arm64/boot/dts/renesas/r8a78000.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a78000.dtsi
@@ -1574,6 +1574,196 @@ mdlc_aon: system-controller@c1338000 {
bootph-all;
};
+ fcpvd0: fcp@c5010000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5010000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x7e>;
+ resets = <&mdlc_vio 0x7e>;
+ };
+
+ fcpvd1: fcp@c5011000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5011000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x7f>;
+ resets = <&mdlc_vio 0x7f>;
+ };
+
+ fcpvd2: fcp@c5012000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5012000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x80>;
+ resets = <&mdlc_vio 0x80>;
+ };
+
+ fcpvd3: fcp@c5013000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5013000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x81>;
+ resets = <&mdlc_vio 0x81>;
+ };
+
+ fcpvd4: fcp@c5014000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5014000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x82>;
+ resets = <&mdlc_vio 0x82>;
+ };
+
+ fcpvd5: fcp@c5015000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5015000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x83>;
+ resets = <&mdlc_vio 0x83>;
+ };
+
+ fcpvd6: fcp@c5016000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5016000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x84>;
+ resets = <&mdlc_vio 0x84>;
+ };
+
+ fcpvd7: fcp@c5017000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5017000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x85>;
+ resets = <&mdlc_vio 0x85>;
+ };
+
+ fcpvd8: fcp@c5018000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5018000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x86>;
+ resets = <&mdlc_vio 0x86>;
+ };
+
+ fcpvd9: fcp@c5019000 {
+ compatible = "renesas,fcpv";
+ reg = <0 0xc5019000 0 0x1000>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x87>;
+ resets = <&mdlc_vio 0x87>;
+ };
+
+ vspd0: vsp@c4800000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4800000 0 0x8000>;
+ interrupts = <GIC_SPI 623 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x70>;
+ resets = <&mdlc_vio 0x70>;
+
+ renesas,fcp = <&fcpvd0>;
+ };
+
+ vspd1: vsp@c4808000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4808000 0 0x8000>;
+ interrupts = <GIC_SPI 624 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x71>;
+ resets = <&mdlc_vio 0x71>;
+
+ renesas,fcp = <&fcpvd1>;
+ };
+
+ vspd2: vsp@c4810000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4810000 0 0x8000>;
+ interrupts = <GIC_SPI 625 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x72>;
+ resets = <&mdlc_vio 0x72>;
+
+ renesas,fcp = <&fcpvd4>;
+ };
+
+ vspd3: vsp@c4818000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4818000 0 0x8000>;
+ interrupts = <GIC_SPI 626 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x73>;
+ resets = <&mdlc_vio 0x73>;
+
+ renesas,fcp = <&fcpvd5>;
+ };
+
+ vspd4: vsp@c4820000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4820000 0 0x8000>;
+ interrupts = <GIC_SPI 627 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x74>;
+ resets = <&mdlc_vio 0x74>;
+
+ renesas,fcp = <&fcpvd8>;
+ };
+
+ vspdb0: vsp@c4828000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4828000 0 0x8000>;
+ interrupts = <GIC_SPI 628 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x75>;
+ resets = <&mdlc_vio 0x75>;
+
+ renesas,fcp = <&fcpvd2>;
+ };
+
+ vspdb1: vsp@c4830000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4830000 0 0x8000>;
+ interrupts = <GIC_SPI 629 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x76>;
+ resets = <&mdlc_vio 0x76>;
+
+ renesas,fcp = <&fcpvd3>;
+ };
+
+ vspdb2: vsp@c4838000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4838000 0 0x8000>;
+ interrupts = <GIC_SPI 630 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x77>;
+ resets = <&mdlc_vio 0x77>;
+
+ renesas,fcp = <&fcpvd6>;
+ };
+
+ vspdb3: vsp@c4840000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4840000 0 0x8000>;
+ interrupts = <GIC_SPI 631 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x78>;
+ resets = <&mdlc_vio 0x78>;
+
+ renesas,fcp = <&fcpvd7>;
+ };
+
+ vspdb4: vsp@c4848000 {
+ compatible = "renesas,vsp2";
+ reg = <0 0xc4848000 0 0x8000>;
+ interrupts = <GIC_SPI 632 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg R8A78000_CPG_SGD1_VIO_DP_TX>;
+ power-domains = <&mdlc_vio 0x07 0x79>;
+ resets = <&mdlc_vio 0x79>;
+
+ renesas,fcp = <&fcpvd9>;
+ };
+
fcpvi0: fcp@c5030000 {
compatible = "renesas,fcpv";
reg = <0 0xc5030000 0 0x1000>;
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 06/13] media: vsp1: Support full VSPB on R-Car M3-W, M3-N and E3
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (4 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 05/13] arm64: renesas: r8a78000: Add FCPVD and VSPD nodes Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 07/13] media: vsp1: Add device info entries for VSPD on X5H Paul Elder
` (6 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
The M3-W, M3-N and E3 SoCs integrate a VSPB that reports the same
version ID as the VSPBD in the H3 and H3-N, but includes additional
entities compared to the VSPBD. The VSPBD device entry in the driver
matches on the version ID only, which results in the VSPB being handled
as a VSPBD. The driver therefore doesn't support the CLU, LUT and HGO
entities in the M3-W, M3-N and E3 SoCs.
To fix it, split the device entry in two, one for the VSPBD with an
additional SoC ID match, and one for the VSPB. The VSPBD entry needs to
be listed first, otherwise the VSPB entry will match on H3 and H3-N as
well.
The VI6_IP_VERSION_MODEL_VSPBD_GEN3 macro is renamed to
VI6_IP_VERSION_MODEL_VSPB_GEN3 to indicate that the VSPBD is the special
case.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
---
drivers/media/platform/renesas/vsp1/vsp1_drv.c | 13 ++++++++++++-
drivers/media/platform/renesas/vsp1/vsp1_regs.h | 2 +-
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drv.c b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
index 762a9e776a94d50accad070068f92f6dabb81035..5597595414fe787413c7daa5a3142faa9ced8408 100644
--- a/drivers/media/platform/renesas/vsp1/vsp1_drv.c
+++ b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
@@ -781,14 +781,25 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
.wpf_count = 1,
.uapi = true,
}, {
- .version = VI6_IP_VERSION_MODEL_VSPBD_GEN3,
+ .version = VI6_IP_VERSION_MODEL_VSPB_GEN3,
.model = "VSP2-BD",
+ .soc = VI6_IP_VERSION_SOC_H3,
.gen = 3,
.features = VSP1_HAS_BRU | VSP1_HAS_WPF_VFLIP,
.rpf_count = 5,
.wpf_count = 1,
.num_bru_inputs = 5,
.uapi = true,
+ }, {
+ .version = VI6_IP_VERSION_MODEL_VSPB_GEN3,
+ .model = "VSP2-B",
+ .gen = 3,
+ .features = VSP1_HAS_BRU | VSP1_HAS_CLU | VSP1_HAS_HGO
+ | VSP1_HAS_LUT | VSP1_HAS_WPF_VFLIP,
+ .rpf_count = 5,
+ .wpf_count = 1,
+ .num_bru_inputs = 5,
+ .uapi = true,
}, {
.version = VI6_IP_VERSION_MODEL_VSPBC_GEN3,
.model = "VSP2-BC",
diff --git a/drivers/media/platform/renesas/vsp1/vsp1_regs.h b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
index 10cfbcd1b6e0b3a9c0a8daaa990babfaeb8dde0c..4c0315656e9f81a9656b58fb6f0233f8a22ac0e1 100644
--- a/drivers/media/platform/renesas/vsp1/vsp1_regs.h
+++ b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
@@ -792,7 +792,7 @@
#define VI6_IP_VERSION_MODEL_VSPS_V2H (0x12 << 8)
#define VI6_IP_VERSION_MODEL_VSPD_V2H (0x13 << 8)
#define VI6_IP_VERSION_MODEL_VSPI_GEN3 (0x14 << 8)
-#define VI6_IP_VERSION_MODEL_VSPBD_GEN3 (0x15 << 8)
+#define VI6_IP_VERSION_MODEL_VSPB_GEN3 (0x15 << 8)
#define VI6_IP_VERSION_MODEL_VSPBC_GEN3 (0x16 << 8)
#define VI6_IP_VERSION_MODEL_VSPD_GEN3 (0x17 << 8)
#define VI6_IP_VERSION_MODEL_VSPD_V3 (0x18 << 8)
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 07/13] media: vsp1: Add device info entries for VSPD on X5H
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (5 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 06/13] media: vsp1: Support full VSPB on R-Car M3-W, M3-N and E3 Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 08/13] media: rcar-fcp: Handle resets Paul Elder
` (5 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
Add device info entries for the VSPD so that the driver can match on the
VSPD on the X5H and handle its slightly different hardware configuration.
On the X5H there are two variants, the VSPD (a) and VSPD (b). As the (b)
version has a separate version number, add that as well.
The R-Car X5H uses 0x09 as the SoC ID in the version register. Document
is with a macro, as done for other R-Car SoCs.
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
Changes in v3:
- fix IP version macro
- add comment about UIF
- squashed with adding the SoC ID
---
drivers/media/platform/renesas/vsp1/vsp1_drv.c | 27 +++++++++++++++++++++++++
drivers/media/platform/renesas/vsp1/vsp1_regs.h | 2 ++
2 files changed, 29 insertions(+)
diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drv.c b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
index 5597595414fe787413c7daa5a3142faa9ced8408..6ec8c234ea29939e4aebdf56fc51ae1cc5c69156 100644
--- a/drivers/media/platform/renesas/vsp1/vsp1_drv.c
+++ b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
@@ -860,6 +860,23 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
.uif_count = 2,
.wpf_count = 2,
.num_bru_inputs = 5,
+ }, {
+ .version = VI6_IP_VERSION_MODEL_VSPD_GEN4,
+ .model = "VSP2-D (a)",
+ .soc = VI6_IP_VERSION_SOC_X5H,
+ .gen = 4,
+ .features = VSP1_HAS_BRU | VSP1_HAS_EXT_DL,
+ .lif_count = 1,
+ .rpf_count = 5,
+ /*
+ * TODO This VSP has 8 UIFs but it is not supported by the
+ * driver yet, and the driver hardcodes usage of one UIF per
+ * LIF starting at UIF4. Declare just 2 UIFs here for now until
+ * the driver supports more.
+ */
+ .uif_count = 2,
+ .wpf_count = 1,
+ .num_bru_inputs = 5,
}, {
.version = VI6_IP_VERSION_MODEL_VSPD_GEN4,
.model = "VSP2-D",
@@ -870,6 +887,16 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
.uif_count = 2,
.wpf_count = 1,
.num_bru_inputs = 5,
+ }, {
+ .version = VI6_IP_VERSION_MODEL_VSPDB_GEN5,
+ .model = "VSP2-D (b)",
+ .gen = 4,
+ .features = VSP1_HAS_BRU | VSP1_HAS_EXT_DL,
+ .lif_count = 1,
+ .rpf_count = 5,
+ .uif_count = 1,
+ .wpf_count = 1,
+ .num_bru_inputs = 5,
}, {
.version = VI6_IP_VERSION_MODEL_VSPX_GEN4,
.model = "VSP2-X",
diff --git a/drivers/media/platform/renesas/vsp1/vsp1_regs.h b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
index 4c0315656e9f81a9656b58fb6f0233f8a22ac0e1..cc4755354b7797a7a4e7592c262be2741477b81a 100644
--- a/drivers/media/platform/renesas/vsp1/vsp1_regs.h
+++ b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
@@ -800,6 +800,7 @@
#define VI6_IP_VERSION_MODEL_VSPBS_GEN3 (0x1a << 8)
#define VI6_IP_VERSION_MODEL_VSPD_GEN4 (0x1c << 8)
#define VI6_IP_VERSION_MODEL_VSPX_GEN4 (0x1d << 8)
+#define VI6_IP_VERSION_MODEL_VSPDB_GEN5 (0x20 << 8)
/* RZ/G2L SoCs have no version register, So use 0x80 as the model version */
#define VI6_IP_VERSION_MODEL_VSPD_RZG2L (0x80 << 8)
@@ -816,6 +817,7 @@
#define VI6_IP_VERSION_SOC_E3 (0x04 << 0)
#define VI6_IP_VERSION_SOC_V3U (0x05 << 0)
#define VI6_IP_VERSION_SOC_V4H (0x06 << 0)
+#define VI6_IP_VERSION_SOC_X5H (0x09 << 0)
/* RZ/G2L SoCs have no version register, So use 0x80 for SoC Identification */
#define VI6_IP_VERSION_SOC_RZG2L (0x80 << 0)
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 08/13] media: rcar-fcp: Handle resets
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (6 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 07/13] media: vsp1: Add device info entries for VSPD on X5H Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 09/13] media: vsp1: Fix access to reserved registers Paul Elder
` (4 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
On some versions of the FCP, such as the one on the X5H, reset control
is required to operate the FCP. Add support for handling resets
optionally, to continue supporting versions that do not require it.
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
---
Changes in v4:
- use devm_reset_control_get_optional_exclusive
Changes in v2:
- handle errors
---
drivers/media/platform/renesas/rcar-fcp.c | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/renesas/rcar-fcp.c b/drivers/media/platform/renesas/rcar-fcp.c
index dfb0ca93e854dd0bb8aedfb757fd786ef6e45542..d782101842af7acbb3c0675d72677bc5a4854cac 100644
--- a/drivers/media/platform/renesas/rcar-fcp.c
+++ b/drivers/media/platform/renesas/rcar-fcp.c
@@ -16,6 +16,7 @@
#include <linux/mutex.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
+#include <linux/reset.h>
#include <linux/slab.h>
#include <media/rcar-fcp.h>
@@ -29,6 +30,7 @@ struct rcar_fcp_device {
struct list_head list;
struct device *dev;
void __iomem *base;
+ struct reset_control *rstc;
};
static LIST_HEAD(fcp_devices);
@@ -162,20 +164,25 @@ static int rcar_fcp_probe(struct platform_device *pdev)
fcp->dev = &pdev->dev;
+ platform_set_drvdata(pdev, fcp);
+
fcp->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(fcp->base))
return PTR_ERR(fcp->base);
dma_set_max_seg_size(fcp->dev, UINT_MAX);
+ fcp->rstc = devm_reset_control_get_optional_exclusive(&pdev->dev, NULL);
+ if (IS_ERR(fcp->rstc))
+ return dev_err_probe(&pdev->dev, PTR_ERR(fcp->rstc),
+ "failed to get reset control\n");
+
pm_runtime_enable(&pdev->dev);
mutex_lock(&fcp_lock);
list_add_tail(&fcp->list, &fcp_devices);
mutex_unlock(&fcp_lock);
- platform_set_drvdata(pdev, fcp);
-
return 0;
}
@@ -190,6 +197,24 @@ static void rcar_fcp_remove(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev);
}
+static int fcp_pm_runtime_suspend(struct device *dev)
+{
+ struct rcar_fcp_device *fcp = dev_get_drvdata(dev);
+
+ return reset_control_assert(fcp->rstc);
+}
+
+static int fcp_pm_runtime_resume(struct device *dev)
+{
+ struct rcar_fcp_device *fcp = dev_get_drvdata(dev);
+
+ return reset_control_deassert(fcp->rstc);
+}
+
+static const struct dev_pm_ops fcp_pm_ops = {
+ RUNTIME_PM_OPS(fcp_pm_runtime_suspend, fcp_pm_runtime_resume, NULL)
+};
+
static const struct of_device_id rcar_fcp_of_match[] = {
{ .compatible = "renesas,fcpf" },
{ .compatible = "renesas,fcpv" },
@@ -202,6 +227,7 @@ static struct platform_driver rcar_fcp_platform_driver = {
.remove = rcar_fcp_remove,
.driver = {
.name = "rcar-fcp",
+ .pm = pm_ptr(&fcp_pm_ops),
.of_match_table = rcar_fcp_of_match,
.suppress_bind_attrs = true,
},
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 09/13] media: vsp1: Fix access to reserved registers
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (7 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 08/13] media: rcar-fcp: Handle resets Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 10/13] media: vsp1: Fix du_complete race condition issue Paul Elder
` (3 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Phong Hoang, Laurent Pinchart
From: Phong Hoang <phong.hoang.wz@renesas.com>
Some modules of VSP are not available in all instances,
so fix access to reserved registers.
Signed-off-by: Phong Hoang <phong.hoang.wz@renesas.com>
Reviewed-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
drivers/media/platform/renesas/vsp1/vsp1_drv.c | 34 ++++++++++++++++++--------
1 file changed, 24 insertions(+), 10 deletions(-)
diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drv.c b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
index 6ec8c234ea29939e4aebdf56fc51ae1cc5c69156..819c5eda9171d8ef7c8fc88adc959019b6bed497 100644
--- a/drivers/media/platform/renesas/vsp1/vsp1_drv.c
+++ b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
@@ -560,20 +560,34 @@ static int vsp1_device_init(struct vsp1_device *vsp1)
for (unsigned int i = 0; i < vsp1->info->uif_count; ++i)
vsp1_write(vsp1, VI6_DPR_UIF_ROUTE(i), VI6_DPR_NODE_UNUSED);
- vsp1_write(vsp1, VI6_DPR_SRU_ROUTE, VI6_DPR_NODE_UNUSED);
- vsp1_write(vsp1, VI6_DPR_LUT_ROUTE, VI6_DPR_NODE_UNUSED);
- vsp1_write(vsp1, VI6_DPR_CLU_ROUTE, VI6_DPR_NODE_UNUSED);
- vsp1_write(vsp1, VI6_DPR_HST_ROUTE, VI6_DPR_NODE_UNUSED);
- vsp1_write(vsp1, VI6_DPR_HSI_ROUTE, VI6_DPR_NODE_UNUSED);
- vsp1_write(vsp1, VI6_DPR_BRU_ROUTE, VI6_DPR_NODE_UNUSED);
+ if (vsp1_feature(vsp1, VSP1_HAS_SRU))
+ vsp1_write(vsp1, VI6_DPR_SRU_ROUTE, VI6_DPR_NODE_UNUSED);
+
+ if (vsp1_feature(vsp1, VSP1_HAS_LUT))
+ vsp1_write(vsp1, VI6_DPR_LUT_ROUTE, VI6_DPR_NODE_UNUSED);
+
+ if (vsp1_feature(vsp1, VSP1_HAS_CLU))
+ vsp1_write(vsp1, VI6_DPR_CLU_ROUTE, VI6_DPR_NODE_UNUSED);
+
+ if (vsp1_feature(vsp1, VSP1_HAS_HSIT))
+ vsp1_write(vsp1, VI6_DPR_HST_ROUTE, VI6_DPR_NODE_UNUSED);
+
+ if (vsp1_feature(vsp1, VSP1_HAS_HSIT))
+ vsp1_write(vsp1, VI6_DPR_HSI_ROUTE, VI6_DPR_NODE_UNUSED);
+
+ if (vsp1_feature(vsp1, VSP1_HAS_BRU))
+ vsp1_write(vsp1, VI6_DPR_BRU_ROUTE, VI6_DPR_NODE_UNUSED);
if (vsp1_feature(vsp1, VSP1_HAS_BRS))
vsp1_write(vsp1, VI6_DPR_ILV_BRS_ROUTE, VI6_DPR_NODE_UNUSED);
- vsp1_write(vsp1, VI6_DPR_HGO_SMPPT, (7 << VI6_DPR_SMPPT_TGW_SHIFT) |
- (VI6_DPR_NODE_UNUSED << VI6_DPR_SMPPT_PT_SHIFT));
- vsp1_write(vsp1, VI6_DPR_HGT_SMPPT, (7 << VI6_DPR_SMPPT_TGW_SHIFT) |
- (VI6_DPR_NODE_UNUSED << VI6_DPR_SMPPT_PT_SHIFT));
+ if (vsp1_feature(vsp1, VSP1_HAS_HGO))
+ vsp1_write(vsp1, VI6_DPR_HGO_SMPPT, (7 << VI6_DPR_SMPPT_TGW_SHIFT) |
+ (VI6_DPR_NODE_UNUSED << VI6_DPR_SMPPT_PT_SHIFT));
+
+ if (vsp1_feature(vsp1, VSP1_HAS_HGT))
+ vsp1_write(vsp1, VI6_DPR_HGT_SMPPT, (7 << VI6_DPR_SMPPT_TGW_SHIFT) |
+ (VI6_DPR_NODE_UNUSED << VI6_DPR_SMPPT_PT_SHIFT));
vsp1_dlm_setup(vsp1);
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 10/13] media: vsp1: Fix du_complete race condition issue
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (8 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 09/13] media: vsp1: Fix access to reserved registers Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 11/13] dt-bindings: Increase Renesas X5H MDLC PD specifier bit width Paul Elder
` (2 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Phong Hoang
From: Phong Hoang <phong.hoang.wz@renesas.com>
vsp1_du_pipeline_frame_end() runs in hardirq context and tests
drm_pipe->du_complete before calling it. vsp1_du_setup_lif() clears
the same pointer on the CRTC-disable path while holding only drm->lock,
a mutex that does not serialize against the IRQ. On SMP, du_complete
can be cleared between the NULL check and the call, leading to NULL
pointer dereference.
Therefore, fixing this issue by using READ_ONCE()/WRITE_ONCE() for
du_complete and ensuring du_private is initialized first.
Signed-off-by: Phong Hoang <phong.hoang.wz@renesas.com>
Reviewed-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
---
drivers/media/platform/renesas/vsp1/vsp1_drm.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drm.c b/drivers/media/platform/renesas/vsp1/vsp1_drm.c
index adb89e69938903e3bb617c0ea4857e1d2fcfa312..c2bf34c1e57fae45dd6d419167889f59f575434b 100644
--- a/drivers/media/platform/renesas/vsp1/vsp1_drm.c
+++ b/drivers/media/platform/renesas/vsp1/vsp1_drm.c
@@ -35,8 +35,10 @@ static void vsp1_du_pipeline_frame_end(struct vsp1_pipeline *pipe,
unsigned int completion)
{
struct vsp1_drm_pipeline *drm_pipe = to_vsp1_drm_pipeline(pipe);
+ void (*du_complete)(void *data, unsigned int status, u32 crc);
- if (drm_pipe->du_complete) {
+ du_complete = READ_ONCE(drm_pipe->du_complete);
+ if (du_complete) {
struct vsp1_entity *uif = drm_pipe->uif;
unsigned int status = completion
& (VSP1_DU_STATUS_COMPLETE |
@@ -44,7 +46,7 @@ static void vsp1_du_pipeline_frame_end(struct vsp1_pipeline *pipe,
u32 crc;
crc = uif ? vsp1_uif_get_crc(to_uif(&uif->subdev)) : 0;
- drm_pipe->du_complete(drm_pipe->du_private, status, crc);
+ du_complete(drm_pipe->du_private, status, crc);
}
if (completion & VSP1_DL_FRAME_END_INTERNAL) {
@@ -698,8 +700,8 @@ int vsp1_du_enable(struct device *dev, unsigned int pipe_index,
* Register a callback to allow us to notify the DRM driver of frame
* completion events.
*/
- drm_pipe->du_complete = cfg->callback;
drm_pipe->du_private = cfg->callback_data;
+ WRITE_ONCE(drm_pipe->du_complete, cfg->callback);
/* Disable the display interrupts. */
vsp1_write(vsp1, VI6_DISP_IRQ_STA(pipe_index), 0);
@@ -768,7 +770,7 @@ int vsp1_du_disable(struct device *dev, unsigned int pipe_index)
brx->inputs[rpf->brx_input].rpf = NULL;
}
- drm_pipe->du_complete = NULL;
+ WRITE_ONCE(drm_pipe->du_complete, NULL);
pipe->num_inputs = 0;
dev_dbg(vsp1->dev, "%s: pipe %u: releasing %s\n",
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 11/13] dt-bindings: Increase Renesas X5H MDLC PD specifier bit width
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (9 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 10/13] media: vsp1: Fix du_complete race condition issue Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH v4 12/13] media: vsp1: Complete buffers as queued in start_streaming error path Paul Elder
2026-11-09 13:34 ` [PATCH DNI v4 13/13] media: rcar-fcp: Check device revision at probe time Paul Elder
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Krzysztof Kozlowski, Laurent Pinchart
In the Renesas R-Car X5H, the module controller's power domain specifier
cell's bit width has been increased. Update the bindings documentation
to reflect this.
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
I'm guessing that the maximum number is now 512 but I can't find
definite proof of this.
---
Documentation/devicetree/bindings/power/renesas,r8a78000-mdlc.yaml | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/power/renesas,r8a78000-mdlc.yaml b/Documentation/devicetree/bindings/power/renesas,r8a78000-mdlc.yaml
index 1dba1e1b1c5b52d058d0128dc7d7bb9ad943f935..fac22c9c9cebfe22dc7045c1903889ec60357839 100644
--- a/Documentation/devicetree/bindings/power/renesas,r8a78000-mdlc.yaml
+++ b/Documentation/devicetree/bindings/power/renesas,r8a78000-mdlc.yaml
@@ -12,7 +12,8 @@ maintainers:
description:
Each instance of the R-Car X5H Module Controller (MODULE CONTROL) provides
Power Gating for up to 64 Power Domains, and Module Standby and Reset for up
- to 256 modules in the Power Domain of each Module hierarchy.
+ to 256 modules in the Power Domain of each Module hierarchy. Recent hardware
+ versions have increased the number of supported modules.
properties:
compatible:
@@ -32,14 +33,14 @@ properties:
are always on, and for which there are no MPDG bits to control them.
- The second power domain specifier cell is the module standby part, and
- must be the module number (0x00-0xff), composed of the Module System
+ must be the module number (0x00-0x1ff), composed of the Module System
Reset (MSRES) register index in the high nibble, and the Module Reset
Destination bitfield index in the low nibble.
const: 2
'#reset-cells':
description:
- The single reset specifier cell must be the module number (0x00-0xff),
+ The single reset specifier cell must be the module number (0x00-0x1ff),
and thus identical to the second power domain specifier cell.
const: 1
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v4 12/13] media: vsp1: Complete buffers as queued in start_streaming error path
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (10 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 11/13] dt-bindings: Increase Renesas X5H MDLC PD specifier bit width Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 13:34 ` [PATCH DNI v4 13/13] media: rcar-fcp: Check device revision at probe time Paul Elder
12 siblings, 0 replies; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
In the error path of vsp1_video_start_streaming, the queued buffers are
released via vsp1_video_release_buffers with the state
VB2_BUF_STATE_ERROR. This causes subsequent start_streaming calls to hit
the following warning in vb2_start_streaming:
/*
* If done_list is not empty, then start_streaming() didn't call
* vb2_buffer_done(vb, VB2_BUF_STATE_QUEUED) but STATE_ERROR or
* STATE_DONE.
*/
WARN_ON(!list_empty(&q->done_list));
Fix this by completing the queued buffers with the state set to
VB2_BUF_STATE_QUEUED in the error path of vsp1_video_start_streaming.
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
drivers/media/platform/renesas/vsp1/vsp1_video.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/media/platform/renesas/vsp1/vsp1_video.c b/drivers/media/platform/renesas/vsp1/vsp1_video.c
index b85351986fae50aa678032b05b0352dff2b5a26a..46e0d6f8a66bddb4064e52e1521f3c9da7192868 100644
--- a/drivers/media/platform/renesas/vsp1/vsp1_video.c
+++ b/drivers/media/platform/renesas/vsp1/vsp1_video.c
@@ -765,7 +765,8 @@ static int vsp1_video_setup_pipeline(struct vsp1_pipeline *pipe)
return 0;
}
-static void vsp1_video_release_buffers(struct vsp1_video *video)
+static void vsp1_video_release_buffers(struct vsp1_video *video,
+ enum vb2_buffer_state state)
{
struct vsp1_vb2_buffer *buffer;
@@ -773,7 +774,7 @@ static void vsp1_video_release_buffers(struct vsp1_video *video)
guard(spinlock_irqsave)(&video->irqlock);
list_for_each_entry(buffer, &video->irqqueue, queue)
- vb2_buffer_done(&buffer->buf.vb2_buf, VB2_BUF_STATE_ERROR);
+ vb2_buffer_done(&buffer->buf.vb2_buf, state);
INIT_LIST_HEAD(&video->irqqueue);
}
@@ -802,7 +803,7 @@ static int vsp1_video_start_streaming(struct vb2_queue *vq, unsigned int count)
if (pipe->stream_count == pipe->num_inputs) {
ret = vsp1_video_setup_pipeline(pipe);
if (ret < 0) {
- vsp1_video_release_buffers(video);
+ vsp1_video_release_buffers(video, VB2_BUF_STATE_QUEUED);
vsp1_video_cleanup_pipeline(pipe);
return ret;
}
@@ -858,7 +859,7 @@ static void vsp1_video_stop_streaming(struct vb2_queue *vq)
}
video_device_pipeline_stop(&video->video);
- vsp1_video_release_buffers(video);
+ vsp1_video_release_buffers(video, VB2_BUF_STATE_ERROR);
vsp1_video_pipeline_put(pipe);
}
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH DNI v4 13/13] media: rcar-fcp: Check device revision at probe time
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
` (11 preceding siblings ...)
2026-11-09 13:34 ` [PATCH v4 12/13] media: vsp1: Complete buffers as queued in start_streaming error path Paul Elder
@ 2026-11-09 13:34 ` Paul Elder
2026-11-09 14:10 ` Geert Uytterhoeven
12 siblings, 1 reply; 19+ messages in thread
From: Paul Elder @ 2026-11-09 13:34 UTC (permalink / raw)
To: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media, Paul Elder, Laurent Pinchart
From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Verify that the device revision register reports a valid value,
otherwise reject the device.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
---
Changes since v2:
- Add FCP type information
- Reject devices with an unsupported version
Changes since v1:
- Use devm_platform_ioremap_resource()
---
drivers/media/platform/renesas/rcar-fcp.c | 126 ++++++++++++++++++++++++++++--
1 file changed, 120 insertions(+), 6 deletions(-)
diff --git a/drivers/media/platform/renesas/rcar-fcp.c b/drivers/media/platform/renesas/rcar-fcp.c
index d782101842af7acbb3c0675d72677bc5a4854cac..93584fdc19cf46e021efeed0f47064dea96a4edb 100644
--- a/drivers/media/platform/renesas/rcar-fcp.c
+++ b/drivers/media/platform/renesas/rcar-fcp.c
@@ -14,28 +14,80 @@
#include <linux/list.h>
#include <linux/module.h>
#include <linux/mutex.h>
+#include <linux/of_device.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
+#include <linux/property.h>
#include <linux/reset.h>
#include <linux/slab.h>
#include <media/rcar-fcp.h>
-#define RCAR_FCP_REG_RST 0x0010
-#define RCAR_FCP_REG_RST_SOFTRST BIT(0)
-#define RCAR_FCP_REG_STA 0x0018
-#define RCAR_FCP_REG_STA_ACT BIT(0)
+#define RCAR_FCP_REG_VCR 0x0000
+#define RCAR_FCP_REG_VCR_CATEGORY (1 << 8)
+#define RCAR_FCP_REG_VCR_REVISION_H3_ES1 (1 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_M3W (2 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_V3M (3 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_H3 (4 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_D3 (5 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_M3N (6 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_V3H (7 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_E3 (8 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_V4H (10 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_V4M (11 << 0)
+#define RCAR_FCP_REG_VCR_REVISION_X5H_V1 (12 << 0)
+
+#define RCAR_FCP_REG_CFG0 0x0004
+#define RCAR_FCP_REG_CFG0_FCPVSEL BIT(1)
+
+#define RCAR_FCP_REG_RST 0x0010
+#define RCAR_FCP_REG_RST_RIIFRST BIT(22)
+#define RCAR_FCP_REG_RST_RSIFRST BIT(21)
+#define RCAR_FCP_REG_RST_DCMPRST BIT(20)
+#define RCAR_FCP_REG_RST_MODRST BIT(4)
+#define RCAR_FCP_REG_RST_SOFTRST BIT(0)
+
+#define RCAR_FCP_REG_STA 0x0018
+#define RCAR_FCP_REG_STA_ACT BIT(0)
+
+#define RCAR_FCP_REG_TL_CTRL 0x0070
+#define RCAR_FCP_REG_TL_CTRL_TLEN BIT(31)
+#define RCAR_FCP_REG_TL_CTRL_VPOS_C(n) ((n) << 16)
+#define RCAR_FCP_REG_TL_CTRL_VPOS_Y(n) ((n) << 0)
+
+#define RCAR_FCP_REG_PICINFO1 0x00c4
+#define RCAR_FCP_REG_PICINFO1_STRIDE_DIV16 ((n) << 0)
+
+#define RCAR_FCP_REG_BA_ANC_Y0 0x0100
+#define RCAR_FCP_REG_BA_ANC_Y1 0x0104
+#define RCAR_FCP_REG_BA_ANC_Y2 0x0108
+#define RCAR_FCP_REG_BA_ANC_C 0x010c
+#define RCAR_FCP_REG_BA_REF_Y0 0x0110
+#define RCAR_FCP_REG_BA_REF_Y1 0x0114
+#define RCAR_FCP_REG_BA_REF_Y2 0x0118
+#define RCAR_FCP_REG_BA_REF_C 0x011c
+
+enum rcar_fcp_type {
+ RCAR_FCPF,
+ RCAR_FCPV,
+};
struct rcar_fcp_device {
struct list_head list;
struct device *dev;
void __iomem *base;
struct reset_control *rstc;
+ enum rcar_fcp_type type;
};
static LIST_HEAD(fcp_devices);
static DEFINE_MUTEX(fcp_lock);
+static inline u32 rcar_fcp_read(struct rcar_fcp_device *fcp, u32 reg)
+{
+ return ioread32(fcp->base + reg);
+}
+
static inline void rcar_fcp_write(struct rcar_fcp_device *fcp, u32 reg, u32 val)
{
iowrite32(val, fcp->base + reg);
@@ -154,15 +206,62 @@ EXPORT_SYMBOL_GPL(rcar_fcp_soft_reset);
* Platform Driver
*/
+static int rcar_fcp_setup(struct rcar_fcp_device *fcp)
+{
+ static const char * const models[] = {
+ [RCAR_FCPF] = "FCPF",
+ [RCAR_FCPV] = "FCPV",
+ };
+ static struct {
+ u32 version;
+ const char *name;
+ } versions[] = {
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_H3_ES1, "H3 ES1.x" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_M3W, "M3W" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_V3M, "V3M" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_H3, "H3" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_D3, "D3" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_M3N, "M3N" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_V3H, "V3H" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_E3, "E3" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_V4H, "V4H" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_V4M, "V4M" },
+ { RCAR_FCP_REG_VCR_CATEGORY | RCAR_FCP_REG_VCR_REVISION_X5H_V1, "X5H v1.0" },
+ };
+
+ unsigned int i;
+ u32 version;
+
+ /* Check the device version register. */
+ version = rcar_fcp_read(fcp, RCAR_FCP_REG_VCR);
+
+ for (i = 0; i < ARRAY_SIZE(versions); ++i) {
+ if (versions[i].version == version)
+ break;
+ }
+
+ if (i >= ARRAY_SIZE(versions)) {
+ dev_err(fcp->dev, "Invalid FCP version 0x%08x\n", version);
+ return -ENODEV;
+ }
+
+ dev_dbg(fcp->dev, "%s %s device found\n", models[fcp->type],
+ versions[i].name);
+
+ return 0;
+}
+
static int rcar_fcp_probe(struct platform_device *pdev)
{
struct rcar_fcp_device *fcp;
+ int ret;
fcp = devm_kzalloc(&pdev->dev, sizeof(*fcp), GFP_KERNEL);
if (fcp == NULL)
return -ENOMEM;
fcp->dev = &pdev->dev;
+ fcp->type = (uintptr_t)device_get_match_data(&pdev->dev);
platform_set_drvdata(pdev, fcp);
@@ -178,12 +277,27 @@ static int rcar_fcp_probe(struct platform_device *pdev)
"failed to get reset control\n");
pm_runtime_enable(&pdev->dev);
+ ret = pm_runtime_resume_and_get(&pdev->dev);
+ if (ret < 0)
+ goto error_pm_disable;
+
+ ret = rcar_fcp_setup(fcp);
+ if (ret < 0)
+ goto error_pm_put;
+
+ pm_runtime_put(&pdev->dev);
mutex_lock(&fcp_lock);
list_add_tail(&fcp->list, &fcp_devices);
mutex_unlock(&fcp_lock);
return 0;
+
+error_pm_put:
+ pm_runtime_put(&pdev->dev);
+error_pm_disable:
+ pm_runtime_disable(&pdev->dev);
+ return ret;
}
static void rcar_fcp_remove(struct platform_device *pdev)
@@ -216,8 +330,8 @@ static const struct dev_pm_ops fcp_pm_ops = {
};
static const struct of_device_id rcar_fcp_of_match[] = {
- { .compatible = "renesas,fcpf" },
- { .compatible = "renesas,fcpv" },
+ { .compatible = "renesas,fcpf", .data = (void *)RCAR_FCPF },
+ { .compatible = "renesas,fcpv", .data = (void *)RCAR_FCPV },
{ },
};
MODULE_DEVICE_TABLE(of, rcar_fcp_of_match);
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH DNI v4 13/13] media: rcar-fcp: Check device revision at probe time
2026-11-09 13:34 ` [PATCH DNI v4 13/13] media: rcar-fcp: Check device revision at probe time Paul Elder
@ 2026-11-09 14:10 ` Geert Uytterhoeven
0 siblings, 0 replies; 19+ messages in thread
From: Geert Uytterhoeven @ 2026-11-09 14:10 UTC (permalink / raw)
To: Paul Elder
Cc: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Magnus Damm, Ulf Hansson,
Laurent Pinchart, Mauro Carvalho Chehab, Philipp Zabel,
Kieran Bingham, linux-renesas-soc, linux-clk, linux-kernel,
devicetree, linux-pm, linux-media, Laurent Pinchart
Hi Paul,
On Mon, 9 Nov 2026 at 14:36, Paul Elder
<paul.elder+renesas@ideasonboard.com> wrote:
> From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
>
> Verify that the device revision register reports a valid value,
> otherwise reject the device.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
Thanks for the update!
> ---
> Changes since v2:
You missed the changes since v3...
> --- a/drivers/media/platform/renesas/rcar-fcp.c
> +++ b/drivers/media/platform/renesas/rcar-fcp.c
> @@ -14,28 +14,80 @@
>
> -#define RCAR_FCP_REG_RST 0x0010
> -#define RCAR_FCP_REG_RST_SOFTRST BIT(0)
> -#define RCAR_FCP_REG_STA 0x0018
> -#define RCAR_FCP_REG_STA_ACT BIT(0)
> +#define RCAR_FCP_REG_VCR 0x0000
> +#define RCAR_FCP_REG_VCR_CATEGORY (1 << 8)
> +#define RCAR_FCP_REG_VCR_REVISION_H3_ES1 (1 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_M3W (2 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_V3M (3 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_H3 (4 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_D3 (5 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_M3N (6 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_V3H (7 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_E3 (8 << 0)
For R-Car V3U, the revision number is 9 (according to the documentation,
I haven't boot-verified this), which is missing.
> +#define RCAR_FCP_REG_VCR_REVISION_V4H (10 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_V4M (11 << 0)
> +#define RCAR_FCP_REG_VCR_REVISION_X5H_V1 (12 << 0)
"git grep -l renesas,fcp -- arch/arm64/boot/dts/renesas/*dtsi"
shows a few more SoCs having FCP blocks.
Interestingly, the documentation for all of the recent RZ parts (G2UL,
G2L, V2L, G3L, G3E, V2N, V2H, T2H, N2H) claims they use 9, just like
R-Car V3U.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER}
2026-11-09 13:34 ` [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER} Paul Elder
@ 2026-11-10 9:30 ` Krzysztof Kozlowski
2026-11-11 9:14 ` Paul Elder
2026-11-11 9:16 ` Krzysztof Kozlowski
1 sibling, 1 reply; 19+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-10 9:30 UTC (permalink / raw)
To: Paul Elder
Cc: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham, linux-renesas-soc, linux-clk,
linux-kernel, devicetree, linux-pm, linux-media
On Mon, Nov 09, 2026 at 10:34:22PM +0900, Paul Elder wrote:
> Add the CPG_SGDn_VIO_DP_TX and CPG_SGDn_VIO_DP_OTHER clocks that are
> used by FCPV, VSP, VCON, and DPTX cores.
>
> It should be noted that there is likely a discrepancy regarding the
> clocks. In practice it ought not to be an issue as all the clocks derive
> from the same SGD1_VIO_MAIN clock and none of them are programmable or
> gateable.
>
> According to the datasheet, the FCPV[BID] and VSPD cores use
> SGD*_VIO_DP_TXφ while the VSP[BI] cores use SGD*_VIO_DP_OTHERφ.
> However, educated guessing suggests that IP cores in the same pipeline
> should be using the same clocks:
> - FCPV[BI] -> VSP[BI]: SGD*_VIO_DP_OTHERφ
> - FCPVD -> VSPD -> VCON -> DPTX: SGD*_VIO_DP_TXφ
>
> Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
>
> ---
> Changes in v4:
> - Add all the clocks
> - remove DNI
What is DNI?
What do you expect from us on this patchset?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER}
2026-11-10 9:30 ` Krzysztof Kozlowski
@ 2026-11-11 9:14 ` Paul Elder
2026-11-11 9:16 ` Krzysztof Kozlowski
0 siblings, 1 reply; 19+ messages in thread
From: Paul Elder @ 2026-11-11 9:14 UTC (permalink / raw)
To: Krzysztof Kozlowski, Paul Elder
Cc: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham, linux-renesas-soc, linux-clk,
linux-kernel, devicetree, linux-pm, linux-media
Quoting Krzysztof Kozlowski (2026-11-10 18:30:50)
> On Mon, Nov 09, 2026 at 10:34:22PM +0900, Paul Elder wrote:
> > Add the CPG_SGDn_VIO_DP_TX and CPG_SGDn_VIO_DP_OTHER clocks that are
> > used by FCPV, VSP, VCON, and DPTX cores.
> >
> > It should be noted that there is likely a discrepancy regarding the
> > clocks. In practice it ought not to be an issue as all the clocks derive
> > from the same SGD1_VIO_MAIN clock and none of them are programmable or
> > gateable.
> >
> > According to the datasheet, the FCPV[BID] and VSPD cores use
> > SGD*_VIO_DP_TXφ while the VSP[BI] cores use SGD*_VIO_DP_OTHERφ.
> > However, educated guessing suggests that IP cores in the same pipeline
> > should be using the same clocks:
> > - FCPV[BI] -> VSP[BI]: SGD*_VIO_DP_OTHERφ
> > - FCPVD -> VSPD -> VCON -> DPTX: SGD*_VIO_DP_TXφ
> >
> > Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
> >
> > ---
> > Changes in v4:
> > - Add all the clocks
> > - remove DNI
>
> What is DNI?
Do not integrate. Most of the patches here were DNI in previous versions
because they depended on a lot of downstream things, but now those dependencies
are in the process of upstreaming so these can graduate from DNI status.
>
> What do you expect from us on this patchset?
Reviews...?
Although now that you've pointed it out the extended explanation about the
clocks probably belong in the patch adding the dt nodes and not here. I'll move
it over in the next version. We really only need the first paragraph for this
patch specifically.
Thanks,
Paul
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER}
2026-11-09 13:34 ` [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER} Paul Elder
2026-11-10 9:30 ` Krzysztof Kozlowski
@ 2026-11-11 9:16 ` Krzysztof Kozlowski
1 sibling, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-11 9:16 UTC (permalink / raw)
To: Paul Elder, Geert Uytterhoeven, Stephen Boyd, Brian Masney,
Jerome Brunet, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Magnus Damm, Ulf Hansson, Laurent Pinchart,
Mauro Carvalho Chehab, Philipp Zabel, Kieran Bingham
Cc: linux-renesas-soc, linux-clk, linux-kernel, devicetree, linux-pm,
linux-media
On 09/11/2026 14:34, Paul Elder wrote:
> Add the CPG_SGDn_VIO_DP_TX and CPG_SGDn_VIO_DP_OTHER clocks that are
> used by FCPV, VSP, VCON, and DPTX cores.
>
> It should be noted that there is likely a discrepancy regarding the
> clocks. In practice it ought not to be an issue as all the clocks derive
> from the same SGD1_VIO_MAIN clock and none of them are programmable or
> gateable.
>
> According to the datasheet, the FCPV[BID] and VSPD cores use
> SGD*_VIO_DP_TXφ while the VSP[BI] cores use SGD*_VIO_DP_OTHERφ.
> However, educated guessing suggests that IP cores in the same pipeline
> should be using the same clocks:
> - FCPV[BI] -> VSP[BI]: SGD*_VIO_DP_OTHERφ
> - FCPVD -> VSPD -> VCON -> DPTX: SGD*_VIO_DP_TXφ
>
> Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER}
2026-11-11 9:14 ` Paul Elder
@ 2026-11-11 9:16 ` Krzysztof Kozlowski
0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-11 9:16 UTC (permalink / raw)
To: Paul Elder, Paul Elder
Cc: Geert Uytterhoeven, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Magnus Damm,
Ulf Hansson, Laurent Pinchart, Mauro Carvalho Chehab,
Philipp Zabel, Kieran Bingham, linux-renesas-soc, linux-clk,
linux-kernel, devicetree, linux-pm, linux-media
On 11/11/2026 10:14, Paul Elder wrote:
> Quoting Krzysztof Kozlowski (2026-11-10 18:30:50)
>> On Mon, Nov 09, 2026 at 10:34:22PM +0900, Paul Elder wrote:
>>> Add the CPG_SGDn_VIO_DP_TX and CPG_SGDn_VIO_DP_OTHER clocks that are
>>> used by FCPV, VSP, VCON, and DPTX cores.
>>>
>>> It should be noted that there is likely a discrepancy regarding the
>>> clocks. In practice it ought not to be an issue as all the clocks derive
>>> from the same SGD1_VIO_MAIN clock and none of them are programmable or
>>> gateable.
>>>
>>> According to the datasheet, the FCPV[BID] and VSPD cores use
>>> SGD*_VIO_DP_TXφ while the VSP[BI] cores use SGD*_VIO_DP_OTHERφ.
>>> However, educated guessing suggests that IP cores in the same pipeline
>>> should be using the same clocks:
>>> - FCPV[BI] -> VSP[BI]: SGD*_VIO_DP_OTHERφ
>>> - FCPVD -> VSPD -> VCON -> DPTX: SGD*_VIO_DP_TXφ
>>>
>>> Signed-off-by: Paul Elder <paul.elder+renesas@ideasonboard.com>
>>>
>>> ---
>>> Changes in v4:
>>> - Add all the clocks
>>> - remove DNI
>>
>> What is DNI?
>
> Do not integrate. Most of the patches here were DNI in previous versions
> because they depended on a lot of downstream things, but now those dependencies
> are in the process of upstreaming so these can graduate from DNI status.
Upstream clock indices ABI does not depend on downstream at all, so
seeing this unmergeable is just confusing.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2026-11-11 9:16 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-09 13:34 [PATCH v4 00/13] media: rcar-fcp, vsp1: Enable on R-Car X5H Paul Elder
2026-11-09 13:34 ` [PATCH v4 01/13] dt-bindings: clock: renesas,r8a78000-cpg: Add CPG_SGDn_VIO_DP_{TX,OTHER} Paul Elder
2026-11-10 9:30 ` Krzysztof Kozlowski
2026-11-11 9:14 ` Paul Elder
2026-11-11 9:16 ` Krzysztof Kozlowski
2026-11-11 9:16 ` Krzysztof Kozlowski
2026-11-09 13:34 ` [PATCH v4 02/13] pmdomain: renesas: r8a78000: Add SCMI maps for VIO Paul Elder
2026-11-09 13:34 ` [PATCH v4 03/13] arm64: renesas: r8a78000: Add FCPV[BI] nodes Paul Elder
2026-11-09 13:34 ` [PATCH v4 04/13] arm64: renesas: r8a78000: Add VSP[BI] nodes Paul Elder
2026-11-09 13:34 ` [PATCH v4 05/13] arm64: renesas: r8a78000: Add FCPVD and VSPD nodes Paul Elder
2026-11-09 13:34 ` [PATCH v4 06/13] media: vsp1: Support full VSPB on R-Car M3-W, M3-N and E3 Paul Elder
2026-11-09 13:34 ` [PATCH v4 07/13] media: vsp1: Add device info entries for VSPD on X5H Paul Elder
2026-11-09 13:34 ` [PATCH v4 08/13] media: rcar-fcp: Handle resets Paul Elder
2026-11-09 13:34 ` [PATCH v4 09/13] media: vsp1: Fix access to reserved registers Paul Elder
2026-11-09 13:34 ` [PATCH v4 10/13] media: vsp1: Fix du_complete race condition issue Paul Elder
2026-11-09 13:34 ` [PATCH v4 11/13] dt-bindings: Increase Renesas X5H MDLC PD specifier bit width Paul Elder
2026-11-09 13:34 ` [PATCH v4 12/13] media: vsp1: Complete buffers as queued in start_streaming error path Paul Elder
2026-11-09 13:34 ` [PATCH DNI v4 13/13] media: rcar-fcp: Check device revision at probe time Paul Elder
2026-11-09 14:10 ` Geert Uytterhoeven
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®