Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp532542pxv; Thu, 1 Jul 2021 03:55:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwo7PnGwXVN/l5h+erWmN0cfYglJ4VXcLosbzWhTnQICptR8lCZ4RL+YOIt24NWPh90CBlf X-Received: by 2002:a6b:e013:: with SMTP id z19mr11827359iog.34.1625136934959; Thu, 01 Jul 2021 03:55:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625136934; cv=none; d=google.com; s=arc-20160816; b=ffcT/yWeEXbhX/2iO+oeUVBsGxh8WLjjM3leRh61Rr+6+OzYD8nK8JFclrXbmHKs+H gBUggoJ+CxlaE5iZ9lhYmpN97ZlOxo2jWFt/qZLJ8jRAEJyWz1MDgMxPUyYVLDNY+WG7 9Rs+v3EBT/iAnhPid/0AiOA8EgzcpuOnmx5aaXgcKcezqvBQW26xFLelPUag9I7UNH0X WiKii75NFpEimHk5+BoEEoO4BMKGQpt+hQ3lofPPvMqarQVTUftBJpKeWodbxciLyJ4x bE8KECVyTYc0QOOCmIbko9foDkzUl2aHWVRPQIMxVW4mt98HUroMC7z3qgixp/j5z2tW EjRA== 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 :message-id:date:subject:cc:to:from; bh=gjeNpEV1gX5KdOQbw1z+8m7LGAgAQ8TDe/7nvJLeP6A=; b=tegu9FAdc6LTxDGt7tN4m9W6FpI+wap5BFxhqwYdyU6vRzgFaL5Orm+GtpJicr4Zhn pnsrH7miekefIH2gtIYfPQrLuZ3jzfcXxqkUHmCr75pQ8orXLA/xR7HrywO/TM841vYs 30caE2LinVTRDtROef7JRYvd8S/JHP7XXRZQBD5kThurlOgrLD6QHwxSo+W3J7IUAc04 qFQezDtbXAsfRrQqaUesDdT11Sfsk/RxerY3beNuQlgTwCRQ/Xkx3ysAe3oyLh12J884 2xmB4nsc9EWgQkVceqI1f2sBiqSrgEJskM5PES4/xQa2O/QG9+v0Zy/BA1yA9ZMHoFXA oNFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z10si27164295ilu.151.2021.07.01.03.55.22; Thu, 01 Jul 2021 03:55:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236069AbhGAK5U (ORCPT + 99 others); Thu, 1 Jul 2021 06:57:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41830 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236053AbhGAK5T (ORCPT ); Thu, 1 Jul 2021 06:57:19 -0400 Received: from relay08.th.seeweb.it (relay08.th.seeweb.it [IPv6:2001:4b7a:2000:18::169]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B27EC061756; Thu, 1 Jul 2021 03:54:49 -0700 (PDT) Received: from IcarusMOD.eternityproject.eu (unknown [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by m-r2.th.seeweb.it (Postfix) with ESMTPSA id 9EDD73F416; Thu, 1 Jul 2021 12:54:45 +0200 (CEST) From: AngeloGioacchino Del Regno To: bjorn.andersson@linaro.org Cc: agross@kernel.org, robh+dt@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org, konrad.dybcio@somainline.org, marijn.suijten@somainline.org, jami.kettunen@somainline.org, paul.bouchara@somainline.org, martin.botka@somainline.org, ~postmarketos/upstreaming@lists.sr.ht, jeffrey.l.hugo@gmail.com, AngeloGioacchino Del Regno Subject: [PATCH v6 0/6] Add support for Core Power Reduction v3, v4 and Hardened Date: Thu, 1 Jul 2021 12:54:35 +0200 Message-Id: <20210701105441.319572-1-angelogioacchino.delregno@somainline.org> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Changes in v6: - Fixes from Bjorn's review - After a conversation with Viresh, it turned out I was abusing the OPP API to pass the APM and MEM-ACC thresholds to qcom-cpufreq-hw, so now the driver is using the genpd created virtual device and passing drvdata instead to stop the abuse - Since the CPR commonization was ignored for more than 6 months, it is now included in the CPRv3/4/h series, as there is no point in commonizing without having this driver - Rebased on v5.13 Changes in v5: - Fixed getting OPP table when not yet installed by the caller of power domain attachment Changes in v4: - Huge patch series has been split for better reviewability, as suggested by Bjorn Changes in v3: - Fixed YAML doc issues - Removed unused variables and redundant if branch Changes in v2: - Implemented dynamic Memory Accelerator corners support, needed by MSM8998 - Added MSM8998 Silver/Gold parameters This commit introduces a new driver, based on the one for cpr v1, to enable support for the newer Qualcomm Core Power Reduction hardware, known downstream as CPR3, CPR4 and CPRh, and support for MSM8998 and SDM630 CPU power reduction. In these new versions of the hardware, support for various new features was introduced, including voltage reduction for the GPU, security hardening and a new way of controlling CPU DVFS, consisting in internal communication between microcontrollers, specifically the CPR-Hardened and the Operating State Manager. The CPR v3, v4 and CPRh are present in a broad range of SoCs, from the mid-range to the high end ones including, but not limited to, MSM8953/8996/8998, SDM630/636/660/845. As to clarify, SDM845 does the CPR/SAW/OSM setup in TZ firmware, but this is limited to the CPU context; despite GPU CPR support being not implemented in this series, it is planned for the future, and some SDM845 need the CPR (in the context of GPU CPR) to be configured from this driver. It is also planned to add the CPR data for MSM8996, since this driver does support the CPRv4 found on that SoC, but I currently have no time to properly test that on a real device, so I prefer getting this big implementation merged before adding more things on top. As for MSM8953, we (read: nobody from SoMainline) have no device with this chip: since we are unable to test the cpr data and the entire driver on that one, we currently have no plans to do this addition in the future. This is left to other nice developers: I'm sure that somebody will come up with that, sooner or later ;) Tested on the following smartphones: - Sony Xperia XA2 (SDM630) - Sony Xperia XA2 Ultra (SDM630) - Sony Xperia 10 (SDM630) - Sony Xperia XZ Premium (MSM8998) - F(x)Tec Pro 1 (MSM8998) AngeloGioacchino Del Regno (6): soc: qcom: cpr: Move common functions to new file dt-bindings: avs: cpr: Convert binding to YAML schema arm64: qcom: qcs404: Change CPR nvmem-names soc: qcom: Add support for Core Power Reduction v3, v4 and Hardened MAINTAINERS: Add entry for Qualcomm CPRv3/v4/Hardened driver dt-bindings: soc: qcom: cpr3: Add bindings for CPR3 driver .../bindings/power/avs/qcom,cpr.txt | 131 +- .../bindings/soc/qcom/qcom,cpr.yaml | 167 + .../bindings/soc/qcom/qcom,cpr3.yaml | 241 ++ MAINTAINERS | 8 +- arch/arm64/boot/dts/qcom/qcs404.dtsi | 26 +- drivers/soc/qcom/Kconfig | 17 + drivers/soc/qcom/Makefile | 3 +- drivers/soc/qcom/cpr-common.c | 405 +++ drivers/soc/qcom/cpr-common.h | 117 + drivers/soc/qcom/cpr.c | 441 +-- drivers/soc/qcom/cpr3.c | 2897 +++++++++++++++++ include/soc/qcom/cpr.h | 17 + 12 files changed, 3911 insertions(+), 559 deletions(-) create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,cpr.yaml create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml create mode 100644 drivers/soc/qcom/cpr-common.c create mode 100644 drivers/soc/qcom/cpr-common.h create mode 100644 drivers/soc/qcom/cpr3.c create mode 100644 include/soc/qcom/cpr.h -- 2.32.0