Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1328116pxj; Sat, 29 May 2021 09:54:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw2kJ0BuSZgGSEA+ORWOz9/BpBLnHDbb7xPvt/ePdM4lQaJkYx0g7hyBtu/LJ0wwJAhpPIq X-Received: by 2002:a17:906:c1d2:: with SMTP id bw18mr14477359ejb.123.1622307240284; Sat, 29 May 2021 09:54:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622307240; cv=none; d=google.com; s=arc-20160816; b=Pwu64mxYBpTdU6Qc/yod+5FpLL2j4ZJEcNJUGCll6YlAZGH6zYr8KwRXRl0ILZwTRw e8z4TNbj7HUIlojDK68k8FVz5vyCk1sT9yLOZaERLBbqBGJjzdQ9L8kl3LxvodYMQazP a5Mgl6SMN4+Xu+rTzKdbq+htdVZyiiR7OXVmjShEfjbpmdcHAe+NYe2mNr3yFoS8Rw5F nLVFzE86tjLy44LI0Ka1jUjumaReAb6gAx7L3071yE/93/7sLdWYq8I7FYuJuZRuZfiT OkClocJYMc/VktXtaNHhVrSnNzLCjVxOSa5QzkgAL/b35aNtfZpo14CeOP/dZcJrw4uT Loeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=oQBDy2qEMQ/QddC/M0Z6hFcEbgs2rTtAdUtPS6XFDVs=; b=iBVTHE5x6UOXfBpw2vvAaDcDhwdGgdEIeJ9pzKCZyJPT/j/xLJ+vUEYYSDuzHrKzQJ G4jXW5DNNubosGl6tsWMlwOd7y/13M5IR1U2N6dmSTQaRVYJZBaRyPpKSPWTx3xPtD2R MbVmcXhOG3afyesBnZZjtKwoWObqrR3KPQJi5LQL63MiLCSi2zAUAaRN7AeD0Wo9d1OM 8oUJLBSd4F/CbsfdF7G1/J3rEmBI9lUbMkfaTFrcqm/omCJXorgN4K88KDgYLTvtiF+1 BSB37uI187VJGN0PkFSBhxcoB/9FObOvOjds/jmQRlV9UZJnoXnIEw8hqUgSLk1liPf4 8dRQ== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id be9si7099098edb.31.2021.05.29.09.53.37; Sat, 29 May 2021 09:54:00 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229789AbhE2QyU (ORCPT + 99 others); Sat, 29 May 2021 12:54:20 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:54358 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S229709AbhE2QyU (ORCPT ); Sat, 29 May 2021 12:54:20 -0400 X-UUID: d36b95d10cfa43ceacefe8f41d76215f-20210530 X-UUID: d36b95d10cfa43ceacefe8f41d76215f-20210530 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1207761083; Sun, 30 May 2021 00:52:42 +0800 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 30 May 2021 00:52:40 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sun, 30 May 2021 00:52:40 +0800 From: Hector Yuan To: , , , "Rafael J. Wysocki" , Viresh Kumar , Matthias Brugger , Rob Herring , , CC: , Subject: [PATCH v12] cpufreq: mediatek-hw: Add support for Mediatek cpufreq HW driver Date: Sun, 30 May 2021 00:52:31 +0800 Message-ID: <1622307153-3639-1-git-send-email-hector.yuan@mediatek.com> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The CPUfreq HW present in some Mediatek chipsets offloads the steps necessary for changing the frequency of CPUs. The driver implements the cpufreq driver interface for this hardware engine. From v11 to v12, there are two modifications. 1. Based on patchset[1], align binding with scmi for performance domain(latest version). 2. Shrink binding example wording. From v8 to v9, there are three more modifications. 1. Based on patchset[2], align binding with scmi for performance domain. 2. Add the CPUFREQ fast switch function support and define DVFS latency. 3. Based on patchser[3], add energy model API parameter for mW. From v7 to v8, there are three more patches based on patchset v8[4]. This patchset is about to register power table to Energy model for EAS and thermal usage. 1. EM CPU power table - Register energy model table for EAS and thermal cooling device usage. - Read the coresponding LUT for power table. 2. SVS initialization - The SVS(Smart Voltage Scaling) engine is a hardware which is used to calculate optimized voltage values for CPU power domain. DVFS driver could apply those optimized voltage values to reduce power consumption. - Driver will polling if HW engine is done for SVS initialization. After that, driver will read power table and register it to EAS. - CPUs must be in power on state when doing SVS. Use pm_qos to block cpu-idle state for SVS initializing. 3. Cooling device flag - Add cooling device flag for thermal [1] https://lore.kernel.org/linux-devicetree/20210517155458.1016707-1-sudeep.holla@arm.com/ [2] https://lore.kernel.org/lkml/20201116181356.804590-1-sudeep.holla@arm.com/ [3] https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git/commit/?h=linux-next&id=c250d50fe2ce627ca9805d9c8ac11cbbf922a4a6 [4] https://lkml.org/lkml/2020/9/23/384 Hector.Yuan (2): cpufreq: mediatek-hw: Add support for CPUFREQ HW dt-bindings: cpufreq: add bindings for MediaTek cpufreq HW .../bindings/cpufreq/cpufreq-mediatek-hw.yaml | 71 ++++ drivers/cpufreq/Kconfig.arm | 12 + drivers/cpufreq/Makefile | 1 + drivers/cpufreq/mediatek-cpufreq-hw.c | 370 ++++++++++++++++++++ 4 files changed, 454 insertions(+) create mode 100644 Documentation/devicetree/bindings/cpufreq/cpufreq-mediatek-hw.yaml create mode 100644 drivers/cpufreq/mediatek-cpufreq-hw.c