]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/mach-bcm283x/mbox.c
board: sama5d4_xplained: Set mac address from eeprom
[u-boot] / arch / arm / mach-bcm283x / mbox.c
index 1af9be78c68a3ccb5ba019a3f1e95e9122160142..ec3f417f40f4356669570245d1c4ecaefcaffb5d 100644 (file)
@@ -111,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, phys_to_bus((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 != phys_to_bus((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;
        }