diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7552099..9424c8b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,26 +1,109 @@
 {
         "cSpell.words": [
+                "abled",
                 "acpica",
+                "alarmtimer",
+                "ASIC",
+                "aspm",
+                "ASPM",
+                "asus",
+                "ASUS",
+                "cmos",
                 "CPPC",
+                "cpuid",
+                "cpuidle",
+                "cpus",
+                "crashkernel",
+                "cryptdevice",
+                "cryptkey",
+                "cstates",
+                "cysystemd",
                 "dbus",
+                "dmar",
+                "dmcub",
+                "Dmcub",
+                "DMCUB",
+                "DMUB",
+                "dpia",
+                "DPIA",
+                "DSDT",
+                "earlycon",
+                "earlyprintk",
                 "edid",
                 "edids",
                 "ENDC",
+                "ertm",
+                "evmisc",
+                "FACP",
                 "geteuid",
+                "gobject",
+                "gpiolib",
+                "gpios",
+                "guids",
+                "hpet",
+                "HPET",
+                "hsmp",
+                "Hsmp",
+                "HSMP",
+                "hwirq",
                 "hwsleep",
                 "Iasl",
+                "idlemask",
                 "Iommu",
+                "irqs",
+                "IVRS",
+                "kconfig",
+                "klass",
                 "kmajor",
                 "kminor",
+                "kwin",
                 "levelname",
                 "logf",
+                "logind",
+                "luks",
+                "minv",
+                "modalias",
+                "netdev",
+                "netroot",
+                "nfsaddrs",
+                "nfsroot",
+                "noplymouth",
+                "notsupported",
+                "nowatchdog",
+                "ostree",
                 "powerprofilesctl",
+                "powersave",
+                "ppfeaturemask",
                 "prefcore",
                 "prereq",
+                "propf",
+                "reques",
+                "resumeflags",
+                "rhgb",
                 "rootflags",
+                "rootfstype",
                 "roothash",
+                "sadm",
                 "seeked",
-                "showopts"
+                "showopts",
+                "sscanf",
+                "SSDT",
+                "subleaf",
+                "sysfs",
+                "tmpd",
+                "UBTC",
+                "uefi",
+                "uevent",
+                "Unserviced",
+                "usec",
+                "userspace",
+                "usrflags",
+                "usrfstype",
+                "virt",
+                "wakealarm",
+                "xhci",
+                "Xhci",
+                "zswap"
         ],
         "python.testing.unittestArgs": [
                 "-v",
diff --git a/src/amd_debug/database.py b/src/amd_debug/database.py
index ec23dec..f8e60fb 100644
--- a/src/amd_debug/database.py
+++ b/src/amd_debug/database.py
@@ -263,11 +263,11 @@
         )
         return cur.fetchall()
 
-    def report_debug(self, t0) -> str:
+    def report_debug(self, t0) -> list:
         """Helper function to report the debug database"""
         assert self.db
         if t0 is None:
-            return ""
+            return []
         cur = self.db.cursor()
         cur.execute(
             "SELECT message, priority FROM debug WHERE t0=?",
@@ -323,7 +323,7 @@
         cur = self.db.cursor()
         cur.execute("SELECT * FROM prereq_data ORDER BY t0 DESC LIMIT 1")
         result = cur.fetchone()
-        return result[0] if result else None
+        return result[0] if result else 0
 
     def get_last_cycle(self) -> list:
         """Helper function to report the last line from battery database"""
diff --git a/src/amd_debug/kernel.py b/src/amd_debug/kernel.py
index 464dce8..e90a645 100644
--- a/src/amd_debug/kernel.py
+++ b/src/amd_debug/kernel.py
@@ -262,7 +262,11 @@
     """Class for logging using systemd journal using cython"""
 
     def __init__(self):
-        from cysystemd.reader import JournalReader, JournalOpenMode, Rule
+        from cysystemd.reader import (
+            JournalReader,
+            JournalOpenMode,
+            Rule,
+        )  # pylint: disable=import-outside-toplevel
 
         boot_reader = JournalReader()
         boot_reader.open(JournalOpenMode.SYSTEM)
diff --git a/src/amd_debug/prerequisites.py b/src/amd_debug/prerequisites.py
index 6f4c049..6756fe6 100644
--- a/src/amd_debug/prerequisites.py
+++ b/src/amd_debug/prerequisites.py
@@ -788,7 +788,7 @@
                     "utf-8"
                 )
             except FileNotFoundError:
-                self.db.record_prereq(f"ethtool is missing", "👀")
+                self.db.record_prereq("ethtool is missing", "👀")
                 return True
             for line in output.split("\n"):
                 if "Supports Wake-on" in line:
@@ -1189,7 +1189,6 @@
         if self.cpu_family == 0x1A and self.cpu_model in affected_1a:
             found_iommu = False
             found_acpi = False
-            found_dmar = False
             for dev in self.pyudev.list_devices(subsystem="iommu"):
                 found_iommu = True
                 debug_str += f"Found IOMMU {dev.sys_path}\n"
diff --git a/src/amd_debug/s2idle.py b/src/amd_debug/s2idle.py
index f1ead65..2738849 100644
--- a/src/amd_debug/s2idle.py
+++ b/src/amd_debug/s2idle.py
@@ -75,7 +75,7 @@
 def get_report_file(report_file, extension) -> str:
     """Prompt user for report file"""
     if extension == "stdout":
-        return None
+        return ""
     if not report_file:
         return f"amd-s2idle-report-{date.today()}.{extension}"
     return report_file
@@ -88,7 +88,7 @@
     return "html"
 
 
-def prompt_report_arguments(since, until, fname, fmt, report_debug) -> str:
+def prompt_report_arguments(since, until, fname, fmt, report_debug) -> list:
     """Prompt user for report configuration"""
     if not since:
         default = Defaults.since
diff --git a/src/amd_debug/validator.py b/src/amd_debug/validator.py
index 581ddc4..febbf3b 100644
--- a/src/amd_debug/validator.py
+++ b/src/amd_debug/validator.py
@@ -659,10 +659,10 @@
             check()
         self.db.record_cycle(
             self.requested_duration,
-            self.active_gpios,
-            self.wakeup_irqs,
-            self.kernel_duration,
-            self.hw_sleep_duration,
+            ",".join(str(gpio) for gpio in self.active_gpios),
+            ",".join(str(irq) for irq in self.wakeup_irqs),
+            int(self.kernel_duration),
+            int(self.hw_sleep_duration),
         )
 
     def prep(self):
diff --git a/src/test_validator.py b/src/test_validator.py
index c5196fa..e08fcd5 100644
--- a/src/test_validator.py
+++ b/src/test_validator.py
@@ -557,7 +557,7 @@
             # Set attributes for record_cycle
             self.validator.requested_duration = 60
             self.validator.active_gpios = ["GPIO1"]
-            self.validator.wakeup_irqs = [5]
+            self.validator.wakeup_irqs = ["5"]
             self.validator.kernel_duration = 1.5
             self.validator.hw_sleep_duration = 1.0
 
@@ -580,10 +580,10 @@
             # Assert record_cycle was called with correct arguments
             mock_record_cycle.assert_called_once_with(
                 self.validator.requested_duration,
-                self.validator.active_gpios,
-                self.validator.wakeup_irqs,
-                self.validator.kernel_duration,
-                self.validator.hw_sleep_duration,
+                ",".join(str(gpio) for gpio in self.validator.active_gpios),
+                ",".join(str(irq) for irq in self.validator.wakeup_irqs),
+                int(self.validator.kernel_duration),
+                int(self.validator.hw_sleep_duration),
             )
 
     def test_program_wakealarm(self):
