bios: enable configure flashrom tool

Since flashrom can handle cases which the flat write is unable to do,
allow for flashrom to be configured as the tool for writing.

Tested: image is written as expected

```
May 28 15:29:23 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20409]: flashrom v1.2.1 on Linux 6.6.86-c94132b-dirty-875bc16-00427-g875bc16d66f8 (armv6l)
May 28 15:29:23 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20409]: flashrom is free software, get the source code at https://flashrom.org
May 28 15:29:23 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20409]: Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
May 28 15:29:23 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20409]: Opened /dev/mtd6 successfully
May 28 15:29:23 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20409]: Found Programmer flash chip "Opaque flash chip" (32768 kB, Programmer-specific) on linux_mtd.
May 28 15:29:22 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20341]: [flashrom] running flashrom -p linux_mtd:dev=6 -w /tmp/spi-device-image-9551.bin
May 28 15:29:46 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20409]: Reading old flash chip contents... done.
May 28 15:33:42 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20409]: Erasing and writing flash chip... Erase/write done.
May 28 15:35:08 s8030-bmc-30303035c0c1 phosphor-bios-software-update[20409]: Verifying flash... VERIFIED.

root@s8030-bmc-30303035c0c1:~# cmp -l /tmp/mtd6_dump.bin /tmp/8030V401.ROM
root@s8030-bmc-30303035c0c1:~# echo $?
0
```

Change-Id: I16c561231c2fa040d951c78dd0a76c28560c98d8
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
diff --git a/bios/spi_device.cpp b/bios/spi_device.cpp
index e6917b5..fbf6fe9 100644
--- a/bios/spi_device.cpp
+++ b/bios/spi_device.cpp
@@ -407,7 +407,20 @@
         co_return 1;
     }
 
-    std::string cmd = "flashrom -p linux_mtd:dev=" + devPath.value();
+    size_t devNum = 0;
+
+    try
+    {
+        devNum = std::stoi(devPath.value().substr(8));
+    }
+    catch (std::exception& e)
+    {
+        error("could not parse mtd device number from {STR}: {ERROR}", "STR",
+              devPath.value(), "ERROR", e);
+        co_return 1;
+    }
+
+    std::string cmd = "flashrom -p linux_mtd:dev=" + std::to_string(devNum);
 
     if (layout == flashLayoutFlat)
     {