]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/mach-bcm283x/mbox.c
Merge git://git.denx.de/u-boot-rockchip
[u-boot] / arch / arm / mach-bcm283x / mbox.c
index 3b17a31eacfd6e5ab092e53bca87c4d0d408ca92..ec3f417f40f4356669570245d1c4ecaefcaffb5d 100644 (file)
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/mbox.h>
+#include <phys2bus.h>
 
 #define TIMEOUT 1000 /* ms */
 
@@ -110,10 +111,21 @@ int bcm2835_mbox_call_prop(u32 chan, struct bcm2835_mbox_hdr *buffer)
        dump_buf(buffer);
 #endif
 
-       ret = bcm2835_mbox_call_raw(chan, (u32)buffer, &rbuffer);
+       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((unsigned long)buffer),
+                                   &rbuffer);
        if (ret)
                return ret;
-       if (rbuffer != (u32)buffer) {
+
+       invalidate_dcache_range((unsigned long)buffer,
+                               (unsigned long)((void *)buffer +
+                               roundup(buffer->buf_size, ARCH_DMA_MINALIGN)));
+
+       if (rbuffer != phys_to_bus((unsigned long)buffer)) {
                printf("mbox: Response buffer mismatch\n");
                return -1;
        }