cmem7_aes.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. *****************************************************************************
  3. * @file cmem7_aes.c
  4. *
  5. * @brief CMEM7 AES source file
  6. *
  7. *
  8. * @version V1.0
  9. * @date 3. September 2013
  10. *
  11. * @note
  12. *
  13. *****************************************************************************
  14. * @attention
  15. *
  16. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  17. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  18. * TIME. AS A RESULT, CAPITAL-MICRO SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  19. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  20. * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  21. * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  22. *
  23. * <h2><center>&copy; COPYRIGHT 2013 Capital-micro </center></h2>
  24. *****************************************************************************
  25. */
  26. #include "cmem7_aes.h"
  27. BOOL AES_Decrypt(const void *src, void *dst, uint32_t len)
  28. {
  29. uint32_t *po = dst;
  30. const uint32_t *pi = src;
  31. if (len & 0xF)
  32. return FALSE;
  33. AES->FIFO_CLEAR = 1;
  34. AES->FIFO_CLEAR = 0;
  35. GLOBAL_CTRL->AES_BURST_TYPE = 0x1; // Cannot be 0
  36. while (len > 0) {
  37. while (0 == GLOBAL_CTRL->AES_STATUS_b.IDLE); // 0x41007010
  38. udelay(2);
  39. GLOBAL_CTRL->AES_TARGET_ADDR = (uint32_t)po; // 0x41800000;
  40. po += 4;
  41. len -= 4 * sizeof(uint32_t);
  42. while (0 == GLOBAL_CTRL->AES_STATUS_b.RD_EMPTY); // 0x41007010
  43. AES->FIFO = *pi++;
  44. AES->FIFO = *pi++;
  45. AES->FIFO = *pi++;
  46. AES->FIFO = *pi++;
  47. }
  48. return TRUE;
  49. }