X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=arch%2Farm%2Fmach-bcm283x%2Fmbox.c;h=ec3f417f40f4356669570245d1c4ecaefcaffb5d;hb=fafa440342a50191504c1da7515ed6e28c933396;hp=1af9be78c68a3ccb5ba019a3f1e95e9122160142;hpb=20913018fbce5a2e3c93b6eeb56e67460e29542c;p=u-boot diff --git a/arch/arm/mach-bcm283x/mbox.c b/arch/arm/mach-bcm283x/mbox.c index 1af9be78c6..ec3f417f40 100644 --- a/arch/arm/mach-bcm283x/mbox.c +++ b/arch/arm/mach-bcm283x/mbox.c @@ -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; }