101 lines
3.9 KiB
C
101 lines
3.9 KiB
C
/*
|
|
* Copyright (C) 2007 Apple Inc. All rights reserved.
|
|
*
|
|
* This document is the property of Apple Computer, Inc.
|
|
* It is considered confidential and proprietary.
|
|
*
|
|
* This document may not be reproduced or transmitted in any form,
|
|
* in whole or in part, without the express written permission of
|
|
* Apple Computer, Inc.
|
|
*/
|
|
|
|
#ifndef _SAMSUNG_AES_H
|
|
#define _SAMSUNG_AES_H
|
|
|
|
#include <platform/soc/hwregbase.h>
|
|
#include <sys/types.h>
|
|
#include <drivers/aes.h>
|
|
|
|
__BEGIN_DECLS
|
|
|
|
#define rAES_POWER (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x00))
|
|
#define rAES_COMMAND (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x04))
|
|
#define rAES_SWRST (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x08))
|
|
#define rAES_IRQ (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x0C))
|
|
#define rAES_IRQ_MASK (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x10))
|
|
#define rAES_CFG (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x14))
|
|
#define rAES_XFR_NUM (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x18))
|
|
#define rAES_XFR_CNT (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x1C))
|
|
#define rAES_TBUF_START (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x20))
|
|
#define rAES_TBUF_SIZE (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x24))
|
|
#define rAES_SBUF_START (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x28))
|
|
#define rAES_SBUF_SIZE (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x2C))
|
|
#define rAES_CRYPT_START (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x30))
|
|
#define rAES_CRYPT_SIZE (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x34))
|
|
#define rAES_CADDR_TBUF (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x38))
|
|
#define rAES_CADDR_SBUF (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x3C))
|
|
#define rAES_XFR_STATUS (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x40))
|
|
#define rBUS_FIFO_STATUS (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x44))
|
|
#define rAES_FIFO_STATUS (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x48))
|
|
#define rAES_KEY_MX (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x4C))
|
|
#define rAES_KEY_MH (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x50))
|
|
#define rAES_KEY_MM (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x54))
|
|
#define rAES_KEY_ML (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x58))
|
|
#define rAES_KEY_X (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x5C))
|
|
#define rAES_KEY_H (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x60))
|
|
#define rAES_KEY_M (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x64))
|
|
#define rAES_KEY_L (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x68))
|
|
#define rAES_CIPHERKEY_SEL (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x6C))
|
|
#define rAES_ENDIAN (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x70))
|
|
#define rAES_IV_1 (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x74))
|
|
#define rAES_IV_2 (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x78))
|
|
#define rAES_IV_3 (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x7C))
|
|
#define rAES_IV_4 (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x80))
|
|
#define rAES_COMPLIMENT (*(volatile u_int32_t *)(AES_BASE_ADDR + 0x88))
|
|
|
|
#define CMD_AES_STOP 0 //Command Stop (Pause)
|
|
#define CMD_AES_START 1 //Command Start (only available in idle state)
|
|
#define CMD_AES_ABORT 2 //Command Abort
|
|
#define CMD_AES_CONTINUE 3 //Command Continue (only available in pause state)
|
|
|
|
#define AES_KEY_TYPE_USER_DEFINE 0
|
|
#define AES_KEY_TYPE_GLOBAL_ID 1
|
|
#define AES_KEY_TYPE_USER_ID 2
|
|
|
|
#define AES_IRQ_XFR_DONE_BIT (1<<0)
|
|
#define AES_IRQ_TBUF_FULL_BIT (1<<1)
|
|
#define AES_IRQ_SBUF_EMPTY_BIT (1<<2)
|
|
#define AES_IRQ_ILLEGAL_OP_BIT (1<<3)
|
|
|
|
#define AES_MODULE_POWER_ON() rAES_POWER = 0x00000001
|
|
#define AES_MODULE_POWER_OFF() rAES_POWER = 0x00000000
|
|
|
|
/**
|
|
* AES KEY SIZE
|
|
*/
|
|
enum aes_key_size {
|
|
_AES_KEY_SIZE_128 = 0,
|
|
_AES_KEY_SIZE_192,
|
|
_AES_KEY_SIZE_256,
|
|
|
|
_AES_KEY_SIZE_MAX
|
|
};
|
|
|
|
|
|
#define AES_MODE_ECB 0 /*Electronic Codebook*/
|
|
#define AES_MODE_CBC 1 /*Cipher Block Chaining*/
|
|
|
|
u_int32_t AesInit(void);
|
|
u_int32_t AesUninit(void);
|
|
u_int32_t AesWaitForComplete(void);
|
|
|
|
void AesSetKeySize(enum aes_key_size keysize);
|
|
void AesSetChainingMode(bool bFlag);
|
|
void AesSetCryption(bool bFlag);
|
|
|
|
void _AesStart(void);
|
|
|
|
__END_DECLS
|
|
|
|
#endif /* ! _SAMSUNG_AES_H */
|