aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Royer <nicolas@eukrea.com>2013-02-20 11:10:23 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2013-03-10 04:46:41 -0400
commit6150f3bc0b4f94f0eea3e32b4e7462025e4bd972 (patch)
treecb34994298a6576ff55eb902aaa3b60bc3d1ccad
parentca81a1a1b8d79dd6706c9463a81e9491e940ca2b (diff)
ARM: AT91SAM9G45: same platform data structure for all crypto peripherals
Only AES use DMA in AT91SAM9G45 (TDES and SHA use PDC). However latest Atmel TDES and SHA IP releases use DMA instead of PDC. --> Atmel TDES and SHA drivers need DMA platform data for those IP releases. Goal of this patch is to use the same platform data structure for all Atmel crypto peripherals. This structure contains information about DMA interface. Signed-off-by: Nicolas Royer <nicolas@eukrea.com> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com> Acked-by: Eric Bénard <eric@eukrea.com> Tested-by: Eric Bénard <eric@eukrea.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--arch/arm/mach-at91/at91sam9g45_devices.c14
-rw-r--r--include/linux/platform_data/atmel-aes.h22
-rw-r--r--include/linux/platform_data/crypto-atmel.h22
3 files changed, 28 insertions, 30 deletions
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
index 827c9f2a70fb..f0bf68268ca2 100644
--- a/arch/arm/mach-at91/at91sam9g45_devices.c
+++ b/arch/arm/mach-at91/at91sam9g45_devices.c
@@ -18,7 +18,7 @@
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/i2c-gpio.h> 19#include <linux/i2c-gpio.h>
20#include <linux/atmel-mci.h> 20#include <linux/atmel-mci.h>
21#include <linux/platform_data/atmel-aes.h> 21#include <linux/platform_data/crypto-atmel.h>
22 22
23#include <linux/platform_data/at91_adc.h> 23#include <linux/platform_data/at91_adc.h>
24 24
@@ -1900,7 +1900,8 @@ static void __init at91_add_device_tdes(void) {}
1900 * -------------------------------------------------------------------- */ 1900 * -------------------------------------------------------------------- */
1901 1901
1902#if defined(CONFIG_CRYPTO_DEV_ATMEL_AES) || defined(CONFIG_CRYPTO_DEV_ATMEL_AES_MODULE) 1902#if defined(CONFIG_CRYPTO_DEV_ATMEL_AES) || defined(CONFIG_CRYPTO_DEV_ATMEL_AES_MODULE)
1903static struct aes_platform_data aes_data; 1903static struct crypto_platform_data aes_data;
1904static struct crypto_dma_data alt_atslave;
1904static u64 aes_dmamask = DMA_BIT_MASK(32); 1905static u64 aes_dmamask = DMA_BIT_MASK(32);
1905 1906
1906static struct resource aes_resources[] = { 1907static struct resource aes_resources[] = {
@@ -1931,23 +1932,20 @@ static struct platform_device at91sam9g45_aes_device = {
1931static void __init at91_add_device_aes(void) 1932static void __init at91_add_device_aes(void)
1932{ 1933{
1933 struct at_dma_slave *atslave; 1934 struct at_dma_slave *atslave;
1934 struct aes_dma_data *alt_atslave;
1935
1936 alt_atslave = kzalloc(sizeof(struct aes_dma_data), GFP_KERNEL);
1937 1935
1938 /* DMA TX slave channel configuration */ 1936 /* DMA TX slave channel configuration */
1939 atslave = &alt_atslave->txdata; 1937 atslave = &alt_atslave.txdata;
1940 atslave->dma_dev = &at_hdmac_device.dev; 1938 atslave->dma_dev = &at_hdmac_device.dev;
1941 atslave->cfg = ATC_FIFOCFG_ENOUGHSPACE | ATC_SRC_H2SEL_HW | 1939 atslave->cfg = ATC_FIFOCFG_ENOUGHSPACE | ATC_SRC_H2SEL_HW |
1942 ATC_SRC_PER(AT_DMA_ID_AES_RX); 1940 ATC_SRC_PER(AT_DMA_ID_AES_RX);
1943 1941
1944 /* DMA RX slave channel configuration */ 1942 /* DMA RX slave channel configuration */
1945 atslave = &alt_atslave->rxdata; 1943 atslave = &alt_atslave.rxdata;
1946 atslave->dma_dev = &at_hdmac_device.dev; 1944 atslave->dma_dev = &at_hdmac_device.dev;
1947 atslave->cfg = ATC_FIFOCFG_ENOUGHSPACE | ATC_DST_H2SEL_HW | 1945 atslave->cfg = ATC_FIFOCFG_ENOUGHSPACE | ATC_DST_H2SEL_HW |
1948 ATC_DST_PER(AT_DMA_ID_AES_TX); 1946 ATC_DST_PER(AT_DMA_ID_AES_TX);
1949 1947
1950 aes_data.dma_slave = alt_atslave; 1948 aes_data.dma_slave = &alt_atslave;
1951 platform_device_register(&at91sam9g45_aes_device); 1949 platform_device_register(&at91sam9g45_aes_device);
1952} 1950}
1953#else 1951#else
diff --git a/include/linux/platform_data/atmel-aes.h b/include/linux/platform_data/atmel-aes.h
deleted file mode 100644
index ab68082fbcb0..000000000000
--- a/include/linux/platform_data/atmel-aes.h
+++ /dev/null
@@ -1,22 +0,0 @@
1#ifndef __LINUX_ATMEL_AES_H
2#define __LINUX_ATMEL_AES_H
3
4#include <linux/platform_data/dma-atmel.h>
5
6/**
7 * struct aes_dma_data - DMA data for AES
8 */
9struct aes_dma_data {
10 struct at_dma_slave txdata;
11 struct at_dma_slave rxdata;
12};
13
14/**
15 * struct aes_platform_data - board-specific AES configuration
16 * @dma_slave: DMA slave interface to use in data transfers.
17 */
18struct aes_platform_data {
19 struct aes_dma_data *dma_slave;
20};
21
22#endif /* __LINUX_ATMEL_AES_H */
diff --git a/include/linux/platform_data/crypto-atmel.h b/include/linux/platform_data/crypto-atmel.h
new file mode 100644
index 000000000000..b46e0d9062a0
--- /dev/null
+++ b/include/linux/platform_data/crypto-atmel.h
@@ -0,0 +1,22 @@
1#ifndef __LINUX_CRYPTO_ATMEL_H
2#define __LINUX_CRYPTO_ATMEL_H
3
4#include <linux/platform_data/dma-atmel.h>
5
6/**
7 * struct crypto_dma_data - DMA data for AES/TDES/SHA
8 */
9struct crypto_dma_data {
10 struct at_dma_slave txdata;
11 struct at_dma_slave rxdata;
12};
13
14/**
15 * struct crypto_platform_data - board-specific AES/TDES/SHA configuration
16 * @dma_slave: DMA slave interface to use in data transfers.
17 */
18struct crypto_platform_data {
19 struct crypto_dma_data *dma_slave;
20};
21
22#endif /* __LINUX_CRYPTO_ATMEL_H */