Here is my answers, hope they help you:
- Yes, address is translated by the MMU. Address passed to
writel
should be Virtual Address (VA) obtained viaioremap
call.ioremap
will take Physical Address (PA). - No, address is not translated by the MMU. Address passed to DMA should be Physical Address. A typical DMA is a dedicated peripheral which exists outside of the MMU.
- You have to search, for example, 'bcm2835 arm peripherals', not 'Kernel Memory Layout on ARM Linux'. As a hint, if you want to find register location inside linux kernel, do search for
ioremap
inside linux-kernel-tree/arch/arm.