Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp16011594ybl; Tue, 31 Dec 2019 19:41:28 -0800 (PST) X-Google-Smtp-Source: APXvYqyoDxjxjYsV2bhFBKmKMDRpP8jUX0ojj6SqM3csRnyEnDYvTzY14BGTOvK87AxoLV2eaOsZ X-Received: by 2002:aa7:c2d3:: with SMTP id m19mr78313664edp.136.1577850087960; Tue, 31 Dec 2019 19:41:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577850087; cv=none; d=google.com; s=arc-20160816; b=ehwg2xZTGXFKj4zQppflNWv1BfuHDJrJoy7iCee6YJq0pDwowmwqV6+OC3nbs6Qmrl jo1Cj8IDo+xDOG/ptHUoO5gpdtue/2kU/UwpoZ3IuVXjw4xmAMIKObFVDCVXsjVNU3LF WpHPj0hTo+eF3Lb54RDZx6us1GVc3b0qFSUPvDPRd3KZDdx6oZcJfx3wxja5pOXU0rXt QbiMvxiwIUomhlaVeerJPUz2DzqDxWKH5qjb50H545/lrmC9wVnnsTu1YJUNXfCeQvsv n5PRMZ6kvX3sz6A+ZDaaQXP8Wk+qrwiKl+rjcx8++G7sqQPWvZoec96d186O0VBZHWTg eEWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=HDQ++XaiGQwCbu2OBRda2My5OvRVhmOuFkv9oick3GE=; b=uTzzl6wlJhmOtZtYlBaxrx/c5v9fihBTb2qZOLG1eUbiuW50LQ47h+zeytU0lguQHT 5fr2kPTl+kN4m56vHpLjX9tYDEHJ4DFG0IgwZ1Q8Yr/nVspA52fxDer2StOctfMIMzHs tKih94lfcTYSZSyk/DmYNNgaybrhRl96qNqXHJG80J/Ow1Xt5mUHFk745n8eKk8790vl rrmRl1TkMM/3j43SIhDU9u6ezymb7PG+2n+Gr9FkMR5R+GsNPTF/f6ma9DILmJI4mryb Db8CwKU8H+lYRkffCShOyt0UaFTEYwsKd9JmlIucOf9cPipFCtcGJduL3Sw0S6nPBpE9 xIAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@onstation.org header.s=default header.b=cuwUcU9W; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u9si9881865edq.348.2019.12.31.19.41.03; Tue, 31 Dec 2019 19:41:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@onstation.org header.s=default header.b=cuwUcU9W; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727161AbgAADhO (ORCPT + 99 others); Tue, 31 Dec 2019 22:37:14 -0500 Received: from onstation.org ([52.200.56.107]:51180 "EHLO onstation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727105AbgAADhO (ORCPT ); Tue, 31 Dec 2019 22:37:14 -0500 Received: from localhost.localdomain (c-98-239-145-235.hsd1.wv.comcast.net [98.239.145.235]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: masneyb) by onstation.org (Postfix) with ESMTPSA id 2D1E43E9DC; Wed, 1 Jan 2020 03:37:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=onstation.org; s=default; t=1577849833; bh=RGCPcDUKbPetkDE7FuEoQ8XfM4bfw2xCgy4VWuugn3g=; h=From:To:Cc:Subject:Date:From; b=cuwUcU9WjPruzvvuITwzFQONu++vaiNQjg5tbZQBhLYY8QUlVja+yW6v21cySqY71 ioNuv6UYS5fNYayI9/VfjgOS6L4vmAWoh44Gqg44eqS5YZzLmYLtKCR/YIyPVwzuZ5 EpgjZGhuNPPQ9ynVmh4WlBlNW5qIiaon3OM7a58I= From: Brian Masney To: bjorn.andersson@linaro.org Cc: agross@kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] firmware: qcom: scm: add 32 bit iommu page table support Date: Tue, 31 Dec 2019 22:37:04 -0500 Message-Id: <20200101033704.32264-1-masneyb@onstation.org> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add 32 bit implmentations of the functions __qcom_scm_iommu_secure_ptbl_size() and __qcom_scm_iommu_secure_ptbl_init() that are required by the qcom_iommu driver. Signed-off-by: Brian Masney --- drivers/firmware/qcom_scm-32.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/qcom_scm-32.c b/drivers/firmware/qcom_scm-32.c index 48e2ef794ea3..f149a85d36b0 100644 --- a/drivers/firmware/qcom_scm-32.c +++ b/drivers/firmware/qcom_scm-32.c @@ -638,13 +638,41 @@ int __qcom_scm_restore_sec_cfg(struct device *dev, u32 device_id, int __qcom_scm_iommu_secure_ptbl_size(struct device *dev, u32 spare, size_t *size) { - return -ENODEV; + int psize[2] = { 0, 0 }; + int ret; + + ret = qcom_scm_call(dev, QCOM_SCM_SVC_MP, + QCOM_SCM_IOMMU_SECURE_PTBL_SIZE, + &spare, sizeof(spare), &psize, sizeof(psize)); + if (ret || psize[1]) + return ret ? ret : -EINVAL; + + *size = psize[0]; + + return 0; } int __qcom_scm_iommu_secure_ptbl_init(struct device *dev, u64 addr, u32 size, u32 spare) { - return -ENODEV; + struct msm_scm_ptbl_init { + __le32 paddr; + __le32 size; + __le32 spare; + } req; + int ret, scm_ret = 0; + + req.paddr = addr; + req.size = size; + req.spare = spare; + + ret = qcom_scm_call(dev, QCOM_SCM_SVC_MP, + QCOM_SCM_IOMMU_SECURE_PTBL_INIT, + &req, sizeof(req), &scm_ret, sizeof(scm_ret)); + if (ret || scm_ret) + return ret ? ret : -EINVAL; + + return 0; } int __qcom_scm_io_readl(struct device *dev, phys_addr_t addr, -- 2.21.0