[PATCH 4/5] watchdog: ipc4x7e_wdt: Convert to new MMIO accessors

2 views
Skip to first unread message

Jan Kiszka

unread,
May 31, 2021, 4:07:13 AM5/31/21
to efibootg...@googlegroups.com, Christian Storm, Arsalan H . Awan, Cedric Hombourger
From: Jan Kiszka <jan.k...@siemens.com>

Avoid the open-coded mmio accessors and rather use the newly added mmio
accessors for this.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
drivers/watchdog/ipc4x7e_wdt.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/drivers/watchdog/ipc4x7e_wdt.c b/drivers/watchdog/ipc4x7e_wdt.c
index 39f66d5..24faebe 100644
--- a/drivers/watchdog/ipc4x7e_wdt.c
+++ b/drivers/watchdog/ipc4x7e_wdt.c
@@ -17,6 +17,7 @@
#include <efilib.h>
#include <pci/header.h>
#include <sys/io.h>
+#include <mmio.h>

#define PCI_DEVICE_ID_INTEL_SUNRISEPOINT_H_LPC 0xa150

@@ -113,22 +114,21 @@ static UINTN mmcfg_address(UINTN bus, UINTN device, UINTN function,
static UINT64 get_sbreg_rba(VOID)
{
BOOLEAN p2sb_hidden =
- *(volatile UINT16 *)mmcfg_address(0, 0x1f, 1, P2SB_PCIID) == 0xffff;
+ readw(mmcfg_address(0, 0x1f, 1, P2SB_PCIID)) == 0xffff;
UINT32 lo, hi;
UINT64 sbreg;

/* Unhide the P2SB device if it's hidden. */
if (p2sb_hidden) {
- *(volatile UINT32 *)mmcfg_address(0, 0x1f, 1, P2SB_CTRL) = 0;
+ writel(0, mmcfg_address(0, 0x1f, 1, P2SB_CTRL));
}

- lo = *(volatile UINT32 *)mmcfg_address(0, 0x1f, 1, P2SB_SBREG_BAR);
- hi = *(volatile UINT32 *)mmcfg_address(0, 0x1f, 1, P2SB_SBREG_BARH);
+ lo = readl(mmcfg_address(0, 0x1f, 1, P2SB_SBREG_BAR));
+ hi = readl(mmcfg_address(0, 0x1f, 1, P2SB_SBREG_BARH));
sbreg = (lo & 0xff000000) | ((UINT64)hi << 32);

if (p2sb_hidden) {
- *(volatile UINT32 *)mmcfg_address(0, 0x1f, 1, P2SB_CTRL) =
- P2SB_CFG_HIDE;
+ writel(P2SB_CFG_HIDE, mmcfg_address(0, 0x1f, 1, P2SB_CTRL));
}

return sbreg;
@@ -141,7 +141,7 @@ init(EFI_PCI_IO *pci_io, UINT16 pci_vendor_id, UINT16 pci_device_id,
SMBIOS_STRUCTURE_TABLE *smbios_table;
SMBIOS_STRUCTURE_POINTER smbios_struct;
EFI_STATUS status;
- volatile UINT32 *pad_cfg;
+ UINTN pad_cfg;
UINT8 val;

if (!pci_io || pci_vendor_id != PCI_VENDOR_ID_INTEL ||
@@ -169,10 +169,9 @@ init(EFI_PCI_IO *pci_io, UINT16 pci_vendor_id, UINT16 pci_device_id,
* Drive SAFE_EN_N low to allow that watchdog can trigger a
* hard reset.
*/
- pad_cfg = (volatile UINT32 *)(get_sbreg_rba() +
- (GPIO_COMMUNITY0_PORT_ID << 16) +
- PAD_CFG_DW0_GPP_A_23);
- *pad_cfg &= ~PAD_CFG_GPIOTXSTATE;
+ pad_cfg = get_sbreg_rba() + (GPIO_COMMUNITY0_PORT_ID << 16) +
+ PAD_CFG_DW0_GPP_A_23;
+ writel(readl(pad_cfg) & ~PAD_CFG_GPIOTXSTATE, pad_cfg);

if (timeout <= 2) {
val = 0 << SIMATIC_WD_SCALER_SHIFT;
--
2.26.2

Reply all
Reply to author
Forward
0 new messages