Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11183
-gerrit
commit f6814c72d765fafafd9759d1077313a0b04436d3
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Tue Aug 4 14:04:47 2015 -0500
skylake: set DISB in GEN_PMCON_A register properly
DISB (bit 23) in GEN_PMCON_A represents to MRC that DRAM
training is complete. However, as a 8-bit write was
being performed the bit was never being set.
BUG=chrome-os-partner:43516
BRANCH=None
TEST=Built and booted to kernel. Rebooted. Noted full memory
training was not being peformed.
Original-Change-Id: If2a9cc2f80bc38ea86fb0d7ff855ef95540b561b
Original-Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/290337
Original-Reviewed-by: Duncan Laurie <dlaurie(a)chromium.org>
Change-Id: Ic7973e0ec279304797e0b3d83d7378f620f2b548
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/soc/intel/skylake/pmc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/soc/intel/skylake/pmc.c b/src/soc/intel/skylake/pmc.c
index b62a288..a97f751 100644
--- a/src/soc/intel/skylake/pmc.c
+++ b/src/soc/intel/skylake/pmc.c
@@ -47,7 +47,7 @@ static const struct reg_script pch_pmc_misc_init_script[] = {
/* Enable SCI and clear SLP requests. */
REG_IO_RMW32(ACPI_BASE_ADDRESS + PM1_CNT, ~SLP_TYP, SCI_EN),
/* Indicate DRAM init done for MRC */
- REG_PCI_OR8(GEN_PMCON_A, DISB),
+ REG_PCI_OR32(GEN_PMCON_A, DISB),
REG_SCRIPT_END
};
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11181
-gerrit
commit 7e059158139e5c54a448441a52593338300292ac
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Tue Aug 4 11:03:00 2015 -0500
glados: enable SMBus device
In order to run with the debug FSP the SMBus device needs
to be enabled. Additionally, the TCO block lives within
the SMBus device so if TCO is to be employed then the
SMBus device needs to be enabled as a prerequisite.
BUG=chrome-os-partner:42407
BRANCH=None
TEST=Buit and booted into kernel.
Original-Change-Id: I269650fa5222b4741ef495188dff1f4b8176fe89
Original-Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/290364
Original-Reviewed-by: Bernie Thompson <bhthompson(a)chromium.org>
Original-Reviewed-by: Robbie Zhang <robbie.zhang(a)intel.com>
Change-Id: Ia1f72ea7bd70728de83cdff07df9810a326266c2
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/mainboard/google/glados/devicetree.cb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/mainboard/google/glados/devicetree.cb b/src/mainboard/google/glados/devicetree.cb
index b48556f..2e1cae7 100644
--- a/src/mainboard/google/glados/devicetree.cb
+++ b/src/mainboard/google/glados/devicetree.cb
@@ -44,7 +44,7 @@ chip soc/intel/skylake
register "IshEnable" = "0"
register "XdciEnable" = "0"
register "SsicPortEnable" = "0"
- register "SmbusEnable" = "0"
+ register "SmbusEnable" = "1"
register "Cio2Enable" = "0"
register "PttSwitch" = "0"
register "SkipExtGfxScan" = "1"
@@ -102,7 +102,7 @@ chip soc/intel/skylake
end # LPC Interface
device pci 1f.2 on end # Power Management Controller
device pci 1f.3 on end # Intel High Definition Audio
- device pci 1f.4 off end # SMBus Controller
+ device pci 1f.4 on end # SMBus Controller
device pci 1f.5 on end # PCH SPI
device pci 1f.6 off end # GbE Controller
end
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11180
-gerrit
commit 55508b038c7c324498c9f191d7069f63e322ca7e
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Tue Aug 4 10:58:32 2015 -0500
skylake: do not overlap resources
FSP was setting up the TCO registers to be mapped at 0x400.
However, the SMBus initialization in romstage was mapping
its I/O BAR to 0x400 as well. The result seemed to cause the
TCO register to be hidden. However, the board was rebooting in
depthcharge when the SMBus device was enabled from a TCO timeout.
As the TCO timer was halted before the double resource assignment
it's not clear how the TCO was getting re-enabled. In either case,
the current behavior is wrong.
BUG=chrome-os-partner:42407
BRANCH=None
TEST=Built and booted glados w/ SMBus enabled.
Original-Change-Id: I43c0d67a76abac51ccfd5105245792981fbcd04c
Original-Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/290363
Original-Reviewed-by: Duncan Laurie <dlaurie(a)chromium.org>
Change-Id: I3839290768c27626c3fd2d67d5de94c291c1386e
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/soc/intel/skylake/include/soc/iomap.h | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/soc/intel/skylake/include/soc/iomap.h b/src/soc/intel/skylake/include/soc/iomap.h
index 764e966..c56b8e4 100644
--- a/src/soc/intel/skylake/include/soc/iomap.h
+++ b/src/soc/intel/skylake/include/soc/iomap.h
@@ -21,6 +21,9 @@
#ifndef _SOC_IOMAP_H_
#define _SOC_IOMAP_H_
+/*
+ * Memory-mapped I/O registers.
+ */
#define MCFG_BASE_ADDRESS CONFIG_MMCONF_BASE_ADDRESS
#define MCFG_BASE_SIZE 0x4000000
@@ -54,13 +57,20 @@
#define PCH_PWRM_BASE_ADDRESS 0xfe000000
#define PCH_PWRM_BASE_SIZE 0x10000
+/*
+ * I/O port address space
+ */
+#define SMBUS_BASE_ADDRESS 0x0efa0
+#define SMBUS_BASE_SIZE 0x20
+
#define ACPI_BASE_ADDRESS 0x1800
#define ACPI_BASE_SIZE 0x100
+/* FIXME: not applicable as there is no I/O space for gpio access. */
#define GPIO_BASE_ADDRESS 0x1400
#define GPIO_BASE_SIZE 0x400
-#define SMBUS_BASE_ADDRESS 0x0400
-#define SMBUS_BASE_SIZE 0x10
+#define TCO_BASE_ADDDRESS 0x400
+#define TCO_BASE_SIZE 0x20
#endif
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11178
-gerrit
commit 3d675015214d02ca933073fda5165a4748828f55
Author: Julius Werner <jwerner(a)chromium.org>
Date: Mon Aug 3 14:21:07 2015 -0700
libpayload: xhci: Carry over fixes from Chromium tree
This patch re-adds a few fixes that originally went into the
chromeos-2013.04 tree. I kinda seem to have slipped them into the
backport of Nico's original XHCI patch (crosreview.com/168097) instead
of making a new change, which was not very clever and caused them to be
forgotten in the later upstreaming wave.
Changing internal XHCI error numbers is just a cosmetic change to make
them uniquely identifyable in debug output. Bumping the timeout to 3
seconds is an actually important fix since we have seen mass storage
devices needing that much in the past.
BRANCH=None
BUG=None
TEST=Diffed payloads/libpayload/drivers/usb between chromeos-2013.04 and
chromeos-2015.07, confirmed that no serious differences remain.
Original-Change-Id: I03d865dbe536072d23374a49a0136e9f28568f8e
Original-Signed-off-by: Julius Werner <jwerner(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/290423
Original-Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
Change-Id: I5d773d3a23683fb2164916cc046f4a711b8d259e
Signed-off-by: Julius Werner <jwerner(a)chromium.org>
---
payloads/libpayload/drivers/usb/xhci_events.c | 14 +++++++-------
payloads/libpayload/drivers/usb/xhci_private.h | 11 ++++++-----
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/payloads/libpayload/drivers/usb/xhci_events.c b/payloads/libpayload/drivers/usb/xhci_events.c
index 391ebf6..dacb5d86 100644
--- a/payloads/libpayload/drivers/usb/xhci_events.c
+++ b/payloads/libpayload/drivers/usb/xhci_events.c
@@ -311,15 +311,15 @@ int
xhci_wait_for_transfer(xhci_t *const xhci, const int slot_id, const int ep_id)
{
xhci_spew("Waiting for transfer on ID %d EP %d\n", slot_id, ep_id);
- /* 2s for all types of transfers */ /* TODO: test, wait longer? */
- unsigned long timeout_us = 2 * 1000 * 1000;
- int cc = TIMEOUT;
+ /* 3s for all types of transfers */ /* TODO: test, wait longer? */
+ unsigned long timeout_us = 3 * 1000 * 1000;
+ int ret = TIMEOUT;
while (xhci_wait_for_event_type(xhci, TRB_EV_TRANSFER, &timeout_us)) {
if (TRB_GET(ID, xhci->er.cur) == slot_id &&
TRB_GET(EP, xhci->er.cur) == ep_id) {
- cc = -TRB_GET(CC, xhci->er.cur);
- if (cc == -CC_SUCCESS || cc == -CC_SHORT_PACKET)
- cc = TRB_GET(EVTL, xhci->er.cur);
+ ret = -TRB_GET(CC, xhci->er.cur);
+ if (ret == -CC_SUCCESS || ret == -CC_SHORT_PACKET)
+ ret = TRB_GET(EVTL, xhci->er.cur);
xhci_advance_event_ring(xhci);
break;
}
@@ -329,5 +329,5 @@ xhci_wait_for_transfer(xhci_t *const xhci, const int slot_id, const int ep_id)
if (!timeout_us)
xhci_debug("Warning: Timed out waiting for TRB_EV_TRANSFER.\n");
xhci_update_event_dq(xhci);
- return cc;
+ return ret;
}
diff --git a/payloads/libpayload/drivers/usb/xhci_private.h b/payloads/libpayload/drivers/usb/xhci_private.h
index 26f7666..05cf195 100644
--- a/payloads/libpayload/drivers/usb/xhci_private.h
+++ b/payloads/libpayload/drivers/usb/xhci_private.h
@@ -46,11 +46,12 @@
#define MASK(startbit, lenbit) (((1<<(lenbit))-1)<<(startbit))
-#define TIMEOUT -1
-#define CONTROLLER_ERROR -2
-#define COMMUNICATION_ERROR -3
-#define OUT_OF_MEMORY -4
-#define DRIVER_ERROR -5
+/* Make these high enough to not collide with negative XHCI CCs */
+#define TIMEOUT -65
+#define CONTROLLER_ERROR -66
+#define COMMUNICATION_ERROR -67
+#define OUT_OF_MEMORY -68
+#define DRIVER_ERROR -69
#define CC_SUCCESS 1
#define CC_TRB_ERROR 5