|
@@ -240,6 +240,8 @@ static int sproc_drv_remove(struct platform_device *pdev)
|
|
|
|
|
|
/* Unregister as remoteproc device */
|
|
|
rproc_del(sproc->rproc);
|
|
|
+ dma_free_coherent(sproc->rproc->dev.parent, SPROC_FW_SIZE,
|
|
|
+ sproc->fw_addr, sproc->fw_dma_addr);
|
|
|
rproc_put(sproc->rproc);
|
|
|
|
|
|
mdev->drv_data = NULL;
|
|
@@ -297,10 +299,13 @@ static int sproc_probe(struct platform_device *pdev)
|
|
|
/* Register as a remoteproc device */
|
|
|
err = rproc_add(rproc);
|
|
|
if (err)
|
|
|
- goto free_rproc;
|
|
|
+ goto free_mem;
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
+free_mem:
|
|
|
+ dma_free_coherent(rproc->dev.parent, SPROC_FW_SIZE,
|
|
|
+ sproc->fw_addr, sproc->fw_dma_addr);
|
|
|
free_rproc:
|
|
|
/* Reset device data upon error */
|
|
|
mdev->drv_data = NULL;
|