drivers: crypto: drop rng api from crypto driver
rng module is not belongs to crypto driver anymore. Change-Id: I6d837397621267edb586034ff87b82fc33a30d5b Signed-off-by: Lin Jinhan <troy.lin@rock-chips.com>
This commit is contained in:
parent
b6b83d2acb
commit
a3341e9017
|
|
@ -206,16 +206,6 @@ int crypto_rsa_verify(struct udevice *dev, rsa_key *ctx, u8 *sign, u8 *output)
|
|||
return ops->rsa_verify(dev, ctx, sign, output);
|
||||
}
|
||||
|
||||
int crypto_get_trng(struct udevice *dev, u8 *output, u32 len)
|
||||
{
|
||||
const struct dm_crypto_ops *ops = device_get_ops(dev);
|
||||
|
||||
if (!ops || !ops->get_trng)
|
||||
return -ENOSYS;
|
||||
|
||||
return ops->get_trng(dev, output, len);
|
||||
}
|
||||
|
||||
UCLASS_DRIVER(crypto) = {
|
||||
.id = UCLASS_CRYPTO,
|
||||
.name = "crypto",
|
||||
|
|
|
|||
|
|
@ -87,19 +87,6 @@ typedef u32 paddr_t;
|
|||
|
||||
fdt_addr_t crypto_base;
|
||||
|
||||
static int hw_check_trng_exist(void)
|
||||
{
|
||||
u32 tmp = 0, val = 0;
|
||||
|
||||
tmp = crypto_read(CRYPTO_RNG_SAMPLE_CNT);
|
||||
crypto_write(50, CRYPTO_RNG_SAMPLE_CNT);
|
||||
|
||||
val = crypto_read(CRYPTO_RNG_SAMPLE_CNT);
|
||||
crypto_write(tmp, CRYPTO_RNG_SAMPLE_CNT);
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
static void word2byte(u32 word, u8 *ch, u32 endian)
|
||||
{
|
||||
/* 0: Big-Endian 1: Little-Endian */
|
||||
|
|
@ -361,42 +348,6 @@ exit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int rk_trng(u8 *trng, u32 len)
|
||||
{
|
||||
u32 i, reg_ctrl = 0;
|
||||
int ret = -EINVAL;
|
||||
u32 buf[8];
|
||||
|
||||
if (len > CRYPTO_TRNG_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
|
||||
/* enable osc_ring to get entropy, sample period is set as 50 */
|
||||
crypto_write(50, CRYPTO_RNG_SAMPLE_CNT);
|
||||
|
||||
reg_ctrl |= CRYPTO_RNG_256_bit_len;
|
||||
reg_ctrl |= CRYPTO_RNG_SLOWER_SOC_RING_1;
|
||||
reg_ctrl |= CRYPTO_RNG_ENABLE;
|
||||
reg_ctrl |= CRYPTO_RNG_START;
|
||||
reg_ctrl |= CRYPTO_WRITE_MASK_ALL;
|
||||
|
||||
crypto_write(reg_ctrl | CRYPTO_WRITE_MASK_ALL, CRYPTO_RNG_CTL);
|
||||
RK_WHILE_TIME_OUT(crypto_read(CRYPTO_RNG_CTL) & CRYPTO_RNG_START,
|
||||
RK_CRYPTO_TIME_OUT, ret);
|
||||
|
||||
if (ret == 0) {
|
||||
for (i = 0; i < ARRAY_SIZE(buf); i++)
|
||||
buf[i] = crypto_read(CRYPTO_RNG_DOUT_0 + i * 4);
|
||||
memcpy(trng, buf, len);
|
||||
}
|
||||
|
||||
/* close TRNG */
|
||||
crypto_write(0 | CRYPTO_WRITE_MASK_ALL, CRYPTO_RNG_CTL);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static u32 rockchip_crypto_capability(struct udevice *dev)
|
||||
{
|
||||
u32 val = 0;
|
||||
|
|
@ -413,9 +364,6 @@ static u32 rockchip_crypto_capability(struct udevice *dev)
|
|||
CRYPTO_RSA3072 |
|
||||
CRYPTO_RSA4096;
|
||||
|
||||
if (hw_check_trng_exist())
|
||||
val |= CRYPTO_TRNG;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
|
|
@ -560,33 +508,12 @@ static int rockchip_crypto_rsa_verify(struct udevice *dev, rsa_key *ctx,
|
|||
}
|
||||
#endif
|
||||
|
||||
static int rockchip_crypto_get_trng(struct udevice *dev, u8 *output, u32 len)
|
||||
{
|
||||
int ret;
|
||||
u32 i;
|
||||
|
||||
if (!dev || !output || !len)
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < len / CRYPTO_TRNG_MAX; i++) {
|
||||
ret = rk_trng(output + i * CRYPTO_TRNG_MAX, CRYPTO_TRNG_MAX);
|
||||
if (ret)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = rk_trng(output + i * CRYPTO_TRNG_MAX, len % CRYPTO_TRNG_MAX);
|
||||
|
||||
fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct dm_crypto_ops rockchip_crypto_ops = {
|
||||
.capability = rockchip_crypto_capability,
|
||||
.sha_init = rockchip_crypto_sha_init,
|
||||
.sha_update = rockchip_crypto_sha_update,
|
||||
.sha_final = rockchip_crypto_sha_final,
|
||||
.rsa_verify = rockchip_crypto_rsa_verify,
|
||||
.get_trng = rockchip_crypto_get_trng,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -23,8 +23,6 @@
|
|||
#define CRYPTO_RSA3072 BIT(13)
|
||||
#define CRYPTO_RSA4096 BIT(14)
|
||||
|
||||
#define CRYPTO_TRNG BIT(15)
|
||||
|
||||
#define BYTE2WORD(bytes) ((bytes) / 4)
|
||||
#define BITS2BYTE(nbits) ((nbits) / 8)
|
||||
#define BITS2WORD(nbits) ((nbits) / 32)
|
||||
|
|
@ -54,9 +52,6 @@ struct dm_crypto_ops {
|
|||
/* RSA verify */
|
||||
int (*rsa_verify)(struct udevice *dev, rsa_key *ctx,
|
||||
u8 *sign, u8 *output);
|
||||
|
||||
/* TRNG get */
|
||||
int (*get_trng)(struct udevice *dev, u8 *output, u32 len);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -148,15 +143,4 @@ int crypto_sha_regions_csum(struct udevice *dev, sha_context *ctx,
|
|||
*/
|
||||
int crypto_rsa_verify(struct udevice *dev, rsa_key *ctx, u8 *sign, u8 *output);
|
||||
|
||||
/**
|
||||
* crypto_get_trng() - Crypto get trng
|
||||
*
|
||||
* @dev: crypto device
|
||||
* @output: output trng data
|
||||
* @len: trng len to get
|
||||
*
|
||||
* @return 0 on success, otherwise failed
|
||||
*/
|
||||
int crypto_get_trng(struct udevice *dev, u8 *output, u32 len);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue