From patchwork Wed Jul 4 11:44:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vinod Koul X-Patchwork-Id: 141540 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp705889ljj; Wed, 4 Jul 2018 04:45:32 -0700 (PDT) X-Google-Smtp-Source: AAOMgpf2uTXE1MCxA7qKWiZcRIpkCBAQiEyyY9jQzzUk3i6Ti9jXONXHZ8jzpb25RUI2NniyPUPd X-Received: by 2002:a62:e00a:: with SMTP id f10-v6mr1862018pfh.208.1530704732804; Wed, 04 Jul 2018 04:45:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530704732; cv=none; d=google.com; s=arc-20160816; b=MRceRum7/lrxE4Gs5GF6ZH8NSwrMoqemEt+lPs2Tajwt9OQACdYexCFzZ4gJC2KWFM yu6flLybxoEXhTMFYoHXGM3Ea4VT7vFh/XM/T41z+PV24KCZMAGSWj+KZttfXM3dcHKv CZtW84GjMCWgEF7L5KS1kTorA0g5qHuKH3ni8e4yHH42Tt62fPLDF9RQAwwPrfIzBTwM 7XDPF3Kr4fRb7wl/agiiULoQZl6LGm1I6pC3hN30lnrrA45bswC7SsU9FhqYqLDWEJYt ri1+OFFvFUUeXy/QNqFZ5RYP1nKJo4sBVz3wayBVNpysIKWspwt8YN+rRK7UYsP3FqBo xpVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=x2ycIlTlsBd27VfGpmcx9fZqXSq8El4Jm4Rc3+rYSMw=; b=djdjaSecHd0rJBXgLGXbEOxLFkrbvfnHrCbjHhZQEYwBwpTLqnX+dgdZg1hK/fKp4j ATy3fhXOI19XuQ/5bEIHDpiNUp58M7x7LVAgVL7C164RizmLhdQ3YdxrVe7PMhqAGzJE +mKpSWavGfl7gZABBxFu8HIF1tM6Bx3XsVnn9a6N7IolFW2c4DW9uHzOBJqrE2f9DGJs IdVYJxlG3gCkkKLQgfdc/vCfyvOafRXmwM4aVaGaZADzBdrJgMnTBjGv7+wprlpbrZb0 nbtX/Z0E024Ty8I4I8rJ+JqcglOazKJr3fbiXMxLByeFJ81N292836SD9LPuoHT/2QVE N64A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sfMGiwnh; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k5-v6si3259606plt.178.2018.07.04.04.45.32; Wed, 04 Jul 2018 04:45:32 -0700 (PDT) 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 header.i=@kernel.org header.s=default header.b=sfMGiwnh; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934546AbeGDLpa (ORCPT + 31 others); Wed, 4 Jul 2018 07:45:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:38782 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933071AbeGDLp1 (ORCPT ); Wed, 4 Jul 2018 07:45:27 -0400 Received: from localhost.localdomain (unknown [122.167.70.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D675220841; Wed, 4 Jul 2018 11:45:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1530704727; bh=NugPpvYkEUG8AtCvb5riLANuH/rmqyB7rHwo2Xy1DV8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sfMGiwnh+qS852UVOyhjUUgTdAKaeKHW2n0oM+va5N5roDHDHkcEeGqcg63tzXRxK BXG/EtH8npQwB5mTq9z2iesOOQwIfW6NtBEjGhHTNK0oO4Jowwy21gc33+fxM32dDF YIO8v9KFTYQl99oRCZdStupLHOohRl5YIVHHMX5U= From: Vinod Koul To: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Bjorn Andersson , Matt Mackall , Herbert Xu , Arnd Bergmann , Greg Kroah-Hartman , linux-arm-msm@vger.kernel.org, Stephen Boyd , Timur Tabi , Vinod Koul Subject: [PATCH v4 6/6] crypto: qcom: Add ACPI support Date: Wed, 4 Jul 2018 17:14:27 +0530 Message-Id: <20180704114427.29953-7-vkoul@kernel.org> X-Mailer: git-send-email 2.14.4 In-Reply-To: <20180704114427.29953-1-vkoul@kernel.org> References: <20180704114427.29953-1-vkoul@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Timur Tabi Add support for probing on ACPI systems, with ACPI HID QCOM8160. On ACPI systems, clocks are always enabled, the PRNG should already be enabled, and the register region is read-only. The driver only verifies that the hardware is already enabled never tries to disable or configure it. Signed-off-by: Timur Tabi [port to crypto API] Signed-off-by: Vinod Koul --- drivers/crypto/qcom-rng.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) -- 2.14.4 diff --git a/drivers/crypto/qcom-rng.c b/drivers/crypto/qcom-rng.c index f1bd86acaf9d..385352e200db 100644 --- a/drivers/crypto/qcom-rng.c +++ b/drivers/crypto/qcom-rng.c @@ -4,6 +4,7 @@ // Based on msm-rng.c and downstream driver #include +#include #include #include #include @@ -168,11 +169,21 @@ static int qcom_rng_probe(struct platform_device *pdev) if (IS_ERR(rng->base)) return PTR_ERR(rng->base); - rng->clk = devm_clk_get(&pdev->dev, "core"); - if (IS_ERR(rng->clk)) - return PTR_ERR(rng->clk); - rng->skip_init = (unsigned long)of_device_get_match_data(&pdev->dev); + /* + * ACPI systems have v2 hardware. The clocks are always enabled, + * and we should skip init + */ + if (has_acpi_companion(&pdev->dev)) { + rng->skip_init = 1; + } else { + rng->clk = devm_clk_get(&pdev->dev, "core"); + if (IS_ERR(rng->clk)) + return PTR_ERR(rng->clk); + + rng->skip_init = + (unsigned long)of_device_get_match_data(&pdev->dev); + } qcom_rng_dev = rng; ret = crypto_register_rng(&qcom_rng_alg); @@ -193,6 +204,16 @@ static int qcom_rng_remove(struct platform_device *pdev) return 0; } +#if IS_ENABLED(CONFIG_ACPI) +static const struct acpi_device_id qcom_rng_acpi_match[] = { + { + .id = "QCOM8160", + }, + {} +}; +MODULE_DEVICE_TABLE(acpi, qcom_rng_acpi_match); +#endif + static const struct of_device_id qcom_rng_of_match[] = { { .compatible = "qcom,prng", .data = (void *)0}, { .compatible = "qcom,prng-ee", .data = (void *)1}, @@ -206,6 +227,7 @@ static struct platform_driver qcom_rng_driver = { .driver = { .name = KBUILD_MODNAME, .of_match_table = of_match_ptr(qcom_rng_of_match), + .acpi_match_table = ACPI_PTR(qcom_rng_acpi_match), } }; module_platform_driver(qcom_rng_driver);