diff options
Diffstat (limited to 'SOURCES/patch-5.11-redhat.patch')
-rw-r--r-- | SOURCES/patch-5.11-redhat.patch | 164 |
1 files changed, 159 insertions, 5 deletions
diff --git a/SOURCES/patch-5.11-redhat.patch b/SOURCES/patch-5.11-redhat.patch index 0cddf93..aee2a1f 100644 --- a/SOURCES/patch-5.11-redhat.patch +++ b/SOURCES/patch-5.11-redhat.patch @@ -66,7 +66,16 @@ sound/hda/Kconfig | 14 + sound/hda/intel-dsp-config.c | 29 +- sound/soc/intel/atom/sst-mfld-platform-pcm.c | 6 +- - 68 files changed, 2268 insertions(+), 255 deletions(-) + sound/soc/sof/intel/apl.c | 3 +- + sound/soc/sof/intel/cnl.c | 3 +- + sound/soc/sof/intel/hda-dsp.c | 6 + + sound/soc/sof/intel/hda.h | 1 + + sound/soc/sof/intel/icl.c | 3 +- + sound/soc/sof/intel/tgl.c | 1 + + sound/soc/sof/ops.h | 8 + + sound/soc/sof/sof-pci-dev.c | 2 +- + sound/soc/sof/sof-priv.h | 4 +- + 77 files changed, 2294 insertions(+), 260 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-platform_profile b/Documentation/ABI/testing/sysfs-platform_profile new file mode 100644 @@ -280,7 +289,7 @@ index 000000000000..c33a71263d9e + 2. Add the new profile name, along with a clear description of the + expected behaviour, to the sysfs-platform_profile ABI documentation. diff --git a/Makefile b/Makefile -index 7578e0d9622f..74679ade5579 100644 +index 1e31504aab61..59a5c8126afe 100644 --- a/Makefile +++ b/Makefile @@ -495,6 +495,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE @@ -442,7 +451,7 @@ index 1fbed91c73bc..73f5724342b1 100644 /* boot_command_line has been already set up in early.c */ *cmdline_p = boot_command_line; diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index 740f3bdb3f61..db04c427e35c 100644 +index df964571a6b4..200db376f728 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -19,6 +19,7 @@ @@ -467,7 +476,7 @@ index 740f3bdb3f61..db04c427e35c 100644 dmi_setup(); /* -@@ -1113,19 +1121,7 @@ void __init setup_arch(char **cmdline_p) +@@ -1116,19 +1124,7 @@ void __init setup_arch(char **cmdline_p) /* Allocate bigger log buffer */ setup_log_buf(1); @@ -778,7 +787,7 @@ index 000000000000..4a59c5993bde +MODULE_AUTHOR("Mark Pearson <markpearson@lenovo.com>"); +MODULE_LICENSE("GPL"); diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c -index a4fdf61b0644..9aa6d898fadd 100644 +index 239eeeafc62f..bb8c046fc4cb 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1638,6 +1638,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device) @@ -3833,3 +3842,148 @@ index 9e9b05883557..aa5dd590ddd5 100644 }, }, { +diff --git a/sound/soc/sof/intel/apl.c b/sound/soc/sof/intel/apl.c +index fc29b91b8932..c7ed2b3d6abc 100644 +--- a/sound/soc/sof/intel/apl.c ++++ b/sound/soc/sof/intel/apl.c +@@ -27,9 +27,10 @@ static const struct snd_sof_debugfs_map apl_dsp_debugfs[] = { + + /* apollolake ops */ + const struct snd_sof_dsp_ops sof_apl_ops = { +- /* probe and remove */ ++ /* probe/remove/shutdown */ + .probe = hda_dsp_probe, + .remove = hda_dsp_remove, ++ .shutdown = hda_dsp_shutdown, + + /* Register IO */ + .write = sof_io_write, +diff --git a/sound/soc/sof/intel/cnl.c b/sound/soc/sof/intel/cnl.c +index e38db519f38d..094cde17a1b7 100644 +--- a/sound/soc/sof/intel/cnl.c ++++ b/sound/soc/sof/intel/cnl.c +@@ -232,9 +232,10 @@ void cnl_ipc_dump(struct snd_sof_dev *sdev) + + /* cannonlake ops */ + const struct snd_sof_dsp_ops sof_cnl_ops = { +- /* probe and remove */ ++ /* probe/remove/shutdown */ + .probe = hda_dsp_probe, + .remove = hda_dsp_remove, ++ .shutdown = hda_dsp_shutdown, + + /* Register IO */ + .write = sof_io_write, +diff --git a/sound/soc/sof/intel/hda-dsp.c b/sound/soc/sof/intel/hda-dsp.c +index 012bac41fee0..03b0f178ca08 100644 +--- a/sound/soc/sof/intel/hda-dsp.c ++++ b/sound/soc/sof/intel/hda-dsp.c +@@ -885,6 +885,12 @@ int hda_dsp_suspend(struct snd_sof_dev *sdev, u32 target_state) + return snd_sof_dsp_set_power_state(sdev, &target_dsp_state); + } + ++int hda_dsp_shutdown(struct snd_sof_dev *sdev) ++{ ++ sdev->system_suspend_target = SOF_SUSPEND_S3; ++ return snd_sof_suspend(sdev->dev); ++} ++ + int hda_dsp_set_hw_params_upon_resume(struct snd_sof_dev *sdev) + { + #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) +diff --git a/sound/soc/sof/intel/hda.h b/sound/soc/sof/intel/hda.h +index a3b6f3e9121c..010577885913 100644 +--- a/sound/soc/sof/intel/hda.h ++++ b/sound/soc/sof/intel/hda.h +@@ -512,6 +512,7 @@ int hda_dsp_resume(struct snd_sof_dev *sdev); + int hda_dsp_runtime_suspend(struct snd_sof_dev *sdev); + int hda_dsp_runtime_resume(struct snd_sof_dev *sdev); + int hda_dsp_runtime_idle(struct snd_sof_dev *sdev); ++int hda_dsp_shutdown(struct snd_sof_dev *sdev); + int hda_dsp_set_hw_params_upon_resume(struct snd_sof_dev *sdev); + void hda_dsp_dump_skl(struct snd_sof_dev *sdev, u32 flags); + void hda_dsp_dump(struct snd_sof_dev *sdev, u32 flags); +diff --git a/sound/soc/sof/intel/icl.c b/sound/soc/sof/intel/icl.c +index e9d5a0a58504..88a74be8a0c1 100644 +--- a/sound/soc/sof/intel/icl.c ++++ b/sound/soc/sof/intel/icl.c +@@ -26,9 +26,10 @@ static const struct snd_sof_debugfs_map icl_dsp_debugfs[] = { + + /* Icelake ops */ + const struct snd_sof_dsp_ops sof_icl_ops = { +- /* probe and remove */ ++ /* probe/remove/shutdown */ + .probe = hda_dsp_probe, + .remove = hda_dsp_remove, ++ .shutdown = hda_dsp_shutdown, + + /* Register IO */ + .write = sof_io_write, +diff --git a/sound/soc/sof/intel/tgl.c b/sound/soc/sof/intel/tgl.c +index 2252ca38ff4b..4f661f042d4d 100644 +--- a/sound/soc/sof/intel/tgl.c ++++ b/sound/soc/sof/intel/tgl.c +@@ -25,6 +25,7 @@ const struct snd_sof_dsp_ops sof_tgl_ops = { + /* probe and remove */ + .probe = hda_dsp_probe, + .remove = hda_dsp_remove, ++ .shutdown = hda_dsp_shutdown, + + /* Register IO */ + .write = sof_io_write, +diff --git a/sound/soc/sof/ops.h b/sound/soc/sof/ops.h +index 95e748b36903..7562097bd7d5 100644 +--- a/sound/soc/sof/ops.h ++++ b/sound/soc/sof/ops.h +@@ -37,6 +37,14 @@ static inline int snd_sof_remove(struct snd_sof_dev *sdev) + return 0; + } + ++static inline int snd_sof_shutdown(struct snd_sof_dev *sdev) ++{ ++ if (sof_ops(sdev)->shutdown) ++ return sof_ops(sdev)->shutdown(sdev); ++ ++ return 0; ++} ++ + /* control */ + + /* +diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c +index 9adf50b20a73..a93b3aa6349c 100644 +--- a/sound/soc/sof/sof-pci-dev.c ++++ b/sound/soc/sof/sof-pci-dev.c +@@ -269,7 +269,7 @@ static const struct sof_dev_desc ehl_desc = { + .default_tplg_path = "intel/sof-tplg", + .default_fw_filename = "sof-ehl.ri", + .nocodec_tplg_filename = "sof-ehl-nocodec.tplg", +- .ops = &sof_cnl_ops, ++ .ops = &sof_tgl_ops, + }; + #endif + +diff --git a/sound/soc/sof/sof-priv.h b/sound/soc/sof/sof-priv.h +index 68da8f797403..8d0c33c6d053 100644 +--- a/sound/soc/sof/sof-priv.h ++++ b/sound/soc/sof/sof-priv.h +@@ -98,9 +98,10 @@ struct snd_sof_pdata; + */ + struct snd_sof_dsp_ops { + +- /* probe and remove */ ++ /* probe/remove/shutdown */ + int (*probe)(struct snd_sof_dev *sof_dev); /* mandatory */ + int (*remove)(struct snd_sof_dev *sof_dev); /* optional */ ++ int (*shutdown)(struct snd_sof_dev *sof_dev); /* optional */ + + /* DSP core boot / reset */ + int (*run)(struct snd_sof_dev *sof_dev); /* mandatory */ +@@ -460,6 +461,7 @@ struct snd_sof_dev { + + int snd_sof_device_probe(struct device *dev, struct snd_sof_pdata *plat_data); + int snd_sof_device_remove(struct device *dev); ++int snd_sof_device_shutdown(struct device *dev); + + int snd_sof_runtime_suspend(struct device *dev); + int snd_sof_runtime_resume(struct device *dev); |