aboutsummaryrefslogtreecommitdiff
path: root/backend/drm/gen_pnpids.sh
diff options
context:
space:
mode:
Diffstat (limited to 'backend/drm/gen_pnpids.sh')
-rwxr-xr-xbackend/drm/gen_pnpids.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/backend/drm/gen_pnpids.sh b/backend/drm/gen_pnpids.sh
new file mode 100755
index 00000000..80e5542d
--- /dev/null
+++ b/backend/drm/gen_pnpids.sh
@@ -0,0 +1,27 @@
+#!/bin/sh -eu
+#
+# usage: gen_pnpids.sh < pnp.ids > pnpids.c
+
+gen_pnps()
+{
+ while read -r id vendor; do
+ [ "${#id}" = 3 ] || exit 1
+
+ printf "\tcase PNP_ID('%c', '%c', '%c'): return \"%s\";\n" \
+ "$id" "${id#?}" "${id#??}" "$vendor"
+ done
+}
+
+cat << EOF
+#include <stdint.h>
+#include <stddef.h>
+#include "backend/drm/util.h"
+#define PNP_ID(a, b, c) ((a & 0x1f) << 10) | ((b & 0x1f) << 5) | (c & 0x1f)
+const char *get_pnp_manufacturer(uint16_t code) {
+ switch (code) {
+$(gen_pnps)
+ }
+ return NULL;
+}
+#undef PNP_ID
+EOF