[PATCH v5 09/12] platform/x86/intel/pmt: add register access helpers
Ruhl, Michael J
michael.j.ruhl at intel.com
Wed Jul 2 15:50:35 UTC 2025
>-----Original Message-----
>From: Ruhl, Michael J <michael.j.ruhl at intel.com>
>Sent: Friday, June 27, 2025 4:43 PM
>To: platform-driver-x86 at vger.kernel.org; intel-xe at lists.freedesktop.org;
>hdegoede at redhat.com; ilpo.jarvinen at linux.intel.com; De Marchi, Lucas
><lucas.demarchi at intel.com>; Vivi, Rodrigo <rodrigo.vivi at intel.com>;
>thomas.hellstrom at linux.intel.com; airlied at gmail.com; simona at ffwll.ch;
>david.e.box at linux.intel.com
>Cc: Ruhl, Michael J <michael.j.ruhl at intel.com>
>Subject: [PATCH v5 09/12] platform/x86/intel/pmt: add register access helpers
>
>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 | 60 ++++++++++++-----------
> 1 file changed, 31 insertions(+), 29 deletions(-)
>
>diff --git a/drivers/platform/x86/intel/pmt/crashlog.c
>b/drivers/platform/x86/intel/pmt/crashlog.c
>index 23b3971da40a..adaca7ce1ba5 100644
>--- a/drivers/platform/x86/intel/pmt/crashlog.c
>+++ b/drivers/platform/x86/intel/pmt/crashlog.c
>@@ -64,20 +64,42 @@ struct pmt_crashlog_priv {
> /*
> * I/O
> */
>-static bool pmt_crashlog_complete(struct intel_pmt_entry *entry)
>+#define CRASHLOG_SET_BIT true
>+#define CRASHLOG_CLEAR_BIT false
>+
>+/* read/modify/write */
>+static void pmt_crashlog_rmw(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;
This should be:
reg &= ~bit;
(updating patch set).
M
>+
>+ writel(reg, entry->disc_table + CONTROL_OFFSET);
>+}
>+
>+/* read/check */
>+static bool pmt_crashlog_rc(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 pmt_crashlog_rc(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 pmt_crashlog_rc(entry, CRASHLOG_FLAG_DISABLE);
> }
>
> static bool pmt_crashlog_supported(struct intel_pmt_entry *entry)
>@@ -98,37 +120,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);
>+ pmt_crashlog_rmw(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);
>+ pmt_crashlog_rmw(entry, CRASHLOG_FLAG_TRIGGER_CLEAR,
>CRASHLOG_SET_BIT);
> }
>
> 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);
>+ pmt_crashlog_rmw(entry, CRASHLOG_FLAG_TRIGGER_EXECUTE,
>CRASHLOG_SET_BIT);
> }
>
> /*
>--
>2.49.0
More information about the Intel-xe
mailing list