Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
tegra-aes.c File Reference
#include <linux/module.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/clk.h>
#include <linux/platform_device.h>
#include <linux/scatterlist.h>
#include <linux/dma-mapping.h>
#include <linux/io.h>
#include <linux/mutex.h>
#include <linux/interrupt.h>
#include <linux/completion.h>
#include <linux/workqueue.h>
#include <mach/clk.h>
#include <crypto/scatterwalk.h>
#include <crypto/aes.h>
#include <crypto/internal/rng.h>
#include "tegra-aes.h"

Go to the source code of this file.

Data Structures

struct  tegra_aes_slot
 
struct  tegra_aes_reqctx
 
struct  tegra_aes_dev
 
struct  tegra_aes_ctx
 

Macros

#define FLAGS_MODE_MASK   0x00FF
 
#define FLAGS_ENCRYPT   BIT(0)
 
#define FLAGS_CBC   BIT(1)
 
#define FLAGS_GIV   BIT(2)
 
#define FLAGS_RNG   BIT(3)
 
#define FLAGS_OFB   BIT(4)
 
#define FLAGS_NEW_KEY   BIT(5)
 
#define FLAGS_NEW_IV   BIT(6)
 
#define FLAGS_INIT   BIT(7)
 
#define FLAGS_FAST   BIT(8)
 
#define FLAGS_BUSY   9
 
#define AES_HW_DMA_BUFFER_SIZE_BYTES   0x4000
 
#define AES_HW_KEY_TABLE_LENGTH_BYTES   64
 
#define AES_HW_IV_SIZE   16
 
#define AES_HW_KEYSCHEDULE_LEN   256
 
#define AES_IVKEY_SIZE   (AES_HW_KEY_TABLE_LENGTH_BYTES + AES_HW_KEYSCHEDULE_LEN)
 
#define MEMDMA_DIR_DTOVRAM   0 /* sdram -> vram */
 
#define MEMDMA_DIR_VTODRAM   1 /* vram -> sdram */
 
#define MEMDMA_DIR_SHIFT   25
 
#define MEMDMA_NUM_WORDS_SHIFT   12
 
#define SSK_SLOT_NUM   4
 
#define AES_NR_KEYSLOTS   8
 
#define TEGRA_AES_QUEUE_LENGTH   50
 
#define DEFAULT_RNG_BLK_SZ   16
 
#define AES_HW_MAX_ICQ_LENGTH   5
 

Enumerations

enum  {
  CMD_BLKSTARTENGINE = 0x0E, CMD_DMASETUP = 0x10, CMD_DMACOMPLETE = 0x11, CMD_SETTABLE = 0x15,
  CMD_MEMDMAVD = 0x22
}
 
enum  { SUBCMD_VRAM_SEL = 0x1, SUBCMD_CRYPTO_TABLE_SEL = 0x3, SUBCMD_KEY_TABLE_SEL = 0x8 }
 
enum  {
  CMDQ_KEYTABLEADDR_SHIFT = 0, CMDQ_KEYTABLEID_SHIFT = 17, CMDQ_VRAMSEL_SHIFT = 23, CMDQ_TABLESEL_SHIFT = 24,
  CMDQ_OPCODE_SHIFT = 26
}
 

Functions

unsigned long long tegra_chip_uid (void)
 
void tegra_aes_cra_exit (struct crypto_tfm *tfm)
 
 module_platform_driver (tegra_aes_driver)
 
 MODULE_DESCRIPTION ("Tegra AES/OFB/CPRNG hw acceleration support.")
 
 MODULE_AUTHOR ("NVIDIA Corporation")
 
 MODULE_LICENSE ("GPL v2")
 

Macro Definition Documentation

#define AES_HW_DMA_BUFFER_SIZE_BYTES   0x4000

Definition at line 71 of file tegra-aes.c.

#define AES_HW_IV_SIZE   16

Definition at line 89 of file tegra-aes.c.

#define AES_HW_KEY_TABLE_LENGTH_BYTES   64

Definition at line 78 of file tegra-aes.c.

#define AES_HW_KEYSCHEDULE_LEN   256

Definition at line 90 of file tegra-aes.c.

#define AES_HW_MAX_ICQ_LENGTH   5

Definition at line 136 of file tegra-aes.c.

#define AES_IVKEY_SIZE   (AES_HW_KEY_TABLE_LENGTH_BYTES + AES_HW_KEYSCHEDULE_LEN)

Definition at line 91 of file tegra-aes.c.

#define AES_NR_KEYSLOTS   8

Definition at line 131 of file tegra-aes.c.

#define DEFAULT_RNG_BLK_SZ   16

Definition at line 133 of file tegra-aes.c.

#define FLAGS_BUSY   9

Definition at line 62 of file tegra-aes.c.

#define FLAGS_CBC   BIT(1)

Definition at line 54 of file tegra-aes.c.

#define FLAGS_ENCRYPT   BIT(0)

Definition at line 53 of file tegra-aes.c.

#define FLAGS_FAST   BIT(8)

Definition at line 61 of file tegra-aes.c.

#define FLAGS_GIV   BIT(2)

Definition at line 55 of file tegra-aes.c.

#define FLAGS_INIT   BIT(7)

Definition at line 60 of file tegra-aes.c.

#define FLAGS_MODE_MASK   0x00FF

Definition at line 52 of file tegra-aes.c.

#define FLAGS_NEW_IV   BIT(6)

Definition at line 59 of file tegra-aes.c.

#define FLAGS_NEW_KEY   BIT(5)

Definition at line 58 of file tegra-aes.c.

#define FLAGS_OFB   BIT(4)

Definition at line 57 of file tegra-aes.c.

#define FLAGS_RNG   BIT(3)

Definition at line 56 of file tegra-aes.c.

#define MEMDMA_DIR_DTOVRAM   0 /* sdram -> vram */

Definition at line 110 of file tegra-aes.c.

#define MEMDMA_DIR_SHIFT   25

Definition at line 112 of file tegra-aes.c.

#define MEMDMA_DIR_VTODRAM   1 /* vram -> sdram */

Definition at line 111 of file tegra-aes.c.

#define MEMDMA_NUM_WORDS_SHIFT   12

Definition at line 113 of file tegra-aes.c.

#define SSK_SLOT_NUM   4

Definition at line 129 of file tegra-aes.c.

#define TEGRA_AES_QUEUE_LENGTH   50

Definition at line 132 of file tegra-aes.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
CMD_BLKSTARTENGINE 
CMD_DMASETUP 
CMD_DMACOMPLETE 
CMD_SETTABLE 
CMD_MEMDMAVD 

Definition at line 94 of file tegra-aes.c.

anonymous enum
Enumerator:
SUBCMD_VRAM_SEL 
SUBCMD_CRYPTO_TABLE_SEL 
SUBCMD_KEY_TABLE_SEL 

Definition at line 103 of file tegra-aes.c.

anonymous enum
Enumerator:
CMDQ_KEYTABLEADDR_SHIFT 
CMDQ_KEYTABLEID_SHIFT 
CMDQ_VRAMSEL_SHIFT 
CMDQ_TABLESEL_SHIFT 
CMDQ_OPCODE_SHIFT 

Definition at line 116 of file tegra-aes.c.

Function Documentation

MODULE_AUTHOR ( "NVIDIA Corporation"  )
MODULE_DESCRIPTION ( "Tegra AES/OFB/CPRNG hw acceleration support."  )
MODULE_LICENSE ( "GPL v2 )
module_platform_driver ( tegra_aes_driver  )
void tegra_aes_cra_exit ( struct crypto_tfm tfm)

Definition at line 805 of file tegra-aes.c.

unsigned long long tegra_chip_uid ( void  )

Definition at line 123 of file fuse.c.