aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConor Dooley <conor.dooley@microchip.com>2023-03-30 20:49:01 +0100
committerConor Dooley <conor.dooley@microchip.com>2023-03-30 20:49:01 +0100
commit42458a3a65031fc659cae0be7bd2a0a630b05917 (patch)
tree8052c476de1cbd0a0ff5072b725bb2d78bd7b797
parent6880617ff1aa13b189df3ec3b0a63b9783edbc29 (diff)
downloadlinux-auto-update-v2.tar.gz
fixup! fpga: add PolarFire SoC Auto Update supportauto-update-v2
-rw-r--r--drivers/fpga/microchip-auto-update.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/fpga/microchip-auto-update.c b/drivers/fpga/microchip-auto-update.c
index 90609cb4e4c744..8ce7fd5c012659 100644
--- a/drivers/fpga/microchip-auto-update.c
+++ b/drivers/fpga/microchip-auto-update.c
@@ -258,6 +258,8 @@ static int mpfs_auto_update_set_image_address(struct mpfs_auto_update_priv *priv
size_t bytes_written = 0, bytes_read = 0;
int ret;
+ erase_size = round_up(erase_size, (u64)priv->flash->erasesize);
+
erase.addr = AUTO_UPDATE_DIRECTORY_BASE;
erase.len = erase_size;
@@ -278,7 +280,7 @@ static int mpfs_auto_update_set_image_address(struct mpfs_auto_update_priv *priv
return -EIO;
if ((*(u32 *)(buffer + AUTO_UPDATE_UPGRADE_DIRECTORY) == image_address) &&
- !(*(u32 *)(buffer + AUTO_UPDATE_UPGRADE_DIRECTORY)))
+ !(*(u32 *)(buffer + AUTO_UPDATE_UPGRADE_DIRECTORY)))
return 0;
ret = mtd_erase(priv->flash, &erase);
@@ -329,8 +331,10 @@ static int mpfs_auto_update_write_bitstream(struct fw_upload *fw_uploader, const
return -ENOMEM;
ret = mpfs_auto_update_set_image_address(priv, buffer, image_address, directory_address);
- if (ret)
+ if (ret) {
+ dev_err(priv->dev, "failed to set image address in the SPI directory: %d\n", ret);
goto out;
+ }
/*
* Now the .spi image itself can be written to the flash. Preservation
@@ -450,9 +454,8 @@ static int mpfs_auto_update_available(struct mpfs_auto_update_priv *priv)
* controller's behaviour changes so that it does generate interrupts
* for failed services, it will be required.
*/
- if (response->resp_status) {
+ if (response->resp_status)
return -EIO;
- }
/*
* Bit 5 of byte 1 is "UL_Auto Update" & if it is set, Auto Update is
@@ -462,7 +465,6 @@ static int mpfs_auto_update_available(struct mpfs_auto_update_priv *priv)
return -EPERM;
return 0;
-
}
static int mpfs_auto_update_probe(struct platform_device *pdev)
@@ -491,7 +493,7 @@ static int mpfs_auto_update_probe(struct platform_device *pdev)
init_completion(&priv->programming_complete);
- fw_uploader = firmware_upload_register(THIS_MODULE, dev, "mpfs_bitstream.spi",
+ fw_uploader = firmware_upload_register(THIS_MODULE, dev, "mpfs_bitstream",
&mpfs_auto_update_ops, priv);
if (IS_ERR(fw_uploader))
return dev_err_probe(dev, PTR_ERR(fw_uploader),