hw_random: make msm_rng driver compatible for kernel version 4.4

Updated APIs used in msm_rng to be built on kernel version 4.4.

Acked-by: Shabnam Aboughadareh <shabnama@qti.qualcomm.com>
Signed-off-by: Zhen Kong <zkong@codeaurora.org>
This commit is contained in:
Zhen Kong 2016-03-02 13:57:33 -08:00 committed by David Keitel
parent df53b6783a
commit 3684d72b85
2 changed files with 14 additions and 17 deletions

View file

@ -335,7 +335,7 @@ config HW_RANDOM_TPM
config HW_RANDOM_MSM_LEGACY
tristate "Qualcomm MSM Random Number Generator support (LEGACY)"
depends on HW_RANDOM && ARCH_MSM
depends on HW_RANDOM && ARCH_QCOM
select CRYPTO_AES
select CRYPTO_ECB
default n
@ -351,7 +351,7 @@ config HW_RANDOM_MSM_LEGACY
config HW_RANDOM_MSM
tristate "Qualcomm SoCs Random Number Generator support"
depends on HW_RANDOM && ARCH_QCOM
default HW_RANDOM
default n
---help---
This driver provides kernel-side support for the Random Number
Generator hardware found on Qualcomm SoCs.

View file

@ -375,7 +375,8 @@ static int msm_rng_remove(struct platform_device *pdev)
return 0;
}
static int qrng_get_random(struct crypto_rng *tfm, u8 *rdata,
static int qrng_get_random(struct crypto_rng *tfm, const u8 *src,
unsigned int slen, u8 *rdata,
unsigned int dlen)
{
int sizeread = 0;
@ -410,27 +411,23 @@ err_exit:
}
static int qrng_reset(struct crypto_rng *tfm, u8 *seed, unsigned int slen)
static int qrng_reset(struct crypto_rng *tfm, const u8 *seed, unsigned int slen)
{
return 0;
}
static struct crypto_alg rng_alg = {
static struct rng_alg rng_algs[] = { {
.generate = qrng_get_random,
.seed = qrng_reset,
.seedsize = 0,
.base = {
.cra_name = "qrng",
.cra_driver_name = "fips_hw_qrng",
.cra_priority = 300,
.cra_flags = CRYPTO_ALG_TYPE_RNG,
.cra_ctxsize = 0,
.cra_type = &crypto_rng_type,
.cra_module = THIS_MODULE,
.cra_u = {
.rng = {
.rng_make_random = qrng_get_random,
.rng_reset = qrng_reset,
.seedsize = 0,
}
}
};
}
} };
static struct of_device_id qrng_match[] = {
{ .compatible = "qcom,msm-rng",
@ -459,7 +456,7 @@ static int __init msm_rng_init(void)
__func__, ret);
goto err_exit;
}
ret = crypto_register_alg(&rng_alg);
ret = crypto_register_rngs(rng_algs, ARRAY_SIZE(rng_algs));
if (ret) {
pr_err("%s: crypto_register_algs error:%d\n",
__func__, ret);
@ -474,7 +471,7 @@ module_init(msm_rng_init);
static void __exit msm_rng_exit(void)
{
crypto_unregister_alg(&rng_alg);
crypto_unregister_rngs(rng_algs, ARRAY_SIZE(rng_algs));
platform_driver_unregister(&rng_driver);
}