From patchwork Sat Jun 25 11:36:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 584976 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9BF82CCA481 for ; Sat, 25 Jun 2022 11:37:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232663AbiFYLhR (ORCPT ); Sat, 25 Jun 2022 07:37:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56502 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232592AbiFYLhQ (ORCPT ); Sat, 25 Jun 2022 07:37:16 -0400 Received: from mout.kundenserver.de (mout.kundenserver.de [217.72.192.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 084D4167F0 for ; Sat, 25 Jun 2022 04:37:14 -0700 (PDT) Received: from localhost.localdomain ([37.4.249.155]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M8QBa-1o0eFC3CjI-004Vtm; Sat, 25 Jun 2022 13:37:02 +0200 From: Stefan Wahren To: Florian Fainelli , Ray Jui , Scott Branden , Lee Jones Cc: Peter Robinson , Melissa Wen , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Maxime Ripard , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicolas Saenz Julienne , Stefan Wahren Subject: [PATCH V4 04/11] ARM: dts: bcm2835/bcm2711: Introduce reg-names in watchdog node Date: Sat, 25 Jun 2022 13:36:12 +0200 Message-Id: <20220625113619.15944-5-stefan.wahren@i2se.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220625113619.15944-1-stefan.wahren@i2se.com> References: <20220625113619.15944-1-stefan.wahren@i2se.com> MIME-Version: 1.0 X-Provags-ID: V03:K1:GPZerfO3A6nim1CXLxn5K+0IYKMNEx6tEeXkhLn7l+Mvha/8/1F pDSALibh5T4WLpHcTY4vwJsSD6ZBiVoGdyDzNxTZ72r16UeJOSEYbUKRW/jrRjkQ5LwzdLo po1/cr0v+LSszYY2kijueCAsbmf9T8925VQPXDMc0G9oo+/oNpJm+3Pch5qw29V/AmfRLIV BHHFtgP48l9Fk34OyBgQg== X-UI-Out-Filterresults: notjunk:1;V03:K0:3BDqzTMNyaU=:x0XBOjTi8uzVfAbPPI6Klw Cuv/TdFdGwKILdevintNJujzqRfRKX2LbkrKEJ5wNypF80SuIBlCyDmpsxWGpiTHPL1iBIeem z8lBNwc5xBpRmOsNw9S61v3Jz5acd+EnqIvjdfbirfwcO1k8Pn9J9RR2Qinx2LS74HdayjNcG AKsueSTkkUEEGFjdoWHnDjXLP+Dl+prqTkOeo11PreirvCxHGhJpeAMCm9FEMxVomWP/jzX3p 7eKuyzjDm/kDAMvJNYVVX70Fagt77ZFTTPv0IWdSAQ7+IbUR3LgCtTFEZXAbJs4fILq+vcErX mQ8reHl2teEmbCg7KFg7RF/m7bgHseA8YGvJ+P8hoBPogpS3fiJdQ3OhXHqGHMUqbdRvKBGxj fAOp3eFqx5xIKEeVnbae/x2gFvjqaWzrWIh9FK/I/9gLwHrHgHXkl3Zrv4bONdhYrb9pCRhbw WQwYIAVv/snbmMwfWypRDtVu2t7Urv54c+81itwP6pRtq1n/swiZpzW/z3nSktm/kBB6I0VXW 8lFXRKxC4hmYewck9I6jJ9/uPxVyWvyX32qErkwcPjuXMlnKkzi1SVDn8JJqU6Aqs+CE+I5S/ PDbYDlDYgm1RdE+DVjxwl+ku4JI+3ri1WV62sIOKz9KPeGqU1IwH2Wh1ffRLqf79l5YkgVKgg w57obrZdkkgaBCu6zfGc58lhTCqW2+wYlIyBdD6PNX8CBzJ68I5QcilQNnAWDTasALc9UsqOU GCf37G6qDpkJc2JGDHfw4mfr+JLCqLQJxu+ke90t6NM2wWv7bKfZoWWdChE= Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Nicolas Saenz Julienne bcm2835-pm's bindings now support explicitly setting 'reg-names,' so use them. Signed-off-by: Nicolas Saenz Julienne Signed-off-by: Stefan Wahren Reviewed-by: Peter Robinson --- arch/arm/boot/dts/bcm2711.dtsi | 1 + arch/arm/boot/dts/bcm2835-common.dtsi | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi index 89af57482bc8..cbb47e2c9434 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -113,6 +113,7 @@ pm: watchdog@7e100000 { reg = <0x7e100000 0x114>, <0x7e00a000 0x24>, <0x7ec11000 0x20>; + reg-names = "pm", "asb", "rpivid_asb"; clocks = <&clocks BCM2835_CLOCK_V3D>, <&clocks BCM2835_CLOCK_PERI_IMAGE>, <&clocks BCM2835_CLOCK_H264>, diff --git a/arch/arm/boot/dts/bcm2835-common.dtsi b/arch/arm/boot/dts/bcm2835-common.dtsi index c25e797b9060..a037d2bc5b11 100644 --- a/arch/arm/boot/dts/bcm2835-common.dtsi +++ b/arch/arm/boot/dts/bcm2835-common.dtsi @@ -62,6 +62,7 @@ pm: watchdog@7e100000 { #reset-cells = <1>; reg = <0x7e100000 0x114>, <0x7e00a000 0x24>; + reg-names = "pm", "asb"; clocks = <&clocks BCM2835_CLOCK_V3D>, <&clocks BCM2835_CLOCK_PERI_IMAGE>, <&clocks BCM2835_CLOCK_H264>, From patchwork Sat Jun 25 11:36:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 584974 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3A27DC43334 for ; Sat, 25 Jun 2022 11:37:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232496AbiFYLhT (ORCPT ); Sat, 25 Jun 2022 07:37:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232665AbiFYLhS (ORCPT ); Sat, 25 Jun 2022 07:37:18 -0400 Received: from mout.kundenserver.de (mout.kundenserver.de [217.72.192.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F2002165AD for ; Sat, 25 Jun 2022 04:37:16 -0700 (PDT) Received: from localhost.localdomain ([37.4.249.155]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MN4ux-1oLm022tlN-00J2bb; Sat, 25 Jun 2022 13:37:03 +0200 From: Stefan Wahren To: Florian Fainelli , Ray Jui , Scott Branden , Lee Jones Cc: Peter Robinson , Melissa Wen , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Maxime Ripard , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicolas Saenz Julienne , Stefan Wahren Subject: [PATCH V4 06/11] mfd: bcm2835-pm: Use 'reg-names' to get resources Date: Sat, 25 Jun 2022 13:36:14 +0200 Message-Id: <20220625113619.15944-7-stefan.wahren@i2se.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220625113619.15944-1-stefan.wahren@i2se.com> References: <20220625113619.15944-1-stefan.wahren@i2se.com> MIME-Version: 1.0 X-Provags-ID: V03:K1:Ugnti44o7yL+JwvplNxLQ411MRmMUBvCV+ZWKFIrGgVUrwju5NF 1LYHQTAgCgY05WAEvaUEwu0gieCM8CKrAr85QOe32CINg8B1eetZRSO2mtXr4flbHktgJe0 1osFZHOAqkfb5B47JfPmnxfkuGeLlA489VUxAHc4hA5B7vnjdLlVH0br3z+N7R6UfTaFUBy MBlVPyBs603vCHNM95tvQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:dJnlFu0L3U0=:ukHMvfuynzxy+kApSIYOtT LAThcdySVM1zkbhRf9NCuRHvou3f1KzubMJ0qxefYBGGOsnn5nfjEpWgIjXLQO16Yimo8ByZf rAW3xeHJB6Jc3egCFIV9B7aHLjD6o948THWWGpD7pV5/3dk780AAdF8AYhbktQHyPu1KDiFv0 +6uCqwq0/2LtL4rz6hssR9NddmzJMGmAffkX4URgcZk9+p89vKi73rmdL9cIQXLIkLYja3uBi iJyAwioQ9jDlDbMSszvdAW5A8KpbO0y65hxRuA5o10DPHLEIAK/7d1AQy+NuYlKvyqm3sjCBt BI0hMvXRh8vYU8BNympa/XXbSPOhV9B5JFnh+1cdDoUBL4A7To7a5KCjkz7oR1JpbSsKhXsLd LtnKDK6XTTcbFkMJe7BfRVzeffBcwL3IpU/SA8vtO748heMnaQqkJAAGbJ2GnzDwd3mfEEkfn 93/vGLTc5BH8k4Mo8HpJQsdcXbTDD1K8+CL+ouNHCTLKSk0YriLKzMUt2okHIvBm8FUjVH7FM oeMoodA+w2L5m631w9dNI0+wT+XGwSh4ta6gg5MofGbtMjl8Cp0cZH3L1Gi8aCv5m6TH9IAcm sNtnRjaQrQIRiiO3tmFhb85AeS8GJ4hKXHW6OGNiThwaoBi0nynLaTrdfBZMQQyn2X6opzUB6 i9d4xr8UQYJBvmD0hOIR4c+iM0yft9bWsgWsf9nyzmLws31MB3J3xhh3wMNmIDPJ1KC+GgBNg bddJgmYOhfzyrAOnULbGlB/a6mRbfOF63ALoPnJEyY3f0o6+M15ZsjhU27Y= Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Nicolas Saenz Julienne If available in firmware, find resources by their 'reg-names' position instead of relying on hardcoded offsets. Care is taken to support old firmware nonetheless. Signed-off-by: Nicolas Saenz Julienne Signed-off-by: Stefan Wahren --- drivers/mfd/bcm2835-pm.c | 61 +++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/drivers/mfd/bcm2835-pm.c b/drivers/mfd/bcm2835-pm.c index 42fe67f1538e..418c8a16427d 100644 --- a/drivers/mfd/bcm2835-pm.c +++ b/drivers/mfd/bcm2835-pm.c @@ -25,9 +25,40 @@ static const struct mfd_cell bcm2835_power_devs[] = { { .name = "bcm2835-power" }, }; +static int bcm2835_pm_get_pdata(struct platform_device *pdev, + struct bcm2835_pm *pm) +{ + if (of_find_property(pm->dev->of_node, "reg-names", NULL)) { + struct resource *res; + + pm->base = devm_platform_ioremap_resource_byname(pdev, "pm"); + if (IS_ERR(pm->base)) + return PTR_ERR(pm->base); + + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "asb"); + if (res) { + pm->asb = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(pm->asb)) + pm->asb = NULL; + } + + return 0; + } + + /* If no 'reg-names' property is found we can assume we're using old DTB. */ + pm->base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(pm->base)) + return PTR_ERR(pm->base); + + pm->asb = devm_platform_ioremap_resource(pdev, 1); + if (IS_ERR(pm->asb)) + pm->asb = NULL; + + return 0; +} + static int bcm2835_pm_probe(struct platform_device *pdev) { - struct resource *res; struct device *dev = &pdev->dev; struct bcm2835_pm *pm; int ret; @@ -39,10 +70,9 @@ static int bcm2835_pm_probe(struct platform_device *pdev) pm->dev = dev; - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - pm->base = devm_ioremap_resource(dev, res); - if (IS_ERR(pm->base)) - return PTR_ERR(pm->base); + ret = bcm2835_pm_get_pdata(pdev, pm); + if (ret) + return ret; ret = devm_mfd_add_devices(dev, -1, bcm2835_pm_devs, ARRAY_SIZE(bcm2835_pm_devs), @@ -50,24 +80,15 @@ static int bcm2835_pm_probe(struct platform_device *pdev) if (ret) return ret; - /* We'll use the presence of the AXI ASB regs in the + /* + * We'll use the presence of the AXI ASB regs in the * bcm2835-pm binding as the key for whether we can reference * the full PM register range and support power domains. */ - res = platform_get_resource(pdev, IORESOURCE_MEM, 1); - if (res) { - pm->asb = devm_ioremap_resource(dev, res); - if (IS_ERR(pm->asb)) - return PTR_ERR(pm->asb); - - ret = devm_mfd_add_devices(dev, -1, - bcm2835_power_devs, - ARRAY_SIZE(bcm2835_power_devs), - NULL, 0, NULL); - if (ret) - return ret; - } - + if (pm->asb) + return devm_mfd_add_devices(dev, -1, bcm2835_power_devs, + ARRAY_SIZE(bcm2835_power_devs), + NULL, 0, NULL); return 0; } From patchwork Sat Jun 25 11:36:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 584975 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 836ECCCA479 for ; Sat, 25 Jun 2022 11:37:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232592AbiFYLhS (ORCPT ); Sat, 25 Jun 2022 07:37:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232657AbiFYLhQ (ORCPT ); Sat, 25 Jun 2022 07:37:16 -0400 Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1EDB918371 for ; Sat, 25 Jun 2022 04:37:14 -0700 (PDT) Received: from localhost.localdomain ([37.4.249.155]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N8XDT-1naHdB2HRp-014Q3j; Sat, 25 Jun 2022 13:37:04 +0200 From: Stefan Wahren To: Florian Fainelli , Ray Jui , Scott Branden , Lee Jones Cc: Peter Robinson , Melissa Wen , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Maxime Ripard , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Stefan Wahren Subject: [PATCH V4 08/11] soc: bcm: bcm2835-power: Refactor ASB control Date: Sat, 25 Jun 2022 13:36:16 +0200 Message-Id: <20220625113619.15944-9-stefan.wahren@i2se.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220625113619.15944-1-stefan.wahren@i2se.com> References: <20220625113619.15944-1-stefan.wahren@i2se.com> MIME-Version: 1.0 X-Provags-ID: V03:K1:AQyuJ6BWAMS7izam3rfsN3EezkqlAy92xousHG1PtVIeKYqyY7u RIR9wN5UaeeQMb9/mq1P3lU012jDucCarYPA6qgdur5ZJ3ZqHoxpz2fEbzwxbMVbERG9LAD kB0wGWkxYlkHlxq8eBwTp6VOHqIwN3gdLOt9beS1YcFlSdPUd+v6aX7gTKovjZATVT2Dham Kjo3RUgFNJZdKioC1RigA== X-UI-Out-Filterresults: notjunk:1;V03:K0:dUze6tolySQ=:U8PQGkgT9Hw8WUHhlPNETh R5vsr+Ipoo7/OR3QQAyLpCoIfIhrooybsW2dCRlau2/UHa5mLNIQaE6HGdOQ50d6yAEq4llDG WvdwERA4nWFfwbmfs8DQmNv+vIrJwJqNUTfFMh38K/lOFoXQwlN3qDMPpkvomEBb02+iPmCtJ RdRG6znpu3Up3X0W3RoEvF3QFOU3kjon22nQDmsZtdtOdrMV3Ui0ACb5CmHcPU07q5i2k7CX7 PTcg3SkRDN/XsZ5QLyD0ElvEJe89N3PaCUnTOmYO709OASbIOSzcBEKAJFj7zj9mp2mZesRw8 IV9tgpucpX4KDJ9uXsGjc76RkEi0ws141tkV0drcsUyPT0wr6iz+iMVEKancBGqwHhxyf8Q6x F8mPrOXcsk/COp+ba5uL/rqlE3H3b9KD398N40j4I5/JZiBxFM6WsPAIs32Lmw+ry5JFhKD6n ZqXA1Lggddd2bi5tCtYFOjj2Z76tw0tijrJUeTNcuCCFFWUgT3tEp9W9opn5gZE7ziqDVP48N Atbuh90Yp5pFNb8eNUNyJayBSeCzlvYTLL2kj2DtjBXBHsYdcVE/ktetQ/CwLOXehPOp907qY afVB7QeqAaFDBrBzTET0L0CrWhLxtS9Glp4cxitCISs+rtB95sUCqHKgzFN2R6LWX6zEIXvs0 Zb3WMeWDiIVAE34P/DtPzgn4r04FHQPP7sps2pB2gfgu4Y3gv8DmSmmJoQcVZNQ+aQ18IyFMf Pe8LPYQOZD0UAiREtJbIf8iG/2C3KW7bqHHhfHpeCoEFVPVeZFVc/xj4Htw= Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org The functions to control the async AXI bridges are almost identical. So define a general function to handle it and keep the original ones as wrapper. This should make this driver easier to extend. Signed-off-by: Stefan Wahren Reviewed-by: Peter Robinson --- drivers/soc/bcm/bcm2835-power.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/drivers/soc/bcm/bcm2835-power.c b/drivers/soc/bcm/bcm2835-power.c index 1e0041ec8132..77dc9e62b207 100644 --- a/drivers/soc/bcm/bcm2835-power.c +++ b/drivers/soc/bcm/bcm2835-power.c @@ -148,7 +148,7 @@ struct bcm2835_power { struct reset_controller_dev reset; }; -static int bcm2835_asb_enable(struct bcm2835_power *power, u32 reg) +static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable) { u64 start; @@ -158,7 +158,12 @@ static int bcm2835_asb_enable(struct bcm2835_power *power, u32 reg) start = ktime_get_ns(); /* Enable the module's async AXI bridges. */ - ASB_WRITE(reg, ASB_READ(reg) & ~ASB_REQ_STOP); + if (enable) { + ASB_WRITE(reg, ASB_READ(reg) & ~ASB_REQ_STOP); + } else { + ASB_WRITE(reg, ASB_READ(reg) | ASB_REQ_STOP); + } + while (ASB_READ(reg) & ASB_ACK) { cpu_relax(); if (ktime_get_ns() - start >= 1000) @@ -168,24 +173,14 @@ static int bcm2835_asb_enable(struct bcm2835_power *power, u32 reg) return 0; } -static int bcm2835_asb_disable(struct bcm2835_power *power, u32 reg) +static int bcm2835_asb_enable(struct bcm2835_power *power, u32 reg) { - u64 start; - - if (!reg) - return 0; - - start = ktime_get_ns(); - - /* Enable the module's async AXI bridges. */ - ASB_WRITE(reg, ASB_READ(reg) | ASB_REQ_STOP); - while (!(ASB_READ(reg) & ASB_ACK)) { - cpu_relax(); - if (ktime_get_ns() - start >= 1000) - return -ETIMEDOUT; - } + return bcm2835_asb_control(power, reg, true); +} - return 0; +static int bcm2835_asb_disable(struct bcm2835_power *power, u32 reg) +{ + return bcm2835_asb_control(power, reg, false); } static int bcm2835_power_power_off(struct bcm2835_power_domain *pd, u32 pm_reg) From patchwork Sat Jun 25 11:36:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 584973 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E1A5ACCA482 for ; Sat, 25 Jun 2022 11:37:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232665AbiFYLhU (ORCPT ); Sat, 25 Jun 2022 07:37:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232680AbiFYLhS (ORCPT ); Sat, 25 Jun 2022 07:37:18 -0400 Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.13]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5244818375 for ; Sat, 25 Jun 2022 04:37:17 -0700 (PDT) Received: from localhost.localdomain ([37.4.249.155]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M5g68-1o2Iws45D0-007Fie; Sat, 25 Jun 2022 13:37:05 +0200 From: Stefan Wahren To: Florian Fainelli , Ray Jui , Scott Branden , Lee Jones Cc: Peter Robinson , Melissa Wen , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Maxime Ripard , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Stefan Wahren Subject: [PATCH V4 09/11] soc: bcm: bcm2835-power: Resolve ASB register macros Date: Sat, 25 Jun 2022 13:36:17 +0200 Message-Id: <20220625113619.15944-10-stefan.wahren@i2se.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220625113619.15944-1-stefan.wahren@i2se.com> References: <20220625113619.15944-1-stefan.wahren@i2se.com> MIME-Version: 1.0 X-Provags-ID: V03:K1:2Q+QGWZHXKoDRXMZbItjZVy+ekN4k9/OEdA7/MWmTDYVnB984us x5IuLOc2VaLLyn3ssu+Zagtx/NbiqUjDSgDGGKgZz4ouACMw/YZ6vInlNKaHil4GlSjDv6Q w41UpwcPsJU/cBTQGsEu5ujJyGEQQjEKL6jaqnmf6mpNsO4sKNO+S4O5MnYVbGj0qkd05NU GD+bj9BFAtQlklcHW/oDw== X-UI-Out-Filterresults: notjunk:1;V03:K0:7w3fkUy2Q+Q=:6/f5oej7mFGkwVtxeIRJKo zlqZcyqgxMtnJ94jp+dz6qjbsx1mUmxOtpyuHxwrO1K7Hs2sEZ3SRhNkYS0Yji17mGva0YaIh ywi879gK6AtUOVfQM4pcbH1QyKQf8HRp4UYOivow2iNqhjDRjBrPyEK40w82X7nal68RqCAAU fPgDqlcm3+KxyHGgjXMUJoETv7wNWf/qShrlWJcM+xmuVJinEwg7iTHjLMGWpRZhupTuLE2AE 04/9wGtNEa8w+QC4YzmbCai5pEZx8vzwHSY629SjjLGwbA8E02Z2Ov52/qsMtAeNB0GhZcyb9 wS7XdYtEgEVAY2qQM4awOm5p4934OPYLfl1bvK5tnsxrmhEp7cXW3dUmLRcN26qTdjrKzhE4x vIxg46Ahybamcfxvra0dm6RXkhq4eFk1OPT9CSTMS1FPSV0bjxOqvVSdZF4a8pK8WYEJtLGJJ ugoClZRyvoQ6P/AdleCFMWr++kRJIwAsAFz4Hjhkokpzs7kyiiYsSv5Lx2DRrTbgNZ0itWP9j n6GjJHdAUVvsbUzacjBvq/GZmalGXmmADRVNsip4l5uTo7LBGplxNnjaThGe5GHDMEXpwtEZp dKZMGKXJREJa3u3zCzprKMrjX94pjA00MPb2tM4GTy631EE9UlTy5K+S2dSKwEoprGTXdkkdc KpK0XEMw0Q8OzC8rJvEgHHzd9KfwMGhO/ouu8k8qdhFS/matrv7DaDLp7iuNWVnaVPdF2ldHx 9XggfwQyyARZ2B9jJCsDpIHXoZHncF6JWZzeTuUc4HIbLWt3wglSBpNsqdo= Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org The macros in order to access the ASB registers have a hard coded base address. So extending them for other platforms would make them harder to read. As a solution resolve these macros. Signed-off-by: Stefan Wahren Reviewed-by: Peter Robinson --- drivers/soc/bcm/bcm2835-power.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/soc/bcm/bcm2835-power.c b/drivers/soc/bcm/bcm2835-power.c index 77dc9e62b207..9c352f66e6d5 100644 --- a/drivers/soc/bcm/bcm2835-power.c +++ b/drivers/soc/bcm/bcm2835-power.c @@ -126,9 +126,6 @@ #define ASB_AXI_BRDG_ID 0x20 -#define ASB_READ(reg) readl(power->asb + (reg)) -#define ASB_WRITE(reg, val) writel(PM_PASSWORD | (val), power->asb + (reg)) - struct bcm2835_power_domain { struct generic_pm_domain base; struct bcm2835_power *power; @@ -150,7 +147,9 @@ struct bcm2835_power { static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable) { + void __iomem *base = power->asb; u64 start; + u32 val; if (!reg) return 0; @@ -159,12 +158,13 @@ static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable /* Enable the module's async AXI bridges. */ if (enable) { - ASB_WRITE(reg, ASB_READ(reg) & ~ASB_REQ_STOP); + val = readl(base + reg) & ~ASB_REQ_STOP; } else { - ASB_WRITE(reg, ASB_READ(reg) | ASB_REQ_STOP); + val = readl(base + reg) | ASB_REQ_STOP; } + writel(PM_PASSWORD | val, base + reg); - while (ASB_READ(reg) & ASB_ACK) { + while (readl(base + reg) & ASB_ACK) { cpu_relax(); if (ktime_get_ns() - start >= 1000) return -ETIMEDOUT; @@ -622,7 +622,7 @@ static int bcm2835_power_probe(struct platform_device *pdev) power->base = pm->base; power->asb = pm->asb; - id = ASB_READ(ASB_AXI_BRDG_ID); + id = readl(power->asb + ASB_AXI_BRDG_ID); if (id != 0x62726467 /* "BRDG" */) { dev_err(dev, "ASB register ID returned 0x%08x\n", id); return -ENODEV; From patchwork Sat Jun 25 11:36:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 584972 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1C80C433EF for ; Sat, 25 Jun 2022 11:37:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232682AbiFYLhV (ORCPT ); Sat, 25 Jun 2022 07:37:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56546 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232401AbiFYLhS (ORCPT ); Sat, 25 Jun 2022 07:37:18 -0400 Received: from mout.kundenserver.de (mout.kundenserver.de [217.72.192.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 49E3F18371 for ; Sat, 25 Jun 2022 04:37:17 -0700 (PDT) Received: from localhost.localdomain ([37.4.249.155]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MgNxZ-1nS9Fe3aPP-00hy2z; Sat, 25 Jun 2022 13:37:05 +0200 From: Stefan Wahren To: Florian Fainelli , Ray Jui , Scott Branden , Lee Jones Cc: Peter Robinson , Melissa Wen , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Maxime Ripard , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicolas Saenz Julienne , Stefan Wahren Subject: [PATCH V4 11/11] soc: bcm: bcm2835-power: Bypass power_on/off() calls Date: Sat, 25 Jun 2022 13:36:19 +0200 Message-Id: <20220625113619.15944-12-stefan.wahren@i2se.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220625113619.15944-1-stefan.wahren@i2se.com> References: <20220625113619.15944-1-stefan.wahren@i2se.com> MIME-Version: 1.0 X-Provags-ID: V03:K1:2PrwkBUhlX3feTxtsVZZDn4SLPgtv9Owu+n+ReAxpWPwW+CUQu/ CTWiEynQbYzHpcIvmpdxk4zbxImg9Xfro0H4ROK2q+C70L+C4IqHLfkJ1PUWyCHIaDheqcW OYSBuHy0/F4ungU8+2oIHg09DZ4gxRqMYdGZDuzXnIwAMVDQKD+zmpkj7n2U8teZGqk1J+t 3JV96p6oLrPy10pqF4q4A== X-UI-Out-Filterresults: notjunk:1;V03:K0:TsRRSqpYVLU=:frROenGdWb1y3SOA3jkZIM qQ9IleGV+nFEDrD+ysN+HWBXyUnlppwXIKyOHW/jL2fBRB+S/FcNk0DCRuT3GzDe0cU4z/L9N YHnq4tOO/bA1fL0quxPu716Tt/HPH1dWmV8NZiWZbuAA8jXCMEYdQVuwBkLRDycqbvYQSBeSY farJCjkJhCv4zfqdadiyMjKeiJhNpb5cyZODifh1hfSt5d458L8aNQu/UKwkLDNXWu2xJDPyb DnaYJ01yHvHGpQcctK9nv/mTatgqxFNuB5+MFadoUvgAZ2s2aPDG5AMWrVoEVOPMAEGxiMZXK tQdc1AmjwwOEjup63QLQEu/HB/oDBkabnZ8GotOdddIPTLEH7QgOycOaWxw54NhWEFgl17aFq GPpSG4PMhhaB67zxKOvNR1+0ADdiPCH9trwPXIJPlQAuKCUeNrekHwe4SYbzg/ZWRs7MxbxR7 f0Y1pe/Oari0m9NNwjnBxZoM4sS6l6+P3ooXtemoJNzyipzEnmMVdSZDO7enYWfiJh/09TiDv lCzFLHbGi+p1mGlzblqepsDi0VU4cscgAMPZCm0Yh/ce137cThJ4/LAeHHfkflq6vYeZc93Qp j47IdV4gyIElS9Sd9y26XaJHnANo/uu/QgXE/9weBI+NbiKXNypnLW1IvwIy3mSIx6f1fnJcy /49dGVAQoDqfJKV2tKc80KGeKL7xNI1Y4otedAvvbfw32icKYCIfMEN53LH0AlQA6O7OMu2Bx rz6pQdTOBZC1FFNIijTF24UE129FXiijW1fDMp+4rJYN/wEzH7eHZD5EIJU= Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Nicolas Saenz Julienne Bypass power_on/power_off() when running on BCM2711 as they are not needed. Signed-off-by: Nicolas Saenz Julienne Signed-off-by: Stefan Wahren Reviewed-by: Peter Robinson --- drivers/soc/bcm/bcm2835-power.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/soc/bcm/bcm2835-power.c b/drivers/soc/bcm/bcm2835-power.c index 1e06d91c0739..5bcd047768b6 100644 --- a/drivers/soc/bcm/bcm2835-power.c +++ b/drivers/soc/bcm/bcm2835-power.c @@ -198,6 +198,10 @@ static int bcm2835_power_power_off(struct bcm2835_power_domain *pd, u32 pm_reg) { struct bcm2835_power *power = pd->power; + /* We don't run this on BCM2711 */ + if (power->rpivid_asb) + return 0; + /* Enable functional isolation */ PM_WRITE(pm_reg, PM_READ(pm_reg) & ~PM_ISFUNC); @@ -219,6 +223,10 @@ static int bcm2835_power_power_on(struct bcm2835_power_domain *pd, u32 pm_reg) int inrush; bool powok; + /* We don't run this on BCM2711 */ + if (power->rpivid_asb) + return 0; + /* If it was already powered on by the fw, leave it that way. */ if (PM_READ(pm_reg) & PM_POWUP) return 0;