From patchwork Tue Jun 19 09:54:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vinod Koul X-Patchwork-Id: 10473963 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9EE8D60383 for ; Tue, 19 Jun 2018 09:55:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A78E828A6E for ; Tue, 19 Jun 2018 09:55:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9C4B328A96; Tue, 19 Jun 2018 09:55:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4B61D28A6E for ; Tue, 19 Jun 2018 09:55:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S937551AbeFSJzc (ORCPT ); Tue, 19 Jun 2018 05:55:32 -0400 Received: from mail-pl0-f65.google.com ([209.85.160.65]:45962 "EHLO mail-pl0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756935AbeFSJzN (ORCPT ); Tue, 19 Jun 2018 05:55:13 -0400 Received: by mail-pl0-f65.google.com with SMTP id c23-v6so10659622plz.12 for ; Tue, 19 Jun 2018 02:55:13 -0700 (PDT) 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; bh=SvxzFx5lR7oWAmcesNlMhyn68C9L3dvoVz2STn24eco=; b=HRp+Z6fbFzlbVCOGd+pJiG/RzypXJripitLnflqgBQ+nsq/FV4Jt4Bi/VahX/Ra2fk fAzI5SWlHg/8Adsb2y1Kl/Jv0d6gQOWsfJr5x8D0HmyiJcFbD10ZnqKXaNu5PBG2sE0P /AdeUZQnXTFRLwEhbgVmg+n4/HDdpeQOsCTW8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=SvxzFx5lR7oWAmcesNlMhyn68C9L3dvoVz2STn24eco=; b=riQgaoWSyrk8IFkJrC+n8kScDjC1m+KTI4ITLK+tx8UxvdRuVluMoS45xrsqNNH9hc P9dWlj0DjPmPxXaSpJ3hGOjVw5DKHlO8S0Dymn2YYp8ZXFPjkwmzOH5hI76xLtBbiE35 uFem2AumkIa0ohj+inopsYxBHrg9+iQ79jouxqDig597ByogcSU0AT2zDp8Snon9GDBS ih9ud1w9pEb7qTJaSfQQ+6a3XYM6+cmm4lBWzwPIlbaLVf5fY5IZ9w9Js+iRB/hmeLDI Ro9HOh8X0wmHF0HykvHxJ1yqiuS2Nz1N8UzCOxm0XzyTv0rRSmpMKLcOQIa93X2yiMsH Nwjg== X-Gm-Message-State: APt69E15ky7po4pEgH2VdrOGz01gTAUbotzw5YzSOVvAgUZueokvVFMC rlWoHjF0Hj1yDxBWuhMIcbW1ZMJBkWw= X-Google-Smtp-Source: ADUXVKL7sjTtNyL/fkpNjFnEyMUHP864CET0wjgcADWZWw8jvb8Htr+l2y8Cy7fb3YSFjax6nTO4pA== X-Received: by 2002:a17:902:8b8c:: with SMTP id ay12-v6mr18062984plb.74.1529402113129; Tue, 19 Jun 2018 02:55:13 -0700 (PDT) Received: from localhost.localdomain ([106.200.222.147]) by smtp.gmail.com with ESMTPSA id c17-v6sm21182034pgw.11.2018.06.19.02.55.10 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Jun 2018 02:55:12 -0700 (PDT) From: Vinod Koul X-Google-Original-From: Vinod Koul To: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Matt Mackall , Herbert Xu , Arnd Bergmann , Greg Kroah-Hartman , linux-arm-msm@vger.kernel.org, Stephen Boyd , vinod.koul@linaro.org, Vinod Koul Subject: [PATCH v2 2/2] hwrng: msm - Add support for prng v2 Date: Tue, 19 Jun 2018 15:24:30 +0530 Message-Id: <20180619095430.26358-3-vkoul@kernel.org> X-Mailer: git-send-email 2.14.4 In-Reply-To: <20180619095430.26358-1-vkoul@kernel.org> References: <20180619095430.26358-1-vkoul@kernel.org> Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Qcom 8996 and later chips support prng v2 which requires to implement only .read callback for hwrng. This version of chip has multiple Execution Environments (EE) and secure world is typically responsible for configuring the prng. Add driver data for qcom,prng as 0 and qcom,prng-v2 as 1 and use that to skip initialization and cleanup routines. Signed-off-by: Vinod Koul --- drivers/char/hw_random/msm-rng.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/char/hw_random/msm-rng.c b/drivers/char/hw_random/msm-rng.c index 841fee845ec9..4676520e1f16 100644 --- a/drivers/char/hw_random/msm-rng.c +++ b/drivers/char/hw_random/msm-rng.c @@ -17,6 +17,7 @@ #include #include #include +#include #include /* Device specific register offsets */ @@ -131,6 +132,7 @@ static int msm_rng_probe(struct platform_device *pdev) { struct resource *res; struct msm_rng *rng; + unsigned int skip_init; int ret; rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); @@ -149,9 +151,12 @@ static int msm_rng_probe(struct platform_device *pdev) return PTR_ERR(rng->clk); rng->hwrng.name = KBUILD_MODNAME, - rng->hwrng.init = msm_rng_init, - rng->hwrng.cleanup = msm_rng_cleanup, - rng->hwrng.read = msm_rng_read, + rng->hwrng.read = msm_rng_read; + skip_init = (unsigned long)of_device_get_match_data(&pdev->dev); + if (!skip_init) { + rng->hwrng.init = msm_rng_init; + rng->hwrng.cleanup = msm_rng_cleanup; + } ret = devm_hwrng_register(&pdev->dev, &rng->hwrng); if (ret) { @@ -163,7 +168,8 @@ static int msm_rng_probe(struct platform_device *pdev) } static const struct of_device_id msm_rng_of_match[] = { - { .compatible = "qcom,prng", }, + { .compatible = "qcom,prng", .data = (void *)0}, + { .compatible = "qcom,prng-v2", .data = (void *)1}, {} }; MODULE_DEVICE_TABLE(of, msm_rng_of_match);