[U-Boot] [PATCH 6/6] x86: Allow disabling IGD on Intel Queensbay
Simon Glass
sjg at chromium.org
Sun Oct 18 23:37:05 CEST 2015
On 3 October 2015 at 08:29, Simon Glass <sjg at chromium.org> wrote:
> Hi Bin,
>
> On 1 October 2015 at 08:36, Bin Meng <bmeng.cn at gmail.com> wrote:
>> Add a Kconfig option to disable the Integrated Graphics Device (IGD)
>> so that it does not show in the PCI configuration space as a VGA
>> disaplay controller. This gives a chance for U-Boot to run PCI/PCIe
>> based graphics card's VGA BIOS and use that for the graphics console.
>>
>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>>
>> ---
>>
>> arch/x86/cpu/queensbay/Kconfig | 8 ++++++++
>> arch/x86/cpu/queensbay/tnc.c | 19 +++++++++++++++++++
>> arch/x86/include/asm/arch-queensbay/tnc.h | 5 +++++
>> include/configs/crownbay.h | 1 +
>> 4 files changed, 33 insertions(+)
>
> Acked-by: Simon Glass <sjg at chromium.org>
>
> But do we really want configs for such device-specific things? I
> wonder if device tree would be better. E.g. add 'status = "disabled"'
> in the PCI node.
>
>>
>> diff --git a/arch/x86/cpu/queensbay/Kconfig b/arch/x86/cpu/queensbay/Kconfig
>> index fbf85f2..6136d75 100644
>> --- a/arch/x86/cpu/queensbay/Kconfig
>> +++ b/arch/x86/cpu/queensbay/Kconfig
>> @@ -42,4 +42,12 @@ config CPU_ADDR_BITS
>> int
>> default 32
>>
>> +config DISABLE_IGD
>> + bool "Disable Integrated Graphics Device (IGD)"
>> + help
>> + Disable the Integrated Graphics Device (IGD) so that it does not
>> + show in the PCI configuration space as a VGA disaplay controller.
>> + This gives a chance for U-Boot to run PCI/PCIe based graphics
>> + card's VGA BIOS and use that card for the graphics console.
>> +
>> endif
>> diff --git a/arch/x86/cpu/queensbay/tnc.c b/arch/x86/cpu/queensbay/tnc.c
>> index 9682cff..0c02a44 100644
>> --- a/arch/x86/cpu/queensbay/tnc.c
>> +++ b/arch/x86/cpu/queensbay/tnc.c
>> @@ -23,6 +23,16 @@ static void unprotect_spi_flash(void)
>> x86_pci_write_config32(TNC_LPC, 0xd8, bc);
>> }
>>
>> +static void __maybe_unused disable_igd(void)
>> +{
>> + u32 gc;
>> +
>> + gc = x86_pci_read_config32(TNC_IGD, IGD_GC);
>> + gc &= ~GMS_MASK;
>> + gc |= VGA_DISABLE;
>> + x86_pci_write_config32(TNC_IGD, IGD_GC, gc);
>> +}
>> +
>> int arch_cpu_init(void)
>> {
>> int ret;
>> @@ -39,6 +49,15 @@ int arch_cpu_init(void)
>> return 0;
>> }
>>
>> +int arch_early_init_r(void)
>> +{
>> +#ifdef CONFIG_DISABLE_IGD
>> + disable_igd();
>> +#endif
>> +
>> + return 0;
>> +}
>> +
>> void cpu_irq_init(void)
>> {
>> struct tnc_rcba *rcba;
>> diff --git a/arch/x86/include/asm/arch-queensbay/tnc.h b/arch/x86/include/asm/arch-queensbay/tnc.h
>> index ad9a6c4..2365394 100644
>> --- a/arch/x86/include/asm/arch-queensbay/tnc.h
>> +++ b/arch/x86/include/asm/arch-queensbay/tnc.h
>> @@ -7,6 +7,11 @@
>> #ifndef _X86_ARCH_TNC_H_
>> #define _X86_ARCH_TNC_H_
>>
>> +/* IGD Control Register */
>> +#define IGD_GC 0x50
>> +#define VGA_DISABLE 0x00020000
>> +#define GMS_MASK 0x00700000
>> +
>> /* Memory BAR Enable */
>> #define MEM_BAR_EN 0x00000001
>>
>> diff --git a/include/configs/crownbay.h b/include/configs/crownbay.h
>> index 3153a74..7f91fff 100644
>> --- a/include/configs/crownbay.h
>> +++ b/include/configs/crownbay.h
>> @@ -15,6 +15,7 @@
>>
>> #define CONFIG_SYS_MONITOR_LEN (1 << 20)
>> #define CONFIG_BOARD_EARLY_INIT_F
>> +#define CONFIG_ARCH_EARLY_INIT_R
>> #define CONFIG_ARCH_MISC_INIT
>>
>> #define CONFIG_SMSC_LPC47M
>> --
>> 1.8.2.1
>>
>
> Regards,
> Simon
Applied to u-boot-x86, thanks!
More information about the U-Boot
mailing list