[PATCH v3 09/11] platform/x86/intel/pmt: add register access helpers
Michael J. Ruhl
michael.j.ruhl at intel.com
Thu Jun 5 18:44:42 UTC 2025
The control register is used in a read/modify/write pattern.
The status register is used in a read/check bit pattern.
Add helpers to eliminate common code.
Signed-off-by: Michael J. Ruhl <michael.j.ruhl at intel.com>
---
drivers/platform/x86/intel/pmt/crashlog.c | 58 +++++++++++------------
1 file changed, 29 insertions(+), 29 deletions(-)
diff --git a/drivers/platform/x86/intel/pmt/crashlog.c b/drivers/platform/x86/intel/pmt/crashlog.c
index 463b0ba4a842..318d7a21f00e 100644
--- a/drivers/platform/x86/intel/pmt/crashlog.c
+++ b/drivers/platform/x86/intel/pmt/crashlog.c
@@ -62,20 +62,40 @@ struct pmt_crashlog_priv {
/*
* I/O
*/
-static bool pmt_crashlog_complete(struct intel_pmt_entry *entry)
+#define SET true
+#define CLEAR false
+
+static void read_modify_write(struct intel_pmt_entry *entry, u32 bit, bool set)
{
- u32 control = readl(entry->disc_table + CONTROL_OFFSET);
+ u32 reg = readl(entry->disc_table + CONTROL_OFFSET);
+
+ reg &= ~CRASHLOG_FLAG_TRIGGER_MASK;
+
+ if (set)
+ reg |= bit;
+ else
+ reg &= bit;
+
+ writel(reg, entry->disc_table + CONTROL_OFFSET);
+}
+
+static bool read_check(struct intel_pmt_entry *entry, u32 bit)
+{
+ u32 reg = readl(entry->disc_table + CONTROL_OFFSET);
+
+ return !!(reg & bit);
+}
+static bool pmt_crashlog_complete(struct intel_pmt_entry *entry)
+{
/* return current value of the crashlog complete flag */
- return !!(control & CRASHLOG_FLAG_TRIGGER_COMPLETE);
+ return read_check(entry, CRASHLOG_FLAG_TRIGGER_COMPLETE);
}
static bool pmt_crashlog_disabled(struct intel_pmt_entry *entry)
{
- u32 control = readl(entry->disc_table + CONTROL_OFFSET);
-
/* return current value of the crashlog disabled flag */
- return !!(control & CRASHLOG_FLAG_DISABLE);
+ return read_check(entry, CRASHLOG_FLAG_DISABLE);
}
static bool pmt_crashlog_supported(struct intel_pmt_entry *entry)
@@ -96,37 +116,17 @@ static bool pmt_crashlog_supported(struct intel_pmt_entry *entry)
static void pmt_crashlog_set_disable(struct intel_pmt_entry *entry,
bool disable)
{
- u32 control = readl(entry->disc_table + CONTROL_OFFSET);
-
- /* clear trigger bits so we are only modifying disable flag */
- control &= ~CRASHLOG_FLAG_TRIGGER_MASK;
-
- if (disable)
- control |= CRASHLOG_FLAG_DISABLE;
- else
- control &= ~CRASHLOG_FLAG_DISABLE;
-
- writel(control, entry->disc_table + CONTROL_OFFSET);
+ read_modify_write(entry, CRASHLOG_FLAG_DISABLE, disable);
}
static void pmt_crashlog_set_clear(struct intel_pmt_entry *entry)
{
- u32 control = readl(entry->disc_table + CONTROL_OFFSET);
-
- control &= ~CRASHLOG_FLAG_TRIGGER_MASK;
- control |= CRASHLOG_FLAG_TRIGGER_CLEAR;
-
- writel(control, entry->disc_table + CONTROL_OFFSET);
+ read_modify_write(entry, CRASHLOG_FLAG_TRIGGER_CLEAR, SET);
}
static void pmt_crashlog_set_execute(struct intel_pmt_entry *entry)
{
- u32 control = readl(entry->disc_table + CONTROL_OFFSET);
-
- control &= ~CRASHLOG_FLAG_TRIGGER_MASK;
- control |= CRASHLOG_FLAG_TRIGGER_EXECUTE;
-
- writel(control, entry->disc_table + CONTROL_OFFSET);
+ read_modify_write(entry, CRASHLOG_FLAG_TRIGGER_EXECUTE, SET);
}
/*
--
2.49.0
More information about the Intel-xe
mailing list