Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp4592490pxu; Wed, 9 Dec 2020 23:53:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJwIbu5HeDoSkw1/GPg3szrm2mHnudOTaOLyLmU+eye9iaJIbm6gdEPjn4+0hpAkDGENcAd9 X-Received: by 2002:a17:906:170e:: with SMTP id c14mr5353285eje.117.1607586792215; Wed, 09 Dec 2020 23:53:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607586792; cv=none; d=google.com; s=arc-20160816; b=BoWMejfFvu5rhCbVkXSo4ySXUCEmZKBs2evGZ3veK6AhZQiRmgllk9N+pQs22jF31r x8Na3qAilybmIL2pXPkp3k60a0B5PiUaPLn7B/UbAo8B4VgAovgxF7XS0ccsEOCpN3+9 KA9nt1VHxeU4YA6b8w7ymW1WhOgz/sDMbJ9MQm4ioD5ALAwVv3s9sETyYGsZfWdpgck4 7eUBr6voCBsdnIWLe+k/xuSYdCT6IxNvgIcoFUZjItVnmyQd1ul0SzUgJYkFR3vQ0Clm t/fCefgGIT4Rt9R3gyu1p4W2T+4g1h3aONdqkucQh8n+NvbjTukWDVYaU2xutRo/GIdO cOPw== 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=cDDFGiEsYUYM8M0Gv4tsHpn1JJWMwDuUE2563DtX3QU=; b=xLARedH6o1IWW+VOHhmeLGRqUdrPlDKwZIwYBDKKOMGRcYNW/yK9gm7TCx55ZEnDXV ZzKM7O+lHF0R3eneuzWdYD6K4+CNNcnpgkJD5kINsTmhIFQA0Daf15gh4WE/OmGpYFtJ FJQi4zsWOqsRuCqxW+nHtoKgWxBoT6rvowfTxBFuGVa6e5z67Lo1C65omOoVUpWtaKaA fnflzCtkclAjmo9tfvNPfGiNtrUBdEpZQoTrb5I+QzWCaCW/xlnXje2vC45HCFF1uC2c rZImj+p0P9WuOmmdu0srba+49o0ylKoQ3lztYbiozz5bQEj9296QinN5Tj/pkNjpqwqU LX0w== 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 dp16si2295196ejc.635.2020.12.09.23.52.49; Wed, 09 Dec 2020 23:53:12 -0800 (PST) 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 S1730424AbgLJHtk (ORCPT + 99 others); Thu, 10 Dec 2020 02:49:40 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:34417 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726902AbgLJHt0 (ORCPT ); Thu, 10 Dec 2020 02:49:26 -0500 X-UUID: 9ae94ff7404e4182816559b456803127-20201210 X-UUID: 9ae94ff7404e4182816559b456803127-20201210 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1193676508; Thu, 10 Dec 2020 15:48:40 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 10 Dec 2020 15:48:38 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 10 Dec 2020 15:48:38 +0800 From: Hector Yuan To: , , , "Rafael J. Wysocki" , Viresh Kumar , Matthias Brugger , Rob Herring , , CC: , Subject: [PATCH v9] cpufreq: mediatek-hw: Add support for Mediatek cpufreq HW driver Date: Thu, 10 Dec 2020 15:48:34 +0800 Message-ID: <1607586516-6547-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. This patch depends on MT6779 DTS patchset[1] submitted by Hanks Chen. 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://lkml.org/lkml/2020/8/4/1094 [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 | 112 ++++++ drivers/cpufreq/Kconfig.arm | 12 + drivers/cpufreq/Makefile | 1 + drivers/cpufreq/mediatek-cpufreq-hw.c | 370 ++++++++++++++++++++ 4 files changed, 495 insertions(+) create mode 100644 Documentation/devicetree/bindings/cpufreq/cpufreq-mediatek-hw.yaml create mode 100644 drivers/cpufreq/mediatek-cpufreq-hw.c