ACE H/W acceleration support is added to hash
which can be used to test SHA 256 hash algorithm.

Tested with command "hash sha256 0x40008000 0x2B 0x40009000".
Used mm and md to write a standard string to memory location
0x40008000 and ran the above command to verify the output.

Change-Id: If76820057763e833a6150e55bffea3d010b86721
Signed-off-by: ARUN MANKUZHI <aru...@samsung.com>
Signed-off-by: Akshay Saraswat <aksha...@samsung.com>
---
Changes sice v2:
        - Added new nodes for SHA1 and SHA256 in struct hash_algo for the case 
when ACE is enabled.
        - Added new declaration for function pointer hash_func_ws with 
different return type.

 common/hash.c  | 15 +++++++++++++++
 include/hash.h |  5 +++++
 2 files changed, 20 insertions(+)

diff --git a/common/hash.c b/common/hash.c
index e3a6e43..b8f9d29 100644
--- a/common/hash.c
+++ b/common/hash.c
@@ -28,12 +28,26 @@
 #include <hash.h>
 #include <sha1.h>
 #include <sha256.h>
+#include <ace_sha.h>
 
 /*
  * These are the hash algorithms we support. Chips which support accelerated
  * crypto could perhaps add named version of these algorithms here.
  */
 static struct hash_algo hash_algo[] = {
+#ifdef CONFIG_EXYNOS_ACE_SHA
+       {
+               "SHA1",
+               SHA1_SUM_LEN,
+               ace_sha_hash_digest,
+               ACE_SHA_TYPE_SHA1,
+       }, {
+               "SHA256",
+               SHA256_SUM_LEN,
+               ace_sha_hash_digest,
+               ACE_SHA_TYPE_SHA256,
+       },
+#else
 #ifdef CONFIG_SHA1
        {
                "SHA1",
@@ -50,6 +64,7 @@ static struct hash_algo hash_algo[] = {
                CHUNKSZ_SHA256,
        },
 #endif
+#endif
 };
 
 /**
diff --git a/include/hash.h b/include/hash.h
index 34ba558..83e1fb6 100644
--- a/include/hash.h
+++ b/include/hash.h
@@ -40,8 +40,13 @@ struct hash_algo {
         * @output:     Checksum result (length depends on algorithm)
         * @chunk_sz:   Trigger watchdog after processing this many bytes
         */
+#ifdef CONFIG_EXYNOS_ACE_SHA
+       int (*hash_func_ws)(const unsigned char *input, unsigned int ilen,
+               unsigned char *output, unsigned int chunk_sz);
+#else
        void (*hash_func_ws)(const unsigned char *input, unsigned int ilen,
                unsigned char *output, unsigned int chunk_sz);
+#endif
        int chunk_size;                         /* Watchdog chunk size */
 };
 
-- 
1.8.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to