]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/crypto/hifn_795x.c
Merge tag 'nfsd-4.6' of git://linux-nfs.org/~bfields/linux
[karo-tx-linux.git] / drivers / crypto / hifn_795x.c
index ca5c71ab4b4d04b8e47fbeefdbc6fc698d4e99f5..eee2c7e6c29984c2d258b65e9b424eee8a4ddc1b 100644 (file)
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
 #include <linux/kernel.h>
 #include <crypto/algapi.h>
 #include <crypto/des.h>
 
-//#define HIFN_DEBUG
-
-#ifdef HIFN_DEBUG
-#define dprintk(f, a...)       printk(f, ##a)
-#else
-#define dprintk(f, a...)       do {} while (0)
-#endif
-
 static char hifn_pll_ref[sizeof("extNNN")] = "ext";
 module_param_string(hifn_pll_ref, hifn_pll_ref, sizeof(hifn_pll_ref), 0444);
 MODULE_PARM_DESC(hifn_pll_ref,
@@ -79,12 +67,12 @@ static atomic_t hifn_dev_number;
 
 /* DMA registres */
 
-#define HIFN_DMA_CRA                   0x0C    /* DMA Command Ring Address */
-#define HIFN_DMA_SDRA                  0x1C    /* DMA Source Data Ring Address */
+#define HIFN_DMA_CRA                   0x0C    /* DMA Command Ring Address */
+#define HIFN_DMA_SDRA                  0x1C    /* DMA Source Data Ring Address */
 #define HIFN_DMA_RRA                   0x2C    /* DMA Result Ring Address */
 #define HIFN_DMA_DDRA                  0x3C    /* DMA Destination Data Ring Address */
 #define HIFN_DMA_STCTL                 0x40    /* DMA Status and Control */
-#define HIFN_DMA_INTREN                0x44    /* DMA Interrupt Enable */
+#define HIFN_DMA_INTREN                        0x44    /* DMA Interrupt Enable */
 #define HIFN_DMA_CFG1                  0x48    /* DMA Configuration #1 */
 #define HIFN_DMA_CFG2                  0x6C    /* DMA Configuration #2 */
 #define HIFN_CHIP_ID                   0x98    /* Chip ID */
@@ -358,10 +346,10 @@ static atomic_t hifn_dev_number;
 #define HIFN_NAMESIZE                  32
 #define HIFN_MAX_RESULT_ORDER          5
 
-#define        HIFN_D_CMD_RSIZE                24*1
-#define        HIFN_D_SRC_RSIZE                80*1
-#define        HIFN_D_DST_RSIZE                80*1
-#define        HIFN_D_RES_RSIZE                24*1
+#define        HIFN_D_CMD_RSIZE                (24 * 1)
+#define        HIFN_D_SRC_RSIZE                (80 * 1)
+#define        HIFN_D_DST_RSIZE                (80 * 1)
+#define        HIFN_D_RES_RSIZE                (24 * 1)
 
 #define HIFN_D_DST_DALIGN              4
 
@@ -386,17 +374,16 @@ static atomic_t hifn_dev_number;
 #define        HIFN_MAX_RESULT                 (8 + 4 + 4 + 20 + 4)
 #define HIFN_USED_RESULT               12
 
-struct hifn_desc
-{
+struct hifn_desc {
        volatile __le32         l;
        volatile __le32         p;
 };
 
 struct hifn_dma {
-       struct hifn_desc        cmdr[HIFN_D_CMD_RSIZE+1];
-       struct hifn_desc        srcr[HIFN_D_SRC_RSIZE+1];
-       struct hifn_desc        dstr[HIFN_D_DST_RSIZE+1];
-       struct hifn_desc        resr[HIFN_D_RES_RSIZE+1];
+       struct hifn_desc        cmdr[HIFN_D_CMD_RSIZE + 1];
+       struct hifn_desc        srcr[HIFN_D_SRC_RSIZE + 1];
+       struct hifn_desc        dstr[HIFN_D_DST_RSIZE + 1];
+       struct hifn_desc        resr[HIFN_D_RES_RSIZE + 1];
 
        u8                      command_bufs[HIFN_D_CMD_RSIZE][HIFN_MAX_COMMAND];
        u8                      result_bufs[HIFN_D_CMD_RSIZE][HIFN_MAX_RESULT];
@@ -410,16 +397,15 @@ struct hifn_dma {
        int                     cmdk, srck, dstk, resk;
 };
 
-#define HIFN_FLAG_CMD_BUSY     (1<<0)
-#define HIFN_FLAG_SRC_BUSY     (1<<1)
-#define HIFN_FLAG_DST_BUSY     (1<<2)
-#define HIFN_FLAG_RES_BUSY     (1<<3)
-#define HIFN_FLAG_OLD_KEY      (1<<4)
+#define HIFN_FLAG_CMD_BUSY     (1 << 0)
+#define HIFN_FLAG_SRC_BUSY     (1 << 1)
+#define HIFN_FLAG_DST_BUSY     (1 << 2)
+#define HIFN_FLAG_RES_BUSY     (1 << 3)
+#define HIFN_FLAG_OLD_KEY      (1 << 4)
 
 #define HIFN_DEFAULT_ACTIVE_NUM        5
 
-struct hifn_device
-{
+struct hifn_device {
        char                    name[HIFN_NAMESIZE];
 
        int                     irq;
@@ -432,7 +418,7 @@ struct hifn_device
 
        u32                     dmareg;
 
-       void                    *sa[HIFN_D_RES_RSIZE];
+       void                    *sa[HIFN_D_RES_RSIZE];
 
        spinlock_t              lock;
 
@@ -447,7 +433,7 @@ struct hifn_device
 
        struct tasklet_struct   tasklet;
 
-       struct crypto_queue     queue;
+       struct crypto_queue     queue;
        struct list_head        alg_list;
 
        unsigned int            pk_clk_freq;
@@ -468,8 +454,7 @@ struct hifn_device
 #define        HIFN_D_JUMP                     0x40000000
 #define        HIFN_D_VALID                    0x80000000
 
-struct hifn_base_command
-{
+struct hifn_base_command {
        volatile __le16         masks;
        volatile __le16         session_num;
        volatile __le16         total_source_count;
@@ -491,12 +476,11 @@ struct hifn_base_command
 /*
  * Structure to help build up the command data structure.
  */
-struct hifn_crypt_command
-{
-       volatile __le16                 masks;
-       volatile __le16                 header_skip;
-       volatile __le16                 source_count;
-       volatile __le16                 reserved;
+struct hifn_crypt_command {
+       volatile __le16         masks;
+       volatile __le16         header_skip;
+       volatile __le16         source_count;
+       volatile __le16         reserved;
 };
 
 #define        HIFN_CRYPT_CMD_ALG_MASK         0x0003          /* algorithm: */
@@ -522,12 +506,11 @@ struct hifn_crypt_command
 /*
  * Structure to help build up the command data structure.
  */
-struct hifn_mac_command
-{
-       volatile __le16         masks;
-       volatile __le16         header_skip;
-       volatile __le16         source_count;
-       volatile __le16         reserved;
+struct hifn_mac_command {
+       volatile __le16 masks;
+       volatile __le16 header_skip;
+       volatile __le16 source_count;
+       volatile __le16 reserved;
 };
 
 #define        HIFN_MAC_CMD_ALG_MASK           0x0001
@@ -551,12 +534,11 @@ struct hifn_mac_command
 #define        HIFN_MAC_CMD_POS_IPSEC          0x0200
 #define        HIFN_MAC_CMD_NEW_KEY            0x0800
 
-struct hifn_comp_command
-{
-       volatile __le16         masks;
-       volatile __le16         header_skip;
-       volatile __le16         source_count;
-       volatile __le16         reserved;
+struct hifn_comp_command {
+       volatile __le16         masks;
+       volatile __le16         header_skip;
+       volatile __le16         source_count;
+       volatile __le16         reserved;
 };
 
 #define        HIFN_COMP_CMD_SRCLEN_M          0xc000
@@ -570,12 +552,11 @@ struct hifn_comp_command
 #define        HIFN_COMP_CMD_ALG_MPPC          0x0001  /*   MPPC */
 #define        HIFN_COMP_CMD_ALG_LZS           0x0000  /*   LZS */
 
-struct hifn_base_result
-{
-       volatile __le16         flags;
-       volatile __le16         session;
-       volatile __le16         src_cnt;                /* 15:0 of source count */
-       volatile __le16         dst_cnt;                /* 15:0 of dest count */
+struct hifn_base_result {
+       volatile __le16         flags;
+       volatile __le16         session;
+       volatile __le16         src_cnt;                /* 15:0 of source count */
+       volatile __le16         dst_cnt;                /* 15:0 of dest count */
 };
 
 #define        HIFN_BASE_RES_DSTOVERRUN        0x0200  /* destination overrun */
@@ -584,8 +565,7 @@ struct hifn_base_result
 #define        HIFN_BASE_RES_DSTLEN_M          0x3000  /* 17:16 of dest count */
 #define        HIFN_BASE_RES_DSTLEN_S          12
 
-struct hifn_comp_result
-{
+struct hifn_comp_result {
        volatile __le16         flags;
        volatile __le16         crc;
 };
@@ -596,18 +576,16 @@ struct hifn_comp_result
 #define        HIFN_COMP_RES_ENDMARKER         0x0002  /* LZS: end marker seen */
 #define        HIFN_COMP_RES_SRC_NOTZERO       0x0001  /* source expired */
 
-struct hifn_mac_result
-{
-       volatile __le16         flags;
-       volatile __le16         reserved;
+struct hifn_mac_result {
+       volatile __le16         flags;
+       volatile __le16         reserved;
        /* followed by 0, 6, 8, or 10 u16's of the MAC, then crypt */
 };
 
 #define        HIFN_MAC_RES_MISCOMPARE         0x0002  /* compare failed */
 #define        HIFN_MAC_RES_SRC_NOTZERO        0x0001  /* source expired */
 
-struct hifn_crypt_result
-{
+struct hifn_crypt_result {
        volatile __le16         flags;
        volatile __le16         reserved;
 };
@@ -622,11 +600,10 @@ struct hifn_crypt_result
 #define        HIFN_POLL_SCALAR        0x0
 #endif
 
-#define        HIFN_MAX_SEGLEN         0xffff          /* maximum dma segment len */
+#define        HIFN_MAX_SEGLEN         0xffff          /* maximum dma segment len */
 #define        HIFN_MAX_DMALEN         0x3ffff         /* maximum dma length */
 
-struct hifn_crypto_alg
-{
+struct hifn_crypto_alg {
        struct list_head        entry;
        struct crypto_alg       alg;
        struct hifn_device      *dev;
@@ -634,24 +611,21 @@ struct hifn_crypto_alg
 
 #define ASYNC_SCATTERLIST_CACHE        16
 
-#define ASYNC_FLAGS_MISALIGNED (1<<0)
+#define ASYNC_FLAGS_MISALIGNED (1 << 0)
 
-struct hifn_cipher_walk
-{
+struct hifn_cipher_walk {
        struct scatterlist      cache[ASYNC_SCATTERLIST_CACHE];
        u32                     flags;
        int                     num;
 };
 
-struct hifn_context
-{
+struct hifn_context {
        u8                      key[HIFN_MAX_CRYPT_KEY_LENGTH];
        struct hifn_device      *dev;
        unsigned int            keysize;
 };
 
-struct hifn_request_context
-{
+struct hifn_request_context {
        u8                      *iv;
        unsigned int            ivsize;
        u8                      op, type, mode, unused;
@@ -693,7 +667,7 @@ static void hifn_wait_puc(struct hifn_device *dev)
        int i;
        u32 ret;
 
-       for (i=10000; i > 0; --i) {
+       for (i = 10000; i > 0; --i) {
                ret = hifn_read_0(dev, HIFN_0_PUCTRL);
                if (!(ret & HIFN_PUCTRL_RESET))
                        break;
@@ -702,7 +676,7 @@ static void hifn_wait_puc(struct hifn_device *dev)
        }
 
        if (!i)
-               dprintk("%s: Failed to reset PUC unit.\n", dev->name);
+               dev_err(&dev->pdev->dev, "Failed to reset PUC unit.\n");
 }
 
 static void hifn_reset_puc(struct hifn_device *dev)
@@ -749,13 +723,12 @@ static void hifn_reset_dma(struct hifn_device *dev, int full)
        hifn_reset_puc(dev);
 }
 
-static u32 hifn_next_signature(u_int32_t a, u_int cnt)
+static u32 hifn_next_signature(u32 a, u_int cnt)
 {
        int i;
        u32 v;
 
        for (i = 0; i < cnt; i++) {
-
                /* get the parity */
                v = a & 0x80080125;
                v ^= v >> 16;
@@ -846,33 +819,28 @@ static int hifn_init_pubrng(struct hifn_device *dev)
        hifn_write_1(dev, HIFN_1_PUB_RESET, hifn_read_1(dev, HIFN_1_PUB_RESET) |
                        HIFN_PUBRST_RESET);
 
-       for (i=100; i > 0; --i) {
+       for (i = 100; i > 0; --i) {
                mdelay(1);
 
                if ((hifn_read_1(dev, HIFN_1_PUB_RESET) & HIFN_PUBRST_RESET) == 0)
                        break;
        }
 
-       if (!i)
-               dprintk("Chip %s: Failed to initialise public key engine.\n",
-                               dev->name);
-       else {
+       if (!i) {
+               dev_err(&dev->pdev->dev, "Failed to initialise public key engine.\n");
+       } else {
                hifn_write_1(dev, HIFN_1_PUB_IEN, HIFN_PUBIEN_DONE);
                dev->dmareg |= HIFN_DMAIER_PUBDONE;
                hifn_write_1(dev, HIFN_1_DMA_IER, dev->dmareg);
 
-               dprintk("Chip %s: Public key engine has been successfully "
-                               "initialised.\n", dev->name);
+               dev_dbg(&dev->pdev->dev, "Public key engine has been successfully initialised.\n");
        }
 
-       /*
-        * Enable RNG engine.
-        */
+       /* Enable RNG engine. */
 
        hifn_write_1(dev, HIFN_1_RNG_CONFIG,
                        hifn_read_1(dev, HIFN_1_RNG_CONFIG) | HIFN_RNGCFG_ENA);
-       dprintk("Chip %s: RNG engine has been successfully initialised.\n",
-                       dev->name);
+       dev_dbg(&dev->pdev->dev, "RNG engine has been successfully initialised.\n");
 
 #ifdef CONFIG_CRYPTO_DEV_HIFN_795X_RNG
        /* First value must be discarded */
@@ -896,8 +864,8 @@ static int hifn_enable_crypto(struct hifn_device *dev)
                }
        }
 
-       if (offtbl == NULL) {
-               dprintk("Chip %s: Unknown card!\n", dev->name);
+       if (!offtbl) {
+               dev_err(&dev->pdev->dev, "Unknown card!\n");
                return -ENODEV;
        }
 
@@ -912,7 +880,7 @@ static int hifn_enable_crypto(struct hifn_device *dev)
        hifn_write_1(dev, HIFN_1_UNLOCK_SECRET2, 0);
        mdelay(1);
 
-       for (i=0; i<12; ++i) {
+       for (i = 0; i < 12; ++i) {
                addr = hifn_next_signature(addr, offtbl[i] + 0x101);
                hifn_write_1(dev, HIFN_1_UNLOCK_SECRET2, addr);
 
@@ -920,7 +888,7 @@ static int hifn_enable_crypto(struct hifn_device *dev)
        }
        hifn_write_1(dev, HIFN_1_DMA_CNFG, dmacfg);
 
-       dprintk("Chip %s: %s.\n", dev->name, pci_name(dev->pdev));
+       dev_dbg(&dev->pdev->dev, "%s %s.\n", dev->name, pci_name(dev->pdev));
 
        return 0;
 }
@@ -931,16 +899,14 @@ static void hifn_init_dma(struct hifn_device *dev)
        u32 dptr = dev->desc_dma;
        int i;
 
-       for (i=0; i<HIFN_D_CMD_RSIZE; ++i)
+       for (i = 0; i < HIFN_D_CMD_RSIZE; ++i)
                dma->cmdr[i].p = __cpu_to_le32(dptr +
                                offsetof(struct hifn_dma, command_bufs[i][0]));
-       for (i=0; i<HIFN_D_RES_RSIZE; ++i)
+       for (i = 0; i < HIFN_D_RES_RSIZE; ++i)
                dma->resr[i].p = __cpu_to_le32(dptr +
                                offsetof(struct hifn_dma, result_bufs[i][0]));
 
-       /*
-        * Setup LAST descriptors.
-        */
+       /* Setup LAST descriptors. */
        dma->cmdr[HIFN_D_CMD_RSIZE].p = __cpu_to_le32(dptr +
                        offsetof(struct hifn_dma, cmdr[0]));
        dma->srcr[HIFN_D_SRC_RSIZE].p = __cpu_to_le32(dptr +
@@ -960,7 +926,7 @@ static void hifn_init_dma(struct hifn_device *dev)
  * to calculate the optimal multiplier. For PCI we assume 66MHz, since that
  * allows us to operate without the risk of overclocking the chip. If it
  * actually uses 33MHz, the chip will operate at half the speed, this can be
- * overriden by specifying the frequency as module parameter (pci33).
+ * overridden by specifying the frequency as module parameter (pci33).
  *
  * Unfortunately the PCI clock is not very suitable since the HIFN needs a
  * stable clock and the PCI clock frequency may vary, so the default is the
@@ -984,9 +950,8 @@ static void hifn_init_pll(struct hifn_device *dev)
                freq = simple_strtoul(hifn_pll_ref + 3, NULL, 10);
        else {
                freq = 66;
-               printk(KERN_INFO "hifn795x: assuming %uMHz clock speed, "
-                                "override with hifn_pll_ref=%.3s<frequency>\n",
-                      freq, hifn_pll_ref);
+               dev_info(&dev->pdev->dev, "assuming %uMHz clock speed, override with hifn_pll_ref=%.3s<frequency>\n",
+                        freq, hifn_pll_ref);
        }
 
        m = HIFN_PLL_FCK_MAX / freq;
@@ -1174,17 +1139,17 @@ static int hifn_setup_cmd_desc(struct hifn_device *dev,
 
        mask = 0;
        switch (rctx->op) {
-               case ACRYPTO_OP_DECRYPT:
-                       mask = HIFN_BASE_CMD_CRYPT | HIFN_BASE_CMD_DECODE;
-                       break;
-               case ACRYPTO_OP_ENCRYPT:
-                       mask = HIFN_BASE_CMD_CRYPT;
-                       break;
-               case ACRYPTO_OP_HMAC:
-                       mask = HIFN_BASE_CMD_MAC;
-                       break;
-               default:
-                       goto err_out;
+       case ACRYPTO_OP_DECRYPT:
+               mask = HIFN_BASE_CMD_CRYPT | HIFN_BASE_CMD_DECODE;
+               break;
+       case ACRYPTO_OP_ENCRYPT:
+               mask = HIFN_BASE_CMD_CRYPT;
+               break;
+       case ACRYPTO_OP_HMAC:
+               mask = HIFN_BASE_CMD_MAC;
+               break;
+       default:
+               goto err_out;
        }
 
        buf_pos += hifn_setup_base_command(dev, buf_pos, nbytes,
@@ -1199,53 +1164,53 @@ static int hifn_setup_cmd_desc(struct hifn_device *dev,
                        md |= HIFN_CRYPT_CMD_NEW_IV;
 
                switch (rctx->mode) {
-                       case ACRYPTO_MODE_ECB:
-                               md |= HIFN_CRYPT_CMD_MODE_ECB;
-                               break;
-                       case ACRYPTO_MODE_CBC:
-                               md |= HIFN_CRYPT_CMD_MODE_CBC;
-                               break;
-                       case ACRYPTO_MODE_CFB:
-                               md |= HIFN_CRYPT_CMD_MODE_CFB;
-                               break;
-                       case ACRYPTO_MODE_OFB:
-                               md |= HIFN_CRYPT_CMD_MODE_OFB;
-                               break;
-                       default:
-                               goto err_out;
+               case ACRYPTO_MODE_ECB:
+                       md |= HIFN_CRYPT_CMD_MODE_ECB;
+                       break;
+               case ACRYPTO_MODE_CBC:
+                       md |= HIFN_CRYPT_CMD_MODE_CBC;
+                       break;
+               case ACRYPTO_MODE_CFB:
+                       md |= HIFN_CRYPT_CMD_MODE_CFB;
+                       break;
+               case ACRYPTO_MODE_OFB:
+                       md |= HIFN_CRYPT_CMD_MODE_OFB;
+                       break;
+               default:
+                       goto err_out;
                }
 
                switch (rctx->type) {
-                       case ACRYPTO_TYPE_AES_128:
-                               if (ctx->keysize != 16)
-                                       goto err_out;
-                               md |= HIFN_CRYPT_CMD_KSZ_128 |
-                                       HIFN_CRYPT_CMD_ALG_AES;
-                               break;
-                       case ACRYPTO_TYPE_AES_192:
-                               if (ctx->keysize != 24)
-                                       goto err_out;
-                               md |= HIFN_CRYPT_CMD_KSZ_192 |
-                                       HIFN_CRYPT_CMD_ALG_AES;
-                               break;
-                       case ACRYPTO_TYPE_AES_256:
-                               if (ctx->keysize != 32)
-                                       goto err_out;
-                               md |= HIFN_CRYPT_CMD_KSZ_256 |
-                                       HIFN_CRYPT_CMD_ALG_AES;
-                               break;
-                       case ACRYPTO_TYPE_3DES:
-                               if (ctx->keysize != 24)
-                                       goto err_out;
-                               md |= HIFN_CRYPT_CMD_ALG_3DES;
-                               break;
-                       case ACRYPTO_TYPE_DES:
-                               if (ctx->keysize != 8)
-                                       goto err_out;
-                               md |= HIFN_CRYPT_CMD_ALG_DES;
-                               break;
-                       default:
+               case ACRYPTO_TYPE_AES_128:
+                       if (ctx->keysize != 16)
+                               goto err_out;
+                       md |= HIFN_CRYPT_CMD_KSZ_128 |
+                               HIFN_CRYPT_CMD_ALG_AES;
+                       break;
+               case ACRYPTO_TYPE_AES_192:
+                       if (ctx->keysize != 24)
                                goto err_out;
+                       md |= HIFN_CRYPT_CMD_KSZ_192 |
+                               HIFN_CRYPT_CMD_ALG_AES;
+                       break;
+               case ACRYPTO_TYPE_AES_256:
+                       if (ctx->keysize != 32)
+                               goto err_out;
+                       md |= HIFN_CRYPT_CMD_KSZ_256 |
+                               HIFN_CRYPT_CMD_ALG_AES;
+                       break;
+               case ACRYPTO_TYPE_3DES:
+                       if (ctx->keysize != 24)
+                               goto err_out;
+                       md |= HIFN_CRYPT_CMD_ALG_3DES;
+                       break;
+               case ACRYPTO_TYPE_DES:
+                       if (ctx->keysize != 8)
+                               goto err_out;
+                       md |= HIFN_CRYPT_CMD_ALG_DES;
+                       break;
+               default:
+                       goto err_out;
                }
 
                buf_pos += hifn_setup_crypto_command(dev, buf_pos,
@@ -1265,8 +1230,9 @@ static int hifn_setup_cmd_desc(struct hifn_device *dev,
                        HIFN_D_VALID | HIFN_D_LAST |
                        HIFN_D_MASKDONEIRQ | HIFN_D_JUMP);
                dma->cmdi = 0;
-       } else
-               dma->cmdr[dma->cmdi-1].l |= __cpu_to_le32(HIFN_D_VALID);
+       } else {
+               dma->cmdr[dma->cmdi - 1].l |= __cpu_to_le32(HIFN_D_VALID);
+       }
 
        if (!(dev->flags & HIFN_FLAG_CMD_BUSY)) {
                hifn_write_1(dev, HIFN_1_DMA_CSR, HIFN_DMACSR_C_CTRL_ENA);
@@ -1424,7 +1390,7 @@ static int hifn_cipher_walk_init(struct hifn_cipher_walk *w,
        sg_init_table(w->cache, num);
 
        w->num = 0;
-       for (i=0; i<num; ++i) {
+       for (i = 0; i < num; ++i) {
                struct page *page = alloc_page(gfp_flags);
                struct scatterlist *s;
 
@@ -1444,7 +1410,7 @@ static void hifn_cipher_walk_exit(struct hifn_cipher_walk *w)
 {
        int i;
 
-       for (i=0; i<w->num; ++i) {
+       for (i = 0; i < w->num; ++i) {
                struct scatterlist *s = &w->cache[i];
 
                __free_page(sg_page(s));
@@ -1471,8 +1437,8 @@ static int ablkcipher_add(unsigned int *drestp, struct scatterlist *dst,
                drest -= copy;
                nbytes -= copy;
 
-               dprintk("%s: copy: %u, size: %u, drest: %u, nbytes: %u.\n",
-                               __func__, copy, size, drest, nbytes);
+               pr_debug("%s: copy: %u, size: %u, drest: %u, nbytes: %u.\n",
+                        __func__, copy, size, drest, nbytes);
 
                dst++;
                idx++;
@@ -1499,8 +1465,8 @@ static int hifn_cipher_walk(struct ablkcipher_request *req,
 
                dst = &req->dst[idx];
 
-               dprintk("\n%s: dlen: %u, doff: %u, offset: %u, nbytes: %u.\n",
-                       __func__, dst->length, dst->offset, offset, nbytes);
+               pr_debug("\n%s: dlen: %u, doff: %u, offset: %u, nbytes: %u.\n",
+                        __func__, dst->length, dst->offset, offset, nbytes);
 
                if (!IS_ALIGNED(dst->offset, HIFN_D_DST_DALIGN) ||
                    !IS_ALIGNED(dst->length, HIFN_D_DST_DALIGN) ||
@@ -1525,10 +1491,10 @@ static int hifn_cipher_walk(struct ablkcipher_request *req,
                                 * to put there additional blocksized chunk,
                                 * so we mark that page as containing only
                                 * blocksize aligned chunks:
-                                *      t->length = (slen & ~(HIFN_D_DST_DALIGN - 1));
+                                *      t->length = (slen & ~(HIFN_D_DST_DALIGN - 1));
                                 * and increase number of bytes to be processed
                                 * in next chunk:
-                                *      nbytes += diff;
+                                *      nbytes += diff;
                                 */
                                nbytes += diff;
 
@@ -1536,14 +1502,13 @@ static int hifn_cipher_walk(struct ablkcipher_request *req,
                                 * Temporary of course...
                                 * Kick author if you will catch this one.
                                 */
-                               printk(KERN_ERR "%s: dlen: %u, nbytes: %u,"
-                                       "slen: %u, offset: %u.\n",
-                                       __func__, dlen, nbytes, slen, offset);
-                               printk(KERN_ERR "%s: please contact author to fix this "
-                                       "issue, generally you should not catch "
-                                       "this path under any condition but who "
-                                       "knows how did you use crypto code.\n"
-                                       "Thank you.\n", __func__);
+                               pr_err("%s: dlen: %u, nbytes: %u, slen: %u, offset: %u.\n",
+                                      __func__, dlen, nbytes, slen, offset);
+                               pr_err("%s: please contact author to fix this "
+                                      "issue, generally you should not catch "
+                                      "this path under any condition but who "
+                                      "knows how did you use crypto code.\n"
+                                      "Thank you.\n",  __func__);
                                BUG();
                        } else {
                                copy += diff + nbytes;
@@ -1630,70 +1595,16 @@ err_out:
        spin_unlock_irqrestore(&dev->lock, flags);
 err_out_exit:
        if (err) {
-               printk("%s: iv: %p [%d], key: %p [%d], mode: %u, op: %u, "
-                               "type: %u, err: %d.\n",
-                       dev->name, rctx->iv, rctx->ivsize,
-                       ctx->key, ctx->keysize,
-                       rctx->mode, rctx->op, rctx->type, err);
+               dev_info(&dev->pdev->dev, "iv: %p [%d], key: %p [%d], mode: %u, op: %u, "
+                        "type: %u, err: %d.\n",
+                        rctx->iv, rctx->ivsize,
+                        ctx->key, ctx->keysize,
+                        rctx->mode, rctx->op, rctx->type, err);
        }
 
        return err;
 }
 
-static int hifn_test(struct hifn_device *dev, int encdec, u8 snum)
-{
-       int n, err;
-       u8 src[16];
-       struct hifn_context ctx;
-       struct hifn_request_context rctx;
-       u8 fips_aes_ecb_from_zero[16] = {
-               0x66, 0xE9, 0x4B, 0xD4,
-               0xEF, 0x8A, 0x2C, 0x3B,
-               0x88, 0x4C, 0xFA, 0x59,
-               0xCA, 0x34, 0x2B, 0x2E};
-       struct scatterlist sg;
-
-       memset(src, 0, sizeof(src));
-       memset(ctx.key, 0, sizeof(ctx.key));
-
-       ctx.dev = dev;
-       ctx.keysize = 16;
-       rctx.ivsize = 0;
-       rctx.iv = NULL;
-       rctx.op = (encdec)?ACRYPTO_OP_ENCRYPT:ACRYPTO_OP_DECRYPT;
-       rctx.mode = ACRYPTO_MODE_ECB;
-       rctx.type = ACRYPTO_TYPE_AES_128;
-       rctx.walk.cache[0].length = 0;
-
-       sg_init_one(&sg, &src, sizeof(src));
-
-       err = hifn_setup_dma(dev, &ctx, &rctx, &sg, &sg, sizeof(src), NULL);
-       if (err)
-               goto err_out;
-
-       dev->started = 0;
-       msleep(200);
-
-       dprintk("%s: decoded: ", dev->name);
-       for (n=0; n<sizeof(src); ++n)
-               dprintk("%02x ", src[n]);
-       dprintk("\n");
-       dprintk("%s: FIPS   : ", dev->name);
-       for (n=0; n<sizeof(fips_aes_ecb_from_zero); ++n)
-               dprintk("%02x ", fips_aes_ecb_from_zero[n]);
-       dprintk("\n");
-
-       if (!memcmp(src, fips_aes_ecb_from_zero, sizeof(fips_aes_ecb_from_zero))) {
-               printk(KERN_INFO "%s: AES 128 ECB test has been successfully "
-                               "passed.\n", dev->name);
-               return 0;
-       }
-
-err_out:
-       printk(KERN_INFO "%s: AES 128 ECB test has been failed.\n", dev->name);
-       return -1;
-}
-
 static int hifn_start_device(struct hifn_device *dev)
 {
        int err;
@@ -1739,8 +1650,8 @@ static int ablkcipher_get(void *saddr, unsigned int *srestp, unsigned int offset
                saddr += copy;
                offset = 0;
 
-               dprintk("%s: copy: %u, size: %u, srest: %u, nbytes: %u.\n",
-                               __func__, copy, size, srest, nbytes);
+               pr_debug("%s: copy: %u, size: %u, srest: %u, nbytes: %u.\n",
+                        __func__, copy, size, srest, nbytes);
 
                dst++;
                idx++;
@@ -1760,7 +1671,8 @@ static inline void hifn_complete_sa(struct hifn_device *dev, int i)
        dev->sa[i] = NULL;
        dev->started--;
        if (dev->started < 0)
-               printk("%s: started: %d.\n", __func__, dev->started);
+               dev_info(&dev->pdev->dev, "%s: started: %d.\n", __func__,
+                        dev->started);
        spin_unlock_irqrestore(&dev->lock, flags);
        BUG_ON(dev->started < 0);
 }
@@ -1779,7 +1691,7 @@ static void hifn_process_ready(struct ablkcipher_request *req, int error)
                        t = &rctx->walk.cache[idx];
                        dst = &req->dst[idx];
 
-                       dprintk("\n%s: sg_page(t): %p, t->length: %u, "
+                       pr_debug("\n%s: sg_page(t): %p, t->length: %u, "
                                "sg_page(dst): %p, dst->length: %u, "
                                "nbytes: %u.\n",
                                __func__, sg_page(t), t->length,
@@ -1815,9 +1727,8 @@ static void hifn_clear_rings(struct hifn_device *dev, int error)
        struct hifn_dma *dma = (struct hifn_dma *)dev->desc_virt;
        int i, u;
 
-       dprintk("%s: ring cleanup 1: i: %d.%d.%d.%d, u: %d.%d.%d.%d, "
+       dev_dbg(&dev->pdev->dev, "ring cleanup 1: i: %d.%d.%d.%d, u: %d.%d.%d.%d, "
                        "k: %d.%d.%d.%d.\n",
-                       dev->name,
                        dma->cmdi, dma->srci, dma->dsti, dma->resi,
                        dma->cmdu, dma->srcu, dma->dstu, dma->resu,
                        dma->cmdk, dma->srck, dma->dstk, dma->resk);
@@ -1870,9 +1781,8 @@ static void hifn_clear_rings(struct hifn_device *dev, int error)
        }
        dma->dstk = i; dma->dstu = u;
 
-       dprintk("%s: ring cleanup 2: i: %d.%d.%d.%d, u: %d.%d.%d.%d, "
+       dev_dbg(&dev->pdev->dev, "ring cleanup 2: i: %d.%d.%d.%d, u: %d.%d.%d.%d, "
                        "k: %d.%d.%d.%d.\n",
-                       dev->name,
                        dma->cmdi, dma->srci, dma->dsti, dma->resi,
                        dma->cmdu, dma->srcu, dma->dstu, dma->resu,
                        dma->cmdk, dma->srck, dma->dstk, dma->resk);
@@ -1921,21 +1831,22 @@ static void hifn_work(struct work_struct *work)
                        int i;
                        struct hifn_dma *dma = (struct hifn_dma *)dev->desc_virt;
 
-                       printk("%s: r: %08x, active: %d, started: %d, "
-                               "success: %lu: qlen: %u/%u, reset: %d.\n",
-                               dev->name, r, dev->active, dev->started,
-                               dev->success, dev->queue.qlen, dev->queue.max_qlen,
-                               reset);
+                       dev_info(&dev->pdev->dev,
+                                "r: %08x, active: %d, started: %d, "
+                                "success: %lu: qlen: %u/%u, reset: %d.\n",
+                                r, dev->active, dev->started,
+                                dev->success, dev->queue.qlen, dev->queue.max_qlen,
+                                reset);
 
-                       printk("%s: res: ", __func__);
-                       for (i=0; i<HIFN_D_RES_RSIZE; ++i) {
-                               printk("%x.%p ", dma->resr[i].l, dev->sa[i]);
+                       dev_info(&dev->pdev->dev, "%s: res: ", __func__);
+                       for (i = 0; i < HIFN_D_RES_RSIZE; ++i) {
+                               pr_info("%x.%p ", dma->resr[i].l, dev->sa[i]);
                                if (dev->sa[i]) {
                                        hifn_process_ready(dev->sa[i], -ENODEV);
                                        hifn_complete_sa(dev, i);
                                }
                        }
-                       printk("\n");
+                       pr_info("\n");
 
                        hifn_reset_dma(dev, 1);
                        hifn_stop_device(dev);
@@ -1957,9 +1868,9 @@ static irqreturn_t hifn_interrupt(int irq, void *data)
 
        dmacsr = hifn_read_1(dev, HIFN_1_DMA_CSR);
 
-       dprintk("%s: 1 dmacsr: %08x, dmareg: %08x, res: %08x [%d], "
+       dev_dbg(&dev->pdev->dev, "1 dmacsr: %08x, dmareg: %08x, res: %08x [%d], "
                        "i: %d.%d.%d.%d, u: %d.%d.%d.%d.\n",
-               dev->name, dmacsr, dev->dmareg, dmacsr & dev->dmareg, dma->cmdi,
+               dmacsr, dev->dmareg, dmacsr & dev->dmareg, dma->cmdi,
                dma->cmdi, dma->srci, dma->dsti, dma->resi,
                dma->cmdu, dma->srcu, dma->dstu, dma->resu);
 
@@ -1978,9 +1889,9 @@ static irqreturn_t hifn_interrupt(int irq, void *data)
        if (restart) {
                u32 puisr = hifn_read_0(dev, HIFN_0_PUISR);
 
-               printk(KERN_WARNING "%s: overflow: r: %d, d: %d, puisr: %08x, d: %u.\n",
-                       dev->name, !!(dmacsr & HIFN_DMACSR_R_OVER),
-                       !!(dmacsr & HIFN_DMACSR_D_OVER),
+               dev_warn(&dev->pdev->dev, "overflow: r: %d, d: %d, puisr: %08x, d: %u.\n",
+                        !!(dmacsr & HIFN_DMACSR_R_OVER),
+                        !!(dmacsr & HIFN_DMACSR_D_OVER),
                        puisr, !!(puisr & HIFN_PUISR_DSTOVER));
                if (!!(puisr & HIFN_PUISR_DSTOVER))
                        hifn_write_0(dev, HIFN_0_PUISR, HIFN_PUISR_DSTOVER);
@@ -1991,18 +1902,18 @@ static irqreturn_t hifn_interrupt(int irq, void *data)
        restart = dmacsr & (HIFN_DMACSR_C_ABORT | HIFN_DMACSR_S_ABORT |
                        HIFN_DMACSR_D_ABORT | HIFN_DMACSR_R_ABORT);
        if (restart) {
-               printk(KERN_WARNING "%s: abort: c: %d, s: %d, d: %d, r: %d.\n",
-                       dev->name, !!(dmacsr & HIFN_DMACSR_C_ABORT),
-                       !!(dmacsr & HIFN_DMACSR_S_ABORT),
-                       !!(dmacsr & HIFN_DMACSR_D_ABORT),
-                       !!(dmacsr & HIFN_DMACSR_R_ABORT));
+               dev_warn(&dev->pdev->dev, "abort: c: %d, s: %d, d: %d, r: %d.\n",
+                        !!(dmacsr & HIFN_DMACSR_C_ABORT),
+                        !!(dmacsr & HIFN_DMACSR_S_ABORT),
+                        !!(dmacsr & HIFN_DMACSR_D_ABORT),
+                        !!(dmacsr & HIFN_DMACSR_R_ABORT));
                hifn_reset_dma(dev, 1);
                hifn_init_dma(dev);
                hifn_init_registers(dev);
        }
 
        if ((dmacsr & HIFN_DMACSR_C_WAIT) && (dma->cmdu == 0)) {
-               dprintk("%s: wait on command.\n", dev->name);
+               dev_dbg(&dev->pdev->dev, "wait on command.\n");
                dev->dmareg &= ~(HIFN_DMAIER_C_WAIT);
                hifn_write_1(dev, HIFN_1_DMA_IER, dev->dmareg);
        }
@@ -2020,19 +1931,19 @@ static void hifn_flush(struct hifn_device *dev)
        struct hifn_dma *dma = (struct hifn_dma *)dev->desc_virt;
        int i;
 
-       for (i=0; i<HIFN_D_RES_RSIZE; ++i) {
+       for (i = 0; i < HIFN_D_RES_RSIZE; ++i) {
                struct hifn_desc *d = &dma->resr[i];
 
                if (dev->sa[i]) {
                        hifn_process_ready(dev->sa[i],
-                               (d->l & __cpu_to_le32(HIFN_D_VALID))?-ENODEV:0);
+                               (d->l & __cpu_to_le32(HIFN_D_VALID)) ? -ENODEV : 0);
                        hifn_complete_sa(dev, i);
                }
        }
 
        spin_lock_irqsave(&dev->lock, flags);
        while ((async_req = crypto_dequeue_request(&dev->queue))) {
-               req = container_of(async_req, struct ablkcipher_request, base);
+               req = ablkcipher_request_cast(async_req);
                spin_unlock_irqrestore(&dev->lock, flags);
 
                hifn_process_ready(req, -ENODEV);
@@ -2057,7 +1968,7 @@ static int hifn_setkey(struct crypto_ablkcipher *cipher, const u8 *key,
        if (len == HIFN_DES_KEY_LENGTH) {
                u32 tmp[DES_EXPKEY_WORDS];
                int ret = des_ekey(tmp, key);
-               
+
                if (unlikely(ret == 0) && (tfm->crt_flags & CRYPTO_TFM_REQ_WEAK_KEY)) {
                        tfm->crt_flags |= CRYPTO_TFM_RES_WEAK_KEY;
                        return -EINVAL;
@@ -2151,7 +2062,7 @@ static int hifn_process_queue(struct hifn_device *dev)
                if (backlog)
                        backlog->complete(backlog, -EINPROGRESS);
 
-               req = container_of(async_req, struct ablkcipher_request, base);
+               req = ablkcipher_request_cast(async_req);
 
                err = hifn_handle_req(req);
                if (err)
@@ -2298,9 +2209,7 @@ static inline int hifn_encrypt_3des_ofb(struct ablkcipher_request *req)
                        ACRYPTO_TYPE_3DES, ACRYPTO_MODE_OFB);
 }
 
-/*
- * 3DES decryption functions.
- */
+/* 3DES decryption functions. */
 static inline int hifn_decrypt_3des_ecb(struct ablkcipher_request *req)
 {
        return hifn_setup_crypto(req, ACRYPTO_OP_DECRYPT,
@@ -2322,8 +2231,7 @@ static inline int hifn_decrypt_3des_ofb(struct ablkcipher_request *req)
                        ACRYPTO_TYPE_3DES, ACRYPTO_MODE_OFB);
 }
 
-struct hifn_alg_template
-{
+struct hifn_alg_template {
        char name[CRYPTO_MAX_ALG_NAME];
        char drv_name[CRYPTO_MAX_ALG_NAME];
        unsigned int bsize;
@@ -2483,7 +2391,7 @@ static int hifn_alg_alloc(struct hifn_device *dev, struct hifn_alg_template *t)
        struct hifn_crypto_alg *alg;
        int err;
 
-       alg = kzalloc(sizeof(struct hifn_crypto_alg), GFP_KERNEL);
+       alg = kzalloc(sizeof(*alg), GFP_KERNEL);
        if (!alg)
                return -ENOMEM;
 
@@ -2530,7 +2438,7 @@ static int hifn_register_alg(struct hifn_device *dev)
 {
        int i, err;
 
-       for (i=0; i<ARRAY_SIZE(hifn_alg_templates); ++i) {
+       for (i = 0; i < ARRAY_SIZE(hifn_alg_templates); ++i) {
                err = hifn_alg_alloc(dev, &hifn_alg_templates[i]);
                if (err)
                        goto err_out_exit;
@@ -2575,7 +2483,7 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                goto err_out_disable_pci_device;
 
        snprintf(name, sizeof(name), "hifn%d",
-                       atomic_inc_return(&hifn_dev_number)-1);
+                       atomic_inc_return(&hifn_dev_number) - 1);
 
        err = pci_request_regions(pdev, name);
        if (err)
@@ -2584,8 +2492,7 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if (pci_resource_len(pdev, 0) < HIFN_BAR0_SIZE ||
            pci_resource_len(pdev, 1) < HIFN_BAR1_SIZE ||
            pci_resource_len(pdev, 2) < HIFN_BAR2_SIZE) {
-               dprintk("%s: Broken hardware - I/O regions are too small.\n",
-                               pci_name(pdev));
+               dev_err(&pdev->dev, "Broken hardware - I/O regions are too small.\n");
                err = -ENODEV;
                goto err_out_free_regions;
        }
@@ -2602,7 +2509,7 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        snprintf(dev->name, sizeof(dev->name), "%s", name);
        spin_lock_init(&dev->lock);
 
-       for (i=0; i<3; ++i) {
+       for (i = 0; i < 3; ++i) {
                unsigned long addr, size;
 
                addr = pci_resource_start(pdev, i);
@@ -2618,7 +2525,7 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        dev->desc_virt = pci_zalloc_consistent(pdev, sizeof(struct hifn_dma),
                                               &dev->desc_dma);
        if (!dev->desc_virt) {
-               dprintk("Failed to allocate descriptor rings.\n");
+               dev_err(&pdev->dev, "Failed to allocate descriptor rings.\n");
                err = -ENOMEM;
                goto err_out_unmap_bars;
        }
@@ -2626,7 +2533,7 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        dev->pdev = pdev;
        dev->irq = pdev->irq;
 
-       for (i=0; i<HIFN_D_RES_RSIZE; ++i)
+       for (i = 0; i < HIFN_D_RES_RSIZE; ++i)
                dev->sa[i] = NULL;
 
        pci_set_drvdata(pdev, dev);
@@ -2637,7 +2544,8 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 
        err = request_irq(dev->irq, hifn_interrupt, IRQF_SHARED, dev->name, dev);
        if (err) {
-               dprintk("Failed to request IRQ%d: err: %d.\n", dev->irq, err);
+               dev_err(&pdev->dev, "Failed to request IRQ%d: err: %d.\n",
+                       dev->irq, err);
                dev->irq = 0;
                goto err_out_free_desc;
        }
@@ -2646,10 +2554,6 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if (err)
                goto err_out_free_irq;
 
-       err = hifn_test(dev, 1, 0);
-       if (err)
-               goto err_out_stop_device;
-
        err = hifn_register_rng(dev);
        if (err)
                goto err_out_stop_device;
@@ -2661,9 +2565,9 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        INIT_DELAYED_WORK(&dev->work, hifn_work);
        schedule_delayed_work(&dev->work, HZ);
 
-       dprintk("HIFN crypto accelerator card at %s has been "
-                       "successfully registered as %s.\n",
-                       pci_name(pdev), dev->name);
+       dev_dbg(&pdev->dev, "HIFN crypto accelerator card at %s has been "
+               "successfully registered as %s.\n",
+               pci_name(pdev), dev->name);
 
        return 0;
 
@@ -2680,7 +2584,7 @@ err_out_free_desc:
                        dev->desc_virt, dev->desc_dma);
 
 err_out_unmap_bars:
-       for (i=0; i<3; ++i)
+       for (i = 0; i < 3; ++i)
                if (dev->bar[i])
                        iounmap(dev->bar[i]);
 
@@ -2715,7 +2619,7 @@ static void hifn_remove(struct pci_dev *pdev)
 
                pci_free_consistent(pdev, sizeof(struct hifn_dma),
                                dev->desc_virt, dev->desc_dma);
-               for (i=0; i<3; ++i)
+               for (i = 0; i < 3; ++i)
                        if (dev->bar[i])
                                iounmap(dev->bar[i]);
 
@@ -2750,8 +2654,7 @@ static int __init hifn_init(void)
 
        if (strncmp(hifn_pll_ref, "ext", 3) &&
            strncmp(hifn_pll_ref, "pci", 3)) {
-               printk(KERN_ERR "hifn795x: invalid hifn_pll_ref clock, "
-                               "must be pci or ext");
+               pr_err("hifn795x: invalid hifn_pll_ref clock, must be pci or ext");
                return -EINVAL;
        }
 
@@ -2763,22 +2666,21 @@ static int __init hifn_init(void)
        if (hifn_pll_ref[3] != '\0') {
                freq = simple_strtoul(hifn_pll_ref + 3, NULL, 10);
                if (freq < 20 || freq > 100) {
-                       printk(KERN_ERR "hifn795x: invalid hifn_pll_ref "
-                                       "frequency, must be in the range "
-                                       "of 20-100");
+                       pr_err("hifn795x: invalid hifn_pll_ref frequency, must"
+                              "be in the range of 20-100");
                        return -EINVAL;
                }
        }
 
        err = pci_register_driver(&hifn_pci_driver);
        if (err < 0) {
-               dprintk("Failed to register PCI driver for %s device.\n",
-                               hifn_pci_driver.name);
+               pr_err("Failed to register PCI driver for %s device.\n",
+                      hifn_pci_driver.name);
                return -ENODEV;
        }
 
-       printk(KERN_INFO "Driver for HIFN 795x crypto accelerator chip "
-                       "has been successfully registered.\n");
+       pr_info("Driver for HIFN 795x crypto accelerator chip "
+               "has been successfully registered.\n");
 
        return 0;
 }
@@ -2787,8 +2689,8 @@ static void __exit hifn_fini(void)
 {
        pci_unregister_driver(&hifn_pci_driver);
 
-       printk(KERN_INFO "Driver for HIFN 795x crypto accelerator chip "
-                       "has been successfully unregistered.\n");
+       pr_info("Driver for HIFN 795x crypto accelerator chip "
+               "has been successfully unregistered.\n");
 }
 
 module_init(hifn_init);