]> Pileus Git - ~andy/linux/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 26 Jul 2012 20:00:59 +0000 (13:00 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 26 Jul 2012 20:00:59 +0000 (13:00 -0700)
Pull crypto updates from Herbert Xu:

 - Fixed algorithm construction hang when self-test fails.
 - Added SHA variants to talitos AEAD list.
 - New driver for Exynos random number generator.
 - Performance enhancements for arc4.
 - Added hwrng support to caam.
 - Added ahash support to caam.
 - Fixed bad kfree in aesni-intel.
 - Allow aesni-intel in FIPS mode.
 - Added atmel driver with support for AES/3DES/SHA.
 - Bug fixes for mv_cesa.
 - CRC hardware driver for BF60x family processors.

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (66 commits)
  crypto: twofish-avx - remove useless instruction
  crypto: testmgr - add aead cbc aes hmac sha1,256,512 test vectors
  crypto: talitos - add sha224, sha384 and sha512 to existing AEAD algorithms
  crypto: talitos - export the talitos_submit function
  crypto: talitos - move talitos structures to header file
  crypto: atmel - add new tests to tcrypt
  crypto: atmel - add Atmel SHA1/SHA256 driver
  crypto: atmel - add Atmel DES/TDES driver
  crypto: atmel - add Atmel AES driver
  ARM: AT91SAM9G45: add crypto peripherals
  crypto: testmgr - allow aesni-intel and ghash_clmulni-intel in fips mode
  hwrng: exynos - Add support for Exynos random number generator
  crypto: aesni-intel - fix wrong kfree pointer
  crypto: caam - ERA retrieval and printing for SEC device
  crypto: caam - Using alloc_coherent for caam job rings
  crypto: algapi - Fix hang on crypto allocation
  crypto: arc4 - now arc needs blockcipher support
  crypto: caam - one tasklet per job ring
  crypto: caam - consolidate memory barriers from job ring en/dequeue
  crypto: caam - only query h/w in job ring dequeue path
  ...

1  2 
arch/arm/mach-at91/at91sam9g45.c
arch/arm/mach-at91/at91sam9g45_devices.c

index 977127368a7dbd10d3785d4383840be2b72f840d,da6dc0f296573396ae4d1e06ed69074998389dd5..ef6cedd52e3c2e71fdfb6dd8e68158b8ef622420
@@@ -18,7 -18,6 +18,7 @@@
  #include <asm/mach/map.h>
  #include <asm/system_misc.h>
  #include <mach/at91sam9g45.h>
 +#include <mach/at91_aic.h>
  #include <mach/at91_pmc.h>
  #include <mach/cpu.h>
  
@@@ -183,6 -182,13 +183,13 @@@ static struct clk adc_op_clk = 
        .rate_hz        = 13200000,
  };
  
+ /* AES/TDES/SHA clock - Only for sam9m11/sam9g56 */
+ static struct clk aestdessha_clk = {
+       .name           = "aestdessha_clk",
+       .pmc_mask       = 1 << AT91SAM9G45_ID_AESTDESSHA,
+       .type           = CLK_TYPE_PERIPHERAL,
+ };
  static struct clk *periph_clocks[] __initdata = {
        &pioA_clk,
        &pioB_clk,
        &udphs_clk,
        &mmc1_clk,
        &adc_op_clk,
+       &aestdessha_clk,
        // irq0
  };
  
@@@ -232,6 -239,9 +240,9 @@@ static struct clk_lookup periph_clocks_
        CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk),
        CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk),
        CLKDEV_CON_DEV_ID(NULL, "atmel-trng", &trng_clk),
+       CLKDEV_CON_DEV_ID(NULL, "atmel_sha", &aestdessha_clk),
+       CLKDEV_CON_DEV_ID(NULL, "atmel_tdes", &aestdessha_clk),
+       CLKDEV_CON_DEV_ID(NULL, "atmel_aes", &aestdessha_clk),
        /* more usart lookup table for DT entries */
        CLKDEV_CON_DEV_ID("usart", "ffffee00.serial", &mck),
        CLKDEV_CON_DEV_ID("usart", "fff8c000.serial", &usart0_clk),
@@@ -388,7 -398,7 +399,7 @@@ static unsigned int at91sam9g45_default
        3,      /* Ethernet */
        0,      /* Image Sensor Interface */
        2,      /* USB Device High speed port */
-       0,
+       0,      /* AESTDESSHA Crypto HW Accelerators */
        0,      /* Multimedia Card Interface 1 */
        0,
        0,      /* Advanced Interrupt Controller (IRQ0) */
index 40fb79df2de0b0ebb19c2d4eb4258490d9839cc9,7102f62b64efd8f0aa3ab311bbe885bde1042b9a..06073996a38241d50fb1595c52017a50567d7e44
@@@ -18,6 -18,7 +18,7 @@@
  #include <linux/platform_device.h>
  #include <linux/i2c-gpio.h>
  #include <linux/atmel-mci.h>
+ #include <linux/platform_data/atmel-aes.h>
  
  #include <linux/platform_data/at91_adc.h>
  
@@@ -53,8 -54,8 +54,8 @@@ static struct resource hdmac_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_DMA,
 -              .end    = AT91SAM9G45_ID_DMA,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_DMA,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_DMA,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -94,8 -95,8 +95,8 @@@ static struct resource usbh_ohci_resour
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_UHPHS,
 -              .end    = AT91SAM9G45_ID_UHPHS,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_UHPHS,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_UHPHS,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -156,8 -157,8 +157,8 @@@ static struct resource usbh_ehci_resour
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_UHPHS,
 -              .end    = AT91SAM9G45_ID_UHPHS,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_UHPHS,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_UHPHS,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -213,8 -214,8 +214,8 @@@ static struct resource usba_udc_resourc
                .flags  = IORESOURCE_MEM,
        },
        [2] = {
 -              .start  = AT91SAM9G45_ID_UDPHS,
 -              .end    = AT91SAM9G45_ID_UDPHS,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_UDPHS,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_UDPHS,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -296,8 -297,8 +297,8 @@@ static struct resource eth_resources[] 
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_EMAC,
 -              .end    = AT91SAM9G45_ID_EMAC,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_EMAC,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_EMAC,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -370,8 -371,8 +371,8 @@@ static struct resource mmc0_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_MCI0,
 -              .end    = AT91SAM9G45_ID_MCI0,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_MCI0,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_MCI0,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -395,8 -396,8 +396,8 @@@ static struct resource mmc1_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_MCI1,
 -              .end    = AT91SAM9G45_ID_MCI1,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_MCI1,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_MCI1,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -645,8 -646,8 +646,8 @@@ static struct resource twi0_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_TWI0,
 -              .end    = AT91SAM9G45_ID_TWI0,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_TWI0,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_TWI0,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -665,8 -666,8 +666,8 @@@ static struct resource twi1_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_TWI1,
 -              .end    = AT91SAM9G45_ID_TWI1,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_TWI1,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_TWI1,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -720,8 -721,8 +721,8 @@@ static struct resource spi0_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_SPI0,
 -              .end    = AT91SAM9G45_ID_SPI0,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_SPI0,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_SPI0,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -746,8 -747,8 +747,8 @@@ static struct resource spi1_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_SPI1,
 -              .end    = AT91SAM9G45_ID_SPI1,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_SPI1,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_SPI1,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -834,8 -835,8 +835,8 @@@ static struct resource ac97_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_AC97C,
 -              .end    = AT91SAM9G45_ID_AC97C,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_AC97C,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_AC97C,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -887,8 -888,8 +888,8 @@@ struct resource isi_resources[] = 
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_ISI,
 -              .end    = AT91SAM9G45_ID_ISI,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_ISI,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_ISI,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -979,8 -980,8 +980,8 @@@ static struct resource lcdc_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_LCDC,
 -              .end    = AT91SAM9G45_ID_LCDC,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_LCDC,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_LCDC,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1054,8 -1055,8 +1055,8 @@@ static struct resource tcb0_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_TCB,
 -              .end    = AT91SAM9G45_ID_TCB,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_TCB,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_TCB,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1075,8 -1076,8 +1076,8 @@@ static struct resource tcb1_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_TCB,
 -              .end    = AT91SAM9G45_ID_TCB,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_TCB,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_TCB,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1110,8 -1111,8 +1111,8 @@@ static struct resource rtc_resources[] 
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91_ID_SYS,
 -              .end    = AT91_ID_SYS,
 +              .start  = NR_IRQS_LEGACY + AT91_ID_SYS,
 +              .end    = NR_IRQS_LEGACY + AT91_ID_SYS,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1147,8 -1148,8 +1148,8 @@@ static struct resource tsadcc_resources
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_TSC,
 -              .end    = AT91SAM9G45_ID_TSC,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_TSC,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_TSC,
                .flags  = IORESOURCE_IRQ,
        }
  };
@@@ -1197,8 -1198,8 +1198,8 @@@ static struct resource adc_resources[] 
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_TSC,
 -              .end    = AT91SAM9G45_ID_TSC,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_TSC,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_TSC,
                .flags  = IORESOURCE_IRQ,
        }
  };
@@@ -1400,8 -1401,8 +1401,8 @@@ static struct resource pwm_resources[] 
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_PWMC,
 -              .end    = AT91SAM9G45_ID_PWMC,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_PWMC,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_PWMC,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1453,8 -1454,8 +1454,8 @@@ static struct resource ssc0_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_SSC0,
 -              .end    = AT91SAM9G45_ID_SSC0,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_SSC0,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_SSC0,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1495,8 -1496,8 +1496,8 @@@ static struct resource ssc1_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_SSC1,
 -              .end    = AT91SAM9G45_ID_SSC1,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_SSC1,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_SSC1,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1575,8 -1576,8 +1576,8 @@@ static struct resource dbgu_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91_ID_SYS,
 -              .end    = AT91_ID_SYS,
 +              .start  = NR_IRQS_LEGACY + AT91_ID_SYS,
 +              .end    = NR_IRQS_LEGACY + AT91_ID_SYS,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1613,8 -1614,8 +1614,8 @@@ static struct resource uart0_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_US0,
 -              .end    = AT91SAM9G45_ID_US0,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_US0,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_US0,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1656,8 -1657,8 +1657,8 @@@ static struct resource uart1_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_US1,
 -              .end    = AT91SAM9G45_ID_US1,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_US1,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_US1,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1699,8 -1700,8 +1700,8 @@@ static struct resource uart2_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_US2,
 -              .end    = AT91SAM9G45_ID_US2,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_US2,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_US2,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1742,8 -1743,8 +1743,8 @@@ static struct resource uart3_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = AT91SAM9G45_ID_US3,
 -              .end    = AT91SAM9G45_ID_US3,
 +              .start  = NR_IRQS_LEGACY + AT91SAM9G45_ID_US3,
 +              .end    = NR_IRQS_LEGACY + AT91SAM9G45_ID_US3,
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -1830,6 -1831,130 +1831,130 @@@ void __init at91_register_uart(unsigne
  void __init at91_add_device_serial(void) {}
  #endif
  
+ /* --------------------------------------------------------------------
+  *  SHA1/SHA256
+  * -------------------------------------------------------------------- */
+ #if defined(CONFIG_CRYPTO_DEV_ATMEL_SHA) || defined(CONFIG_CRYPTO_DEV_ATMEL_SHA_MODULE)
+ static struct resource sha_resources[] = {
+       {
+               .start  = AT91SAM9G45_BASE_SHA,
+               .end    = AT91SAM9G45_BASE_SHA + SZ_16K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = AT91SAM9G45_ID_AESTDESSHA,
+               .end    = AT91SAM9G45_ID_AESTDESSHA,
+               .flags  = IORESOURCE_IRQ,
+       },
+ };
+ static struct platform_device at91sam9g45_sha_device = {
+       .name   = "atmel_sha",
+       .id             = -1,
+       .resource       = sha_resources,
+       .num_resources  = ARRAY_SIZE(sha_resources),
+ };
+ static void __init at91_add_device_sha(void)
+ {
+       platform_device_register(&at91sam9g45_sha_device);
+ }
+ #else
+ static void __init at91_add_device_sha(void) {}
+ #endif
+ /* --------------------------------------------------------------------
+  *  DES/TDES
+  * -------------------------------------------------------------------- */
+ #if defined(CONFIG_CRYPTO_DEV_ATMEL_TDES) || defined(CONFIG_CRYPTO_DEV_ATMEL_TDES_MODULE)
+ static struct resource tdes_resources[] = {
+       [0] = {
+               .start  = AT91SAM9G45_BASE_TDES,
+               .end    = AT91SAM9G45_BASE_TDES + SZ_16K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = AT91SAM9G45_ID_AESTDESSHA,
+               .end    = AT91SAM9G45_ID_AESTDESSHA,
+               .flags  = IORESOURCE_IRQ,
+       },
+ };
+ static struct platform_device at91sam9g45_tdes_device = {
+       .name   = "atmel_tdes",
+       .id             = -1,
+       .resource       = tdes_resources,
+       .num_resources  = ARRAY_SIZE(tdes_resources),
+ };
+ static void __init at91_add_device_tdes(void)
+ {
+       platform_device_register(&at91sam9g45_tdes_device);
+ }
+ #else
+ static void __init at91_add_device_tdes(void) {}
+ #endif
+ /* --------------------------------------------------------------------
+  *  AES
+  * -------------------------------------------------------------------- */
+ #if defined(CONFIG_CRYPTO_DEV_ATMEL_AES) || defined(CONFIG_CRYPTO_DEV_ATMEL_AES_MODULE)
+ static struct aes_platform_data aes_data;
+ static u64 aes_dmamask = DMA_BIT_MASK(32);
+ static struct resource aes_resources[] = {
+       [0] = {
+               .start  = AT91SAM9G45_BASE_AES,
+               .end    = AT91SAM9G45_BASE_AES + SZ_16K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = AT91SAM9G45_ID_AESTDESSHA,
+               .end    = AT91SAM9G45_ID_AESTDESSHA,
+               .flags  = IORESOURCE_IRQ,
+       },
+ };
+ static struct platform_device at91sam9g45_aes_device = {
+       .name   = "atmel_aes",
+       .id             = -1,
+       .dev    = {
+               .dma_mask               = &aes_dmamask,
+               .coherent_dma_mask      = DMA_BIT_MASK(32),
+               .platform_data          = &aes_data,
+       },
+       .resource       = aes_resources,
+       .num_resources  = ARRAY_SIZE(aes_resources),
+ };
+ static void __init at91_add_device_aes(void)
+ {
+       struct at_dma_slave     *atslave;
+       struct aes_dma_data     *alt_atslave;
+       alt_atslave = kzalloc(sizeof(struct aes_dma_data), GFP_KERNEL);
+       /* DMA TX slave channel configuration */
+       atslave = &alt_atslave->txdata;
+       atslave->dma_dev = &at_hdmac_device.dev;
+       atslave->cfg = ATC_FIFOCFG_ENOUGHSPACE  | ATC_SRC_H2SEL_HW |
+                                               ATC_SRC_PER(AT_DMA_ID_AES_RX);
+       /* DMA RX slave channel configuration */
+       atslave = &alt_atslave->rxdata;
+       atslave->dma_dev = &at_hdmac_device.dev;
+       atslave->cfg = ATC_FIFOCFG_ENOUGHSPACE  | ATC_DST_H2SEL_HW |
+                                               ATC_DST_PER(AT_DMA_ID_AES_TX);
+       aes_data.dma_slave = alt_atslave;
+       platform_device_register(&at91sam9g45_aes_device);
+ }
+ #else
+ static void __init at91_add_device_aes(void) {}
+ #endif
  
  /* -------------------------------------------------------------------- */
  /*
@@@ -1847,6 -1972,9 +1972,9 @@@ static int __init at91_add_standard_dev
        at91_add_device_trng();
        at91_add_device_watchdog();
        at91_add_device_tc();
+       at91_add_device_sha();
+       at91_add_device_tdes();
+       at91_add_device_aes();
        return 0;
  }