Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp4895688rdh; Wed, 29 Nov 2023 14:03:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IEh5QU7NpsWMMNwU3AbIEpDWQQ7/tMAY0/MxBJ/BUciq/cR/ekSKoOaxbAuuIqg5cevOPIy X-Received: by 2002:a05:6a00:3988:b0:6be:314c:16cb with SMTP id fi8-20020a056a00398800b006be314c16cbmr24788831pfb.10.1701295392680; Wed, 29 Nov 2023 14:03:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701295392; cv=none; d=google.com; s=arc-20160816; b=j2j672lK994FdU19C6j7pzjt9a4zCx6xSk/Z37zqM6lRmCxBzv52T+tei0pPY2zTDL Ti3IbPqSyWNjIgHYv62bMcO6ApVNGoG+U4hlxiHTKJxQbxwZ8ZFYbSoi5dPEbSVvdj8Z AeJHK1yxfs9U/TutALh5JTwOTOyfiWe35iu9guVs4LdzKF9Gq1ccZrXxKDrOE06QjHuU AM+XCbxaUt7xJzLJ5MYeQ+i7nmEFPyOsw5dl21yXEUxotz0rG72ok1t24BMO2m5Sn5FN uTJ47ZvKHzkQLCPhD0K+JpoiqCDjLBgq854AP634C+hia5zUyRAuFmdvuWTGjFf8yGQm 7ARg== 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 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id j3-20020a056a00174300b006cb75e1d713si14846791pfc.193.2023.11.29.14.03.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Nov 2023 14:03:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; 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 2620:137:e000::3:5 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 177F980314FB; Wed, 29 Nov 2023 14:02:56 -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 Content-Transfer-Encoding: 8bit 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:56 -0800 (PST) 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); -- 2.34.1