From patchwork Thu Jun 20 23:13:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sam Protsenko X-Patchwork-Id: 13706543 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A548FC2BA18 for ; Thu, 20 Jun 2024 23:14:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=3cJgtDYRGnxNR5uxsP8R2aMDXQF4TAj9PgQdzrH0jxc=; b=s/bni2hpu93lQxBByiiL+q4OWT 59C8TQ/xUAonjNYilUozRpsjxvXdNEh1ZusUSJ84ot68LttZVQy9+us7ncEcwIvEfTFFQXFvOnChR qYxLzVgKNrVWakmdSsm2pZkiMhPIeXcKa88qRiRgZAmB1qR3npvHZtbcOBuVbIE+jofY1YlImBFO1 V7dO+MTU3mBkfFdSJ6Bxc/jkl47vs9IgUAuSti3pDrQxGlV5kVdj/A+HaZN+/C/vAhWKnjNw2fHRG 0ieHOp5Wr931AENJB5UdZ/lEK76tG21lsRgabzB00Vzk5qG1zOic458jrVcDHKbg50UNhyumJgaca UOyoNBXw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sKQyZ-0000000756d-3Fid; Thu, 20 Jun 2024 23:13:55 +0000 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sKQyO-0000000750d-1Kr4 for linux-arm-kernel@lists.infradead.org; Thu, 20 Jun 2024 23:13:45 +0000 Received: by mail-ot1-x336.google.com with SMTP id 46e09a7af769-6fd3d9f572fso775044a34.0 for ; Thu, 20 Jun 2024 16:13:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1718925223; x=1719530023; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3cJgtDYRGnxNR5uxsP8R2aMDXQF4TAj9PgQdzrH0jxc=; b=KoRNxZrveIQ2grql09FLc3RIAGCuzTZHW/SQayDjrql7WgsCDqOeyW4TuL0RP+XV1h 39j45G2DG2/9GCv2zqYuxJrIGfFXHBE6ZTx22Ga+OhDlxRBjBn+7kZRZ/eJqKvop0Vb+ SwWgxZ1m6iGbMGXont48pM8oH++JRJHnrprc82BU/AEv9q/G+CrZKz31ys0FZU7Zq0rD zCB7qJVcVSU8h+bY9Z+TBlRiH5dw9QouVonsVUztiZREkapinlLrz79f+bTmFJxuoskK 0JnZ70ewQbTeu5tzl9zQQ9gH4/JWwp7QlL8dQbzXJ6onCoCBK+uDljCaHLi7dccwayXz xCTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718925223; x=1719530023; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3cJgtDYRGnxNR5uxsP8R2aMDXQF4TAj9PgQdzrH0jxc=; b=ieeRPm99ALvkRFycnUgoZXZ410ChJvFNYpzYkxOb1+NeD6MU1gVtEi9labCtrSGheG FO44xo7FxVFw6Ko0TLJZP5pXpOGXhF5OtBPyc+u95tp95wZnPkUIClHN9nI32NROQkMX Dbg5UQrqZM6ks3rcTBKc6SkzY7Q0By2LF4gpS/bwY7HvK85/i72gTL48IkdeLbM3sVCQ pTMJeY5NQXKi3KFB/42gOHrrOAzSX7Q5H7wg0KobVUvIvGoIHUhfW6ATKp/xVy5qbqjg WpjNJyVF/8JzLxjPJ6AUhz6bfKuYw7iMTHn/JAVfe9iXHGkM/J302p7K/1f6wJKwy4p9 EhNQ== X-Forwarded-Encrypted: i=1; AJvYcCXuGjZ9jqjOAYkkzWHSw+14e+FHexN1sMx0V/y6bPsMJ1/cix+ye8+TR/Py054KXEIv09yux7m1bpj1tAOHej9NUDwVC2TIr/3vDxdOTyqJ8yP5EIg= X-Gm-Message-State: AOJu0YydwoPg3PGsN3gaIe2Htk+vryQA+yZBai6jqVqIojWhmUwe3PpR u2lK1Ms5mbt3wd3MdiTIgoD6YqMJHvmkbw0ceCA48evCfmqRG5KzIManE8tbQbA= X-Google-Smtp-Source: AGHT+IFo/CfULEDzNMn3svBf7fPxTFvjTmzdPpeV1CFsheF7Pw04fqkYLYCT/ue0ZcXoBsHBHlK0pA== X-Received: by 2002:a9d:7409:0:b0:6f9:a523:403f with SMTP id 46e09a7af769-70073f20008mr7815451a34.22.1718925223095; Thu, 20 Jun 2024 16:13:43 -0700 (PDT) Received: from localhost ([136.62.192.75]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7009c60a4b1sm90529a34.47.2024.06.20.16.13.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 16:13:42 -0700 (PDT) From: Sam Protsenko To: =?utf-8?q?=C5=81ukasz_Stelmach?= , Krzysztof Kozlowski , Rob Herring , Conor Dooley Cc: Anand Moon , Olivia Mackall , Herbert Xu , Alim Akhtar , linux-samsung-soc@vger.kernel.org, linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 4/6] hwrng: exynos: Implement bus clock control Date: Thu, 20 Jun 2024 18:13:37 -0500 Message-Id: <20240620231339.1574-5-semen.protsenko@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240620231339.1574-1-semen.protsenko@linaro.org> References: <20240620231339.1574-1-semen.protsenko@linaro.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240620_161344_385868_3E109D62 X-CRM114-Status: GOOD ( 15.18 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Some SoCs like Exynos850 might require the SSS bus clock (PCLK) to be enabled in order to access TRNG registers. Add and handle the optional PCLK clock accordingly to make it possible. Signed-off-by: Sam Protsenko Reviewed-by: Krzysztof Kozlowski Reviewed-by: Anand Moon --- Changes in v3: - Added missing '\n' in dev_err_probe() - Added R-b tag from Krzysztof - Added R-b tag from Anand Changes in v2: - Used devm_clk_get_optional_enabled() to avoid calling clk_prepare_enable() for PCLK drivers/char/hw_random/exynos-trng.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/char/hw_random/exynos-trng.c b/drivers/char/hw_random/exynos-trng.c index 997bd22f4498..6ef2ee6c9804 100644 --- a/drivers/char/hw_random/exynos-trng.c +++ b/drivers/char/hw_random/exynos-trng.c @@ -47,7 +47,8 @@ struct exynos_trng_dev { struct device *dev; void __iomem *mem; - struct clk *clk; + struct clk *clk; /* operating clock */ + struct clk *pclk; /* bus clock */ struct hwrng rng; }; @@ -141,6 +142,13 @@ static int exynos_trng_probe(struct platform_device *pdev) goto err_clock; } + trng->pclk = devm_clk_get_optional_enabled(&pdev->dev, "pclk"); + if (IS_ERR(trng->pclk)) { + ret = dev_err_probe(&pdev->dev, PTR_ERR(trng->pclk), + "Could not get pclk\n"); + goto err_clock; + } + ret = devm_hwrng_register(&pdev->dev, &trng->rng); if (ret) { dev_err(&pdev->dev, "Could not register hwrng device.\n");