zynq: add TrustZone generic address support

In a TrustZone enabled target, devices can be mapped to TrustZone's normal or
secure world. This has an impact with regards to the memory addresses that are
to be used: the normal world access virtual addresses that have been previously
mapped to the kernel address space using ioremap; the secure world does not
necessarily have the capacity to resolve these I/O memory mapped addresses. The
decision of which devices are mapped to which world is the developer's, who
needs to make sure that the devices mapped to the secure world are interpreted
there both at boot- and run-time.

In the case of Zynq, the secure world access physical addresses; these addresses
can be obtained by (i) obtaining the device's base address from the device tree,
and (ii) masking I/O mapped addresses, since these are aligned to physical ones.

This patch is a first effort to enable the use of TrustZone by simply
specifiying directly in the device tree if a device is to be mapped to the
secure or to the normal world. The tag used in the device tree is "arm-world",
where <0> represents the normal world, and <1> the secure world. Even when the
address mapping is target specific, no hard-coded addresses are used.

TODO: Move the address translation operations to trustzone.c so that each target
can implement the address mapping function, while providing a standard
translation interface.

TODO: Complete infrastructure to map all devices to the secure world.

Signed-off-by: Javier Gonzalez <jgon@itu.dk>