linux/sound/soc/sof
Peter Ujfalusi 756bbe4205
ASoC: SOF: Handle control change notification from firmware
If the value/data associated with a control changes in SOF it will send a
notification (SOF_IPC_GLB_COMP_MSG with SOF_IPC_COMP_GET_VALUE/DATA).

We have support for binary volatile control type, but we might have
features where enum/switch/volume changes. Re-implementing everything as
volatile as well would be not much of a gain for several reasons:
- volatile controls would do an IPC all the time, regardless if there is a
  need or not.
- We still don't have notification which forces userspace to continuously
  poll.

When such notification arrives we use snd_ctl_notify_one() to signal
userspace about the change.

The kernel is prepared for two types of notification:
- the notification carries the new data for the control (num_elems != 0)
The new value/data is copied to the control's local data

- blank message about a change
The new flag for the scontrol (comp_data_dirty) is set and when next
time user space reads the value via the kcontrol's get callback we will
refresh the control's local data from the firmware.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Tested-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Link: https://lore.kernel.org/r/20210903114018.2962-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-13 01:59:18 +01:00
..
imx ASoC: SOF: imx: Add missing of_node_put() in imx8_probe() 2021-06-22 12:47:13 +01:00
intel ASoC: SOF: intel: remove duplicate include 2021-08-24 19:15:02 +01:00
xtensa ASoC: SOF/Intel: clarify SPDX license with GPL-2.0-only 2020-05-01 17:45:24 +01:00
compress.c ASoC: SOF: Intel: Constify sof_probe_compressed_ops 2021-06-01 14:05:15 +01:00
compress.h ASoC: SOF: Intel: Constify sof_probe_compressed_ops 2021-06-01 14:05:15 +01:00
control.c ASoC: SOF: Handle control change notification from firmware 2021-09-13 01:59:18 +01:00
core.c ASoC: SOF: core: allow module parameter to override dma trace Kconfig 2021-09-13 01:59:06 +01:00
debug.c ASoC: SOF: remove superfluous NULL check in debugfs read 2021-03-16 13:25:46 +00:00
ipc.c ASoC: SOF: Handle control change notification from firmware 2021-09-13 01:59:18 +01:00
Kconfig ASoC: SOF: add Kconfig option for probe workqueues 2021-04-12 17:05:50 +01:00
loader.c ASoC: SOF: loader: Use snd_sof_dsp_block_read() instead sof_block_read() 2021-05-21 13:13:38 +01:00
Makefile ASoC: SOF: pci: split PCI into different drivers 2021-03-02 15:32:00 +01:00
nocodec.c ASOC: SOF: simplify nocodec mode 2021-04-12 17:05:55 +01:00
ops.c ASoC: SOF: modify the SOF_DBG flags 2020-12-11 13:22:57 +00:00
ops.h ASoC: SOF: ops: don't return void value 2021-05-21 13:13:40 +01:00
pcm.c ASoC: SOF: pcm: export snd_pcm_dai_link_fixup 2021-04-12 17:05:54 +01:00
pm.c ASoC: SOF: reset enabled_cores state at suspend 2021-06-01 14:03:01 +01:00
probe.c ASoC: SOF/Intel: clarify SPDX license with GPL-2.0-only 2020-05-01 17:45:24 +01:00
probe.h ASoC: SOF: Replace zero-length array with flexible-array 2020-06-15 23:08:32 -05:00
sof-acpi-dev.c ASoC: SOF: Check desc->ops directly in acpi/pci/of probe functions 2021-05-21 13:13:35 +01:00
sof-acpi-dev.h ASoC: SOF: ACPI: avoid reverse module dependency 2021-03-02 15:31:40 +01:00
sof-audio.c ASoC: SOF: add a helper to get topology configured bclk 2021-07-11 23:48:30 +01:00
sof-audio.h ASoC: SOF: Handle control change notification from firmware 2021-09-13 01:59:18 +01:00
sof-of-dev.c ASoC: SOF: Check desc->ops directly in acpi/pci/of probe functions 2021-05-21 13:13:35 +01:00
sof-pci-dev.c ASoC: SOF: Intel: Use DMI string to search for adl_mx98373_rt5682 variant 2021-08-03 18:26:10 +01:00
sof-pci-dev.h ASoC: SOF: pci: split PCI into different drivers 2021-03-02 15:32:00 +01:00
sof-priv.h ASoC: SOF: change signature of set_mach_params() callback 2021-04-12 17:05:52 +01:00
topology.c ASoC: SOF: topology: fix assignment to use le32_to_cpu 2021-05-21 13:13:39 +01:00
trace.c ASoC: SOF: trace: Add runtime trace filtering mechanism 2020-12-07 14:22:05 +00:00
utils.c ASoC: SOF/Intel: clarify SPDX license with GPL-2.0-only 2020-05-01 17:45:24 +01:00