From 85c675d0d09a45a135bddd15d7b385f8758c32fb Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 18 May 2024 19:35:05 +0200 Subject: Adding upstream version 6.7.7. Signed-off-by: Daniel Baumann --- sound/aoa/aoa-gpio.h | 1 - sound/aoa/aoa.h | 1 - sound/aoa/codecs/onyx.c | 1 + sound/aoa/codecs/onyx.h | 1 - sound/aoa/codecs/tas.c | 2 +- sound/aoa/fabrics/layout.c | 3 +- sound/aoa/soundbus/core.c | 2 + sound/aoa/soundbus/i2sbus/control.c | 1 - sound/aoa/soundbus/i2sbus/core.c | 1 + sound/aoa/soundbus/i2sbus/i2sbus.h | 1 - sound/aoa/soundbus/i2sbus/interface.h | 2 +- sound/aoa/soundbus/soundbus.h | 2 +- sound/arm/pxa2xx-pcm-lib.c | 8 +- sound/core/control_compat.c | 2 +- sound/core/pcm_native.c | 8 +- sound/core/rawmidi_compat.c | 4 +- sound/drivers/aloop.c | 87 +- sound/hda/ext/hdac_ext_stream.c | 43 + sound/hda/hdac_i915.c | 24 +- sound/hda/hdac_stream.c | 26 +- sound/hda/intel-dsp-config.c | 10 + sound/oss/dmasound/dmasound_paula.c | 7 +- sound/pci/asihpi/hpidebug.h | 9 +- sound/pci/azt3328.c | 2 +- sound/pci/hda/Kconfig | 22 +- sound/pci/hda/Makefile | 4 + sound/pci/hda/cirrus_scodec.c | 73 + sound/pci/hda/cirrus_scodec.h | 13 + sound/pci/hda/cirrus_scodec_test.c | 370 ++ sound/pci/hda/cs35l41_hda.c | 356 +- sound/pci/hda/cs35l41_hda.h | 20 +- sound/pci/hda/cs35l41_hda_i2c.c | 2 +- sound/pci/hda/cs35l41_hda_property.c | 416 +- sound/pci/hda/cs35l41_hda_spi.c | 2 +- sound/pci/hda/cs35l56_hda.c | 24 +- sound/pci/hda/cs35l56_hda_i2c.c | 4 + sound/pci/hda/cs35l56_hda_spi.c | 4 + sound/pci/hda/hda_codec.c | 2 +- sound/pci/hda/hda_component.h | 4 + sound/pci/hda/hda_controller.c | 2 +- sound/pci/hda/hda_intel.c | 90 +- sound/pci/hda/patch_conexant.c | 133 +- sound/pci/hda/patch_cs8409.c | 1 + sound/pci/hda/patch_realtek.c | 154 +- sound/pci/hda/tas2781_hda_i2c.c | 6 +- sound/pci/intel8x0m.c | 2 +- sound/pci/mixart/mixart_core.h | 70 +- sound/soc/amd/acp-config.c | 96 + sound/soc/amd/acp-da7219-max98357a.c | 28 +- sound/soc/amd/acp-es8336.c | 6 +- sound/soc/amd/acp-pcm-dma.c | 2 +- sound/soc/amd/acp-rt5645.c | 6 +- sound/soc/amd/acp/Kconfig | 18 +- sound/soc/amd/acp/Makefile | 4 +- sound/soc/amd/acp/acp-i2s.c | 45 + sound/soc/amd/acp/acp-legacy-common.c | 79 +- sound/soc/amd/acp/acp-legacy-mach.c | 114 +- sound/soc/amd/acp/acp-mach-common.c | 95 +- sound/soc/amd/acp/acp-mach.h | 69 + sound/soc/amd/acp/acp-pci.c | 23 +- sound/soc/amd/acp/acp-platform.c | 29 +- sound/soc/amd/acp/acp-rembrandt.c | 17 +- sound/soc/amd/acp/acp-renoir.c | 7 + sound/soc/amd/acp/acp3x-es83xx/acp3x-es83xx.c | 444 ++ sound/soc/amd/acp/acp3x-es83xx/acp3x-es83xx.h | 12 + sound/soc/amd/acp/acp63.c | 322 ++ sound/soc/amd/acp/acp70.c | 254 ++ sound/soc/amd/acp/amd.h | 71 +- sound/soc/amd/acp/chip_offset_byte.h | 1 + sound/soc/amd/acp3x-rt5682-max9836.c | 12 +- sound/soc/amd/mach-config.h | 2 + sound/soc/amd/ps/pci-ps.c | 3 +- sound/soc/amd/ps/ps-sdw-dma.c | 2 +- sound/soc/amd/raven/acp3x-i2s.c | 2 +- sound/soc/amd/raven/acp3x-pcm-dma.c | 6 +- sound/soc/amd/vangogh/acp5x-i2s.c | 2 +- sound/soc/amd/vangogh/acp5x-mach.c | 12 +- sound/soc/amd/vangogh/acp5x-pcm-dma.c | 6 +- sound/soc/amd/yc/acp6x-mach.c | 14 + sound/soc/apple/mca.c | 28 +- sound/soc/atmel/atmel-classd.c | 10 +- sound/soc/atmel/atmel-pcm-dma.c | 8 +- sound/soc/atmel/atmel-pcm-pdc.c | 4 +- sound/soc/atmel/atmel-pdmic.c | 12 +- sound/soc/atmel/atmel_wm8904.c | 5 +- sound/soc/atmel/mchp-i2s-mcc.c | 2 +- sound/soc/atmel/mikroe-proto.c | 2 +- sound/soc/atmel/sam9g20_wm8731.c | 2 +- sound/soc/atmel/sam9x5_wm8731.c | 2 +- sound/soc/atmel/tse850-pcm5142.c | 1 - sound/soc/au1x/db1200.c | 4 +- sound/soc/au1x/dbdma2.c | 4 +- sound/soc/au1x/dma.c | 4 +- sound/soc/au1x/psc-ac97.c | 2 +- sound/soc/bcm/bcm63xx-pcm-whistler.c | 28 +- sound/soc/bcm/cygnus-pcm.c | 24 +- sound/soc/bcm/cygnus-ssp.c | 2 +- sound/soc/cirrus/edb93xx.c | 6 +- sound/soc/codecs/88pm860x-codec.c | 4 +- sound/soc/codecs/Kconfig | 44 +- sound/soc/codecs/Makefile | 6 + sound/soc/codecs/adau1373.c | 2 +- sound/soc/codecs/adau1701.c | 1 - sound/soc/codecs/adau1977-spi.c | 1 - sound/soc/codecs/adav80x.c | 2 +- sound/soc/codecs/ak4104.c | 2 +- sound/soc/codecs/ak4118.c | 2 +- sound/soc/codecs/ak4375.c | 2 +- sound/soc/codecs/ak4458.c | 2 +- sound/soc/codecs/ak4613.c | 2 +- sound/soc/codecs/ak4642.c | 30 +- sound/soc/codecs/ak5386.c | 7 +- sound/soc/codecs/ak5558.c | 2 +- sound/soc/codecs/audio-iio-aux.c | 17 +- sound/soc/codecs/aw87390.c | 463 ++ sound/soc/codecs/aw87390.h | 85 + sound/soc/codecs/aw88261.c | 44 +- sound/soc/codecs/aw88261.h | 4 +- sound/soc/codecs/aw88395/aw88395.c | 11 +- sound/soc/codecs/aw88395/aw88395.h | 2 +- sound/soc/codecs/aw88395/aw88395_device.c | 47 +- sound/soc/codecs/aw88395/aw88395_device.h | 6 +- sound/soc/codecs/aw88395/aw88395_lib.c | 28 +- sound/soc/codecs/aw88395/aw88395_reg.h | 2 + sound/soc/codecs/aw88399.c | 1911 ++++++++ sound/soc/codecs/aw88399.h | 599 +++ sound/soc/codecs/cs35l32.c | 2 +- sound/soc/codecs/cs35l33.c | 2 - sound/soc/codecs/cs35l34.c | 6 +- sound/soc/codecs/cs35l35.c | 3 +- sound/soc/codecs/cs35l36.c | 3 +- sound/soc/codecs/cs35l41-i2c.c | 13 +- sound/soc/codecs/cs35l41-lib.c | 12 +- sound/soc/codecs/cs35l41-spi.c | 11 +- sound/soc/codecs/cs35l41.c | 60 +- sound/soc/codecs/cs35l45-tables.c | 3 + sound/soc/codecs/cs35l45.c | 193 +- sound/soc/codecs/cs35l45.h | 36 +- sound/soc/codecs/cs35l56-i2c.c | 3 +- sound/soc/codecs/cs35l56-sdw.c | 2 +- sound/soc/codecs/cs35l56-shared.c | 68 +- sound/soc/codecs/cs35l56-spi.c | 3 +- sound/soc/codecs/cs35l56.c | 5 +- sound/soc/codecs/cs4270.c | 2 +- sound/soc/codecs/cs4271.c | 22 +- sound/soc/codecs/cs42l42.c | 1 - sound/soc/codecs/cs42l43-jack.c | 45 +- sound/soc/codecs/cs42l43-sdw.c | 6 +- sound/soc/codecs/cs42l43.c | 8 +- sound/soc/codecs/cs42l56.c | 2 +- sound/soc/codecs/cs42xx8-i2c.c | 16 +- sound/soc/codecs/cs43130.c | 3 +- sound/soc/codecs/cs4349.c | 2 +- sound/soc/codecs/cs47l15.c | 4 +- sound/soc/codecs/cs47l24.c | 6 +- sound/soc/codecs/cs47l35.c | 6 +- sound/soc/codecs/cs47l85.c | 6 +- sound/soc/codecs/cs47l90.c | 6 +- sound/soc/codecs/cs47l92.c | 4 +- sound/soc/codecs/da7213.c | 203 +- sound/soc/codecs/da7213.h | 64 +- sound/soc/codecs/da7218.c | 29 +- sound/soc/codecs/da7218.h | 2 +- sound/soc/codecs/da7219-aad.c | 9 +- sound/soc/codecs/da7219.c | 2 +- sound/soc/codecs/da9055.c | 1 - sound/soc/codecs/es8316.c | 52 +- sound/soc/codecs/es8316.h | 3 + sound/soc/codecs/es8328.c | 10 +- sound/soc/codecs/gtm601.c | 2 +- sound/soc/codecs/hdac_hda.c | 29 + sound/soc/codecs/hdac_hda.h | 1 + sound/soc/codecs/hdac_hdmi.c | 13 +- sound/soc/codecs/lpass-macro-common.c | 2 +- sound/soc/codecs/lpass-macro-common.h | 2 + sound/soc/codecs/lpass-rx-macro.c | 6 +- sound/soc/codecs/lpass-tx-macro.c | 22 +- sound/soc/codecs/lpass-wsa-macro.c | 7 - sound/soc/codecs/max9768.c | 45 +- sound/soc/codecs/max98357a.c | 1 - sound/soc/codecs/max98373-i2c.c | 17 - sound/soc/codecs/max98373.c | 35 +- sound/soc/codecs/max98373.h | 2 +- sound/soc/codecs/max98388.c | 3 +- sound/soc/codecs/max98396.c | 1 - sound/soc/codecs/max98520.c | 2 - sound/soc/codecs/max9867.c | 8 +- sound/soc/codecs/max98927.c | 2 - sound/soc/codecs/mt6351.c | 2 +- sound/soc/codecs/mt6358.c | 2 +- sound/soc/codecs/mt6359-accdet.c | 4 - sound/soc/codecs/mt6359.c | 2 +- sound/soc/codecs/nau8540.c | 51 +- sound/soc/codecs/nau8540.h | 15 + sound/soc/codecs/nau8821.c | 3 + sound/soc/codecs/pcm1681.c | 2 - sound/soc/codecs/pcm512x-i2c.c | 4 + sound/soc/codecs/pcm512x.c | 36 +- sound/soc/codecs/rt1015.c | 13 + sound/soc/codecs/rt298.c | 1 - sound/soc/codecs/rt5645.c | 1 + sound/soc/codecs/rt5677-spi.c | 4 +- sound/soc/codecs/rt5682s.c | 4 +- sound/soc/codecs/rt715-sdca.c | 4 +- sound/soc/codecs/rt715.c | 6 +- sound/soc/codecs/rtq9128.c | 789 ++++ sound/soc/codecs/sgtl5000.c | 2 +- sound/soc/codecs/sigmadsp.c | 7 +- sound/soc/codecs/sma1303.c | 2 +- sound/soc/codecs/sta32x.c | 3 +- sound/soc/codecs/sta350.c | 3 +- sound/soc/codecs/tas2781-comlib.c | 3 +- sound/soc/codecs/tas2781-fmwlib.c | 236 +- sound/soc/codecs/tas2781-i2c.c | 2 +- sound/soc/codecs/tas5086.c | 6 +- sound/soc/codecs/tas571x.c | 15 +- sound/soc/codecs/tlv320aic31xx.c | 6 +- sound/soc/codecs/tlv320aic32x4-i2c.c | 19 +- sound/soc/codecs/tlv320aic32x4-spi.c | 18 +- sound/soc/codecs/tlv320aic32x4.c | 5 +- sound/soc/codecs/tlv320aic32x4.h | 3 +- sound/soc/codecs/uda1334.c | 2 +- sound/soc/codecs/wcd9335.c | 18 +- sound/soc/codecs/wcd938x.c | 8 +- sound/soc/codecs/wm5110.c | 6 +- sound/soc/codecs/wm8510.c | 2 +- sound/soc/codecs/wm8523.c | 2 +- sound/soc/codecs/wm8524.c | 2 +- sound/soc/codecs/wm8580.c | 28 +- sound/soc/codecs/wm8711.c | 2 +- sound/soc/codecs/wm8728.c | 2 +- sound/soc/codecs/wm8731-i2c.c | 2 +- sound/soc/codecs/wm8731-spi.c | 2 +- sound/soc/codecs/wm8737.c | 2 +- sound/soc/codecs/wm8741.c | 2 +- sound/soc/codecs/wm8750.c | 2 +- sound/soc/codecs/wm8753.c | 2 +- sound/soc/codecs/wm8770.c | 2 +- sound/soc/codecs/wm8776.c | 2 +- sound/soc/codecs/wm8782.c | 63 +- sound/soc/codecs/wm8804.c | 1 - sound/soc/codecs/wm8962.c | 4 +- sound/soc/codecs/wm8994.c | 2 +- sound/soc/codecs/wm8995.c | 2 +- sound/soc/codecs/wm_adsp.c | 39 +- sound/soc/codecs/wsa883x.c | 6 +- sound/soc/dwc/dwc-i2s.c | 2 +- sound/soc/dwc/dwc-pcm.c | 4 +- sound/soc/fsl/Kconfig | 2 + sound/soc/fsl/efika-audio-fabric.c | 4 +- sound/soc/fsl/eukrea-tlv320.c | 6 +- sound/soc/fsl/fsl-asoc-card.c | 28 +- sound/soc/fsl/fsl_asrc_dma.c | 10 +- sound/soc/fsl/fsl_aud2htx.c | 3 +- sound/soc/fsl/fsl_dma.c | 2 +- sound/soc/fsl/fsl_mqs.c | 2 +- sound/soc/fsl/fsl_rpmsg.c | 3 +- sound/soc/fsl/fsl_sai.c | 3 +- sound/soc/fsl/fsl_spdif.c | 24 +- sound/soc/fsl/fsl_ssi.c | 16 +- sound/soc/fsl/imx-audmix.c | 18 +- sound/soc/fsl/imx-audmux.c | 1 - sound/soc/fsl/imx-card.c | 9 +- sound/soc/fsl/imx-hdmi.c | 4 +- sound/soc/fsl/imx-pcm-rpmsg.c | 14 +- sound/soc/fsl/imx-rpmsg.c | 7 +- sound/soc/fsl/imx-sgtl5000.c | 2 +- sound/soc/fsl/imx-spdif.c | 2 +- sound/soc/fsl/mpc5200_dma.c | 22 +- sound/soc/fsl/mpc5200_psc_ac97.c | 3 +- sound/soc/fsl/mpc5200_psc_i2s.c | 7 +- sound/soc/fsl/mpc8610_hpcd.c | 8 +- sound/soc/fsl/p1022_ds.c | 8 +- sound/soc/fsl/p1022_rdk.c | 8 +- sound/soc/fsl/pcm030-audio-fabric.c | 3 +- sound/soc/generic/audio-graph-card.c | 116 +- .../soc/generic/audio-graph-card2-custom-sample.c | 32 +- sound/soc/generic/audio-graph-card2.c | 110 +- sound/soc/generic/simple-card-utils.c | 221 +- sound/soc/generic/simple-card.c | 149 +- sound/soc/generic/test-component.c | 4 +- sound/soc/google/chv3-i2s.c | 22 +- sound/soc/img/img-i2s-in.c | 2 +- sound/soc/img/img-i2s-out.c | 2 +- sound/soc/intel/atom/sst-mfld-platform-pcm.c | 12 +- sound/soc/intel/avs/avs.h | 38 +- sound/soc/intel/avs/board_selection.c | 11 +- sound/soc/intel/avs/boards/Kconfig | 10 + sound/soc/intel/avs/boards/Makefile | 2 + sound/soc/intel/avs/boards/da7219.c | 21 +- sound/soc/intel/avs/boards/es8336.c | 26 +- sound/soc/intel/avs/boards/i2s_test.c | 57 +- sound/soc/intel/avs/boards/max98357a.c | 18 +- sound/soc/intel/avs/boards/max98373.c | 20 +- sound/soc/intel/avs/boards/max98927.c | 20 +- sound/soc/intel/avs/boards/nau8825.c | 26 +- sound/soc/intel/avs/boards/rt274.c | 22 +- sound/soc/intel/avs/boards/rt286.c | 27 +- sound/soc/intel/avs/boards/rt298.c | 26 +- sound/soc/intel/avs/boards/rt5514.c | 187 + sound/soc/intel/avs/boards/rt5663.c | 26 +- sound/soc/intel/avs/boards/rt5682.c | 26 +- sound/soc/intel/avs/boards/ssm4567.c | 22 +- sound/soc/intel/avs/cldma.h | 4 +- sound/soc/intel/avs/core.c | 21 +- sound/soc/intel/avs/debugfs.c | 4 + sound/soc/intel/avs/ipc.c | 52 +- sound/soc/intel/avs/loader.c | 4 + sound/soc/intel/avs/messages.c | 112 +- sound/soc/intel/avs/messages.h | 4 +- sound/soc/intel/avs/path.c | 31 +- sound/soc/intel/avs/pcm.c | 78 +- sound/soc/intel/avs/probes.c | 2 +- sound/soc/intel/avs/registers.h | 4 +- sound/soc/intel/avs/topology.c | 102 +- sound/soc/intel/avs/utils.h | 65 + sound/soc/intel/boards/Kconfig | 39 +- sound/soc/intel/boards/Makefile | 16 +- sound/soc/intel/boards/bdw-rt5650.c | 6 +- sound/soc/intel/boards/bdw-rt5677.c | 10 +- sound/soc/intel/boards/bdw_rt286.c | 8 +- sound/soc/intel/boards/bxt_da7219_max98357a.c | 8 +- sound/soc/intel/boards/bxt_rt298.c | 10 +- sound/soc/intel/boards/bytcht_cx2072x.c | 10 +- sound/soc/intel/boards/bytcht_da7213.c | 12 +- sound/soc/intel/boards/bytcht_es8316.c | 8 +- sound/soc/intel/boards/bytcht_nocodec.c | 4 +- sound/soc/intel/boards/bytcr_rt5640.c | 10 +- sound/soc/intel/boards/bytcr_rt5651.c | 10 +- sound/soc/intel/boards/bytcr_wm5102.c | 244 +- sound/soc/intel/boards/cht_bsw_max98090_ti.c | 8 +- sound/soc/intel/boards/cht_bsw_nau8824.c | 8 +- sound/soc/intel/boards/cht_bsw_rt5645.c | 16 +- sound/soc/intel/boards/cht_bsw_rt5672.c | 10 +- sound/soc/intel/boards/cml_rt1011_rt5682.c | 12 +- sound/soc/intel/boards/ehl_rt5660.c | 8 +- sound/soc/intel/boards/glk_rt5682_max98357a.c | 12 +- sound/soc/intel/boards/hsw_rt5640.c | 4 +- sound/soc/intel/boards/kbl_da7219_max98357a.c | 8 +- sound/soc/intel/boards/kbl_da7219_max98927.c | 10 +- sound/soc/intel/boards/kbl_rt5660.c | 8 +- sound/soc/intel/boards/kbl_rt5663_max98927.c | 12 +- .../soc/intel/boards/kbl_rt5663_rt5514_max98927.c | 12 +- sound/soc/intel/boards/skl_hda_dsp_generic.c | 4 +- sound/soc/intel/boards/skl_nau88l25_max98357a.c | 14 +- sound/soc/intel/boards/skl_nau88l25_ssm4567.c | 18 +- sound/soc/intel/boards/skl_rt286.c | 10 +- sound/soc/intel/boards/sof_board_helpers.c | 204 + sound/soc/intel/boards/sof_board_helpers.h | 64 + sound/soc/intel/boards/sof_cirrus_common.c | 2 +- sound/soc/intel/boards/sof_cirrus_common.h | 9 +- sound/soc/intel/boards/sof_cs42l42.c | 354 +- sound/soc/intel/boards/sof_da7219.c | 569 +++ sound/soc/intel/boards/sof_da7219_max98373.c | 482 -- sound/soc/intel/boards/sof_es8336.c | 14 +- sound/soc/intel/boards/sof_hdmi_common.h | 24 + sound/soc/intel/boards/sof_maxim_common.c | 8 +- sound/soc/intel/boards/sof_maxim_common.h | 13 +- sound/soc/intel/boards/sof_nau8825.c | 373 +- sound/soc/intel/boards/sof_nuvoton_common.c | 73 + sound/soc/intel/boards/sof_nuvoton_common.h | 22 + sound/soc/intel/boards/sof_pcm512x.c | 14 +- sound/soc/intel/boards/sof_realtek_common.c | 8 +- sound/soc/intel/boards/sof_realtek_common.h | 37 +- sound/soc/intel/boards/sof_rt5682.c | 730 ++- sound/soc/intel/boards/sof_sdw.c | 316 +- sound/soc/intel/boards/sof_sdw_common.h | 21 +- sound/soc/intel/boards/sof_sdw_cs42l42.c | 2 +- sound/soc/intel/boards/sof_sdw_cs42l43.c | 156 + sound/soc/intel/boards/sof_sdw_hdmi.c | 32 +- sound/soc/intel/boards/sof_sdw_maxim.c | 4 +- sound/soc/intel/boards/sof_sdw_rt5682.c | 2 +- sound/soc/intel/boards/sof_sdw_rt700.c | 2 +- sound/soc/intel/boards/sof_sdw_rt711.c | 2 +- sound/soc/intel/boards/sof_sdw_rt712_sdca.c | 6 +- sound/soc/intel/boards/sof_sdw_rt_amp.c | 4 +- .../soc/intel/boards/sof_sdw_rt_sdca_jack_common.c | 2 +- sound/soc/intel/boards/sof_ssp_amp.c | 339 +- sound/soc/intel/boards/sof_ssp_common.c | 101 + sound/soc/intel/boards/sof_ssp_common.h | 71 + sound/soc/intel/boards/sof_wm8804.c | 4 +- sound/soc/intel/catpt/pcm.c | 12 +- sound/soc/intel/common/Makefile | 1 + sound/soc/intel/common/soc-acpi-intel-adl-match.c | 19 + sound/soc/intel/common/soc-acpi-intel-arl-match.c | 51 + sound/soc/intel/common/soc-acpi-intel-jsl-match.c | 12 +- sound/soc/intel/common/soc-acpi-intel-mtl-match.c | 150 + sound/soc/intel/common/soc-acpi-intel-rpl-match.c | 39 + sound/soc/intel/keembay/kmb_platform.c | 17 +- sound/soc/intel/skylake/skl-pcm.c | 35 +- sound/soc/intel/skylake/skl.c | 32 +- sound/soc/kirkwood/armada-370-db.c | 4 +- sound/soc/kirkwood/kirkwood-dma.c | 2 +- sound/soc/loongson/loongson_card.c | 4 +- sound/soc/loongson/loongson_dma.c | 4 +- sound/soc/mediatek/Kconfig | 2 + sound/soc/mediatek/common/mtk-afe-fe-dai.c | 22 +- .../soc/mediatek/common/mtk-afe-platform-driver.c | 4 +- sound/soc/mediatek/common/mtk-dsp-sof-common.c | 113 +- sound/soc/mediatek/common/mtk-dsp-sof-common.h | 8 + sound/soc/mediatek/mt2701/mt2701-afe-pcm.c | 6 +- sound/soc/mediatek/mt2701/mt2701-cs42448.c | 60 +- sound/soc/mediatek/mt2701/mt2701-wm8960.c | 6 +- sound/soc/mediatek/mt6797/mt6797-afe-pcm.c | 6 +- sound/soc/mediatek/mt7986/mt7986-dai-etdm.c | 23 +- sound/soc/mediatek/mt7986/mt7986-wm8960.c | 43 +- sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 4 +- sound/soc/mediatek/mt8173/mt8173-max98090.c | 7 +- sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c | 6 +- sound/soc/mediatek/mt8173/mt8173-rt5650-rt5676.c | 8 +- sound/soc/mediatek/mt8173/mt8173-rt5650.c | 10 +- sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 6 +- sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c | 16 +- sound/soc/mediatek/mt8183/mt8183-dai-i2s.c | 4 +- .../mt8183/mt8183-mt6358-ts3a227-max98357.c | 20 +- sound/soc/mediatek/mt8186/mt8186-afe-gpio.c | 1 - sound/soc/mediatek/mt8186/mt8186-afe-pcm.c | 12 +- sound/soc/mediatek/mt8186/mt8186-dai-adda.c | 2 +- sound/soc/mediatek/mt8186/mt8186-dai-hw-gain.c | 2 +- sound/soc/mediatek/mt8186/mt8186-dai-i2s.c | 4 +- sound/soc/mediatek/mt8186/mt8186-dai-src.c | 4 +- sound/soc/mediatek/mt8186/mt8186-dai-tdm.c | 2 - sound/soc/mediatek/mt8186/mt8186-mt6366-common.c | 2 +- .../mt8186/mt8186-mt6366-da7219-max98357.c | 16 +- .../mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c | 59 +- sound/soc/mediatek/mt8188/mt8188-afe-pcm.c | 8 +- sound/soc/mediatek/mt8188/mt8188-dai-etdm.c | 4 +- sound/soc/mediatek/mt8188/mt8188-mt6359.c | 362 +- sound/soc/mediatek/mt8192/mt8192-afe-gpio.c | 1 - sound/soc/mediatek/mt8192/mt8192-afe-pcm.c | 6 +- sound/soc/mediatek/mt8192/mt8192-dai-adda.c | 4 +- sound/soc/mediatek/mt8192/mt8192-dai-i2s.c | 4 +- .../mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c | 24 +- sound/soc/mediatek/mt8195/mt8195-afe-pcm.c | 10 +- sound/soc/mediatek/mt8195/mt8195-mt6359.c | 28 +- sound/soc/meson/aiu-fifo.c | 2 +- sound/soc/meson/axg-card.c | 14 +- sound/soc/meson/axg-fifo.c | 4 +- sound/soc/meson/axg-fifo.h | 2 +- sound/soc/meson/axg-tdm.h | 2 +- sound/soc/meson/gx-card.c | 4 +- sound/soc/meson/meson-card-utils.c | 10 +- sound/soc/meson/meson-card.h | 2 +- sound/soc/meson/meson-codec-glue.c | 2 +- sound/soc/mxs/mxs-saif.c | 1 - sound/soc/mxs/mxs-sgtl5000.c | 7 +- sound/soc/pxa/pxa2xx-i2s.c | 4 +- sound/soc/pxa/spitz.c | 8 +- sound/soc/qcom/apq8016_sbc.c | 9 +- sound/soc/qcom/apq8096.c | 10 +- sound/soc/qcom/common.c | 8 +- sound/soc/qcom/lpass-apq8016.c | 8 +- sound/soc/qcom/lpass-cdc-dma.c | 19 +- sound/soc/qcom/lpass-cpu.c | 49 +- sound/soc/qcom/lpass-ipq806x.c | 4 +- sound/soc/qcom/lpass-platform.c | 87 +- sound/soc/qcom/lpass-sc7180.c | 8 +- sound/soc/qcom/lpass-sc7280.c | 8 +- sound/soc/qcom/lpass.h | 4 +- sound/soc/qcom/qdsp6/q6afe-clocks.c | 1 + sound/soc/qcom/qdsp6/q6afe-dai.c | 1 + sound/soc/qcom/qdsp6/q6afe.c | 1 + sound/soc/qcom/qdsp6/q6afe.h | 2 - sound/soc/qcom/qdsp6/q6apm-dai.c | 6 +- sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 5 +- sound/soc/qcom/qdsp6/q6apm.h | 1 - sound/soc/qcom/qdsp6/q6asm-dai.c | 13 +- sound/soc/qcom/qdsp6/q6asm.c | 1 + sound/soc/qcom/qdsp6/q6asm.h | 1 - sound/soc/qcom/qdsp6/q6dsp-lpass-clocks.c | 1 - sound/soc/qcom/qdsp6/q6prm-clocks.c | 2 +- sound/soc/qcom/qdsp6/q6routing.c | 9 +- sound/soc/qcom/sc7180.c | 216 +- sound/soc/qcom/sc7280.c | 30 +- sound/soc/qcom/sc8280xp.c | 24 +- sound/soc/qcom/sdm845.c | 38 +- sound/soc/qcom/sdw.c | 8 +- sound/soc/qcom/sm8250.c | 12 +- sound/soc/qcom/storm.c | 4 +- sound/soc/rockchip/rk3288_hdmi_analog.c | 52 +- sound/soc/rockchip/rk3399_gru_sound.c | 28 +- sound/soc/rockchip/rockchip_i2s.c | 10 +- sound/soc/rockchip/rockchip_i2s_tdm.c | 32 +- sound/soc/rockchip/rockchip_max98090.c | 12 +- sound/soc/rockchip/rockchip_pdm.c | 7 +- sound/soc/rockchip/rockchip_rt5645.c | 10 +- sound/soc/samsung/aries_wm8994.c | 13 +- sound/soc/samsung/arndale.c | 12 +- sound/soc/samsung/bells.c | 16 +- sound/soc/samsung/i2s.c | 14 +- sound/soc/samsung/littlemill.c | 16 +- sound/soc/samsung/lowland.c | 4 +- sound/soc/samsung/midas_wm1811.c | 12 +- sound/soc/samsung/odroid.c | 9 +- sound/soc/samsung/pcm.c | 8 +- sound/soc/samsung/smdk_spdif.c | 4 +- sound/soc/samsung/smdk_wm8994.c | 32 +- sound/soc/samsung/smdk_wm8994pcm.c | 6 +- sound/soc/samsung/snow.c | 5 +- sound/soc/samsung/spdif.c | 14 +- sound/soc/samsung/speyside.c | 12 +- sound/soc/samsung/tm2_wm5110.c | 24 +- sound/soc/samsung/tobermory.c | 8 +- sound/soc/sh/dma-sh7760.c | 34 +- sound/soc/sh/fsi.c | 5 +- sound/soc/sh/migor.c | 10 +- sound/soc/sh/rcar/core.c | 8 +- sound/soc/sh/rcar/rsnd.h | 4 +- sound/soc/sh/rcar/src.c | 1 + sound/soc/sh/rcar/ssi.c | 2 + sound/soc/sh/rz-ssi.c | 5 +- sound/soc/soc-component.c | 24 +- sound/soc/soc-compress.c | 36 +- sound/soc/soc-core.c | 20 +- sound/soc/soc-dai.c | 8 +- sound/soc/soc-dapm.c | 14 +- sound/soc/soc-generic-dmaengine-pcm.c | 10 +- sound/soc/soc-link.c | 14 +- sound/soc/soc-pcm.c | 93 +- sound/soc/soc-topology.c | 6 +- sound/soc/soc-utils.c | 6 +- sound/soc/sof/Kconfig | 2 +- sound/soc/sof/Makefile | 6 +- sound/soc/sof/amd/Kconfig | 9 + sound/soc/sof/amd/Makefile | 2 + sound/soc/sof/amd/acp-loader.c | 82 +- sound/soc/sof/amd/acp-pcm.c | 2 +- sound/soc/sof/amd/acp.c | 4 +- sound/soc/sof/amd/acp.h | 21 +- sound/soc/sof/amd/acp63.c | 146 + sound/soc/sof/amd/pci-acp63.c | 106 + sound/soc/sof/amd/pci-rmb.c | 10 +- sound/soc/sof/amd/pci-rn.c | 10 +- sound/soc/sof/amd/pci-vangogh.c | 10 +- sound/soc/sof/core.c | 11 + sound/soc/sof/imx/imx8.c | 26 +- sound/soc/sof/imx/imx8m.c | 16 +- sound/soc/sof/imx/imx8ulp.c | 16 +- sound/soc/sof/intel/Kconfig | 14 +- sound/soc/sof/intel/Makefile | 3 +- sound/soc/sof/intel/apl.c | 4 +- sound/soc/sof/intel/bdw.c | 12 +- sound/soc/sof/intel/byt.c | 36 +- sound/soc/sof/intel/cnl.c | 4 +- sound/soc/sof/intel/hda-codec.c | 1 + sound/soc/sof/intel/hda-common-ops.c | 2 + sound/soc/sof/intel/hda-dai-ops.c | 26 +- sound/soc/sof/intel/hda-dai.c | 12 +- sound/soc/sof/intel/hda-dsp.c | 3 + sound/soc/sof/intel/hda-loader.c | 44 +- sound/soc/sof/intel/hda-pcm.c | 4 +- sound/soc/sof/intel/hda-stream.c | 4 +- sound/soc/sof/intel/hda.c | 66 +- sound/soc/sof/intel/hda.h | 9 +- sound/soc/sof/intel/icl.c | 4 +- sound/soc/sof/intel/mtl.c | 31 + sound/soc/sof/intel/pci-apl.c | 36 +- sound/soc/sof/intel/pci-cnl.c | 54 +- sound/soc/sof/intel/pci-icl.c | 36 +- sound/soc/sof/intel/pci-lnl.c | 10 +- sound/soc/sof/intel/pci-mtl.c | 43 +- sound/soc/sof/intel/pci-skl.c | 20 +- sound/soc/sof/intel/pci-tgl.c | 144 +- sound/soc/sof/intel/pci-tng.c | 10 +- sound/soc/sof/intel/telemetry.c | 95 + sound/soc/sof/intel/telemetry.h | 35 + sound/soc/sof/intel/tgl.c | 5 +- sound/soc/sof/ipc.c | 6 +- sound/soc/sof/ipc3-dtrace.c | 2 +- sound/soc/sof/ipc3-pcm.c | 6 +- sound/soc/sof/ipc3-topology.c | 55 +- sound/soc/sof/ipc3.c | 2 +- sound/soc/sof/ipc4-control.c | 175 +- sound/soc/sof/ipc4-mtrace.c | 34 +- sound/soc/sof/ipc4-pcm.c | 118 +- sound/soc/sof/ipc4-priv.h | 3 + sound/soc/sof/ipc4-telemetry.c | 95 + sound/soc/sof/ipc4-telemetry.h | 73 + sound/soc/sof/ipc4-topology.c | 73 +- sound/soc/sof/ipc4-topology.h | 22 +- sound/soc/sof/ipc4.c | 37 +- sound/soc/sof/mediatek/mt8186/mt8186.c | 28 +- sound/soc/sof/mediatek/mt8195/mt8195.c | 18 +- sound/soc/sof/nocodec.c | 2 +- sound/soc/sof/ops.h | 22 +- sound/soc/sof/pcm.c | 18 +- sound/soc/sof/sof-acpi-dev.c | 12 +- sound/soc/sof/sof-acpi-dev.h | 2 +- sound/soc/sof/sof-client-ipc-msg-injector.c | 4 +- sound/soc/sof/sof-client-probes.c | 6 +- sound/soc/sof/sof-client.c | 29 +- sound/soc/sof/sof-of-dev.c | 10 +- sound/soc/sof/sof-of-dev.h | 2 +- sound/soc/sof/sof-pci-dev.c | 2 +- sound/soc/sof/sof-priv.h | 4 +- sound/soc/sof/xtensa/core.c | 11 + sound/soc/sprd/sprd-pcm-compress.c | 4 +- sound/soc/sprd/sprd-pcm-dma.c | 4 +- sound/soc/starfive/Kconfig | 9 + sound/soc/starfive/Makefile | 1 + sound/soc/starfive/jh7110_pwmdac.c | 528 +++ sound/soc/starfive/jh7110_tdm.c | 2 +- sound/soc/stm/stm32_adfsdm.c | 24 +- sound/soc/stm/stm32_i2s.c | 7 +- sound/soc/stm/stm32_sai.c | 8 +- sound/soc/stm/stm32_sai_sub.c | 10 +- sound/soc/stm/stm32_spdifrx.c | 8 +- sound/soc/sunxi/sun4i-codec.c | 16 +- sound/soc/sunxi/sun4i-i2s.c | 2 +- sound/soc/sunxi/sun4i-spdif.c | 12 +- sound/soc/sunxi/sun50i-codec-analog.c | 3 +- sound/soc/sunxi/sun50i-dmic.c | 4 +- sound/soc/sunxi/sun8i-codec-analog.c | 1 - sound/soc/sunxi/sun8i-codec.c | 2 +- sound/soc/tegra/tegra186_asrc.c | 3 +- sound/soc/tegra/tegra186_dspk.c | 2 +- sound/soc/tegra/tegra20_spdif.c | 2 +- sound/soc/tegra/tegra210_adx.c | 3 +- sound/soc/tegra/tegra210_amx.c | 13 +- sound/soc/tegra/tegra210_dmic.c | 2 +- sound/soc/tegra/tegra210_i2s.c | 2 +- sound/soc/tegra/tegra210_mixer.c | 3 +- sound/soc/tegra/tegra210_mvc.c | 3 +- sound/soc/tegra/tegra210_ope.c | 3 +- sound/soc/tegra/tegra210_peq.c | 1 - sound/soc/tegra/tegra210_sfc.c | 1 - sound/soc/tegra/tegra30_i2s.c | 1 - sound/soc/tegra/tegra_asoc_machine.c | 15 +- sound/soc/tegra/tegra_audio_graph_card.c | 24 +- sound/soc/tegra/tegra_pcm.c | 4 +- sound/soc/tegra/tegra_wm8903.c | 4 +- sound/soc/ti/Kconfig | 5 +- sound/soc/ti/ams-delta.c | 6 +- sound/soc/ti/davinci-evm.c | 17 +- sound/soc/ti/davinci-mcasp.c | 9 +- sound/soc/ti/j721e-evm.c | 12 +- sound/soc/ti/n810.c | 37 +- sound/soc/ti/omap-abe-twl6040.c | 10 +- sound/soc/ti/omap-dmic.c | 2 +- sound/soc/ti/omap-hdmi.c | 2 +- sound/soc/ti/omap-mcbsp-st.c | 2 +- sound/soc/ti/omap-mcbsp.c | 18 +- sound/soc/ti/omap-mcpdm.c | 4 +- sound/soc/ti/omap-twl4030.c | 22 +- sound/soc/ti/omap3pandora.c | 69 +- sound/soc/ti/osk5912.c | 5 +- sound/soc/ti/rx51.c | 25 +- sound/soc/uniphier/aio-compress.c | 22 +- sound/soc/uniphier/aio-cpu.c | 4 +- sound/soc/uniphier/aio-dma.c | 12 +- sound/soc/uniphier/aio-ld11.c | 2 +- sound/soc/uniphier/aio-pxs2.c | 2 +- sound/soc/uniphier/aio.h | 2 +- sound/soc/ux500/mop500_ab8500.c | 14 +- sound/soc/ux500/ux500_pcm.c | 4 +- sound/soc/xtensa/xtfpga-i2s.c | 4 +- sound/usb/Makefile | 2 +- sound/usb/caiaq/device.h | 2 +- sound/usb/clock.c | 10 +- sound/usb/format.c | 20 + sound/usb/mixer_quirks.c | 9 +- sound/usb/mixer_scarlett2.c | 4638 ++++++++++++++++++++ sound/usb/mixer_scarlett2.h | 7 + sound/usb/mixer_scarlett_gen2.c | 4274 ------------------ sound/usb/mixer_scarlett_gen2.h | 7 - sound/usb/quirks.c | 38 +- sound/usb/usx2y/usbusx2y.h | 2 +- sound/usb/usx2y/usbusx2yaudio.c | 2 +- sound/virtio/virtio_pcm.c | 6 +- sound/virtio/virtio_pcm.h | 9 +- sound/virtio/virtio_pcm_msg.c | 79 +- sound/virtio/virtio_pcm_ops.c | 125 +- 672 files changed, 21236 insertions(+), 10292 deletions(-) create mode 100644 sound/pci/hda/cirrus_scodec.c create mode 100644 sound/pci/hda/cirrus_scodec.h create mode 100644 sound/pci/hda/cirrus_scodec_test.c create mode 100644 sound/soc/amd/acp/acp3x-es83xx/acp3x-es83xx.c create mode 100644 sound/soc/amd/acp/acp3x-es83xx/acp3x-es83xx.h create mode 100644 sound/soc/amd/acp/acp63.c create mode 100644 sound/soc/amd/acp/acp70.c create mode 100644 sound/soc/codecs/aw87390.c create mode 100644 sound/soc/codecs/aw87390.h create mode 100644 sound/soc/codecs/aw88399.c create mode 100644 sound/soc/codecs/aw88399.h create mode 100644 sound/soc/codecs/rtq9128.c create mode 100644 sound/soc/intel/avs/boards/rt5514.c create mode 100644 sound/soc/intel/avs/utils.h create mode 100644 sound/soc/intel/boards/sof_board_helpers.c create mode 100644 sound/soc/intel/boards/sof_board_helpers.h create mode 100644 sound/soc/intel/boards/sof_da7219.c delete mode 100644 sound/soc/intel/boards/sof_da7219_max98373.c create mode 100644 sound/soc/intel/boards/sof_hdmi_common.h create mode 100644 sound/soc/intel/boards/sof_nuvoton_common.c create mode 100644 sound/soc/intel/boards/sof_nuvoton_common.h create mode 100644 sound/soc/intel/boards/sof_sdw_cs42l43.c create mode 100644 sound/soc/intel/boards/sof_ssp_common.c create mode 100644 sound/soc/intel/boards/sof_ssp_common.h create mode 100644 sound/soc/intel/common/soc-acpi-intel-arl-match.c create mode 100644 sound/soc/sof/amd/acp63.c create mode 100644 sound/soc/sof/amd/pci-acp63.c create mode 100644 sound/soc/sof/intel/telemetry.c create mode 100644 sound/soc/sof/intel/telemetry.h create mode 100644 sound/soc/sof/ipc4-telemetry.c create mode 100644 sound/soc/sof/ipc4-telemetry.h create mode 100644 sound/soc/starfive/jh7110_pwmdac.c create mode 100644 sound/usb/mixer_scarlett2.c create mode 100644 sound/usb/mixer_scarlett2.h delete mode 100644 sound/usb/mixer_scarlett_gen2.c delete mode 100644 sound/usb/mixer_scarlett_gen2.h (limited to 'sound') diff --git a/sound/aoa/aoa-gpio.h b/sound/aoa/aoa-gpio.h index 54f9a78fa..77ae75d75 100644 --- a/sound/aoa/aoa-gpio.h +++ b/sound/aoa/aoa-gpio.h @@ -9,7 +9,6 @@ #define __AOA_GPIO_H #include #include -#include typedef void (*notify_func_t)(void *data); diff --git a/sound/aoa/aoa.h b/sound/aoa/aoa.h index 3d2d03ff6..badff9f7c 100644 --- a/sound/aoa/aoa.h +++ b/sound/aoa/aoa.h @@ -7,7 +7,6 @@ #ifndef __AOA_H #define __AOA_H -#include #include #include #include diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c index a8a59d71d..e90e03bb0 100644 --- a/sound/aoa/codecs/onyx.c +++ b/sound/aoa/codecs/onyx.c @@ -30,6 +30,7 @@ */ #include #include +#include #include MODULE_AUTHOR("Johannes Berg "); MODULE_LICENSE("GPL"); diff --git a/sound/aoa/codecs/onyx.h b/sound/aoa/codecs/onyx.h index 6c31b7373..bbdca841f 100644 --- a/sound/aoa/codecs/onyx.h +++ b/sound/aoa/codecs/onyx.h @@ -8,7 +8,6 @@ #define __SND_AOA_CODEC_ONYX_H #include #include -#include /* PCM3052 register definitions */ diff --git a/sound/aoa/codecs/tas.c b/sound/aoa/codecs/tas.c index ab1472390..be9822ebf 100644 --- a/sound/aoa/codecs/tas.c +++ b/sound/aoa/codecs/tas.c @@ -60,10 +60,10 @@ */ #include #include -#include #include #include #include +#include #include MODULE_AUTHOR("Johannes Berg "); diff --git a/sound/aoa/fabrics/layout.c b/sound/aoa/fabrics/layout.c index 850dc8c53..0cd19a05d 100644 --- a/sound/aoa/fabrics/layout.c +++ b/sound/aoa/fabrics/layout.c @@ -7,9 +7,10 @@ * This fabric module looks for sound codecs based on the * layout-id or device-id property in the device tree. */ -#include #include #include +#include +#include #include #include "../aoa.h" #include "../soundbus/soundbus.h" diff --git a/sound/aoa/soundbus/core.c b/sound/aoa/soundbus/core.c index 39fb8fe4e..8f24a3eea 100644 --- a/sound/aoa/soundbus/core.c +++ b/sound/aoa/soundbus/core.c @@ -6,6 +6,8 @@ */ #include +#include +#include #include "soundbus.h" MODULE_AUTHOR("Johannes Berg "); diff --git a/sound/aoa/soundbus/i2sbus/control.c b/sound/aoa/soundbus/i2sbus/control.c index 7d3abb8b2..a003ef06d 100644 --- a/sound/aoa/soundbus/i2sbus/control.c +++ b/sound/aoa/soundbus/i2sbus/control.c @@ -10,7 +10,6 @@ #include #include -#include #include #include #include diff --git a/sound/aoa/soundbus/i2sbus/core.c b/sound/aoa/soundbus/i2sbus/core.c index 51ed2f34b..3f49a9e28 100644 --- a/sound/aoa/soundbus/i2sbus/core.c +++ b/sound/aoa/soundbus/i2sbus/core.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include diff --git a/sound/aoa/soundbus/i2sbus/i2sbus.h b/sound/aoa/soundbus/i2sbus/i2sbus.h index e86fdbb3b..7a3cae0d6 100644 --- a/sound/aoa/soundbus/i2sbus/i2sbus.h +++ b/sound/aoa/soundbus/i2sbus/i2sbus.h @@ -13,7 +13,6 @@ #include -#include #include #include diff --git a/sound/aoa/soundbus/i2sbus/interface.h b/sound/aoa/soundbus/i2sbus/interface.h index 16fa88822..a13627426 100644 --- a/sound/aoa/soundbus/i2sbus/interface.h +++ b/sound/aoa/soundbus/i2sbus/interface.h @@ -34,7 +34,7 @@ struct i2s_interface_regs { __le32 peak_level_in1; /* 0x90 */ PAD(12); /* total size: 0x100 bytes */ -} __attribute__((__packed__)); +} __packed; /* interrupt register is just a bitfield with * interrupt enable and pending bits */ diff --git a/sound/aoa/soundbus/soundbus.h b/sound/aoa/soundbus/soundbus.h index db40f9d04..877cbad93 100644 --- a/sound/aoa/soundbus/soundbus.h +++ b/sound/aoa/soundbus/soundbus.h @@ -7,7 +7,7 @@ #ifndef __SOUNDBUS_H #define __SOUNDBUS_H -#include +#include #include #include diff --git a/sound/arm/pxa2xx-pcm-lib.c b/sound/arm/pxa2xx-pcm-lib.c index 0a48805e5..51d2ff80d 100644 --- a/sound/arm/pxa2xx-pcm-lib.c +++ b/sound/arm/pxa2xx-pcm-lib.c @@ -38,7 +38,7 @@ int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream, struct dma_slave_config config; int ret; - dma_params = snd_soc_dai_get_dma_data(asoc_rtd_to_cpu(rtd, 0), substream); + dma_params = snd_soc_dai_get_dma_data(snd_soc_rtd_to_cpu(rtd, 0), substream); if (!dma_params) return 0; @@ -47,7 +47,7 @@ int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream, return ret; snd_dmaengine_pcm_set_config_from_dai_data(substream, - snd_soc_dai_get_dma_data(asoc_rtd_to_cpu(rtd, 0), substream), + snd_soc_dai_get_dma_data(snd_soc_rtd_to_cpu(rtd, 0), substream), &config); ret = dmaengine_slave_config(chan, &config); @@ -86,7 +86,7 @@ int pxa2xx_pcm_open(struct snd_pcm_substream *substream) runtime->hw = pxa2xx_pcm_hardware; - dma_params = snd_soc_dai_get_dma_data(asoc_rtd_to_cpu(rtd, 0), substream); + dma_params = snd_soc_dai_get_dma_data(snd_soc_rtd_to_cpu(rtd, 0), substream); if (!dma_params) return 0; @@ -111,7 +111,7 @@ int pxa2xx_pcm_open(struct snd_pcm_substream *substream) return ret; return snd_dmaengine_pcm_open( - substream, dma_request_slave_channel(asoc_rtd_to_cpu(rtd, 0)->dev, + substream, dma_request_slave_channel(snd_soc_rtd_to_cpu(rtd, 0)->dev, dma_params->chan_name)); } EXPORT_SYMBOL(pxa2xx_pcm_open); diff --git a/sound/core/control_compat.c b/sound/core/control_compat.c index 0e8b1bfb0..63d787501 100644 --- a/sound/core/control_compat.c +++ b/sound/core/control_compat.c @@ -74,7 +74,7 @@ struct snd_ctl_elem_info32 { unsigned char reserved[128]; } value; unsigned char reserved[64]; -} __attribute__((packed)); +} __packed; static int snd_ctl_elem_info_compat(struct snd_ctl_file *ctl, struct snd_ctl_elem_info32 __user *data32) diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index bd9ddf412..f610b08f5 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -3089,7 +3089,7 @@ struct snd_pcm_mmap_status32 { snd_pcm_state_t suspended_state; s32 audio_tstamp_sec; s32 audio_tstamp_nsec; -} __attribute__((packed)); +} __packed; struct snd_pcm_mmap_control32 { u32 appl_ptr; @@ -3106,7 +3106,7 @@ struct snd_pcm_sync_ptr32 { struct snd_pcm_mmap_control32 control; unsigned char reserved[64]; } c; -} __attribute__((packed)); +} __packed; /* recalcuate the boundary within 32bit */ static snd_pcm_uframes_t recalculate_boundary(struct snd_pcm_runtime *runtime) @@ -3527,7 +3527,7 @@ static ssize_t snd_pcm_readv(struct kiocb *iocb, struct iov_iter *to) if (runtime->state == SNDRV_PCM_STATE_OPEN || runtime->state == SNDRV_PCM_STATE_DISCONNECTED) return -EBADFD; - if (!to->user_backed) + if (!user_backed_iter(to)) return -EINVAL; if (to->nr_segs > 1024 || to->nr_segs != runtime->channels) return -EINVAL; @@ -3567,7 +3567,7 @@ static ssize_t snd_pcm_writev(struct kiocb *iocb, struct iov_iter *from) if (runtime->state == SNDRV_PCM_STATE_OPEN || runtime->state == SNDRV_PCM_STATE_DISCONNECTED) return -EBADFD; - if (!from->user_backed) + if (!user_backed_iter(from)) return -EINVAL; if (from->nr_segs > 128 || from->nr_segs != runtime->channels || !frame_aligned(runtime, iov->iov_len)) diff --git a/sound/core/rawmidi_compat.c b/sound/core/rawmidi_compat.c index b81b30d82..2c6de6e11 100644 --- a/sound/core/rawmidi_compat.c +++ b/sound/core/rawmidi_compat.c @@ -15,7 +15,7 @@ struct snd_rawmidi_params32 { unsigned int no_active_sensing; /* avoid bit-field */ unsigned int mode; unsigned char reserved[12]; -} __attribute__((packed)); +} __packed; static int snd_rawmidi_ioctl_params_compat(struct snd_rawmidi_file *rfile, struct snd_rawmidi_params32 __user *src) @@ -51,7 +51,7 @@ struct compat_snd_rawmidi_status64 { u32 avail; u32 xruns; unsigned char reserved[16]; -} __attribute__((packed)); +} __packed; static int snd_rawmidi_ioctl_status_compat64(struct snd_rawmidi_file *rfile, struct compat_snd_rawmidi_status64 __user *src) diff --git a/sound/drivers/aloop.c b/sound/drivers/aloop.c index a38e602b4..1c65e0a3b 100644 --- a/sound/drivers/aloop.c +++ b/sound/drivers/aloop.c @@ -119,11 +119,13 @@ struct loopback_setup { unsigned int rate_shift; snd_pcm_format_t format; unsigned int rate; + snd_pcm_access_t access; unsigned int channels; struct snd_ctl_elem_id active_id; struct snd_ctl_elem_id format_id; struct snd_ctl_elem_id rate_id; struct snd_ctl_elem_id channels_id; + struct snd_ctl_elem_id access_id; }; struct loopback { @@ -158,6 +160,9 @@ struct loopback_pcm { unsigned long last_jiffies; /* If jiffies timer is used */ struct timer_list timer; + + /* size of per channel buffer in case of non-interleaved access */ + unsigned int channel_buf_n; }; static struct platform_device *devices[SNDRV_CARDS]; @@ -317,6 +322,17 @@ static int loopback_snd_timer_close_cable(struct loopback_pcm *dpcm) return 0; } +static bool is_access_interleaved(snd_pcm_access_t access) +{ + switch (access) { + case SNDRV_PCM_ACCESS_MMAP_INTERLEAVED: + case SNDRV_PCM_ACCESS_RW_INTERLEAVED: + return true; + default: + return false; + } +}; + static int loopback_check_format(struct loopback_cable *cable, int stream) { struct snd_pcm_runtime *runtime, *cruntime; @@ -335,7 +351,9 @@ static int loopback_check_format(struct loopback_cable *cable, int stream) substream->runtime; check = runtime->format != cruntime->format || runtime->rate != cruntime->rate || - runtime->channels != cruntime->channels; + runtime->channels != cruntime->channels || + is_access_interleaved(runtime->access) != + is_access_interleaved(cruntime->access); if (!check) return 0; if (stream == SNDRV_PCM_STREAM_CAPTURE) { @@ -363,6 +381,12 @@ static int loopback_check_format(struct loopback_cable *cable, int stream) &setup->channels_id); setup->channels = runtime->channels; } + if (is_access_interleaved(setup->access) != + is_access_interleaved(runtime->access)) { + snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_VALUE, + &setup->access_id); + setup->access = runtime->access; + } } return 0; } @@ -472,6 +496,7 @@ static int loopback_prepare(struct snd_pcm_substream *substream) dpcm->buf_pos = 0; dpcm->pcm_buffer_size = frames_to_bytes(runtime, runtime->buffer_size); + dpcm->channel_buf_n = dpcm->pcm_buffer_size / runtime->channels; if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { /* clear capture buffer */ dpcm->silent_size = dpcm->pcm_buffer_size; @@ -522,6 +547,22 @@ static void clear_capture_buf(struct loopback_pcm *dpcm, unsigned int bytes) } } +static void copy_play_buf_part_n(struct loopback_pcm *play, struct loopback_pcm *capt, + unsigned int size, unsigned int src_off, unsigned int dst_off) +{ + unsigned int channels = capt->substream->runtime->channels; + unsigned int size_p_ch = size / channels; + unsigned int src_off_ch = src_off / channels; + unsigned int dst_off_ch = dst_off / channels; + int i; + + for (i = 0; i < channels; i++) { + memcpy(capt->substream->runtime->dma_area + capt->channel_buf_n * i + dst_off_ch, + play->substream->runtime->dma_area + play->channel_buf_n * i + src_off_ch, + size_p_ch); + } +} + static void copy_play_buf(struct loopback_pcm *play, struct loopback_pcm *capt, unsigned int bytes) @@ -556,7 +597,10 @@ static void copy_play_buf(struct loopback_pcm *play, size = play->pcm_buffer_size - src_off; if (dst_off + size > capt->pcm_buffer_size) size = capt->pcm_buffer_size - dst_off; - memcpy(dst + dst_off, src + src_off, size); + if (!is_access_interleaved(runtime->access)) + copy_play_buf_part_n(play, capt, size, src_off, dst_off); + else + memcpy(dst + dst_off, src + src_off, size); capt->silent_size = 0; bytes -= size; if (!bytes) @@ -878,7 +922,7 @@ static const struct snd_pcm_hardware loopback_pcm_hardware = { .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE | - SNDRV_PCM_INFO_RESUME), + SNDRV_PCM_INFO_RESUME | SNDRV_PCM_INFO_NONINTERLEAVED), .formats = (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE | SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_BE | SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_3BE | @@ -1495,6 +1539,29 @@ static int loopback_channels_get(struct snd_kcontrol *kcontrol, return 0; } +static int loopback_access_info(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) +{ + const char * const texts[] = {"Interleaved", "Non-interleaved"}; + + return snd_ctl_enum_info(uinfo, 1, ARRAY_SIZE(texts), texts); +} + +static int loopback_access_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct loopback *loopback = snd_kcontrol_chip(kcontrol); + snd_pcm_access_t access; + + mutex_lock(&loopback->cable_lock); + access = loopback->setup[kcontrol->id.subdevice][kcontrol->id.device].access; + + ucontrol->value.enumerated.item[0] = !is_access_interleaved(access); + + mutex_unlock(&loopback->cable_lock); + return 0; +} + static const struct snd_kcontrol_new loopback_controls[] = { { .iface = SNDRV_CTL_ELEM_IFACE_PCM, @@ -1541,7 +1608,15 @@ static const struct snd_kcontrol_new loopback_controls[] = { .name = "PCM Slave Channels", .info = loopback_channels_info, .get = loopback_channels_get -} +}, +#define ACCESS_IDX 6 +{ + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_PCM, + .name = "PCM Slave Access Mode", + .info = loopback_access_info, + .get = loopback_access_get, +}, }; static int loopback_mixer_new(struct loopback *loopback, int notify) @@ -1562,6 +1637,7 @@ static int loopback_mixer_new(struct loopback *loopback, int notify) setup->notify = notify; setup->rate_shift = NO_PITCH; setup->format = SNDRV_PCM_FORMAT_S16_LE; + setup->access = SNDRV_PCM_ACCESS_RW_INTERLEAVED; setup->rate = 48000; setup->channels = 2; for (idx = 0; idx < ARRAY_SIZE(loopback_controls); @@ -1593,6 +1669,9 @@ static int loopback_mixer_new(struct loopback *loopback, int notify) case CHANNELS_IDX: setup->channels_id = kctl->id; break; + case ACCESS_IDX: + setup->access_id = kctl->id; + break; default: break; } diff --git a/sound/hda/ext/hdac_ext_stream.c b/sound/hda/ext/hdac_ext_stream.c index 11b7119cc..a3ac738f1 100644 --- a/sound/hda/ext/hdac_ext_stream.c +++ b/sound/hda/ext/hdac_ext_stream.c @@ -10,12 +10,47 @@ */ #include +#include +#include #include #include #include #include #include +/** + * snd_hdac_ext_host_stream_setup - Setup a HOST stream. + * @hext_stream: HDAudio stream to set up. + * @code_loading: Whether the stream is for PCM or code-loading. + * + * Return: Zero on success or negative error code. + */ +int snd_hdac_ext_host_stream_setup(struct hdac_ext_stream *hext_stream, bool code_loading) +{ + return hext_stream->host_setup(hdac_stream(hext_stream), code_loading); +} +EXPORT_SYMBOL_GPL(snd_hdac_ext_host_stream_setup); + +/** + * snd_hdac_apl_host_stream_setup - Setup a HOST stream following procedure + * recommended for ApolloLake devices. + * @hstream: HDAudio stream to set up. + * @code_loading: Whether the stream is for PCM or code-loading. + * + * Return: Zero on success or negative error code. + */ +static int snd_hdac_apl_host_stream_setup(struct hdac_stream *hstream, bool code_loading) +{ + struct hdac_ext_stream *hext_stream = stream_to_hdac_ext_stream(hstream); + int ret; + + snd_hdac_ext_stream_decouple(hstream->bus, hext_stream, false); + ret = snd_hdac_stream_setup(hstream, code_loading); + snd_hdac_ext_stream_decouple(hstream->bus, hext_stream, true); + + return ret; +} + /** * snd_hdac_ext_stream_init - initialize each stream (aka device) * @bus: HD-audio core bus @@ -55,9 +90,16 @@ static void snd_hdac_ext_stream_init(struct hdac_bus *bus, int snd_hdac_ext_stream_init_all(struct hdac_bus *bus, int start_idx, int num_stream, int dir) { + struct pci_dev *pci = to_pci_dev(bus->dev); + int (*setup_op)(struct hdac_stream *, bool); int stream_tag = 0; int i, tag, idx = start_idx; + if (pci->device == PCI_DEVICE_ID_INTEL_HDA_APL) + setup_op = snd_hdac_apl_host_stream_setup; + else + setup_op = snd_hdac_stream_setup; + for (i = 0; i < num_stream; i++) { struct hdac_ext_stream *hext_stream = kzalloc(sizeof(*hext_stream), GFP_KERNEL); @@ -66,6 +108,7 @@ int snd_hdac_ext_stream_init_all(struct hdac_bus *bus, int start_idx, tag = ++stream_tag; snd_hdac_ext_stream_init(bus, hext_stream, idx, dir, tag); idx++; + hext_stream->host_setup = setup_op; } return 0; diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c index b428537f2..365c36fdf 100644 --- a/sound/hda/hdac_i915.c +++ b/sound/hda/hdac_i915.c @@ -10,6 +10,12 @@ #include #include #include +#include