Angel Pons has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/45562 )
Change subject: nb/intel/ironlake: Add more host bridge PCI IDs
......................................................................
nb/intel/ironlake: Add more host bridge PCI IDs
The host bridge PCI device ID can be changed by the firmware. There
is no documentation about it, though. There's 'official' IDs, which
appear in spec updates and Windows drivers, and 'mysterious' IDs,
which Intel doesn't want OSes to know about and thus are not listed.
The current coreboot code seems to be able to change the device ID
of the host bridge, but it seems to be missing a warm reset so that
the device ID changes. Account for the 'mysterious' device IDs in
the northbridge driver, so that booting an OS has a chance to work.
Change-Id: I93c9c47e2b0bf13d80c986c7d66b6cdf0e192b22
Signed-off-by: Angel Pons <th3fanbus(a)gmail.com>
---
M src/northbridge/intel/ironlake/northbridge.c
1 file changed, 25 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/62/45562/1
diff --git a/src/northbridge/intel/ironlake/northbridge.c b/src/northbridge/intel/ironlake/northbridge.c
index cf014fe..e0e926e 100644
--- a/src/northbridge/intel/ironlake/northbridge.c
+++ b/src/northbridge/intel/ironlake/northbridge.c
@@ -202,10 +202,34 @@
.ops_pci = &pci_dev_ops_pci,
};
+/*
+ * The host bridge PCI device ID can be changed by the firmware. There
+ * is no documentation about it, though. There's 'official' IDs, which
+ * appear in spec updates and Windows drivers, and 'mysterious' IDs,
+ * which Intel doesn't want OSes to know about and thus are not listed.
+ *
+ * The current coreboot code seems to be able to change the device ID
+ * of the host bridge, but it seems to be missing a warm reset so that
+ * the device ID changes. Account for the 'mysterious' device IDs in
+ * the northbridge driver, so that booting an OS has a chance to work.
+ */
+static const unsigned short pci_device_ids[] = {
+ /* 'Official' DIDs */
+ 0x0040, /* Clarkdale */
+ 0x0044, /* Arrandale */
+ 0x0048, /* Unknown, but it appears in OS drivers and raminit */
+
+ /* Mysterious DIDs, taken from Linux' intel-agp driver */
+ 0x0062, /* Clarkdale A-? */
+ 0x0069, /* Clarkdale K-0 */
+ 0x006a, /* Arrandale K-0 */
+ 0
+};
+
static const struct pci_driver mc_driver_ard __pci_driver = {
.ops = &mc_ops,
.vendor = PCI_VENDOR_ID_INTEL,
- .device = 0x0044, /* Arrandale DRAM controller */
+ .device = pci_device_ids,
};
static struct device_operations cpu_bus_ops = {
--
To view, visit https://review.coreboot.org/c/coreboot/+/45562
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I93c9c47e2b0bf13d80c986c7d66b6cdf0e192b22
Gerrit-Change-Number: 45562
Gerrit-PatchSet: 1
Gerrit-Owner: Angel Pons <th3fanbus(a)gmail.com>
Gerrit-MessageType: newchange
Shaunak Saha has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/45052 )
Change subject: soc/intel/tigerlake: Add Acoustic features
......................................................................
soc/intel/tigerlake: Add Acoustic features
Expose the following FSP UPD interface into coreboot, which is the
following:
AcousticNoiseMitigation
FastPkgCRampDisable
SlowSlewRateFor
AcousticNoiseMitigation is the UPD for Acoustic Noise Mitigation.
FastPkgCRampDisable UPD's are to disable Fast Slew Rate for Deep Package
C States for VR domains.
SlowSlewRate UPD's are the Slew Rate configuration for Deep Package C
States for VR domains. Slew rates are fast time divided by 2.
BUG=b:153015585
BRANCH=none
TEST= Measure the change in noise level by changing the UPD values.
Signed-off-by: Shaunak Saha <shaunak.saha(a)intel.com>
Change-Id: I1924a3bac8beb16a9d841891696f9a3dea0d425f
---
M src/soc/intel/tigerlake/chip.h
M src/soc/intel/tigerlake/fsp_params.c
2 files changed, 36 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/52/45052/1
diff --git a/src/soc/intel/tigerlake/chip.h b/src/soc/intel/tigerlake/chip.h
index 2da63ed..8d2483e 100644
--- a/src/soc/intel/tigerlake/chip.h
+++ b/src/soc/intel/tigerlake/chip.h
@@ -145,6 +145,35 @@
/* Wake Enable Bitmap for USB3 ports */
uint16_t usb3_wake_enable_bitmap;
+ /*
+ * Acoustic Noise Mitigation
+ * 0 - Disable
+ * 1 - Enable noise mitigation
+ */
+ uint8_t AcousticNoiseMitigation;
+
+ /*
+ * Offset 0x054B - Disable Fast Slew Rate for Deep Package
+ * C States for VR domains. Disable Fast Slew Rate for Deep
+ * Package C States based on Acoustic Noise Mitigation feature
+ * enabled.
+ * 0 - False
+ * 1 - True
+ */
+ uint8_t FastPkgCRampDisable[5];
+
+ /*
+ * Offset 0x0550 - Slew Rate configuration for Deep Package
+ * C States for VR domains. Slew Rate configuration for Deep
+ * Package C States for VR domains based on Acoustic Noise
+ * Mitigation feature enabled.
+ * 0 - Fast/2
+ * 1 - Fast/4
+ * 2 - Fast/8
+ * 3 - Fast/16
+ */
+ uint8_t SlowSlewRate[5];
+
/* SATA related */
uint8_t SataEnable;
uint8_t SataMode;
diff --git a/src/soc/intel/tigerlake/fsp_params.c b/src/soc/intel/tigerlake/fsp_params.c
index 1601c2c..39baa67 100644
--- a/src/soc/intel/tigerlake/fsp_params.c
+++ b/src/soc/intel/tigerlake/fsp_params.c
@@ -247,6 +247,13 @@
}
}
+ params->AcousticNoiseMitigation = config->AcousticNoiseMitigation;
+ for (i = 0; i < ARRAY_SIZE(config->SlowSlewRate); i++)
+ params->SlowSlewRate[i] = config->SlowSlewRate[i];
+
+ for (i = 0; i < ARRAY_SIZE(config->FastPkgCRampDisable); i++)
+ params->FastPkgCRampDisable[i] = config->FastPkgCRampDisable[i];
+
/* Enable TCPU for processor thermal control */
params->Device4Enable = config->Device4Enable;
--
To view, visit https://review.coreboot.org/c/coreboot/+/45052
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I1924a3bac8beb16a9d841891696f9a3dea0d425f
Gerrit-Change-Number: 45052
Gerrit-PatchSet: 1
Gerrit-Owner: Shaunak Saha <shaunak.saha(a)intel.com>
Gerrit-MessageType: newchange