1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 02:17:35 +00:00

Meta+LibEDID: Download and generate the PNP ID database

This downloads the UEFI's published PNP ID database and generates a
lookup table for use in LibEDID. The lookup table isn't optimized at
all, but this can be easily done at a later point if needed.
This commit is contained in:
Tom 2022-01-17 16:53:17 -07:00 committed by Linus Groh
parent ab1075e296
commit 869c20b05d
8 changed files with 359 additions and 0 deletions

View file

@ -1,8 +1,12 @@
include(${SerenityOS_SOURCE_DIR}/Meta/CMake/pnp_ids.cmake)
set(SOURCES
DMT.cpp
EDID.cpp
VIC.cpp
${PNP_IDS_SOURCES}
)
serenity_lib(LibEDID edid)
target_link_libraries(LibEDID LibC)
target_compile_definitions(LibEDID PRIVATE ENABLE_PNP_IDS_DATA=$<BOOL:${ENABLE_PNP_IDS_DOWNLOAD}>)

View file

@ -13,6 +13,10 @@
# include <Kernel/API/FB.h>
# include <fcntl.h>
# include <unistd.h>
# ifdef ENABLE_PNP_IDS_DATA
# include <LibEDID/LibEDID/PnpIDs.h>
# endif
#endif
namespace EDID {
@ -552,6 +556,18 @@ String Parser::legacy_manufacturer_id() const
return id;
}
#ifndef KERNEL
String Parser::manufacturer_name() const
{
auto manufacturer_id = legacy_manufacturer_id();
# ifdef ENABLE_PNP_IDS_DATA
if (auto pnp_id_data = PnpIDs::find_by_manufacturer_id(manufacturer_id); pnp_id_data.has_value())
return pnp_id_data.value().manufacturer_name;
# endif
return manufacturer_id;
}
#endif
u16 Parser::product_code() const
{
return read_le(&raw_edid().vendor.product_code);

View file

@ -83,6 +83,10 @@ public:
#endif
String legacy_manufacturer_id() const;
#ifndef KERNEL
String manufacturer_name() const;
#endif
u16 product_code() const;
u32 serial_number() const;