Subversion Repositories freemyipod

Rev

Rev 265 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 265 Rev 387
Line 25... Line 25...
25
#include "hwkeyaes.h"
25
#include "hwkeyaes.h"
26
#include "s5l8701.h"
26
#include "s5l8701.h"
27
#include "thread.h"
27
#include "thread.h"
28
 
28
 
29
 
29
 
-
 
30
struct mutex hwkeyaes_mutex;
-
 
31
 
-
 
32
 
30
void hwkeyaes(enum hwkeyaes_direction direction, uint32_t keyidx, void* data, uint32_t size)
33
void hwkeyaes(enum hwkeyaes_direction direction, uint32_t keyidx, void* data, uint32_t size)
31
{
34
{
32
    uint32_t ptr, i;
35
    uint32_t ptr, i;
33
    uint32_t go = 1;
36
    uint32_t go = 1;
-
 
37
    mutex_lock(&hwkeyaes_mutex, TIMEOUT_BLOCK);
34
    PWRCON(1) &= ~0x400;
38
    PWRCON(1) &= ~0x400;
35
    AESTYPE = keyidx;
39
    AESTYPE = keyidx;
36
    AESUNKREG0 = 1;
40
    AESUNKREG0 = 1;
37
    AESUNKREG0 = 0;
41
    AESUNKREG0 = 0;
38
    AESCONTROL = 1;
42
    AESCONTROL = 1;
Line 68... Line 72...
68
		}
72
		}
69
        ptr += direction == HWKEYAES_ENCRYPT ? 4 : -4;
73
        ptr += direction == HWKEYAES_ENCRYPT ? 4 : -4;
70
    }
74
    }
71
    AESCONTROL = 0;
75
    AESCONTROL = 0;
72
    PWRCON(1) |= 0x400;
76
    PWRCON(1) |= 0x400;
-
 
77
    mutex_unlock(&hwkeyaes_mutex);
73
}
78
}