From: Jan Kiszka <[email protected]>

These models use the same Super I/O chip as the BX-5xA. We only need to
add their station IDs.

Signed-off-by: Jan Kiszka <[email protected]>
---

I would appreciate testing on all the variants, detection and if the 
watchdog triggers (you could use "--with-boot-delay=1000" for that). 
Note that some devices may need disabling of the watchdog that is WDAT-
described in the BIOS.

 drivers/watchdog/w83627hf_wdt.c | 35 +++++++++++++++++++++++++--------
 include/simatic.h               |  4 ++++
 2 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/drivers/watchdog/w83627hf_wdt.c b/drivers/watchdog/w83627hf_wdt.c
index dd6787c..e88182e 100644
--- a/drivers/watchdog/w83627hf_wdt.c
+++ b/drivers/watchdog/w83627hf_wdt.c
@@ -181,6 +181,7 @@ static EFI_STATUS init(EFI_PCI_IO *pci_io, UINT16 
pci_vendor_id,
                       UINT16 __attribute__((unused)) pci_device_id,
                       UINTN timeout)
 {
+       const char *device;
        int chip;
 
        if (!pci_io || pci_vendor_id != PCI_VENDOR_ID_INTEL) {
@@ -188,17 +189,35 @@ static EFI_STATUS init(EFI_PCI_IO *pci_io, UINT16 
pci_vendor_id,
        }
 
        switch (simatic_station_id()) {
+       case SIMATIC_IPC227G:
+               device = "IPC227G";
+               break;
+       case SIMATIC_IPC277G:
+               device = "IPC277G";
+               break;
+       case SIMATIC_IPCBX_39A:
+               device = "IPC BX-39A";
+               break;
+       case SIMATIC_IPCPX_39A:
+               device = "IPC PX-39A";
+               break;
        case SIMATIC_IPCBX_56A:
+               device = "IPC BX-56A";
+               break;
        case SIMATIC_IPCBX_59A:
-               chip = wdt_find(0x2e);
-               if (chip < 0)
-                       return EFI_UNSUPPORTED;
-               INFO(L"Detected SIMATIC BX5xA watchdog\n");
-               w83627hf_init(chip);
-               wdt_set_time(timeout);
-               return EFI_SUCCESS;
+               device = "IPC BX-59A";
+               break;
+       default:
+               return EFI_UNSUPPORTED;
        }
-       return EFI_UNSUPPORTED;
+
+       chip = wdt_find(0x2e);
+       if (chip < 0)
+               return EFI_UNSUPPORTED;
+       INFO(L"Detected SIMATIC %s watchdog\n", device);
+       w83627hf_init(chip);
+       wdt_set_time(timeout);
+       return EFI_SUCCESS;
 }
 
 WATCHDOG_REGISTER(init);
diff --git a/include/simatic.h b/include/simatic.h
index eed82da..7e41e78 100644
--- a/include/simatic.h
+++ b/include/simatic.h
@@ -25,7 +25,11 @@
 
 #define SIMATIC_IPC427E                                0x0a01
 #define SIMATIC_IPC477E                                0x0a02
+#define SIMATIC_IPC227G                                0x0f01
+#define SIMATIC_IPC277G                                0x0f02
 #define SIMATIC_IPCBX_21A                      0x1101
+#define SIMATIC_IPCBX_39A                      0x1001
+#define SIMATIC_IPCPX_39A                      0x1002
 #define SIMATIC_IPCBX_56A                      0x1201
 #define SIMATIC_IPCBX_59A                      0x1202
 
-- 
2.47.3

-- 
You received this message because you are subscribed to the Google Groups "EFI 
Boot Guard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/efibootguard-dev/90c56db7-6141-441d-a252-49a30653a7e5%40siemens.com.

Reply via email to