[Nouveau] [RFC] NVIDIA hardware reference headers

Hello, The Tegra GPU system software team has begun to align our new-chip development efforts with Nouveau. In particular we would like to arrive at a place where the Nouveau kernel driver code base is our primary development environment. To that end I'd like to add some "official" hardware reference headers to Nouveau. The headers are derived from the information we use internally. I have arranged the definitions such that the similarities and differences between GPUs is made explicit. I am happy to explain the rationale for any design choices and since I wrote the generator I am able to tweak them in almost any way the community prefers. For this specific phase I can provide information already available for GK20A and GM20B (via either nvgpu and/or the ongoing work to add Tegra support to Nouveau). We have already gone through an internal IP review process on those... but, over the long-term I'm confident any information we need to fill-in functionality >= NV50/G80 will be made public eventually. We just need to go through the internal steps necessary to make that happen. I started a Nouveau branch of my own to treat as a scratch pad and for keeping track of discussion: https://github.com/kfractal/nouveau/tree/hwref That branch tracks: https://github.com/Gnurou/nouveau/tree/staging I also have: https://github.com/kfractal/nouveau/tree/old-hwref which has some earlier notes and discussion on use-patterns. Once we're happy with the placement and organization of these headers and accessors, I've been given the freedom (i.e. time and space) to follow through and help make Nouveau our go-to chip development kernel driver. I'm looking forward to comments and to actually, finally, jumping in :) Thanks! --- Ken Adams kadams at nvidia.com