Received: by 2002:a05:6a10:8395:0:0:0:0 with SMTP id n21csp363215pxh; Wed, 10 Nov 2021 03:03:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJwZQvgF4uNkb3xUFYuwPoYZpzZL5IzJoRdTJ+u5SdphXQNxMf4Mu0djEAIS2NIuwCirp8VY X-Received: by 2002:a17:907:9487:: with SMTP id dm7mr19164121ejc.2.1636542220792; Wed, 10 Nov 2021 03:03:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1636542220; cv=none; d=google.com; s=arc-20160816; b=V7m9ph+92yY1Hw+bSH79tpJVY1xTtBo4oMkf5uwDh2ywGKM/PvfgkPz7tUkekdL6d/ cyMGhVtJsiopFpf4TyJUxFv/zHIWUtbV1vvF/SGQPPxQMdrva+ByDWVjH6NArNjYal/0 ZUx3uItFoB+5dQEA3ESyJtS4Okb49Z7kkl3AP5WKq/kDmEALYpMSFMOIE0rdN2+t1j7g 9XH1XUr4oSjnMMlGT5GvXAdSMu25a6Mfr2KXHxSe0TiVvPWPYmm3WA2+rkXJSbje6EKR zrWGPXhMcL225eVYMdvdgmYtWbETyxuLoRAMAmq6SQTNrj7JI3whBXfxOayiSni2Yi3k pY5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=eHy9V66S/pA7pn8cr8IGIeTU+8YjPwSVmNZC5BhYoHI=; b=1GG1K6cpMKgQB+UKh8wLQnnldhkVJ3EoUrLUzGaVkaaQEO3PiCraAScju33tHIbLRr DaPpjCMKeo+UGpYctEj7tYyV4ibhj1Ej2yShMV3416c91yOWl4mCZjaJlEGWPL9ZdaXf byi5VHBHZPTnjfhIJt6CM/MXNpcbJf9ESrEFhWmp5oWHvFUFC7TyuIJK++Gg7WZn2Qcx Y86bMuvr2mUKJu5E/8nSTDb4u2YqjlTtDdwc4Tc113lcyHUIFBKe8BnSBR5z4IynzJLz GOLRjcnxhxiYBA26pKRB2oGVqSjzdm4B30RG9LwmLjdEVLzIfFJy/qhRY+nd9Jq1c2A4 AT4Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=WQG1s1s8; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id fp7si32222459ejc.326.2021.11.10.03.03.15; Wed, 10 Nov 2021 03:03:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=WQG1s1s8; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231630AbhKJLEX (ORCPT + 99 others); Wed, 10 Nov 2021 06:04:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231508AbhKJLEE (ORCPT ); Wed, 10 Nov 2021 06:04:04 -0500 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE1DBC06120E for ; Wed, 10 Nov 2021 03:00:52 -0800 (PST) Received: by mail-pg1-x52e.google.com with SMTP id f5so1900039pgc.12 for ; Wed, 10 Nov 2021 03:00:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eHy9V66S/pA7pn8cr8IGIeTU+8YjPwSVmNZC5BhYoHI=; b=WQG1s1s8cOph5ZyoSZ+As27S7z1Mb0vQYxo5+bSM8b7qahCCsIyh+Wm4N9lGscmbaV ZjwJBjxmrsVJEF605MX3dJekG4y6yige39vqbzwRcU4LxBHV+gMii1RKNDbYLYS7xzIU dujSsJebAhIVMFDK2fEZ2e1/khAhMcrg8kXz+v6j5ANPdXwkOWW2WNrxJKeJwiQ7YN7u qig0Ff7HsE5QV4pvkYdK+p7o46uqKcSoMNr2kpMpUz1QxLFt1uABLSAwOpz0H2Q5rGVs T8fo/k7FBdapbxrGtap6QVgEwRHuKlKyYGdjKMV/Qm3MHbZGb/lNzZbQBYTACoXofNzZ y4xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eHy9V66S/pA7pn8cr8IGIeTU+8YjPwSVmNZC5BhYoHI=; b=0CRbNpVUMns2DmCRjphXf1QVFKn6pVHcYFRjS7dLf2eUpmLvrZDN9iCSEK8Os5QnLt R+JV2rL1Nmf4SeYuW6UQIEN2zY6JioZPsb4UoMVI38ndm9dP8L6rZV43UKZKgGRWGo7A /qJpIXk80A60YNrtM4cFJQ6Vao6l0RDtLebDpzN/vaeWZsugTiCwJI8iUIFsk0491VNV Rd1cFIYA1sfqm/6OAR+BS3a+64DYKOdkcMbfWy/jXs/vcvn2WEtbB8kYHBkLOQW3LJqX ITzvUa6EAc8kiCJ6fPBR1nMmLC3f3gNke9ypJGH8MEmEf9duN2Wn5tuEYFP8CTt7sLyw yxEA== X-Gm-Message-State: AOAM533ajHQ1X7djs2pMJKIRQ7O7MHzBGJ9vRVUAmM39s93Su0cCM49/ 9b9kLMuC1kZpQhZ/OYDhkE10hA== X-Received: by 2002:a05:6a00:1944:b0:438:d002:6e35 with SMTP id s4-20020a056a00194400b00438d0026e35mr98550246pfk.20.1636542052446; Wed, 10 Nov 2021 03:00:52 -0800 (PST) Received: from localhost.name ([122.161.52.143]) by smtp.gmail.com with ESMTPSA id e11sm5585282pjl.20.2021.11.10.03.00.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Nov 2021 03:00:52 -0800 (PST) From: Bhupesh Sharma To: linux-arm-msm@vger.kernel.org, linux-crypto@vger.kernel.org Cc: bhupesh.sharma@linaro.org, bhupesh.linux@gmail.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org, agross@kernel.org, herbert@gondor.apana.org.au, davem@davemloft.net, stephan@gerhold.net, Thara Gopinath , Bjorn Andersson Subject: [PATCH v5 14/22] crypto: qce: core: Add support to initialize interconnect path Date: Wed, 10 Nov 2021 16:29:14 +0530 Message-Id: <20211110105922.217895-15-bhupesh.sharma@linaro.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211110105922.217895-1-bhupesh.sharma@linaro.org> References: <20211110105922.217895-1-bhupesh.sharma@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org From: Thara Gopinath Crypto engine on certain Snapdragon processors like sm8150, sm8250, sm8350 etc. requires interconnect path between the engine and memory to be explicitly enabled and bandwidth set prior to any operations. Add support in the qce core to enable the interconnect path appropriately. Cc: Bjorn Andersson Cc: Rob Herring Signed-off-by: Bhupesh Sharma [Make header file inclusion alphabetical and use devm_of_icc_get()] Signed-off-by: Thara Gopinath --- drivers/crypto/qce/core.c | 34 +++++++++++++++++++++++++++------- drivers/crypto/qce/core.h | 1 + 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/drivers/crypto/qce/core.c b/drivers/crypto/qce/core.c index d3780be44a76..89d9c01ba009 100644 --- a/drivers/crypto/qce/core.c +++ b/drivers/crypto/qce/core.c @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -22,6 +23,8 @@ #define QCE_MAJOR_VERSION5 0x05 #define QCE_QUEUE_LENGTH 1 +#define QCE_DEFAULT_MEM_BANDWIDTH 393600 + static const struct qce_algo_ops *qce_ops[] = { #ifdef CONFIG_CRYPTO_DEV_QCE_SKCIPHER &skcipher_ops, @@ -206,21 +209,35 @@ static int qce_crypto_probe(struct platform_device *pdev) if (ret < 0) return ret; + qce->mem_path = devm_of_icc_get(qce->dev, "memory"); + if (IS_ERR(qce->mem_path)) + return PTR_ERR(qce->mem_path); + qce->core = devm_clk_get(qce->dev, "core"); - if (IS_ERR(qce->core)) - return PTR_ERR(qce->core); + if (IS_ERR(qce->core)) { + ret = PTR_ERR(qce->core); + goto err; + } qce->iface = devm_clk_get(qce->dev, "iface"); - if (IS_ERR(qce->iface)) - return PTR_ERR(qce->iface); + if (IS_ERR(qce->iface)) { + ret = PTR_ERR(qce->iface); + goto err; + } qce->bus = devm_clk_get(qce->dev, "bus"); - if (IS_ERR(qce->bus)) - return PTR_ERR(qce->bus); + if (IS_ERR(qce->bus)) { + ret = PTR_ERR(qce->bus); + goto err; + } + + ret = icc_set_bw(qce->mem_path, QCE_DEFAULT_MEM_BANDWIDTH, QCE_DEFAULT_MEM_BANDWIDTH); + if (ret) + goto err; ret = clk_prepare_enable(qce->core); if (ret) - return ret; + goto err_mem_path_disable; ret = clk_prepare_enable(qce->iface); if (ret) @@ -260,6 +277,9 @@ static int qce_crypto_probe(struct platform_device *pdev) clk_disable_unprepare(qce->iface); err_clks_core: clk_disable_unprepare(qce->core); +err_mem_path_disable: + icc_set_bw(qce->mem_path, 0, 0); +err: return ret; } diff --git a/drivers/crypto/qce/core.h b/drivers/crypto/qce/core.h index 085774cdf641..228fcd69ec51 100644 --- a/drivers/crypto/qce/core.h +++ b/drivers/crypto/qce/core.h @@ -35,6 +35,7 @@ struct qce_device { void __iomem *base; struct device *dev; struct clk *core, *iface, *bus; + struct icc_path *mem_path; struct qce_dma_data dma; int burst_size; unsigned int pipe_pair_id; -- 2.31.1