Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5485254ybl; Tue, 4 Feb 2020 15:06:12 -0800 (PST) X-Google-Smtp-Source: APXvYqwllyfyFEeRGljEk8d8yTw3xDznRxLrBbMmnuys9JVQH3FvrlGStUo4QjOFyL71QIGin7ER X-Received: by 2002:aca:33d5:: with SMTP id z204mr925953oiz.120.1580857571839; Tue, 04 Feb 2020 15:06:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580857571; cv=none; d=google.com; s=arc-20160816; b=HaEYwX1UW+wAYZgwKvVsFAtjGMR8xMx7Aw/jUKSqP5IC3nwW4RWoYmFTMm38s3ykV8 VFlpUzhWQX7oL3AzGL5burCPHY3iGe+oPLwbWphXedwixlmd6SG7GzanuJkmD7BGVD77 SkDxvgO0j/HWtLAg5+DDmT7R6hOAKRRCCxFyQWyrpFWuADT7CSbqPjwmr3PjYPbebi+m 8ItU/UqH6GXhvOfHJQp88+csJ0JkLjQmJJD0/dOiS4xc85xx1/tmOi3hhUHlf+U9AgV9 tKH/xHhMmPFSdiytNd4du1Y+JWD9YmJItMqjr0OFcPzw06kusOLgnsi9GzjPTx0H0Dw0 fqYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from; bh=CbMNZjduOqw5PRz9xhz4IBEM2P/qx23tpCCdCcxuO1I=; b=fDZ4IgF5Ekwa5KGSC1cSbh29P1FKKZ5KF3u9SPzoExp8XE2NOd76j+V/TiEr/Emxeg H6CkrcHUXVIXX5QZYmTan9R5PIPCZVHbGrVEQ8X9iyVOQfVNNVWHBeovWaHmsd4mWjzG 3nYFnWKnuPPuyyZKJbxTGJB5t+Z3m4mwCleeR3CvOktnt1w2zfOApsdSFzQA773qwLXr fMrTk0WDHXu/fe1Llv4lbYXCWsJH1ZspneBmWkb0LK9GoDSNpVsOCwLxOK8BejG9Mxia RPP6Sd4tZxTRR2IN8A971TcBwG8ikQ09GJ0ABhrrRUxzGXRzq0XGEgKWlyM15OV9y1Ge bOaA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a5si12411031oti.22.2020.02.04.15.05.59; Tue, 04 Feb 2020 15:06:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727668AbgBDXEu (ORCPT + 99 others); Tue, 4 Feb 2020 18:04:50 -0500 Received: from mga01.intel.com ([192.55.52.88]:22705 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727412AbgBDXEu (ORCPT ); Tue, 4 Feb 2020 18:04:50 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Feb 2020 15:04:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,403,1574150400"; d="scan'208";a="264017970" Received: from unknown (HELO gayuk-dev-mach.sc.intel.com) ([10.3.79.172]) by fmsmga002.fm.intel.com with ESMTP; 04 Feb 2020 15:04:49 -0800 From: Gayatri Kammela To: platform-driver-x86@vger.kernel.org Cc: linux-kernel@vger.kernel.org, vishwanath.somayaji@intel.com, dvhart@infradead.org, mika.westerberg@intel.com, peterz@infradead.org, charles.d.prestopine@intel.com, Gayatri Kammela , Srinivas Pandruvada , Andy Shevchenko , David Box Subject: [PATCH v2 1/7] platform/x86: intel_pmc_core: Add debugfs entry to access sub-state residencies Date: Tue, 4 Feb 2020 15:01:54 -0800 Message-Id: <7f1154525b65e9cfb350876fe546305db5628588.1580848931.git.gayatri.kammela@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Prior to Tiger Lake, the platforms that support pmc_core have no sub-states of S0ix. Tiger Lake has 8 sub-states/low power modes of S0ix ranging from S0i2.0-S0i2.2 and S0i3.0-S0i3.4, simply represented as S0ix.y. Create a debugfs entry to access residency of each sub-state. Cc: Srinivas Pandruvada Cc: Andy Shevchenko Cc: David Box Signed-off-by: David Box Signed-off-by: Gayatri Kammela --- drivers/platform/x86/intel_pmc_core.c | 28 +++++++++++++++++++++++++++ drivers/platform/x86/intel_pmc_core.h | 21 ++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/drivers/platform/x86/intel_pmc_core.c b/drivers/platform/x86/intel_pmc_core.c index 144faa8bad3d..2a650dbb3bea 100644 --- a/drivers/platform/x86/intel_pmc_core.c +++ b/drivers/platform/x86/intel_pmc_core.c @@ -422,6 +422,8 @@ static const struct pmc_reg_map tgl_reg_map = { .pm_cfg_offset = CNP_PMC_PM_CFG_OFFSET, .pm_read_disable_bit = CNP_PMC_READ_DISABLE_BIT, .ltr_ignore_max = TGL_NUM_IP_IGN_ALLOWED, + .lpm_en_offset = TGL_LPM_EN_OFFSET, + .lpm_residency_offset = TGL_LPM_RESIDENCY_OFFSET, }; static inline u32 pmc_core_reg_read(struct pmc_dev *pmcdev, int reg_offset) @@ -794,6 +796,26 @@ static int pmc_core_ltr_show(struct seq_file *s, void *unused) } DEFINE_SHOW_ATTRIBUTE(pmc_core_ltr); +static int pmc_core_substate_res_show(struct seq_file *s, void *unused) +{ + struct pmc_dev *pmcdev = s->private; + u32 offset = pmcdev->map->lpm_residency_offset; + u32 lpm_en; + int index; + + lpm_en = pmc_core_reg_read(pmcdev, pmcdev->map->lpm_en_offset); + seq_printf(s, "status substate residency\n"); + for (index = 0; lpm_modes[index]; index++) { + seq_printf(s, "%7s %7s %-15u\n", + BIT(index) & lpm_en ? "Enabled" : " ", + lpm_modes[index], pmc_core_reg_read(pmcdev, offset)); + offset += 4; + } + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(pmc_core_substate_res); + static int pmc_core_pkgc_show(struct seq_file *s, void *unused) { struct pmc_dev *pmcdev = s->private; @@ -859,6 +881,12 @@ static void pmc_core_dbgfs_register(struct pmc_dev *pmcdev) debugfs_create_bool("slp_s0_dbg_latch", 0644, dir, &slps0_dbg_latch); } + + if (pmcdev->map->lpm_en_offset) { + debugfs_create_file("substate_residencies", 0444, + pmcdev->dbgfs_dir, pmcdev, + &pmc_core_substate_res_fops); + } } #else static inline void pmc_core_dbgfs_register(struct pmc_dev *pmcdev) diff --git a/drivers/platform/x86/intel_pmc_core.h b/drivers/platform/x86/intel_pmc_core.h index f1a0792b3f91..ff1b2645d9b4 100644 --- a/drivers/platform/x86/intel_pmc_core.h +++ b/drivers/platform/x86/intel_pmc_core.h @@ -188,6 +188,24 @@ enum ppfear_regs { #define TGL_NUM_IP_IGN_ALLOWED 22 +/* + * Tigerlake Power Management Controller register offsets + */ +#define TGL_LPM_EN_OFFSET 0x1C78 +#define TGL_LPM_RESIDENCY_OFFSET 0x1C80 + +const char *lpm_modes[] = { + "S0i2.0", + "S0i2.1", + "S0i2.2", + "S0i3.0", + "S0i3.1", + "S0i3.2", + "S0i3.3", + "S0i3.4", + NULL +}; + struct pmc_bit_map { const char *name; u32 bit_mask; @@ -231,6 +249,9 @@ struct pmc_reg_map { const u32 slps0_dbg_offset; const u32 ltr_ignore_max; const u32 pm_vric1_offset; + /* Low Power Mode registers */ + const u32 lpm_en_offset; + const u32 lpm_residency_offset; }; /** -- 2.17.1