Add platform support

TS project structure and build system extended to accommodate
hardware specific drivers. The concept of a platform is introduced
to allow hardware specific drivers from external providers to be
used. This change implements the Portability Model described in
the project documentation.

Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: I61e678ae103e0bf139f2c440ba6cd010620af37e
diff --git a/components/service/crypto/provider/mbedcrypto/crypto_provider.c b/components/service/crypto/provider/mbedcrypto/crypto_provider.c
index bbbf169..a12f625 100644
--- a/components/service/crypto/provider/mbedcrypto/crypto_provider.c
+++ b/components/service/crypto/provider/mbedcrypto/crypto_provider.c
@@ -7,6 +7,7 @@
 #include <stdlib.h>
 #include <protocols/service/crypto/packed-c/opcodes.h>
 #include <service/crypto/provider/mbedcrypto/crypto_provider.h>
+#include <service/crypto/provider/mbedcrypto/entropy_adapter/entropy_adapter.h>
 #include <service/secure_storage/client/psa/its/its_client.h>
 #include <protocols/rpc/common/packed-c/status.h>
 #include <psa/crypto.h>
@@ -44,10 +45,13 @@
 };
 
 struct rpc_interface *mbed_crypto_provider_init(struct mbed_crypto_provider *context,
-                                        struct rpc_caller *storage_provider)
+                                        struct rpc_caller *storage_provider,
+                                        void *entropy_adapter_config)
 {
     struct rpc_interface *rpc_interface = NULL;
 
+    entropy_adapter_init(entropy_adapter_config);
+
     /*
      * A storage provider is required for persistent key storage.  As this
      * is a mandatory feature of the crypto service, insist on a storage
@@ -72,6 +76,7 @@
 void mbed_crypto_provider_deinit(struct mbed_crypto_provider *context)
 {
     (void)context;
+    entropy_adapter_deinit();
 }
 
 void mbed_crypto_provider_register_serializer(struct mbed_crypto_provider *context,