summaryrefslogtreecommitdiffstats
path: root/src/detection/board/board_linux.c
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/board/board_linux.c
Add the files
Diffstat (limited to 'src/detection/board/board_linux.c')
-rw-r--r--src/detection/board/board_linux.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/detection/board/board_linux.c b/src/detection/board/board_linux.c
new file mode 100644
index 0000000..52b3df2
--- /dev/null
+++ b/src/detection/board/board_linux.c
@@ -0,0 +1,26 @@
+#include "board.h"
+#include "common/io.h"
+#include "common/smbios.h"
+
+const char* ffDetectBoard(FFBoardResult* board) {
+ if (ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_name", "/sys/class/dmi/id/board_name", &board->name)) {
+ ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_serial", "/sys/class/dmi/id/board_serial", &board->serial);
+ ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_vendor", "/sys/class/dmi/id/board_vendor", &board->vendor);
+ ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_version", "/sys/class/dmi/id/board_version", &board->version);
+ } else if (ffReadFileBuffer("/sys/firmware/devicetree/base/smbios/smbios/baseboard/product", &board->name)) {
+ ffStrbufTrimRight(&board->name, '\0');
+ if (ffReadFileBuffer("/sys/firmware/devicetree/base/smbios/smbios/baseboard/manufacturer", &board->vendor)) {
+ ffStrbufTrimRight(&board->vendor, '\0');
+ }
+ } else if (ffReadFileBuffer("/sys/firmware/devicetree/base/board", &board->name)) {
+ ffStrbufTrimRightSpace(&board->name);
+ } else if (ffReadFileBuffer("/sys/firmware/devicetree/base/compatible", &board->vendor)) {
+ uint32_t comma = ffStrbufFirstIndexC(&board->vendor, ',');
+ if (comma < board->vendor.length) {
+ ffStrbufSetS(&board->name, board->vendor.chars + comma + 1);
+ ffStrbufTrimRightSpace(&board->name);
+ ffStrbufSubstrBefore(&board->vendor, comma);
+ }
+ }
+ return NULL;
+}