tee: generic TEE subsystem

Initial patch for generic TEE subsystem.
This subsystem provides:
* Registration/un-registration of TEE drivers.
* Shared memory between normal world and secure world.
* Ioctl interface for interaction with user space.
* Sysfs implementation_id of TEE driver

A TEE (Trusted Execution Environment) driver is a driver that interfaces
with a trusted OS running in some secure environment, for example,
TrustZone on ARM cpus, or a separate secure co-processor etc.

The TEE subsystem can serve a TEE driver for a Global Platform compliant
TEE, but it's not limited to only Global Platform TEEs.

This patch builds on other similar implementations trying to solve
the same problem:
* "optee_linuxdriver" by among others
  Jean-michel DELORME<[email protected]> and
  Emmanuel MICHEL <[email protected]>
* "Generic TrustZone Driver" by Javier González <[email protected]>

Acked-by: Andreas Dannenberg <[email protected]>
Tested-by: Jerome Forissier <[email protected]> (HiKey)
Tested-by: Volodymyr Babchuk <[email protected]> (RCAR H3)
Tested-by: Scott Branden <[email protected]>
Reviewed-by: Javier González <[email protected]>
Signed-off-by: Jens Wiklander <[email protected]>
This commit is contained in:
Jens Wiklander 2015-03-11 14:39:39 +01:00
commit 967c9cca2c
12 changed files with 2182 additions and 0 deletions

View file

@ -177,3 +177,4 @@ obj-$(CONFIG_ANDROID) += android/
obj-$(CONFIG_NVMEM) += nvmem/
obj-$(CONFIG_FPGA) += fpga/
obj-$(CONFIG_FSI) += fsi/
obj-$(CONFIG_TEE) += tee/