Hi, Jarkko and Stefano 在 2025/5/6 上午11:19, Qunqin Zhao 写道:
Loongson Security Engine supports random number generation, hash, symmetric encryption and asymmetric encryption. Based on these encryption functions, TPM2 have been implemented in the Loongson Security Engine firmware. This driver is responsible for copying data into the memory visible to the firmware and receiving data from the firmware. Co-developed-by: Yinggang Gu <guyingg...@loongson.cn> Signed-off-by: Yinggang Gu <guyingg...@loongson.cn> Signed-off-by: Qunqin Zhao <zhaoqun...@loongson.cn> Reviewed-by: Huacai Chen <chenhua...@loongson.cn> Reviewed-by: Jarkko Sakkinen <jar...@kernel.org> --- v9: "tpm_loongson_driver" --> "tpm_loongson" "depends on CRYPTO_DEV_LOONGSON_SE" --> "depends on MFD_LOONGSON_SE"
...
+static int tpm_loongson_recv(struct tpm_chip *chip, u8 *buf, size_t count) +{ + struct loongson_se_engine *tpm_engine = dev_get_drvdata(&chip->dev); + struct tpm_loongson_cmd *cmd_ret = tpm_engine->command_ret;
if (cmd_ret->data_len > count) return -EIO;
+ + memcpy(buf, tpm_engine->data_buffer, cmd_ret->data_len); + + return cmd_ret->data_len; +} + +static int tpm_loongson_send(struct tpm_chip *chip, u8 *buf, size_t count) +{ + struct loongson_se_engine *tpm_engine = dev_get_drvdata(&chip->dev); + struct tpm_loongson_cmd *cmd = tpm_engine->command; +
if (count > tpm_engine->buffer_size) return -E2BIG;
+ cmd->data_len = count; + memcpy(tpm_engine->data_buffer, buf, count); + + return loongson_se_send_engine_cmd(tpm_engine); +}
Thanks for your comments, Qunqin.