Security Subsystem

The Security Subsustem contains a random number generator and crypto support for a number of cryptographic algorithms.

  • AES, DES, 3DES crypto with ECB, CBC, CNT modes
  • SHA-1, MD5 message digst
  • 128-bits, 192-bits and 256-bits key size for AES
  • 160-bits hardware PRNG with 192-bits seed (according to manual)
  • hardware 64-bit random generator (according to datasheet & manual overview)
  • 32-words RX FIFO and 32-words TX FIFO for high speed application
  • Both CPU mode and DMA mode

Driver sources

None

Registers

0x01c15000 - 0x01c15FFF

Details unknown.

Initial register values

01c15000: 00010000 00000000 00000000 00000000    ................
01c15010: 00000000 00000000 00000000 00000000    ................
01c15020: 00000000 00000000 00000000 00000000    ................
01c15030: 00000000 00000000 00000000 00000000    ................
01c15040: 00000000 60000f0f 00000000 00000000    .......`........

After fill with ffffffff

01c15000: 0f01fffd 00000000 00000000 00000000    ................
01c15010: 00000000 00000000 00000000 00000000    ................
01c15020: 00000000 ffffffff ffffffff ffffffff    ................
01c15030: ffffffff ffffffff ffffffff ffffffff    ................
01c15040: ffffffff 60001f1f 0000041f 00000000    .......`........

After fill with 00000000

01c15000: 00010004 00000000 00000000 00000000    ................
01c15010: 00000000 00000000 00000000 00000000    ................
01c15020: 00000000 00000000 00000000 00000000    ................
01c15030: 00000000 00000000 00000000 00000000    ................
01c15040: 00000000 60000000 00000000 00000000    .......`........

Interrupt

Interrupt #54

Clocks

0x01c20000 + offset

CCMUAHBCLKGATE0_REG0060 __u32 SsGate:1; //bit5, gating AHB clock for SS, 0-mask, 1-pass

volatile ccmumodule0clk_t SsClk; //0x009C, SS module clock control

typedef struct __CCMU_MODULE0_CLK
{
    __u32   ClkDiv:4;           //bit0,  clock divide ratio, divided by (m+1), 1~16 ex.
    __u32   reserved0:12;       //bit4,  reserved
    __u32   ClkPreDiv:2;        //bit16, clock pre-divide ratio, predivided by 2^n , 1/2/4/8 ex.
    __u32   reserved1:6;        //bit18, reserved
    __u32   ClkSrc:2;           //bit24, clock source select, 00-HOSC, 01-PLL6, 10-PLL5, 11-reserved
    __u32   reserved2:5;        //bit26, reserved
    __u32   SpecClkGate:1;      //bit31, Gating special clock, 0-CLOCK OFF, 1-CLOCK ON
 } __ccmu_module0_clk_t;