2012-10-30 15:03:43 +01:00
|
|
|
##
|
|
|
|
## This file is part of the coreboot project.
|
|
|
|
##
|
|
|
|
## Copyright (C) 2011 Google Inc.
|
|
|
|
##
|
|
|
|
## This program is free software; you can redistribute it and/or modify
|
|
|
|
## it under the terms of the GNU General Public License as published by
|
|
|
|
## the Free Software Foundation; version 2 of the License.
|
|
|
|
##
|
|
|
|
## This program is distributed in the hope that it will be useful,
|
|
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
## GNU General Public License for more details.
|
|
|
|
##
|
|
|
|
|
|
|
|
config SOUTHBRIDGE_INTEL_LYNXPOINT
|
|
|
|
bool
|
|
|
|
|
|
|
|
if SOUTHBRIDGE_INTEL_LYNXPOINT
|
|
|
|
|
|
|
|
config SOUTH_BRIDGE_OPTIONS # dummy
|
|
|
|
def_bool y
|
2016-07-14 06:23:16 +02:00
|
|
|
select ACPI_INTEL_HARDWARE_SLEEP_VALUES
|
2013-07-28 22:39:37 +02:00
|
|
|
select SOUTHBRIDGE_INTEL_COMMON
|
2017-04-12 17:01:31 +02:00
|
|
|
select SOUTHBRIDGE_INTEL_COMMON_SMBUS
|
2017-09-25 12:21:07 +02:00
|
|
|
select SOUTHBRIDGE_INTEL_COMMON_SPI
|
2018-10-30 14:28:32 +01:00
|
|
|
select SOUTHBRIDGE_INTEL_COMMON_ACPI_MADT
|
2012-10-30 15:03:43 +01:00
|
|
|
select IOAPIC
|
2013-08-13 08:10:31 +02:00
|
|
|
select HAVE_USBDEBUG_OPTIONS
|
2012-10-30 15:03:43 +01:00
|
|
|
select USE_WATCHDOG_ON_BOOT
|
|
|
|
select PCIEXP_ASPM
|
|
|
|
select PCIEXP_COMMON_CLOCK
|
2018-09-06 00:34:28 +02:00
|
|
|
select INTEL_DESCRIPTOR_MODE_CAPABLE
|
2015-09-28 23:27:24 +02:00
|
|
|
select HAVE_SPI_CONSOLE_SUPPORT
|
2016-08-06 04:23:37 +02:00
|
|
|
select RTC
|
2016-02-06 18:07:59 +01:00
|
|
|
select SOUTHBRIDGE_INTEL_COMMON_GPIO if !INTEL_LYNXPOINT_LP
|
sb/intel/lynxpoint: Automatically generate the ACPI PCI routing table
This patch is based on a8a9f34e9b7b ("sb/intel/i82801{g,j}x:
Automatically generate ACPI PIRQ tables")
Tested on an ASRock H81M-HDS. The generated _PRT object looks correct,
and the system doesn't show any issue when running. The following
assignments occur:
ACPI_PIRQ_GEN: PCI: 00:02.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:03.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:14.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:16.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:1a.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:1b.0: pin=0 pirq=6
ACPI_PIRQ_GEN: PCI: 00:1c.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:1c.1: pin=1 pirq=1
ACPI_PIRQ_GEN: PCI: 00:1c.2: pin=2 pirq=2
ACPI_PIRQ_GEN: PCI: 00:1c.3: pin=3 pirq=3
ACPI_PIRQ_GEN: PCI: 00:1d.0: pin=0 pirq=7
ACPI_PIRQ_GEN: PCI: 00:1f.2: pin=1 pirq=3
ACPI_PIRQ_GEN: PCI: 00:1f.3: pin=2 pirq=2
Also tested on a Google Peppy board. The following assignments occur:
ACPI_PIRQ_GEN: PCI: 00:02.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:03.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:14.0: pin=0 pirq=2
ACPI_PIRQ_GEN: PCI: 00:1b.0: pin=0 pirq=6
ACPI_PIRQ_GEN: PCI: 00:1c.0: pin=0 pirq=0
ACPI_PIRQ_GEN: PCI: 00:1d.0: pin=0 pirq=3
ACPI_PIRQ_GEN: PCI: 00:1f.2: pin=0 pirq=6
ACPI_PIRQ_GEN: PCI: 00:1f.3: pin=1 pirq=2
ACPI_PIRQ_GEN: PCI: 00:1f.6: pin=2 pirq=1
A diff of the _PRT object for the Google Peppy board is below. The code
used in the diff has been modified for clarity, but the semantics remain
the same. To summarise the diff:
* The disabled PCIe root ports are no longer included.
* The LPC controller is no longer included, as it has no interrupt pin.
The pins for the remaining LPC devices are each one less. Perhaps the
original _PRT object was incorrect?
* The SDIO device is no longer included, as it is disabled.
* The Serial IO devices are no longer included, but that is due to a
separate issue I am having with this system (the devices don't show up
under Linux regardless of this patch). In short: their omission is not
a fault of this patch.
--- pre/_PRT
+++ post/_PRT
@@ -1,301 +1,157 @@
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
If (PICM)
{
- Return (Package (0x12)
+ Return (Package (0x09)
{
Package (0x04)
{
0x0002FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0003FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0014FFFF,
Zero,
Zero,
0x12
},
Package (0x04)
{
0x001BFFFF,
Zero,
Zero,
0x16
},
Package (0x04)
{
0x001CFFFF,
Zero,
Zero,
0x10
},
- Package (0x04)
- {
- 0x001CFFFF,
- One,
- Zero,
- 0x11
- },
-
- Package (0x04)
- {
- 0x001CFFFF,
- 0x02,
- Zero,
- 0x12
- },
-
- Package (0x04)
- {
- 0x001CFFFF,
- 0x03,
- Zero,
- 0x13
- },
-
Package (0x04)
{
0x001DFFFF,
Zero,
Zero,
0x13
},
Package (0x04)
{
0x001FFFFF,
Zero,
Zero,
0x16
},
Package (0x04)
{
0x001FFFFF,
One,
Zero,
0x12
},
Package (0x04)
{
0x001FFFFF,
0x02,
Zero,
0x11
- },
-
- Package (0x04)
- {
- 0x001FFFFF,
- 0x03,
- Zero,
- 0x10
- },
-
- Package (0x04)
- {
- 0x0015FFFF,
- Zero,
- Zero,
- 0x14
- },
-
- Package (0x04)
- {
- 0x0015FFFF,
- One,
- Zero,
- 0x15
- },
-
- Package (0x04)
- {
- 0x0015FFFF,
- 0x02,
- Zero,
- 0x15
- },
-
- Package (0x04)
- {
- 0x0015FFFF,
- 0x03,
- Zero,
- 0x15
- },
-
- Package (0x04)
- {
- 0x0017FFFF,
- Zero,
- Zero,
- 0x17
}
})
}
Else
{
- Return (Package (0x12)
+ Return (Package (0x09)
{
Package (0x04)
{
0x0002FFFF,
Zero,
^LPCB.LNKA,
Zero
},
Package (0x04)
{
0x0003FFFF,
Zero,
^LPCB.LNKA,
Zero
},
Package (0x04)
{
0x0014FFFF,
Zero,
^LPCB.LNKC,
Zero
},
Package (0x04)
{
0x001BFFFF,
Zero,
^LPCB.LNKG,
Zero
},
Package (0x04)
{
0x001CFFFF,
Zero,
^LPCB.LNKA,
Zero
},
- Package (0x04)
- {
- 0x001CFFFF,
- One,
- ^LPCB.LNKB,
- Zero
- },
-
- Package (0x04)
- {
- 0x001CFFFF,
- 0x02,
- ^LPCB.LNKC,
- Zero
- },
-
- Package (0x04)
- {
- 0x001CFFFF,
- 0x03,
- ^LPCB.LNKD,
- Zero
- },
-
Package (0x04)
{
0x001DFFFF,
Zero,
^LPCB.LNKD,
Zero
},
Package (0x04)
{
0x001FFFFF,
Zero,
^LPCB.LNKG,
Zero
},
Package (0x04)
{
0x001FFFFF,
One,
^LPCB.LNKC,
Zero
},
Package (0x04)
{
0x001FFFFF,
0x02,
^LPCB.LNKB,
Zero
- },
-
- Package (0x04)
- {
- 0x001FFFFF,
- 0x03,
- ^LPCB.LNKA,
- Zero
- },
-
- Package (0x04)
- {
- 0x0015FFFF,
- Zero,
- ^LPCB.LNKE,
- Zero
- },
-
- Package (0x04)
- {
- 0x0015FFFF,
- One,
- ^LPCB.LNKF,
- Zero
- },
-
- Package (0x04)
- {
- 0x0015FFFF,
- 0x02,
- ^LPCB.LNKF,
- Zero
- },
-
- Package (0x04)
- {
- 0x0015FFFF,
- 0x03,
- ^LPCB.LNKF,
- Zero
- },
-
- Package (0x04)
- {
- 0x0017FFFF,
- Zero,
- ^LPCB.LNKH,
- Zero
}
})
}
}
Change-Id: Id3f067cbf7c7d649fbbf774648d8ff928cb752a4
Signed-off-by: Tristan Corrick <tristan@corrick.kiwi>
Reviewed-on: https://review.coreboot.org/29381
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
2018-10-30 14:25:54 +01:00
|
|
|
select SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ
|
sb/intel/*: add option to lockdown chipset on normal boot path
On platforms with a PCH, some registers within host bridge should be
locked down on each normal boot path (done by either coreboot or
payload) and S3 resume (always done by coreboot).
A function to perform such locking is implemented in src/northbridge/
intel/*/finalize.c, and is designed as the handler of an #SMI triggered
with outb(APM_CNT_FINALIZE, APM_CNT), but currently this #SMI is only
triggered during s3 resume, and not on normal boot path. This problem
has beed discussed in
https://mail.coreboot.org/pipermail/coreboot/2017-August/084924.html .
This time, an option "INTEL_CHIPSET_LOCKDOWN" within src/southbridge/
intel/common/Kconfig is added to control the actual locking, which
depends on several compatibility flags, including
"HAVE_INTEL_CHIPSET_LOCKDOWN".
In this commit, "ibexpeak", "bd82x6x", "fsp_bd82x6x", and "lynxpoint"
have the flag "HAVE_INTEL_CHIPSET_LOCKDOWN" selected.
The change is only well tested on Sandy Bridge, my Lenovo x230.
Change-Id: I43d4142291c8737b29738c41e8c484328b297b55
Signed-off-by: Bill XIE <persmule@gmail.com>
Reviewed-on: https://review.coreboot.org/21129
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
2017-08-22 10:26:22 +02:00
|
|
|
select HAVE_INTEL_CHIPSET_LOCKDOWN
|
2012-10-30 15:03:43 +01:00
|
|
|
|
2012-12-17 20:11:26 +01:00
|
|
|
config INTEL_LYNXPOINT_LP
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
help
|
|
|
|
Set this option to y for Lynxpont LP (Haswell ULT).
|
|
|
|
|
2012-10-30 15:03:43 +01:00
|
|
|
config EHCI_BAR
|
|
|
|
hex
|
2013-08-13 08:10:31 +02:00
|
|
|
default 0xe8000000
|
2012-10-30 15:03:43 +01:00
|
|
|
|
|
|
|
config BOOTBLOCK_SOUTHBRIDGE_INIT
|
|
|
|
string
|
|
|
|
default "southbridge/intel/lynxpoint/bootblock.c"
|
|
|
|
|
|
|
|
config SERIRQ_CONTINUOUS_MODE
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
help
|
|
|
|
If you set this option to y, the serial IRQ machine will be
|
|
|
|
operated in continuous mode.
|
|
|
|
|
2013-07-19 17:48:05 +02:00
|
|
|
config ME_MBP_CLEAR_LATE
|
|
|
|
bool "Defer wait for ME MBP Cleared"
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
If you set this option to y, the Management Engine driver
|
|
|
|
will defer waiting for the MBP Cleared indicator until the
|
|
|
|
finalize step. This can speed up boot time if the ME takes
|
|
|
|
a long time to indicate this status.
|
|
|
|
|
2013-07-31 01:05:55 +02:00
|
|
|
config FINALIZE_USB_ROUTE_XHCI
|
|
|
|
bool "Route all ports to XHCI controller in finalize step"
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
If you set this option to y, the USB ports will be routed
|
|
|
|
to the XHCI controller during the finalize SMM callback.
|
|
|
|
|
2013-08-22 18:56:42 +02:00
|
|
|
config LOCK_MANAGEMENT_ENGINE
|
2015-06-21 00:17:12 +02:00
|
|
|
bool
|
2013-08-22 18:56:42 +02:00
|
|
|
default n
|
|
|
|
|
2012-10-30 15:03:43 +01:00
|
|
|
endif
|