From patchwork Tue Jun 18 20:45:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sam Protsenko X-Patchwork-Id: 13703004 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 D4B18C2BA1A for ; Tue, 18 Jun 2024 20:45:59 +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=N5PSLoK5277DwTxre0IUhy89MhV1sfVHkT9GD1kskOA=; b=lyiLB+J6DJf6od3f5wqObjIVgh eNWY9dpyHz6QcIV0Lhg/foV74Cm5H5fiw+UOqPw/tZLv0hjNRQtMNtPX6nAEHeCKYngDGWfRRnYoA hpxPaZQtLjwDJyiGRXRNSMYGenLxiDPkZvdBvTLfYCaDx53SVTIYnYzGFYySCboD6xv8/jh6i9cxD R1FNe9uHgHmmhFxM/nH2TLOVOeBx3h7Dsxa6L4b8BiBLXpMJaNqvEeTC8oe+zV8NZvlfnrSWdLjQt UfMSPUQd1HP9mIss0VM5KODeD1LO5BvLQA3qdSSLnWprXTmTsloyVxoNgeuRw4mhZIct+5Wna7ONj ct00raYA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sJfi3-0000000GWzq-1Ia1; Tue, 18 Jun 2024 20:45:43 +0000 Received: from mail-oa1-x2c.google.com ([2001:4860:4864:20::2c]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sJfho-0000000GWtr-0kCd for linux-arm-kernel@lists.infradead.org; Tue, 18 Jun 2024 20:45:30 +0000 Received: by mail-oa1-x2c.google.com with SMTP id 586e51a60fabf-259884ef4ddso408153fac.2 for ; Tue, 18 Jun 2024 13:45:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1718743527; x=1719348327; 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=N5PSLoK5277DwTxre0IUhy89MhV1sfVHkT9GD1kskOA=; b=bfApdjoHajsxO2Kw31frgkLaC/kA1bjpSN1v6B/g3D/zXvVmRx0ZlCAfqvg/bq1GcE bpKnoNh4pZG4G85AkHNV6OQFwDrISf+oc0QsGgVllRj2RAHpN9X+/jHh2gUxFur79Ycg PoSXXFQ3Un76A+rI85ihskMhjoskPuIb+AlkDe9abjMqDa8Kk1OnFOjEJ/uCarNgPRN5 +13nD1eI8mXW0nxrRM3aGjzVImu4FIusZGAfPCY39rM7air/2yliW2Sl5Tr3vVtzfM1J G6+2SH4rafGC4QhAJZj/oywqz3d/W+cJGL1aVLAsaynzrnMepH0NM9ECKE79x9AgNw3j w+vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718743527; x=1719348327; 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=N5PSLoK5277DwTxre0IUhy89MhV1sfVHkT9GD1kskOA=; b=qkKoSZAJiteCBQpe9NQINLkFSl/K46TzKNkPLMmRs9GZqVysQdgiDcwqS3jqKKPDMY n9QNdma74Xa4fpCdHU8zyVHTjUtk6SRI4TPOEBw23ibKgPYHROif/HZnLx5R40D6dtM4 j3KXR/9xcIPQAAYAX2/V7pvvXfkSglzV7kPr5tm+AePZ7Zv8UbD3mEFB9ckCGdrpVWaw RR+q0W5TOshhsiDp4eBnKdYuacqcJOmwjUiOW/TlYjw/eVqHAsGaWfXVZCSNK6/zRgpR Mimjpch8BvQsQn263Y3NgEuq1tz/IoeOTdQVtLkIWJPXt32aKwLJqQmqUZ5TukI2An6V tPgg== X-Forwarded-Encrypted: i=1; AJvYcCX1OqHydsf6YZy1+V6fOsbe6f7p0KExqExR8QDBZajbSI7JnPk8PWl48/gNuxTQPFvc2KsYV+aebd9Szs0G6j49qC/YXOSjaFD7AyJmiNRtTqZ3wHo= X-Gm-Message-State: AOJu0Ywg6abhTRqKcNjltDgF4A6rstT48fb7mlhy0mYMAJRnyz4cAupq TM4qq1pKonB/X34kWG3wq9LtcXjajl2Vq81maUaT205eSPfTGGQI+Axt0IAnl5g= X-Google-Smtp-Source: AGHT+IFDRAFXeFBv7i8uwvM6wavaDuobxVfToXwipE3qzms4/u2yGTluz+/UFCszPXir6zQE6J0cyg== X-Received: by 2002:a05:6871:5209:b0:254:b3cc:a6d8 with SMTP id 586e51a60fabf-25c94a200famr1057219fac.32.1718743527261; Tue, 18 Jun 2024 13:45:27 -0700 (PDT) Received: from localhost ([136.62.192.75]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-25a6d0fd5a6sm231281fac.56.2024.06.18.13.45.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Jun 2024 13:45:27 -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 v2 4/7] hwrng: exynos: Implement bus clock control Date: Tue, 18 Jun 2024 15:45:20 -0500 Message-Id: <20240618204523.9563-5-semen.protsenko@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240618204523.9563-1-semen.protsenko@linaro.org> References: <20240618204523.9563-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-20240618_134528_240550_0D173F65 X-CRM114-Status: GOOD ( 15.60 ) 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 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 91c210d80a3d..99a0b271ffb7 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"); + goto err_clock; + } + ret = devm_hwrng_register(&pdev->dev, &trng->rng); if (ret) { dev_err(&pdev->dev, "Could not register hwrng device.\n");