aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/soc
diff options
context:
space:
mode:
authorConor Dooley <conor.dooley@microchip.com>2023-10-20 14:18:42 +0100
committerConor Dooley <conor.dooley@microchip.com>2023-12-06 12:06:18 +0000
commitfad13b5b73e0689d19316e5d62341d8396bb261e (patch)
treeb4b11ea4ac51253039ceba59ad0af5122de4fab3 /drivers/soc
parenta8f00589be7b9dfeae801bd3087ec7da57c1913e (diff)
downloadlinux-fad13b5b73e0689d19316e5d62341d8396bb261e.tar.gz
soc: microchip: mpfs: add auto-update subdev to system controller
The PolarFire SoC's system controller offers the ability to re-program the FPGA from a user application via two, related, mechanisms. In-Application Programming (IAP) is not ideal for use in Linux, as it will immediately take down the system when requested. Auto Update is preferred, as it will only take affect at device power up*, allowing the OS (and potential applications in AMP) to be shut down gracefully. * Auto Update occurs at device initialisation, which can also be triggered by device reset - possible with the v2023.02 version of the Hart Software Services (HSS) and reference design. Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/microchip/mpfs-sys-controller.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/soc/microchip/mpfs-sys-controller.c b/drivers/soc/microchip/mpfs-sys-controller.c
index d438efde32782..7a4936019329c 100644
--- a/drivers/soc/microchip/mpfs-sys-controller.c
+++ b/drivers/soc/microchip/mpfs-sys-controller.c
@@ -118,7 +118,11 @@ static struct platform_device subdevs[] = {
{
.name = "mpfs-generic-service",
.id = -1,
- }
+ },
+ {
+ .name = "mpfs-auto-update",
+ .id = -1,
+ },
};
static int mpfs_sys_controller_probe(struct platform_device *pdev)
@@ -160,7 +164,6 @@ no_flash:
platform_set_drvdata(pdev, sys_controller);
- dev_info(&pdev->dev, "Registered MPFS system controller\n");
for (i = 0; i < ARRAY_SIZE(subdevs); i++) {
subdevs[i].dev.parent = dev;
@@ -168,6 +171,8 @@ no_flash:
dev_warn(dev, "Error registering sub device %s\n", subdevs[i].name);
}
+ dev_info(&pdev->dev, "Registered MPFS system controller\n");
+
return 0;
}