aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2008-01-25 17:48:44 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2008-01-25 17:48:44 -0500
commit946fef4e14ebc2f14ab05f54789843621fe87f60 (patch)
treef883bbadbac017ac46e00d8da528b50b78c1318d
parent2d94dfc8c38edf63e91e48fd55c3a8822b6a9ced (diff)
[CRYPTO] hifn795x: Disallow built-in hifn795x when HW_RANDOM is m
Currently it is possible to select HW_RANDOM as a module and have hifn795x built-in. This causes a build problem because hifn795x will then call hwrng_register which isn't built-in. This patch introduces a new config option to control the hifn795x RNG which lets us avoid this problem. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--drivers/crypto/Kconfig8
-rw-r--r--drivers/crypto/hifn_795x.c6
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 74bd599dfb0c..8a70a9edabda 100644
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -88,10 +88,16 @@ config CRYPTO_DEV_HIFN_795X
88 select CRYPTO_DES 88 select CRYPTO_DES
89 select CRYPTO_ALGAPI 89 select CRYPTO_ALGAPI
90 select CRYPTO_BLKCIPHER 90 select CRYPTO_BLKCIPHER
91 select HW_RANDOM if CRYPTO_DEV_HIFN_795X_RNG
91 depends on PCI 92 depends on PCI
92 help 93 help
93 This option allows you to have support for HIFN 795x crypto adapters. 94 This option allows you to have support for HIFN 795x crypto adapters.
94 95
95 96config CRYPTO_DEV_HIFN_795X_RNG
97 bool "HIFN 795x random number generator"
98 depends on CRYPTO_DEV_HIFN_795X
99 help
100 Select this option if you want to enable the random number generator
101 on the HIFN 795x crypto adapters.
96 102
97endif # CRYPTO_HW 103endif # CRYPTO_HW
diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
index 16413e57597c..dfbf24c4033c 100644
--- a/drivers/crypto/hifn_795x.c
+++ b/drivers/crypto/hifn_795x.c
@@ -463,7 +463,7 @@ struct hifn_device
463 463
464 unsigned int pk_clk_freq; 464 unsigned int pk_clk_freq;
465 465
466#if defined(CONFIG_HW_RANDOM) || defined(CONFIG_HW_RANDOM_MODULE) 466#ifdef CRYPTO_DEV_HIFN_795X_RNG
467 unsigned int rng_wait_time; 467 unsigned int rng_wait_time;
468 ktime_t rngtime; 468 ktime_t rngtime;
469 struct hwrng rng; 469 struct hwrng rng;
@@ -795,7 +795,7 @@ static struct pci2id {
795 } 795 }
796}; 796};
797 797
798#if defined(CONFIG_HW_RANDOM) || defined(CONFIG_HW_RANDOM_MODULE) 798#ifdef CRYPTO_DEV_HIFN_795X_RNG
799static int hifn_rng_data_present(struct hwrng *rng, int wait) 799static int hifn_rng_data_present(struct hwrng *rng, int wait)
800{ 800{
801 struct hifn_device *dev = (struct hifn_device *)rng->priv; 801 struct hifn_device *dev = (struct hifn_device *)rng->priv;
@@ -880,7 +880,7 @@ static int hifn_init_pubrng(struct hifn_device *dev)
880 dprintk("Chip %s: RNG engine has been successfully initialised.\n", 880 dprintk("Chip %s: RNG engine has been successfully initialised.\n",
881 dev->name); 881 dev->name);
882 882
883#if defined(CONFIG_HW_RANDOM) || defined(CONFIG_HW_RANDOM_MODULE) 883#ifdef CRYPTO_DEV_HIFN_795X_RNG
884 /* First value must be discarded */ 884 /* First value must be discarded */
885 hifn_read_1(dev, HIFN_1_RNG_DATA); 885 hifn_read_1(dev, HIFN_1_RNG_DATA);
886 dev->rngtime = ktime_get(); 886 dev->rngtime = ktime_get();