summaryrefslogtreecommitdiff
path: root/arch/arm/mach-bcm283x/mbox.c
diff options
context:
space:
mode:
authorAlexander Stein <alexanders83@web.de>2015-07-24 09:22:13 +0200
committerTom Rini <trini@konsulko.com>2015-08-12 20:47:42 -0400
commit4342557fad308dd4ca8f9c2e74ea4f2dbddd5685 (patch)
tree6c7b10c7dd18d461dcd6fbc2449eae3644c9bb77 /arch/arm/mach-bcm283x/mbox.c
parent927753aeb93f100d73b7ed034238633df41891bc (diff)
downloadu-boot-imx-4342557fad308dd4ca8f9c2e74ea4f2dbddd5685.zip
u-boot-imx-4342557fad308dd4ca8f9c2e74ea4f2dbddd5685.tar.gz
u-boot-imx-4342557fad308dd4ca8f9c2e74ea4f2dbddd5685.tar.bz2
arm/mach-bcm283x/mbox: Flush and invalidate dcache when using fw mailbox
When using dcache the setup data for the mailbox must be actually written into memory before calling into firmware. Thus flush and invalidate the memory. Signed-off-by: Alexander Stein <alexanders83@web.de> Acked-by: Stephen Warren <swarren@wwwdotorg.org> Tested-by: Stephen Warren <swarren@wwwdotorg.org>
Diffstat (limited to 'arch/arm/mach-bcm283x/mbox.c')
-rw-r--r--arch/arm/mach-bcm283x/mbox.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/arm/mach-bcm283x/mbox.c b/arch/arm/mach-bcm283x/mbox.c
index 1af9be7..311bd8f 100644
--- a/arch/arm/mach-bcm283x/mbox.c
+++ b/arch/arm/mach-bcm283x/mbox.c
@@ -111,9 +111,18 @@ int bcm2835_mbox_call_prop(u32 chan, struct bcm2835_mbox_hdr *buffer)
dump_buf(buffer);
#endif
+ flush_dcache_range((unsigned long)buffer,
+ (unsigned long)((void *)buffer +
+ roundup(buffer->buf_size, ARCH_DMA_MINALIGN)));
+
ret = bcm2835_mbox_call_raw(chan, phys_to_bus((u32)buffer), &rbuffer);
if (ret)
return ret;
+
+ invalidate_dcache_range((unsigned long)buffer,
+ (unsigned long)((void *)buffer +
+ roundup(buffer->buf_size, ARCH_DMA_MINALIGN)));
+
if (rbuffer != phys_to_bus((u32)buffer)) {
printf("mbox: Response buffer mismatch\n");
return -1;