tf_driver: integrate latest TL release:
Marvin Zhang [Tue, 3 Apr 2012 19:53:58 +0000 (12:53 -0700)]
Tegra 2 version: TF_TEGRA2_AA01.09.34784
Tegra 3 version: TF_TEGRA3_AB01.08.34931

Add dynamic support for UART used by the Secure World trace driver.
The files are from the Tegra 3 version of SDK.

Bug 960201.

Change-Id: I14c3cfc35f81d3a37981e82760c2a2259164a904
Signed-off-by: Marvin Zhang <mzhang@nvidia.com>
Reviewed-on: http://git-master/r/94306
(cherry picked from commit 173b55aa4d30fc3771719093d675972fca600cd3)
Reviewed-on: http://git-master/r/104037
Reviewed-by: Chris Johnson <cwj@nvidia.com>
Reviewed-by: Karan Jhavar <kjhavar@nvidia.com>
Tested-by: Karan Jhavar <kjhavar@nvidia.com>
Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
GVS: Gerrit_Virtual_Submit

security/tf_driver/Makefile
security/tf_driver/s_version.h
security/tf_driver/tf_comm_tz.c
security/tf_driver/tf_protocol.h

index dfadb7d..5c48f62 100644 (file)
@@ -21,7 +21,7 @@
 # debug options
 #EXTRA_CFLAGS += -O0 -DDEBUG -D_DEBUG -DCONFIG_TF_DRIVER_DEBUG_SUPPORT
 EXTRA_CFLAGS += -DNDEBUG
-EXTRA_CFLAGS += -DLINUX -DCONFIG_TF_TRUSTZONE -DCONFIG_TFN
+EXTRA_CFLAGS += -DLINUX -DCONFIG_TF_TRUSTZONE -DCONFIG_TFN -DCONFIG_SECURE_TRACES
 
 ifdef S_VERSION_BUILD
 EXTRA_CFLAGS += -DS_VERSION_BUILD=$(S_VERSION_BUILD)
index ba4d48c..d812cdc 100644 (file)
  */
 
 #define S_VERSION_OS "A"          /* "A" for all Android */
-#define S_VERSION_PLATFORM "A"    /* "A" for Tegra2 */
+#define S_VERSION_PLATFORM "B"    /* "B" for Tegra3 */
 
 /*
  * This version number must be updated for each new release
  */
-#define S_VERSION_MAIN  "01.07"
+#define S_VERSION_MAIN  "01.08"
 
 /*
 * If this is a patch or engineering version use the following
index 4c89de8..4628f24 100644 (file)
@@ -194,6 +194,20 @@ static inline void tf_smc_nyield(void)
        tf_smc_generic_call(&generic_smc);
 }
 
+#ifdef CONFIG_SECURE_TRACES
+static void tf_print_secure_traces(struct tf_comm *comm)
+{
+       spin_lock(&(comm->lock));
+       if (comm->l1_buffer->traces_status != 0) {
+               if (comm->l1_buffer->traces_status > 1)
+                       pr_info("TF : traces lost...\n");
+               pr_info("TF : %s", comm->l1_buffer->traces_buffer);
+               comm->l1_buffer->traces_status = 0;
+       }
+       spin_unlock(&(comm->lock));
+}
+#endif
+
 /* Yields the Secure World */
 int tf_schedule_secure_world(struct tf_comm *comm)
 {
@@ -202,6 +216,10 @@ int tf_schedule_secure_world(struct tf_comm *comm)
        /* yield to the Secure World */
        tf_smc_nyield();
 
+#ifdef CONFIG_SECURE_TRACES
+       tf_print_secure_traces(comm);
+#endif
+
        return 0;
 }
 
index 403df8e..b264f04 100644 (file)
@@ -659,6 +659,10 @@ struct tf_l1_shared_buffer {
        #ifdef CONFIG_TF_ZEBRA
        u8  rpc_trace_buffer[140];
        u8  rpc_cus_buffer[180];
+       #elif CONFIG_SECURE_TRACES
+       u32 traces_status;
+       u8  traces_buffer[140];
+       u8  reserved3[176];
        #else
        u8  reserved3[320];
        #endif