diff options
Diffstat (limited to 'backend/drm/gen_pnpids.sh')
-rwxr-xr-x | backend/drm/gen_pnpids.sh | 27 |
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 |