etnaviv: Introduce a full blown hardware database (hwdb)
What does this MR do and why?
This MR adds support for a full blown hardware database (hwdb) based on official headers from SoC vendors.
There is some Python magic as the headers are based on different versions of galcore.
Here is a brief look at the differences:
amlogic/gc_feature_database.h (autogenerated at 2021-04-12 17:20:00, 733 struct members, 8 entries)
nxp/gc_feature_database.h (autogenerated at 2023-10-24 16:06:00, 861 struct members, 27 entries)
stm/gc_feature_database.h (autogenerated at 2022-12-29 11:13:00, 833 struct members, 4 entries)
These header files are generated and adhere to a specific structure. Therefore, all we need to do is write an intelligent Python script capable of merging the struct members into a single consolidated struct. This script will also convert the old struct entries to the new format and generate a header file that we can use.