soc/intel/icelake: Use SA_DEV_ROOT instead of PCH_DEV_PMC

PMC device gets hidden from PCI bus after FSP-S call. Thus, it gets
removed from the root bus as leftover unused device. With change
903b40a8a4 ("soc/intel: Replace uses of dev_find_slot()"), all uses
of dev_find_slot() were replaced by pcidev_path_on_root() which relies
on scanning of root bus to find the requested device. Since PMC device
is removed from the root bus, pcidev_path_on_root() returns NULL for
it thus resulting in configuration being skipped for the PMC
ultimately resulting in S3 failures.

Since the PCH_DEV_PMC was just used to get to chip config, this
change replaces the use of PCH_DEV_PMC with SA_DEV_ROOT.

BUG=b:136861224

Change-Id: Id68db8382b7b98e8e2e4a65ded1a6fb3bd057051
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/34118
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-by: Subrata Banik <subrata.banik@intel.com>
This commit is contained in:
Furquan Shaikh
2019-07-06 22:58:31 -07:00
committed by Patrick Georgi
parent 9eac4c9dda
commit 0478037e11
2 changed files with 7 additions and 2 deletions

View File

@ -136,7 +136,7 @@ static void pch_power_options(struct device *dev)
static void pmc_init(void *unused)
{
struct device *dev = PCH_DEV_PMC;
struct device *dev = SA_DEV_ROOT;
config_t *config = dev->chip_info;
rtc_init();