From patchwork Wed Nov 29 22:02:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 171603 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6359:296:b0:164:83eb:24d7 with SMTP id ek22csp7039rwb; Wed, 29 Nov 2023 14:02:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IF3HzYzJF3LKhQ5ZVqL5DAaCIDvlxW49ThEC5O0rUXocBLxSOYQIuLgebJJGFNjc1fN4T5V X-Received: by 2002:a17:90b:4b4d:b0:285:b940:b292 with SMTP id mi13-20020a17090b4b4d00b00285b940b292mr14778412pjb.7.1701295378411; Wed, 29 Nov 2023 14:02:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701295378; cv=none; d=google.com; s=arc-20160816; b=AcWtsSnKsSTGnYGj7CPF25vmnsyhBHpLmBAgQVeVc+VsM0iD3FXk6e5iVJZdI9yTP0 5nFiMFjyY8oPod4PXW5yQHUhBavlFM1yLkZ7RmyNsTwRnebHgOpCCec8v1+VfWQHw4cY T2V6vSLVXwZF6EztfcCGwhji4Xi98NmsN5xkyop5cnog1NaVcpdPxcvMq2GuIgYhczDZ yYCy/GZKMp7kooKyki94I/sgHqU5hxjs73r9cjO4snz2SORxgcXQ0F9GlUzgGO0QJyTc 0sFPKbRH+/X110q0suQpramuk3VjcBy+4E9JlMMsIITUE7YGkNVrd0nHUoC+mcGaXABV 2dFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=vs7DQvqBwBJkC7ORmFfpBhA+BsKpcHW7GrhAduul7AY=; fh=WmhC2oVIsMCdMRN16uKJYFh61wcxZsWGU5cNOiei0lo=; b=uOd4aW5H6o/wGwozIDe/IlQFgNytY46eqKGuaZnyNqw76TCz/nAOVZ0FCP+oCi0qhk dbEyNKPJ3T6DKR1Xo/Zr8ZhbxLRCJUKkWJHB9fRn8H3Gewce47Tur3HgXIkgDDWVAUJY XVQZ/wS12r1ynbFthvD9ZrhsXYf4qhfCaP6SmuIlHc3GejIocDbxqZoR9Be9JD3naois yvq81pC8X31AAXm9/ynl7H7qqu/0YYAv//aG8ZRCS9zkVp+01dodx6TNpo4jMFF49Zoq y9Lmz9XS32cxJQA2q8zIfrAQ6oODitwEyj5AvHhxqeazyFQu8SWULqxFxU9t7CpruhAR lwOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=mHi0Y88M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id a24-20020a17090a8c1800b0028007dadafbsi2078264pjo.58.2023.11.29.14.02.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Nov 2023 14:02:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=mHi0Y88M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 52F8C80C6EBE; Wed, 29 Nov 2023 14:02:49 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232693AbjK2WCh (ORCPT + 99 others); Wed, 29 Nov 2023 17:02:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231422AbjK2WCg (ORCPT ); Wed, 29 Nov 2023 17:02:36 -0500 Received: from out-174.mta0.migadu.com (out-174.mta0.migadu.com [91.218.175.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B9A6B6 for ; Wed, 29 Nov 2023 14:02:42 -0800 (PST) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1701295360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vs7DQvqBwBJkC7ORmFfpBhA+BsKpcHW7GrhAduul7AY=; b=mHi0Y88Mph5nm1adeRkYfDeVb1JiguN1O8EpPaLx6NfJljzx5gGc7NvlLtej9XoKr8YS14 FHrIOSTAkzeipo7qXb3Zarp4DMyLRwyAg/o1O0CZhpuzCn7XEXvHvnubFOBB8ROyshNoBg Ir2ixUzzeVYmwfciIpPTxSWv2r382H4= From: Sui Jingfeng To: Lucas Stach Cc: Christian Gmeiner , dri-devel@lists.freedesktop.org, etnaviv@lists.freedesktop.org, linux-kernel@vger.kernel.org, Sui Jingfeng Subject: [etnaviv-next v12 1/8] drm/etnaviv: Add a helper function to get clocks Date: Thu, 30 Nov 2023 06:02:24 +0800 Message-Id: <20231129220231.12763-2-sui.jingfeng@linux.dev> In-Reply-To: <20231129220231.12763-1-sui.jingfeng@linux.dev> References: <20231129220231.12763-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Wed, 29 Nov 2023 14:02:49 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783937502271659491 X-GMAIL-MSGID: 1783937502271659491 From: Sui Jingfeng Because the current implement is DT-based, this is only works when the host platform has the DT support. Typically, the PLL hardwares are provided by the host platform, not the GPU core itself. So add a dedicated helper function to get clocks, only call this function when DT is available. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 53 ++++++++++++++++----------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c index 3e35e7db5177..4d5819632597 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -1597,6 +1597,35 @@ static irqreturn_t irq_handler(int irq, void *data) return ret; } +static int etnaviv_gpu_clk_get(struct etnaviv_gpu *gpu) +{ + struct device *dev = gpu->dev; + + gpu->clk_reg = devm_clk_get_optional(dev, "reg"); + DBG("clk_reg: %p", gpu->clk_reg); + if (IS_ERR(gpu->clk_reg)) + return PTR_ERR(gpu->clk_reg); + + gpu->clk_bus = devm_clk_get_optional(dev, "bus"); + DBG("clk_bus: %p", gpu->clk_bus); + if (IS_ERR(gpu->clk_bus)) + return PTR_ERR(gpu->clk_bus); + + gpu->clk_core = devm_clk_get(dev, "core"); + DBG("clk_core: %p", gpu->clk_core); + if (IS_ERR(gpu->clk_core)) + return PTR_ERR(gpu->clk_core); + gpu->base_rate_core = clk_get_rate(gpu->clk_core); + + gpu->clk_shader = devm_clk_get_optional(dev, "shader"); + DBG("clk_shader: %p", gpu->clk_shader); + if (IS_ERR(gpu->clk_shader)) + return PTR_ERR(gpu->clk_shader); + gpu->base_rate_shader = clk_get_rate(gpu->clk_shader); + + return 0; +} + static int etnaviv_gpu_clk_enable(struct etnaviv_gpu *gpu) { int ret; @@ -1872,27 +1901,9 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev) } /* Get Clocks: */ - gpu->clk_reg = devm_clk_get_optional(&pdev->dev, "reg"); - DBG("clk_reg: %p", gpu->clk_reg); - if (IS_ERR(gpu->clk_reg)) - return PTR_ERR(gpu->clk_reg); - - gpu->clk_bus = devm_clk_get_optional(&pdev->dev, "bus"); - DBG("clk_bus: %p", gpu->clk_bus); - if (IS_ERR(gpu->clk_bus)) - return PTR_ERR(gpu->clk_bus); - - gpu->clk_core = devm_clk_get(&pdev->dev, "core"); - DBG("clk_core: %p", gpu->clk_core); - if (IS_ERR(gpu->clk_core)) - return PTR_ERR(gpu->clk_core); - gpu->base_rate_core = clk_get_rate(gpu->clk_core); - - gpu->clk_shader = devm_clk_get_optional(&pdev->dev, "shader"); - DBG("clk_shader: %p", gpu->clk_shader); - if (IS_ERR(gpu->clk_shader)) - return PTR_ERR(gpu->clk_shader); - gpu->base_rate_shader = clk_get_rate(gpu->clk_shader); + err = etnaviv_gpu_clk_get(gpu); + if (err) + return err; /* TODO: figure out max mapped size */ dev_set_drvdata(dev, gpu);