Unverified Commit 7c13f365 authored by David E. Box's avatar David E. Box Committed by Ilpo Järvinen
Browse files

platform/x86/intel/pmc: Add suspend callback



Add a suspend callback to struct pmc for performing platform specific tasks
before device suspend. This is needed in order to perform GBE LTR ignore on
certain platforms at suspend-time instead of at probe-time and replace the
GBE LTR ignore removal that was done in order to fix a bug introduced by
commit 80495120 ("platform/x86:intel/pmc: Combine core_init() and
core_configure()").

Fixes: 80495120 ("platform/x86:intel/pmc: Combine core_init() and core_configure()")
Signed-off-by: default avatar"David E. Box" <david.e.box@linux.intel.com>
Link: https://lore.kernel.org/r/20231223032548.1680738-4-david.e.box@linux.intel.com


Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
parent b28ff7a7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1279,6 +1279,9 @@ static __maybe_unused int pmc_core_suspend(struct device *dev)
	struct pmc_dev *pmcdev = dev_get_drvdata(dev);
	struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];

	if (pmcdev->suspend)
		pmcdev->suspend(pmcdev);

	/* Check if the syspend will actually use S0ix */
	if (pm_suspend_via_firmware())
		return 0;
+2 −0
Original line number Diff line number Diff line
@@ -363,6 +363,7 @@ struct pmc {
 * @s0ix_counter:	S0ix residency (step adjusted)
 * @num_lpm_modes:	Count of enabled modes
 * @lpm_en_modes:	Array of enabled modes from lowest to highest priority
 * @suspend:		Function to perform platform specific suspend
 * @resume:		Function to perform platform specific resume
 *
 * pmc_dev contains info about power management controller device.
@@ -379,6 +380,7 @@ struct pmc_dev {
	u64 s0ix_counter;
	int num_lpm_modes;
	int lpm_en_modes[LPM_MAX_NUM_MODES];
	void (*suspend)(struct pmc_dev *pmcdev);
	int (*resume)(struct pmc_dev *pmcdev);

	bool has_die_c6;