diff options
author | Conor Dooley <conor.dooley@microchip.com> | 2023-03-30 20:49:01 +0100 |
---|---|---|
committer | Conor Dooley <conor.dooley@microchip.com> | 2023-03-30 20:49:01 +0100 |
commit | 42458a3a65031fc659cae0be7bd2a0a630b05917 (patch) | |
tree | 8052c476de1cbd0a0ff5072b725bb2d78bd7b797 | |
parent | 6880617ff1aa13b189df3ec3b0a63b9783edbc29 (diff) | |
download | linux-auto-update-v2.tar.gz |
fixup! fpga: add PolarFire SoC Auto Update supportauto-update-v2
-rw-r--r-- | drivers/fpga/microchip-auto-update.c | 14 |
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), |