gma i945: Add Pineview support

Add Pineview desktop and mobile variants to the existing i945/Gen3
code path. Pineview is close to i945, but Linux' i915 treats a few
pieces differently and those differences need explicit handling:

- add Pineview/Pineview_M CPU types and PCI IDs 0xa001/0xa011
- detect Pineview-M as a mobile Gen3 platform so LVDS is exposed
- decode Pineview GCFGC display clock selections for 133/167/200/
  267/333/444 MHz CDClk
- use the mobile/Pineview CLKCFG FSB encoding for HRAW clock
- keep the separate BAR3 Gen3 GTT layout, but use the i965/G33 style
  PTE encoding for Pineview's 36-bit DMA addresses
- add a separate Pineview DPLL calculation/programming path instead of
  widening the i945 PLL ranges; Pineview has a one-hot N encoding in
  the frequency-parameter (FP) register, no M1 divider, M = M2 + 2,
  and P1 at bit 15

The i945 PLL type ranges and calculation path remain unchanged.

Tested with:
  make clean && make DEBUG=1 cnf=configs/ironlake
  make clean && make DEBUG=1 cnf=configs/ironlake_edp
  make clean && make DEBUG=1 cnf=configs/i945

Tested with coreboot on Foxconn D41S.

Change-Id: I8bda5d27e1c071bd59bd9a8751dc1ea31b25614f
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.sourcearcade.org/c/libgfxinit/+/515
Tested-by: Ada SPARK <gnatbot@sourcearcade.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
diff --git a/common/i945/hw-gfx-gma-port_detect.adb b/common/i945/hw-gfx-gma-port_detect.adb
index af82c17..f2b29f0 100644
--- a/common/i945/hw-gfx-gma-port_detect.adb
+++ b/common/i945/hw-gfx-gma-port_detect.adb
@@ -31,8 +31,8 @@
       -- i945: VGA (ADPA) is always present
       Config.Valid_Port (Analog) := True;
 
-      -- LVDS is only present on mobile (i945GM)
-      Config.Valid_Port (LVDS)   := Config.GMCH_I945GM;
+      -- LVDS is only present on mobile Gen3 parts (i945GM/Pineview-M)
+      Config.Valid_Port (LVDS)   := Config.GMCH_Gen3_Mobile;
 
       -- Enable CRT hotplug detection
       Registers.Write