Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5485349ybl; Tue, 4 Feb 2020 15:06:16 -0800 (PST) X-Google-Smtp-Source: APXvYqzu12UWoXRyLfSRHkSyR5ODsIAoERtKU/UVH2wkZoilYI6hpvKtzYWJN8g2R9fgIdVL/s/Q X-Received: by 2002:aca:55cc:: with SMTP id j195mr1011661oib.22.1580857576706; Tue, 04 Feb 2020 15:06:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580857576; cv=none; d=google.com; s=arc-20160816; b=A7Ke4wYRlmxXFAxVDY9b4I76ZGcVahHf+9rqEjl8av8JnukWNOm0OrpbDhDGQH0GDc yQgZPika8WPCRuIJ03YBIKPcBQkfBRgYSY3nIovn/FinQbKY0UCl+F/Ag4WoRZ4q9VZF rM84KnRAGVhbArFwQaiAtMIsIP/wvtAZ01Dffw40xMp7stuLjfXVfPLlQqxXyYiUd9xK SXMWw+QmK+r/6n4PffB5vp/7kAHB1Is5lqMQO5dqYmYl7ua/EByGRbKdlEQQqroGXgCK ZwUYCGhK6syCSt98BJceOJootybe4gTS+T6pRozzXo2ndSaCT8R40+pxX3ouoj6jGSrw niQg== 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=3t+EOOJ9oHrdZ1lbRYWn/SVPaqkNNT11tgUNiaxBqsU=; b=XJG2xYftA4/kptWuQXtp7/5BEMxXZZaIpwARvZFWH57xRclV4dsVNKAnCl4n9KntSZ JoUIfT/UEDKCNN0DTsS+wDa5k6ETFsTBRjvjXJZmxOoafnl9ToKO8s8iTYqEFRQlVPy/ VFZpaS6499z/Icl+wr22V/girRhe6FwcShvjMydD+NIlsaawkjx4U4fnyKTDy/fqsFMg /cptWDmz5COV9rqKym2/KUuFu7lOlpNrIozyFTX3xE+fGbVRKS6PysJYk6+I1MUveXA6 wsV8FpX3ud+cfC79ff+ler+F4GJTUTPBaHQhMiNUcF693nsHsbPyZG8ijJpvhy8ZV2L6 a+1w== 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 m19si12589664otr.18.2020.02.04.15.06.04; Tue, 04 Feb 2020 15:06:16 -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 S1727763AbgBDXFE (ORCPT + 99 others); Tue, 4 Feb 2020 18:05:04 -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 S1727730AbgBDXFB (ORCPT ); Tue, 4 Feb 2020 18:05:01 -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:05:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,403,1574150400"; d="scan'208";a="264018019" 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:05:00 -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 E . Box" Subject: [PATCH v2 7/7] platform/x86: intel_pmc_core: Add debugfs support to access live status registers Date: Tue, 4 Feb 2020 15:02:00 -0800 Message-Id: <89269c13aa2dbc99246741ff3026a6c7cb3c7495.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 Just like status registers, Tiger Lake has another set of 6 registers that help with status of the low power mode requirements. They are latched on every PC10 entry/exit and S0ix.y entry/exit as well. Though status and live status registers show the status of same list of requirements, live status registers show the status of the low power mode requirements at the time of reading. Cc: Srinivas Pandruvada Cc: Andy Shevchenko Cc: David E. Box Signed-off-by: Gayatri Kammela --- drivers/platform/x86/intel_pmc_core.c | 19 +++++++++++++++++++ drivers/platform/x86/intel_pmc_core.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/drivers/platform/x86/intel_pmc_core.c b/drivers/platform/x86/intel_pmc_core.c index 62cce906755e..19e02319fd0e 100644 --- a/drivers/platform/x86/intel_pmc_core.c +++ b/drivers/platform/x86/intel_pmc_core.c @@ -570,6 +570,7 @@ static const struct pmc_reg_map tgl_reg_map = { .lpm_residency_offset = TGL_LPM_RESIDENCY_OFFSET, .lpm_sts = tgl_lpm_maps, .lpm_status_offset = TGL_LPM_STATUS_OFFSET, + .lpm_live_status_offset = TGL_LPM_LIVE_STATUS_OFFSET, }; static inline u32 pmc_core_reg_read(struct pmc_dev *pmcdev, int reg_offset) @@ -1019,6 +1020,18 @@ static int pmc_core_substate_sts_regs_show(struct seq_file *s, void *unused) } DEFINE_SHOW_ATTRIBUTE(pmc_core_substate_sts_regs); +static int pmc_core_substate_l_sts_regs_show(struct seq_file *s, void *unused) +{ + struct pmc_dev *pmcdev = s->private; + const struct pmc_bit_map **maps = pmcdev->map->lpm_sts; + u32 offset = pmcdev->map->lpm_live_status_offset; + + pmc_core_lpm_display(pmcdev, NULL, s, offset, "LIVE_STATUS", maps); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(pmc_core_substate_l_sts_regs); + static int pmc_core_pkgc_show(struct seq_file *s, void *unused) { struct pmc_dev *pmcdev = s->private; @@ -1096,6 +1109,12 @@ static void pmc_core_dbgfs_register(struct pmc_dev *pmcdev) pmcdev->dbgfs_dir, pmcdev, &pmc_core_substate_sts_regs_fops); } + + if (pmcdev->map->lpm_status_offset) { + debugfs_create_file("substate_live_status_registers", 0444, + pmcdev->dbgfs_dir, pmcdev, + &pmc_core_substate_l_sts_regs_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 3fdf4735c56f..1bbdffe80bde 100644 --- a/drivers/platform/x86/intel_pmc_core.h +++ b/drivers/platform/x86/intel_pmc_core.h @@ -196,6 +196,7 @@ enum ppfear_regs { /* Tigerlake Low Power Mode debug registers */ #define TGL_LPM_STATUS_OFFSET 0x1C3C +#define TGL_LPM_LIVE_STATUS_OFFSET 0x1C5C const char *lpm_modes[] = { "S0i2.0", @@ -257,6 +258,7 @@ struct pmc_reg_map { const u32 lpm_en_offset; const u32 lpm_residency_offset; const u32 lpm_status_offset; + const u32 lpm_live_status_offset; }; /** -- 2.17.1