axidma: xilinx: Fix constant compilation error

Add XILINX_DMA_IP_VDMA to avoid compilation error in axidma

Signed-off-by: Javier Gonzalez <jgon@itu.dk>
Add generic TrustZone driver

This commit introduces a generic TrustZone driver to the Linux Kernel. Since
there is no place to add drivers related to secure processors, a new subsystem
for secure hardware in general (drivers/sechw) is also introduced.

Today, TrustZone solutions are implementation specific. In user space, mobile
devices are normally compliant with Global Platform's API
<http://www.globalplatform.org>. However, there is no common TrustZone interface
for kernel space, as it exists for Trusted Computing Module (TPM). As a result,
different TrustZone frameworks use different kernel loadable modules to provide
the context to communicate with the Trusted Execution Environment leveraged by
TrustZone's secure world.

Regarding use cases, TrustZone has traditionally been used for offloading secure
tasks to the secure world. Examples include banking applications, Digital Rights
Management (DRM), or specific secure solutions. As more and more frameworks
enabling TrustZone appear, new use cases are starting to emerge: key management,
encryption, integrity checking, etc. Extreme cases today involve  running a RTOS
in the secure world, or using the secure world to implement usage control
policies governing the normal world. The advent of ARMv8 will only expand this
list.

This commit introduces a generic TrustZone driver for kernel space. The first
design goal is to be flexible enough as to NOT introduce policy regarding the
TrustZone interface. In this way, we introduce a simple session based read/write
interface where several TrustZone drivers can potentially be used. The design is
simple and it consist on an interface that different TrustZone drivers can
implement to communicate with the specific frameworks.

Specific contributions in this patch are:
- TrustZone generic driver:
	- Generic read/write TrustZone interface implemented as pointers to
	functions that are to be implemented by specific TrustZone drivers.
- Secure hardware subsystem:
	- Introduction of a subsystem in drivers/sechw to contain drivers
	concerning secure hardware. TPM is a good candidate.

Signed-off-by: Javier Gonzalez <javier@javigon.com>
Open Virtualization driver

Sierraware's Open Virtualization driver. It allows to communicate to Open
Virtualization's TEE to execute sensitive tasks in the secure world.

This patch is based on SierraWare's Open Virtualization kernel driver and header
files. This code is not directly usable in kernel space; the intention behind
this patch is to give Sierraware the recognition of creating the base driver to
communicate to Open Virtualization.

Copyright and contribution belongs to Sierraware. Documentation can be found at
www.openvirtualization.org

Signed-off-by: Javier Gonzalez <javier@javigon.com>
TrustZone driver: wrap OV driver

Refactor Open Virtualization's driver and wrap it to work with the TrustZone
generic interface.

Specific contributions in this patch are:
- Sierraware's Open Virtualization driver:
	- Fix 2 memory leaks that (i) did not free 256B per encoded message to
	the secure world, and (ii) did not free 4B also per message to the
	secure world.
	- Add a set of non-locking operations to communicate to the TrustZone
	driver, delegating locking to the caller.
	- Reduce the number of locking instructions per message to the secure world.
	- Refactor code to minimize replication and make it possible to use the
	generic interface
	- Clean up code to make it compliant with Kernel standards.

Signed-off-by: Javier Gonzalez <javier@javigon.com>