/* Check protocol version returned by the PA */ static u32 tf_rpc_init(struct tf_comm *comm) { u32 protocol_version; u32 rpc_error = RPC_SUCCESS; dprintk(KERN_INFO "tf_rpc_init(%p)\n", comm); spin_lock(&(comm->lock)); dmac_flush_range((void *)comm->init_shared_buffer, (void *)(((u32)(comm->init_shared_buffer)) + PAGE_SIZE)); outer_inv_range(__pa(comm->init_shared_buffer), __pa(comm->init_shared_buffer) + PAGE_SIZE); protocol_version = ((struct tf_init_buffer *) (comm->init_shared_buffer))->protocol_version; if ((GET_PROTOCOL_MAJOR_VERSION(protocol_version)) != TF_S_PROTOCOL_MAJOR_VERSION) { dprintk(KERN_ERR "SMC: Unsupported SMC Protocol PA Major " "Version (0x%02x, expected 0x%02x)!\n", GET_PROTOCOL_MAJOR_VERSION(protocol_version), TF_S_PROTOCOL_MAJOR_VERSION); rpc_error = RPC_ERROR_CONNECTION_PROTOCOL; } else { rpc_error = RPC_SUCCESS; } spin_unlock(&(comm->lock)); register_smc_public_crypto_digest(); register_smc_public_crypto_aes(); return rpc_error; }
static int __init register_dmcrypt_engines(void) { int ret; printk(KERN_INFO "Entered register_dmcrypt_engines"); ret = SCXPublicCryptoInit(); if (ret) { printk(KERN_ERR "register_dmcrypt_engines():" " SCXPublicCryptoInit failed, (error %d)!\n", ret); goto out; } ret = register_smc_public_crypto_aes(); if (ret) { printk(KERN_ERR "register_dmcrypt_engines():" " regiser_smc_public_crypto_aes failed, (error %d)!\n", ret); goto out; } ret = register_smc_public_crypto_digest(); if (ret) { printk(KERN_ERR "register_dmcrypt_engines():" " regiser_smc_public_crypto_digest failed, (error %d)!\n", ret); goto out; } out: return ret; }
int tf_init(struct tf_comm *comm) { spin_lock_init(&(comm->lock)); comm->flags = 0; comm->l1_buffer = NULL; comm->se_initialized = false; init_waitqueue_head(&(comm->wait_queue)); mutex_init(&(comm->rpc_mutex)); if (tf_crypto_init() != PUBLIC_CRYPTO_OPERATION_SUCCESS) return -EFAULT; pr_info("%s\n", S_VERSION_STRING); register_smc_public_crypto_digest(); register_smc_public_crypto_aes(); return 0; }
int tf_init(struct tf_comm *comm) { spin_lock_init(&(comm->lock)); comm->flags = 0; comm->pBuffer = NULL; comm->init_shared_buffer = NULL; comm->se_initialized = false; init_waitqueue_head(&(comm->wait_queue)); mutex_init(&(comm->rpc_mutex)); if (tf_crypto_init() != PUBLIC_CRYPTO_OPERATION_SUCCESS) return -EFAULT; if (omap_type() == OMAP2_DEVICE_TYPE_GP) { register_smc_public_crypto_digest(); register_smc_public_crypto_aes(); } return 0; }