Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44a6b844 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
  ...
parents 945c40c6 a4347886
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -183,6 +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,
@@ -212,6 +219,7 @@ static struct clk *periph_clocks[] __initdata = {
	&udphs_clk,
	&mmc1_clk,
	&adc_op_clk,
	&aestdessha_clk,
	// irq0
};

@@ -232,6 +240,9 @@ static struct clk_lookup periph_clocks_lookups[] = {
	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 +399,7 @@ static unsigned int at91sam9g45_default_irq_priority[NR_AIC_IRQS] __initdata = {
	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) */
+128 −0
Original line number Diff line number Diff line
@@ -18,6 +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>

@@ -1830,6 +1831,130 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
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 @@ static int __init at91_add_standard_devices(void)
	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;
}

+2 −0
Original line number Diff line number Diff line
@@ -136,6 +136,8 @@
#define AT_DMA_ID_SSC1_RX	 8
#define AT_DMA_ID_AC97_TX	 9
#define AT_DMA_ID_AC97_RX	10
#define AT_DMA_ID_AES_TX	11
#define AT_DMA_ID_AES_RX	12
#define AT_DMA_ID_MCI1		13

#endif
+0 −1
Original line number Diff line number Diff line
@@ -149,7 +149,6 @@ core-$(CONFIG_KVM) += arch/powerpc/kvm/
core-$(CONFIG_PERF_EVENTS)	+= arch/powerpc/perf/

drivers-$(CONFIG_OPROFILE)	+= arch/powerpc/oprofile/
drivers-$(CONFIG_CRYPTO_DEV_NX) += drivers/crypto/nx/

# Default to zImage, override when needed
all: zImage

arch/s390/crypto/crypto_des.h

deleted100644 → 0
+0 −18
Original line number Diff line number Diff line
/*
 * Cryptographic API.
 *
 * Function for checking keys for the DES and Tripple DES Encryption
 * algorithms.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 */
#ifndef __CRYPTO_DES_H__
#define __CRYPTO_DES_H__

extern int crypto_des_check_key(const u8*, unsigned int, u32*);

#endif /*__CRYPTO_DES_H__*/
Loading