x86: queensbay: Really disable IGD
authorBin Meng <bmeng.cn@gmail.com>
Fri, 23 Oct 2015 02:13:32 +0000 (19:13 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Fri, 13 Nov 2015 14:46:20 +0000 (06:46 -0800)
commite5ffa4bb62b4532079ea552a804178f3955775f9
treef2729cf1115d2d4c13adf3242520504b44f4b4c6
parent1eb39a509354ae3c199c739bfb2d3a0d442e2cac
x86: queensbay: Really disable IGD

According to Atom E6xx datasheet, setting VGA Disable (bit17)
of Graphics Controller register (offset 0x50) prevents IGD
(D2:F0) from reporting itself as a VGA display controller
class in the PCI configuration space, and should also prevent
it from responding to VGA legacy memory range and I/O addresses.

However test result shows that with just VGA Disable bit set and
a PCIe graphics card connected to one of the PCIe controllers on
the E6xx, accessing the VGA legacy space still causes system hang.
After a number of attempts, it turns out besides VGA Disable bit,
the SDVO (D3:F0) device should be disabled to make it work.

To simplify, use the Function Disable register (offset 0xc4)
to disable both IGD (D2:F0) and SDVO (D3:F0) devices. Now these
two devices will be completely disabled (invisible in the PCI
configuration space) unless a system reset is performed.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
arch/x86/cpu/queensbay/tnc.c
arch/x86/include/asm/arch-queensbay/tnc.h