summaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2023-03-16 15:12:52 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2023-03-16 15:12:52 +0100
commit9b6c8c0aa005554673b1a95f5ae8db72f60a589b (patch)
tree3714e47c0286d235bfb4443d54989471864bda31 /arch/mips
parent88000c146a55cf0758007fadcac870e54e227256 (diff)
parent840cbe82579563346ee9097524123c17818fbf60 (diff)
downloadbarebox-9b6c8c0aa005554673b1a95f5ae8db72f60a589b.tar.gz
barebox-9b6c8c0aa005554673b1a95f5ae8db72f60a589b.tar.xz
Merge branch 'for-next/mips' into next
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/lib/bootm.c10
-rw-r--r--arch/mips/lib/dma-default.c36
2 files changed, 24 insertions, 22 deletions
diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c
index 655535737e..19d82ec375 100644
--- a/arch/mips/lib/bootm.c
+++ b/arch/mips/lib/bootm.c
@@ -57,25 +57,25 @@ static int do_bootm_elf(struct image_data *data)
fdt = bootm_get_devicetree(data);
if (IS_ERR(fdt)) {
- ret = PTR_ERR(fdt);
- goto bootm_free_fdt;
+ pr_err("Failed to load dtb\n");
+ return PTR_ERR(fdt);
}
pr_info("Starting application at 0x%08lx, dts 0x%08lx...\n",
- phys_to_virt(data->os_address), data->of_root_node);
+ data->os_address, data->of_root_node);
if (data->dryrun)
goto bootm_free_fdt;
ret = of_overlay_load_firmware();
if (ret)
- return ret;
+ goto bootm_free_fdt;
shutdown_barebox();
entry = (void *) (unsigned long) data->os_address;
- entry(-2, phys_to_virt((unsigned long)fdt));
+ entry(-2, fdt);
pr_err("ELF application terminated\n");
ret = -EINVAL;
diff --git a/arch/mips/lib/dma-default.c b/arch/mips/lib/dma-default.c
index 48176e5d28..0347d7a7db 100644
--- a/arch/mips/lib/dma-default.c
+++ b/arch/mips/lib/dma-default.c
@@ -6,35 +6,37 @@
#include <dma.h>
#include <asm/io.h>
-static inline void __dma_sync_mips(unsigned long addr, size_t size,
- enum dma_data_direction direction)
+void dma_sync_single_for_cpu(dma_addr_t address, size_t size,
+ enum dma_data_direction dir)
{
- switch (direction) {
+ unsigned long virt = (unsigned long)phys_to_virt(address);
+
+ switch (dir) {
case DMA_TO_DEVICE:
- dma_flush_range(addr, addr + size);
break;
-
case DMA_FROM_DEVICE:
- dma_inv_range(addr, addr + size);
- break;
-
case DMA_BIDIRECTIONAL:
- dma_flush_range(addr, addr + size);
+ dma_inv_range(virt, virt + size);
break;
-
default:
BUG();
}
}
-void dma_sync_single_for_cpu(dma_addr_t address, size_t size,
- enum dma_data_direction dir)
-{
- __dma_sync_mips(address, size, dir);
-}
-
void dma_sync_single_for_device(dma_addr_t address, size_t size,
enum dma_data_direction dir)
{
- __dma_sync_mips(address, size, dir);
+ unsigned long virt = (unsigned long)phys_to_virt(address);
+
+ switch (dir) {
+ case DMA_FROM_DEVICE:
+ dma_inv_range(virt, virt + size);
+ break;
+ case DMA_TO_DEVICE:
+ case DMA_BIDIRECTIONAL:
+ dma_flush_range(virt, virt + size);
+ break;
+ default:
+ BUG();
+ }
}