1 /* Copyright (C) 2003-2006, Advanced Micro Devices, Inc.
 
   3  * This program is free software; you can redistribute it and/or modify
 
   4  * it under the terms of the GNU General Public License as published by
 
   5  * the Free Software Foundation; either version 2 of the License, or
 
   6  * (at your option) any later version.
 
  12 /* driver logic flags */
 
  13 #define AES_IV_LENGTH  16
 
  14 #define AES_KEY_LENGTH 16
 
  15 #define AES_MIN_BLOCK_SIZE 16
 
  17 #define AES_MODE_ECB 0
 
  18 #define AES_MODE_CBC 1
 
  20 #define AES_DIR_DECRYPT 0
 
  21 #define AES_DIR_ENCRYPT 1
 
  23 #define AES_FLAGS_HIDDENKEY (1 << 0)
 
  25 /* Register definitions */
 
  27 #define AES_CTRLA_REG  0x0000
 
  29 #define AES_CTRL_START     0x01
 
  30 #define AES_CTRL_DECRYPT   0x00
 
  31 #define AES_CTRL_ENCRYPT   0x02
 
  32 #define AES_CTRL_WRKEY     0x04
 
  33 #define AES_CTRL_DCA       0x08
 
  34 #define AES_CTRL_SCA       0x10
 
  35 #define AES_CTRL_CBC       0x20
 
  37 #define AES_INTR_REG  0x0008
 
  39 #define AES_INTRA_PENDING (1 << 16)
 
  40 #define AES_INTRB_PENDING (1 << 17)
 
  42 #define AES_INTR_PENDING  (AES_INTRA_PENDING | AES_INTRB_PENDING)
 
  43 #define AES_INTR_MASK     0x07
 
  45 #define AES_SOURCEA_REG   0x0010
 
  46 #define AES_DSTA_REG      0x0014
 
  47 #define AES_LENA_REG      0x0018
 
  48 #define AES_WRITEKEY0_REG 0x0030
 
  49 #define AES_WRITEIV0_REG  0x0040
 
  51 /*  A very large counter that is used to gracefully bail out of an
 
  52  *  operation in case of trouble
 
  55 #define AES_OP_TIMEOUT    0x50000
 
  67         u8 key[AES_KEY_LENGTH];
 
  71                 struct crypto_blkcipher *blk;
 
  72                 struct crypto_cipher *cip;