1// SPDX-License-Identifier: GPL-3.0-or-later
2
3#include "known_devices.hpp"
4
5#include <format>
6#include <mos/types.h>
7#include <stdio.h>
8#include <stdlib.h>
9#include <string.h>
10
11static const struct
12{
13 u8 base_class;
14 u8 sub_class;
15 u8 prog_if;
16 const std::string_view name;
17} known_classes[] = {
18#define _X(x, y, z, name) { x, y, z, name },
19#include "builtin.hpp"
20#undef _X
21};
22
23std::string get_known_class_name(u8 base_class, u8 sub_class, u8 prog_if)
24{
25 for (size_t i = 0; i < MOS_ARRAY_SIZE(known_classes); i++)
26 {
27 const u8 k_baseclass = known_classes[i].base_class;
28 const u8 k_subclass = known_classes[i].sub_class;
29 const u8 k_progif = known_classes[i].prog_if;
30
31 if (k_baseclass == base_class && k_subclass == sub_class && k_progif == prog_if)
32 return std::string{ known_classes[i].name };
33 }
34
35 return std::format(fmt: "Unknown class: {:02x}:{:02x}:{:02x}", args&: base_class, args&: sub_class, args&: prog_if);
36}
37