Angel Pons has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/46959 )
Change subject: sb/intel/lynxpoint/acpi: Add missing USB ports
......................................................................
sb/intel/lynxpoint/acpi: Add missing USB ports
Broadwell has these, so add them to Lynxpoint as well.
Change-Id: Id66f169070cdfe3a6d166ca18916d4ddaf4a5fea
Signed-off-by: Angel Pons <th3fanbus(a)gmail.com>
---
M src/southbridge/intel/lynxpoint/acpi/xhci.asl
1 file changed, 3 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/59/46959/1
diff --git a/src/southbridge/intel/lynxpoint/acpi/xhci.asl b/src/southbridge/intel/lynxpoint/acpi/xhci.asl
index fbeb562..2b3d433 100644
--- a/src/southbridge/intel/lynxpoint/acpi/xhci.asl
+++ b/src/southbridge/intel/lynxpoint/acpi/xhci.asl
@@ -338,9 +338,12 @@
Device (PRT5) { Name (_ADR, 5) } // USB Port 4
Device (PRT6) { Name (_ADR, 6) } // USB Port 5
Device (PRT7) { Name (_ADR, 7) } // USB Port 6
+ Device (PRT8) { Name (_ADR, 8) } // USB Port 7
Device (SSP1) { Name (_ADR, 10) } // USB Port 10
Device (SSP2) { Name (_ADR, 11) } // USB Port 11
Device (SSP3) { Name (_ADR, 12) } // USB Port 12
Device (SSP4) { Name (_ADR, 13) } // USB Port 13
+ Device (SSP5) { Name (_ADR, 14) } // USB Port 14
+ Device (SSP6) { Name (_ADR, 15) } // USB Port 15
}
}
--
To view, visit https://review.coreboot.org/c/coreboot/+/46959
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Id66f169070cdfe3a6d166ca18916d4ddaf4a5fea
Gerrit-Change-Number: 46959
Gerrit-PatchSet: 1
Gerrit-Owner: Angel Pons <th3fanbus(a)gmail.com>
Gerrit-Reviewer: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-MessageType: newchange
Paul Menzel has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/46637 )
Change subject: sb/amd/agesa/hudson: Use comment style from style guide
......................................................................
sb/amd/agesa/hudson: Use comment style from style guide
Change-Id: I73d713ec3aa62ae207640ac7e5550e5407f5afa2
Signed-off-by: Paul Menzel <pmenzel(a)molgen.mpg.de>
---
M src/southbridge/amd/agesa/hudson/lpc.c
1 file changed, 2 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/37/46637/1
diff --git a/src/southbridge/amd/agesa/hudson/lpc.c b/src/southbridge/amd/agesa/hudson/lpc.c
index 89c9a6b..3fde291 100644
--- a/src/southbridge/amd/agesa/hudson/lpc.c
+++ b/src/southbridge/amd/agesa/hudson/lpc.c
@@ -59,7 +59,8 @@
cmos_check_update_date();
- /* Initialize the real time clock.
+ /*
+ * Initialize the real time clock.
* The 0 argument tells cmos_init not to
* update CMOS unless it is invalid.
* 1 tells cmos_init to always initialize the CMOS.
--
To view, visit https://review.coreboot.org/c/coreboot/+/46637
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I73d713ec3aa62ae207640ac7e5550e5407f5afa2
Gerrit-Change-Number: 46637
Gerrit-PatchSet: 1
Gerrit-Owner: Paul Menzel <paulepanter(a)users.sourceforge.net>
Gerrit-MessageType: newchange
Angel Pons has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/46250 )
Change subject: soc/intel/cannonlake: Improve memcfg comments
......................................................................
soc/intel/cannonlake: Improve memcfg comments
Instead of repeating what the FSP-M UPDs say, explain how to correctly
configure these settings. DQ and DQS byte maps differ between actual
Cannon Lake and Coffee Lake et alia, so skip these comments for now.
Change-Id: I1142ab500fd18176b174a5080f78c5c566c9ce25
Signed-off-by: Angel Pons <th3fanbus(a)gmail.com>
---
M src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h
1 file changed, 29 insertions(+), 20 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/50/46250/1
diff --git a/src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h b/src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h
index 28af731..2e4dfcf 100644
--- a/src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h
+++ b/src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h
@@ -32,7 +32,7 @@
enum mem_info_read_type {
NOT_EXISTING, /* No memory in this slot */
- READ_SMBUS, /* Read on-module spd by SMBUS. */
+ READ_SMBUS, /* Read on-module spd by SMBUS */
READ_SPD_CBFS, /* Find spd file in CBFS. */
READ_SPD_MEMPTR /* Find spd data from pointer. */
};
@@ -40,20 +40,23 @@
struct spd_info {
enum mem_info_read_type read_type;
union spd_data_by {
- /* To read on-module spd when read_type is READ_SMBUS. */
+ /* To read on-module spd when read_type is READ_SMBUS */
uint8_t spd_smbus_address;
- /* To identify spd file when read_type is READ_SPD_CBFS. */
+ /* To identify spd file when read_type is READ_SPD_CBFS */
int spd_index;
- /* To find spd data when read_type is READ_SPD_MEMPTR. */
+ /* To find spd data when read_type is READ_SPD_MEMPTR */
struct spd_by_pointer spd_data_ptr_info;
} spd_spec;
};
-/* Board-specific memory dq mapping information */
+/* Board-specific memory parameters */
struct cnl_mb_cfg {
- /* Parameters required to access SPD for CH0D0/CH0D1/CH1D0/CH1D1. */
+ /*
+ * Specify where to find the memory parameters for each slot, or the
+ * memory-down equivalent of a slot. Leave unpopulated slots blank.
+ */
struct spd_info spd[NUM_DIMM_SLOT];
/*
@@ -83,39 +86,45 @@
uint8_t dqs_map[DDR_NUM_CHANNELS][DQ_BITS_PER_DQS];
/*
- * Rcomp resistor values. These values represent the resistance in
- * ohms of the three rcomp resistors attached to the DDR_COMP_0,
- * DDR_COMP_1, and DDR_COMP_2 pins on the DRAM.
+ * Rcomp resistor values in ohms. For socketed platforms, they are
+ * located on the CPU package itself and their values are always
+ * the same. For soldered CPUs, the resistors are on the mainboard,
+ * connected to the DDR_RCOMP_[2:0] pins of the processor. The PDG
+ * can provide the RCOMP resistor values for each memory topology.
+ *
+ * For socketed CPUs, the resistor values are: { 121, 75, 100 };
+ * For soldered-down CPUs, check schematics or use the PDG values.
*/
uint16_t rcomp_resistor[3];
/*
- * Rcomp target values. These will typically be the following
- * values for Cannon Lake : { 80, 40, 40, 40, 30 }
+ * Rcomp target values. These depend on the platform topology and
+ * can be determined using Intel document #573387 or left blank.
*/
uint16_t rcomp_targets[5];
/*
- * Indicates whether memory is interleaved.
- * Set to 1 for an interleaved design,
- * set to 0 for non-interleaved design.
+ * Indicates whether memory is interleaved. Refer to volume 1 of
+ * the datasheet for pictures of interleaved and non-interleaved
+ * configurations. Memory will never work with the wrong value.
*/
uint8_t dq_pins_interleaved;
/*
- * VREF_CA configuration.
- * Set to 0 VREF_CA goes to both CH_A and CH_B,
- * set to 1 VREF_CA goes to CH_A and VREF_DQ_A goes to CH_B,
- * set to 2 VREF_CA goes to CH_A and VREF_DQ_B goes to CH_B.
+ * VREF_CA configuration. For DDR3 and LPDDR, choose config 0.
+ * Config 1 is not meant to be used. For DDR4, use config 2.
*/
uint8_t vref_ca_config;
- /* Early Command Training Enabled */
+ /*
+ * Early Command Training is a no-op for DDR4, and is necessary
+ * for LPDDR. If unsure, set to 1. MRC will skip ECT on DDR4.
+ */
uint8_t ect;
};
/*
- * Initialize default memory configurations for CannonLake.
+ * Write memory settings into the corresponding FSP-M UPDs.
*/
void cannonlake_memcfg_init(FSP_M_CONFIG *mem_cfg,
const struct cnl_mb_cfg *cnl_cfg);
--
To view, visit https://review.coreboot.org/c/coreboot/+/46250
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I1142ab500fd18176b174a5080f78c5c566c9ce25
Gerrit-Change-Number: 46250
Gerrit-PatchSet: 1
Gerrit-Owner: Angel Pons <th3fanbus(a)gmail.com>
Gerrit-MessageType: newchange
Hello Kyösti Mälkki, Patrick Rudolph, Michael Niewöhner,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/35516
to review the following change.
Change subject: device/pci: Ensure full 16-bit VGA port i/o decoding
......................................................................
device/pci: Ensure full 16-bit VGA port i/o decoding
So, the PCI to PCI bridge specification had a pitfall for us:
Originally, when decoding i/o ports for legacy VGA cycles, bridges
should only consider the 10 least significant bits of the port address.
This means all VGA registers were aliased every 1024 ports!
e.g. 0x3b0 was also decoded as 0x7b0, 0xbb0 etc.
However, it seems, we never reserved the aliased ports, resulting in
random conflicts. We neither use much external VGA nor many i/o ports
these days, so nobody noticed.
To avoid this mess, a bridge control bit (VGA16) was introduced in
2003 to enable decoding of 16-bit port addresses. As we don't want
to clutter our i/o port space, we'll now simply fail for VGA behind
bridges that don't support it. Famous last words: I assume there
can't be many bridges left that don't support this bit ;)
Change-Id: Id7a07f069dd54331df79f605c6bcda37882a602d
Signed-off-by: Nico Huber <nico.h(a)gmx.de>
---
M src/device/device.c
M src/device/pci_device.c
M src/include/device/device.h
M src/include/device/pci_def.h
4 files changed, 48 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/16/35516/1
diff --git a/src/device/device.c b/src/device/device.c
index 44d1f95..523bd1c 100644
--- a/src/device/device.c
+++ b/src/device/device.c
@@ -757,6 +757,12 @@
while ((dev = dev_find_class(PCI_CLASS_DISPLAY_VGA << 8, dev))) {
if (!dev->enabled)
continue;
+ if (dev->bus->no_vga) {
+ printk(BIOS_WARNING, "Ignoring VGA at %s"
+ ", a bridge on the path isn't supported",
+ dev_path(dev));
+ continue;
+ }
printk(BIOS_DEBUG, "found VGA at %s\n", dev_path(dev));
@@ -797,7 +803,7 @@
while (bus) {
printk(BIOS_DEBUG, "Setting PCI_BRIDGE_CTL_VGA for bridge %s\n",
dev_path(bus->dev));
- bus->bridge_ctrl |= PCI_BRIDGE_CTL_VGA;
+ bus->bridge_ctrl |= PCI_BRIDGE_CTL_VGA | PCI_BRIDGE_CTL_VGA16;
bus = (bus == bus->dev->bus) ? 0 : bus->dev->bus;
}
}
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index 7ecb652..2fadb55 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -788,6 +788,43 @@
};
/**
+ * Check for compatibility to route legacy VGA cycles through a bridge.
+ *
+ * Originally, when decoding i/o ports for legacy VGA cycles, bridges
+ * should only consider the 10 least significant bits of the port address.
+ * This means all VGA registers were aliased every 1024 ports!
+ * e.g. 0x3b0 was also decoded as 0x7b0, 0xbb0 etc.
+ *
+ * To avoid this mess, a bridge control bit (VGA16) was introduced in
+ * 2003 to enable decoding of 16-bit port addresses. As we don't want
+ * to clutter our i/o port space, we simply fail for VGA behind bridges
+ * that don't support it (set .no_vga = 1).
+ */
+static void pci_bridge_vga_compat(struct bus *const bus)
+{
+ uint16_t bridge_ctrl;
+
+ bridge_ctrl = pci_read_config16(bus->dev, PCI_BRIDGE_CONTROL);
+
+ /* Ensure VGA decoding is disabled during probing (it should
+ be by default, but we run blobs nowadays) */
+ bridge_ctrl &= ~PCI_BRIDGE_CTL_VGA;
+ pci_write_config16(bus->dev, PCI_BRIDGE_CONTROL, bridge_ctrl);
+
+ /* If the upstream bridge doesn't support VGA, we don't have to check */
+ bus->no_vga |= bus->dev->bus->no_vga;
+ if (bus->no_vga)
+ return;
+
+ /* Test if we can enable 16-bit decoding */
+ bridge_ctrl |= PCI_BRIDGE_CTL_VGA16;
+ pci_write_config16(bus->dev, PCI_BRIDGE_CONTROL, bridge_ctrl);
+ bridge_ctrl = pci_read_config16(bus->dev, PCI_BRIDGE_CONTROL);
+
+ bus->no_vga = !(bridge_ctrl & PCI_BRIDGE_CTL_VGA16);
+}
+
+/**
* Detect the type of downstream bridge.
*
* This function is a heuristic to detect which type of bus is downstream
@@ -1288,6 +1325,8 @@
bus = dev->link_list;
+ pci_bridge_vga_compat(bus);
+
pci_bridge_route(bus, PCI_ROUTE_SCAN);
do_scan_bus(bus, 0x00, 0xff);
diff --git a/src/include/device/device.h b/src/include/device/device.h
index b2221cc..78e234e 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -94,6 +94,7 @@
unsigned int reset_needed : 1;
unsigned int disable_relaxed_ordering : 1;
unsigned int ht_link_up : 1;
+ unsigned int no_vga : 1; /* We can't support VGA behind this bridge */
};
/*
diff --git a/src/include/device/pci_def.h b/src/include/device/pci_def.h
index bc5bc79..c8b86d5 100644
--- a/src/include/device/pci_def.h
+++ b/src/include/device/pci_def.h
@@ -138,6 +138,7 @@
#define PCI_BRIDGE_CTL_SERR 0x02 /* The same for SERR forwarding */
#define PCI_BRIDGE_CTL_NO_ISA 0x04 /* Disable bridging of ISA ports */
#define PCI_BRIDGE_CTL_VGA 0x08 /* Forward VGA addresses */
+#define PCI_BRIDGE_CTL_VGA16 0x10 /* Enable 16-bit i/o port decoding */
#define PCI_BRIDGE_CTL_MASTER_ABORT 0x20 /* Report master aborts */
#define PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */
/* Fast Back2Back enabled on secondary interface */
--
To view, visit https://review.coreboot.org/c/coreboot/+/35516
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Id7a07f069dd54331df79f605c6bcda37882a602d
Gerrit-Change-Number: 35516
Gerrit-PatchSet: 1
Gerrit-Owner: Nico Huber <nico.h(a)gmx.de>
Gerrit-Reviewer: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Gerrit-Reviewer: Michael Niewöhner
Gerrit-Reviewer: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-MessageType: newchange