- interrupts: VSP interrupt specifier.
   - clocks: A phandle + clock-specifier pair for the VSP functional clock.
 
+Optional properties:
+
+  - renesas,fcp: A phandle referencing the FCP that handles memory accesses
+                 for the VSP. Not needed on Gen2, mandatory on Gen3.
+
 
 Example: R8A7790 (R-Car H2) VSP1-S node
 
 
        tristate "Renesas VSP1 Video Processing Engine"
        depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && HAS_DMA
        depends on (ARCH_RENESAS && OF) || COMPILE_TEST
+       depends on !ARM64 || VIDEO_RENESAS_FCP
        select VIDEOBUF2_DMA_CONTIG
        ---help---
          This is a V4L2 driver for the Renesas VSP1 video processing engine.
 
 #include <linux/pm_runtime.h>
 #include <linux/videodev2.h>
 
+#include <media/rcar-fcp.h>
 #include <media/v4l2-subdev.h>
 
 #include "vsp1.h"
 
 static int vsp1_pm_runtime_suspend(struct device *dev)
 {
+       struct vsp1_device *vsp1 = dev_get_drvdata(dev);
+
+       rcar_fcp_disable(vsp1->fcp);
+
        return 0;
 }
 
                        return ret;
        }
 
-       return 0;
+       return rcar_fcp_enable(vsp1->fcp);
 }
 
 static const struct dev_pm_ops vsp1_pm_ops = {
 static int vsp1_probe(struct platform_device *pdev)
 {
        struct vsp1_device *vsp1;
+       struct device_node *fcp_node;
        struct resource *irq;
        struct resource *io;
        unsigned int i;
                return ret;
        }
 
+       /* FCP (optional) */
+       fcp_node = of_parse_phandle(pdev->dev.of_node, "renesas,fcp", 0);
+       if (fcp_node) {
+               vsp1->fcp = rcar_fcp_get(fcp_node);
+               of_node_put(fcp_node);
+               if (IS_ERR(vsp1->fcp)) {
+                       dev_dbg(&pdev->dev, "FCP not found (%ld)\n",
+                               PTR_ERR(vsp1->fcp));
+                       return PTR_ERR(vsp1->fcp);
+               }
+       }
+
        /* Configure device parameters based on the version register. */
        pm_runtime_enable(&pdev->dev);
 
        struct vsp1_device *vsp1 = platform_get_drvdata(pdev);
 
        vsp1_destroy_entities(vsp1);
+       rcar_fcp_put(vsp1->fcp);
 
        pm_runtime_disable(&pdev->dev);