Age | Commit message (Collapse) | Author | Files | Lines |
|
Following functions are renamed for a better global visibility.
graph_card_probe() --> audio_graph_card_probe()
graph_parse_of() --> audio_graph_parse_of()
graph_remove() --> audio_graph_remove() [exported as well]
The references of these are updated in audio graph and Tegra audio
graph card drivers.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/1612719418-5858-2-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Audio Graph Card based Tegra driver is only useful on NVIDIA Tegra SoCs.
Hence add a dependency on SND_SOC_TEGRA, to prevent asking the user
about this driver when configuring a kernel without Tegra sound support.
Wrap all Tegra sound config options inside a big if/endif block, instead
of just adding the dependency to the single config option that does not
have it yet, to preventing similar future mistakes.
Fixes: 202e2f7745437aa5 ("ASoC: tegra: Add audio graph based card driver")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/20210129125915.2652952-1-geert+renesas@glider.be
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Assert hardware resets before clocks are enabled and then de-assert them
after clocks are enabled. This brings hardware into a predictable state.
Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30 audio works
Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30 boot-tested
Tested-by: Dmitry Osipenko <digetx@gmail.com> # Nexus7 T30 audio works
Tested-by: Nicolas Chauvet <kwizart@gmail.com> # TK1 boot-tested
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20210120003154.26749-7-digetx@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Use clk_bulk helpers to make code cleaner.
Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30 audio works
Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30 boot-tested
Tested-by: Dmitry Osipenko <digetx@gmail.com> # Nexus7 T30 audio works
Tested-by: Nicolas Chauvet <kwizart@gmail.com> # TK1 boot-tested
Acked-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20210120003154.26749-6-digetx@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
AHUB driver misses D_AUDIO and APBIF resets. CPU hangs on trying to
access hardware if resets aren't de-asserted. This problem is currently
masked by the tegra-clk driver which implicitly de-asserts the resets when
the corresponding clocks are enabled. Soon the implicit de-assertion will
be gone from the tegra-clk driver, thus we need to fix the AHUB driver.
Add the missing resets to the driver.
Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30 audio works
Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30 boot-tested
Tested-by: Dmitry Osipenko <digetx@gmail.com> # Nexus7 T30 audio works
Tested-by: Nicolas Chauvet <kwizart@gmail.com> # TK1 boot-tested
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20210120003154.26749-5-digetx@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
This patch syncs naming rule.
- xxx_rates;
+ xxx_rate;
- xxx_samplebits;
+ xxx_sample_bits;
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87o8hqoli4.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
This series adds audio graph based sound card support for Tegra210
platforms like Jetson-TX1 an Jetson-Nano. The following preparatory
audio graph enhancement series is already merged.
* https://patchwork.kernel.org/project/alsa-devel/list/?series=375629&state=*
Following are the summary of changes:
* Add graph/audio-graph based schemas or schema updates for Tegra210
component and machine drivers.
* Add Tegra audio graph machine driver.
* Add required DT support for Jetson-TX1/Nano.
This work is based on earlier discussion of DPCM usage for Tegra
and simple card driver updates.
* https://lkml.org/lkml/2020/4/30/519
* https://lkml.org/lkml/2020/6/27/4
Original v6 series was sent about 6-7 weeks back. The dependency commit,
https://lore.kernel.org/alsa-devel/1610948585-16286-1-git-send-email-spujar@nvidia.com/
is now merged. Resending this now to appear in the top of the mail list.
Changelog
=========
v5 -> v6
--------
* Added ports or port description in YAML docs for Tegra AHUB
devices and graph card in patch 1/6 and 2/6. Reference of
audio-graph-port.yaml is used for AHUB devices.
* Dropped redundant NULL check return for of_device_get_match_data()
in patch 3/6.
* Added 'Reviewed-by' tag from Jon Hunter.
* No changes in remaining patches.
v4 -> v5
--------
* Audio graph related changes were sent in separate v5 series as
mentioned above and are dropped from current series.
* Graph and audio graph doc patches are dropped from this series
and are sent separately as mentioned above.
* Minor change with phandle label for TX1 and Nano platform DT files.
* No changes in other patches.
v3 -> v4
--------
* Added new patches to convert graph.txt and audio-graph-card.txt
to corresponding json-schema files. Later these references
are used in Tegra audio graph schema.
* AHUB component binding docs are updated to reflect the usage
of ports/port/endpoint
* More common stuff is moved into graph_parse_of() and this is
used by both generic and Tegra audio graph.
* DT binding for Tegra audio graph is updated to included "ports { }"
* As per the suggestion 'void *data' member is dropped from
'asoc_simple_priv' and instead container method is used to
maintain required custom data internal to Tegra audio graph.
v2 -> v3
--------
* Dropped new compatible addition in generic graph driver
after reviewing it with Morimoto-san. Instead added Tegra
audio graph driver and new compatibles are added in the same.
* Added new patches to expose new members for customization
in audio graph driver.
* Added new patch for Tegra audio graph driver and related
documentation.
* Minor change in below commit where mutex version of helper is used
"ASoC: audio-graph: Identify 'no_pcm' DAI links for DPCM"
* DT binding is updated to use the newly exposed compatibles
* No changes in other patches
v1 -> v2
--------
* Re-organized ports/endpoints description for ADMAIF and XBAR.
Updated DT patches accordingly.
* After above change, multiple Codec endpoint support is not
required and hence dropped for now. This will be considered
separately if at all required in future.
* Re-ordered patches in the series.
Sameer Pujar (6):
ASoC: dt-bindings: tegra: Add graph bindings
ASoC: dt-bindings: tegra: Add json-schema for Tegra audio graph card
ASoC: tegra: Add audio graph based card driver
arm64: defconfig: Enable Tegra audio graph card driver
arm64: tegra: Audio graph header for Tegra210
arm64: tegra: Audio graph sound card for Jetson Nano and TX1
.../sound/nvidia,tegra-audio-graph-card.yaml | 187 +++++++++++++++
.../bindings/sound/nvidia,tegra186-dspk.yaml | 18 +-
.../bindings/sound/nvidia,tegra210-admaif.yaml | 13 +-
.../bindings/sound/nvidia,tegra210-ahub.yaml | 13 +-
.../bindings/sound/nvidia,tegra210-dmic.yaml | 18 +-
.../bindings/sound/nvidia,tegra210-i2s.yaml | 18 +-
.../boot/dts/nvidia/tegra210-audio-graph.dtsi | 153 ++++++++++++
arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts | 262 +++++++++++++++++++++
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 146 ++++++++++++
arch/arm64/configs/defconfig | 1 +
sound/soc/tegra/Kconfig | 9 +
sound/soc/tegra/Makefile | 2 +
sound/soc/tegra/tegra_audio_graph_card.c | 251 ++++++++++++++++++++
13 files changed, 1085 insertions(+), 6 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-graph-card.yaml
create mode 100644 arch/arm64/boot/dts/nvidia/tegra210-audio-graph.dtsi
create mode 100644 sound/soc/tegra/tegra_audio_graph_card.c
--
2.7.4
|
|
Add Tegra audio machine driver which is based on generic audio graph card
driver. It re-uses most of the common stuff from audio graph driver and
uses the same DT binding. Required Tegra specific customizations are done
in the driver and additional DT bindings are required for clock handling.
Details on the customizations done:
- Update PLL rates at runtime: Tegra HW supports multiple sample rates
(multiples of 8x and 11.025x) and both of these groups require different
PLL rates. Hence there is a requirement to update this at runtime.
This is achieved by providing a custom 'snd_soc_ops' and in hw_param()
callback PLL rate is updated as per the sample rate.
- Internal structure 'tegra_audio_graph_data' is used to maintain clock
handles of PLL.
- The 'force_dpcm' flag is set to use DPCM for all DAI links.
- The 'component_chaining' flag is set to use DPCM with component model.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/1611048496-24650-4-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
ASoC tegra PCM code still has explicit calls of dma_set_mask() and
dma_set_coherent_mask().
Let's simplify with dma_set_mask_and_coherent().
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20210114133337.1039-4-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Deferred probe is an expected return value for snd_soc_register_card().
Given that the driver deals with it properly, there's no need to output
a warning that may potentially confuse users.
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20201111103245.152189-1-jonathanh@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
A semicolon is not needed after a switch statement.
Signed-off-by: Tom Rix <trix@redhat.com>
Acked-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/20201101172412.2306144-1-trix@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Make tegra20-spdif default to N as all other drivers do.
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Fixes: 774fec338bfc ("ASoC: Tegra: Implement SPDIF CPU DAI")
Link: https://lore.kernel.org/r/8756eb5aac561173aa222c9cb64dd314ab1b1f9b.1603925200.git.mirq-linux@rere.qmqm.pl
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Using devm_snd_soc_register_card() can make the code
shorter and cleaner.
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com>
Link: https://lore.kernel.org/r/20200929112939.47661-1-miaoqinglang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Using devm_snd_soc_register_card() can make the code
shorter and cleaner.
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com>
Link: https://lore.kernel.org/r/20200929112936.47441-1-miaoqinglang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Using devm_snd_soc_register_card() can make the code
shorter and cleaner.
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com>
Link: https://lore.kernel.org/r/20200929112938.47599-1-miaoqinglang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Using devm_snd_soc_register_card() can make the code
shorter and cleaner.
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com>
Link: https://lore.kernel.org/r/20200929112935.47035-1-miaoqinglang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Fix trivial compile warnings wrt unused functions by adding
__maybe_unused prefix:
sound/soc/tegra/tegra210_i2s.c:167:12: warning: 'tegra210_i2s_runtime_suspend' defined but not used [-Wunused-function]
sound/soc/tegra/tegra210_i2s.c:179:12: warning: 'tegra210_i2s_runtime_resume' defined but not used [-Wunused-function]
Fixes: c0bfa98349d1 ("ASoC: tegra: Add Tegra210 based I2S driver")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20200803141850.23713-6-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Fix trivial compile warnings wrt unused functions by adding
__maybe_unused prefix:
sound/soc/tegra/tegra210_dmic.c:43:12: warning: 'tegra210_dmic_runtime_suspend' defined but not used [-Wunused-function]
sound/soc/tegra/tegra210_dmic.c:55:12: warning: 'tegra210_dmic_runtime_resume' defined but not used [-Wunused-function]
Fixes: 8c8ff982e9e2 ("ASoC: tegra: Add Tegra210 based DMIC driver")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20200803141850.23713-5-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Fix trivial compile warnings wrt unused functions by adding
__maybe_unused prefix:
sound/soc/tegra/tegra210_ahub.c:567:12: warning: 'tegra_ahub_runtime_suspend' defined but not used [-Wunused-function]
sound/soc/tegra/tegra210_ahub.c:579:12: warning: 'tegra_ahub_runtime_resume' defined but not used [-Wunused-function]
Fixes: 16e1bcc2caf4 ("ASoC: tegra: Add Tegra210 based AHUB driver")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20200803141850.23713-4-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Fix trivial compile warnings wrt unused functions by adding
__maybe_unused prefix:
sound/soc/tegra/tegra210_admaif.c:232:12: warning: 'tegra_admaif_runtime_resume' defined but not used [-Wunused-function]
sound/soc/tegra/tegra210_ahub.c:567:12: warning: 'tegra_ahub_runtime_suspend' defined but not used [-Wunused-function]
Fixes: f74028e159bb ("ASoC: tegra: Add Tegra210 based ADMAIF driver")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20200803141850.23713-3-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Fix trivial compile warnings wrt unused functions by adding
__maybe_unused prefix:
sound/soc/tegra/tegra186_dspk.c:74:12: warning: 'tegra186_dspk_runtime_suspend' defined but not used [-Wunused-function]
sound/soc/tegra/tegra186_dspk.c:86:12: warning: 'tegra186_dspk_runtime_resume' defined but not used [-Wunused-function]
Fixes: 327ef6470266 ("ASoC: tegra: Add Tegra186 based DSPK driver")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20200803141850.23713-2-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Morimoto <kuninori.morimoto.gx@renesas.com>:
Hi Mark
Many ASoC drivers are getting rtd from substream by
rtd = substream->private_data
OTOH, we have snd_pcm_substream_chip() macro for it.
#define snd_pcm_substream_chip(substream) ((substream)->private_data)
But, both are not understandable for reader.
This patch adds new asoc_substream_to_rtd() which is easy to understand.
These are not important, but for readable code.
Kuninori Morimoto (29):
ASoC: soc-xxx: add asoc_substream_to_rtd()
ASoC: ux500: use asoc_substream_to_rtd()
ASoC: ti: use asoc_substream_to_rtd()
ASoC: tegra: use asoc_substream_to_rtd()
ASoC: sunxi: use asoc_substream_to_rtd()
ASoC: stm: use asoc_substream_to_rtd()
ASoC: sof: use asoc_substream_to_rtd()
ASoC: sh: use asoc_substream_to_rtd()
ASoC: samsung: use asoc_substream_to_rtd()
ASoC: pxa: use asoc_substream_to_rtd()
ASoC: cirrus: use asoc_substream_to_rtd()
ASoC: rockchip: use asoc_substream_to_rtd()
ASoC: amd: use asoc_substream_to_rtd()
ASoC: fsl: use asoc_substream_to_rtd()
ASoC: mediatek: use asoc_substream_to_rtd()
ASoC: atmel: use asoc_substream_to_rtd()
ASoC: qcom: use asoc_substream_to_rtd()
ASoC: dwc: use asoc_substream_to_rtd()
ASoC: intel: use asoc_substream_to_rtd()
ASoC: meson: use asoc_substream_to_rtd()
ASoC: au1x: use asoc_substream_to_rtd()
ASoC: bcm: use asoc_substream_to_rtd()
ASoC: codecs: use asoc_substream_to_rtd()
ASoC: generic: use asoc_substream_to_rtd()
ASoC: sprd: use asoc_substream_to_rtd()
ASoC: kirkwood: use asoc_substream_to_rtd()
ASoC: xtensa: use asoc_substream_to_rtd()
ASoC: mxs: use asoc_substream_to_rtd()
ASoC: uniphier: use asoc_substream_to_rtd()
include/sound/soc.h | 2 +
sound/soc/amd/acp-da7219-max98357a.c | 12 ++--
sound/soc/amd/acp-pcm-dma.c | 2 +-
sound/soc/amd/acp-rt5645.c | 2 +-
sound/soc/amd/acp3x-rt5682-max9836.c | 8 +--
sound/soc/amd/raven/acp3x-i2s.c | 2 +-
sound/soc/amd/raven/acp3x-pcm-dma.c | 6 +-
sound/soc/atmel/atmel-classd.c | 8 +--
sound/soc/atmel/atmel-pcm-dma.c | 4 +-
sound/soc/atmel/atmel-pcm-pdc.c | 2 +-
sound/soc/atmel/atmel-pdmic.c | 10 +--
sound/soc/atmel/atmel_wm8904.c | 2 +-
sound/soc/au1x/db1200.c | 2 +-
sound/soc/au1x/dbdma2.c | 2 +-
sound/soc/au1x/dma.c | 2 +-
sound/soc/bcm/bcm63xx-pcm-whistler.c | 12 ++--
sound/soc/bcm/cygnus-pcm.c | 16 ++---
sound/soc/cirrus/edb93xx.c | 2 +-
sound/soc/cirrus/snappercl15.c | 2 +-
sound/soc/codecs/rt5677-spi.c | 4 +-
sound/soc/dwc/dwc-pcm.c | 2 +-
sound/soc/fsl/eukrea-tlv320.c | 2 +-
sound/soc/fsl/fsl-asoc-card.c | 2 +-
sound/soc/fsl/fsl_asrc_dma.c | 4 +-
sound/soc/fsl/fsl_dma.c | 2 +-
sound/soc/fsl/fsl_spdif.c | 10 +--
sound/soc/fsl/fsl_ssi.c | 8 +--
sound/soc/fsl/imx-audmix.c | 6 +-
sound/soc/fsl/imx-mc13783.c | 2 +-
sound/soc/fsl/mpc5200_dma.c | 8 +--
sound/soc/fsl/mpc5200_psc_i2s.c | 2 +-
sound/soc/fsl/mpc8610_hpcd.c | 2 +-
sound/soc/fsl/mx27vis-aic32x4.c | 2 +-
sound/soc/fsl/p1022_ds.c | 2 +-
sound/soc/fsl/p1022_rdk.c | 2 +-
sound/soc/fsl/wm1133-ev1.c | 2 +-
sound/soc/generic/simple-card-utils.c | 6 +-
sound/soc/intel/atom/sst-mfld-platform-pcm.c | 6 +-
sound/soc/intel/baytrail/sst-baytrail-pcm.c | 16 ++---
sound/soc/intel/boards/bdw-rt5650.c | 2 +-
sound/soc/intel/boards/bdw-rt5677.c | 4 +-
sound/soc/intel/boards/broadwell.c | 2 +-
sound/soc/intel/boards/bxt_rt298.c | 2 +-
sound/soc/intel/boards/byt-rt5640.c | 2 +-
sound/soc/intel/boards/bytcht_da7213.c | 4 +-
sound/soc/intel/boards/bytcr_rt5640.c | 2 +-
sound/soc/intel/boards/bytcr_rt5651.c | 2 +-
sound/soc/intel/boards/cht_bsw_max98090_ti.c | 2 +-
sound/soc/intel/boards/cht_bsw_nau8824.c | 2 +-
sound/soc/intel/boards/cht_bsw_rt5645.c | 2 +-
sound/soc/intel/boards/cht_bsw_rt5672.c | 2 +-
sound/soc/intel/boards/cml_rt1011_rt5682.c | 4 +-
sound/soc/intel/boards/ehl_rt5660.c | 2 +-
sound/soc/intel/boards/glk_rt5682_max98357a.c | 2 +-
sound/soc/intel/boards/haswell.c | 2 +-
sound/soc/intel/boards/kbl_da7219_max98927.c | 8 +--
sound/soc/intel/boards/kbl_rt5660.c | 2 +-
sound/soc/intel/boards/kbl_rt5663_max98927.c | 4 +-
.../intel/boards/kbl_rt5663_rt5514_max98927.c | 4 +-
.../soc/intel/boards/skl_nau88l25_max98357a.c | 2 +-
sound/soc/intel/boards/skl_nau88l25_ssm4567.c | 2 +-
sound/soc/intel/boards/skl_rt286.c | 2 +-
sound/soc/intel/boards/sof_da7219_max98373.c | 2 +-
sound/soc/intel/boards/sof_maxim_common.c | 4 +-
sound/soc/intel/boards/sof_pcm512x.c | 4 +-
sound/soc/intel/boards/sof_rt5682.c | 4 +-
sound/soc/intel/boards/sof_sdw_rt1308.c | 2 +-
sound/soc/intel/boards/sof_wm8804.c | 2 +-
sound/soc/intel/haswell/sst-haswell-pcm.c | 12 ++--
sound/soc/intel/keembay/kmb_platform.c | 2 +-
sound/soc/intel/skylake/skl-pcm.c | 8 +--
sound/soc/kirkwood/armada-370-db.c | 2 +-
sound/soc/mediatek/common/mtk-afe-fe-dai.c | 12 ++--
.../mediatek/common/mtk-afe-platform-driver.c | 2 +-
sound/soc/mediatek/mt2701/mt2701-afe-pcm.c | 2 +-
sound/soc/mediatek/mt2701/mt2701-cs42448.c | 2 +-
sound/soc/mediatek/mt2701/mt2701-wm8960.c | 2 +-
sound/soc/mediatek/mt6797/mt6797-afe-pcm.c | 4 +-
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 2 +-
sound/soc/mediatek/mt8173/mt8173-max98090.c | 2 +-
.../mediatek/mt8173/mt8173-rt5650-rt5514.c | 2 +-
.../mediatek/mt8173/mt8173-rt5650-rt5676.c | 2 +-
sound/soc/mediatek/mt8173/mt8173-rt5650.c | 2 +-
sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 4 +-
.../mediatek/mt8183/mt8183-da7219-max98357.c | 8 +--
.../mt8183/mt8183-mt6358-ts3a227-max98357.c | 12 ++--
sound/soc/meson/axg-card.c | 2 +-
sound/soc/meson/gx-card.c | 2 +-
sound/soc/meson/meson-card-utils.c | 2 +-
sound/soc/meson/meson-codec-glue.c | 2 +-
sound/soc/mxs/mxs-sgtl5000.c | 2 +-
sound/soc/pxa/brownstone.c | 2 +-
sound/soc/pxa/corgi.c | 4 +-
sound/soc/pxa/hx4700.c | 2 +-
sound/soc/pxa/imote2.c | 2 +-
sound/soc/pxa/magician.c | 6 +-
sound/soc/pxa/mmp-pcm.c | 2 +-
sound/soc/pxa/poodle.c | 4 +-
sound/soc/pxa/pxa2xx-i2s.c | 2 +-
sound/soc/pxa/spitz.c | 4 +-
sound/soc/pxa/tosa.c | 2 +-
sound/soc/pxa/z2.c | 2 +-
sound/soc/pxa/zylonite.c | 2 +-
sound/soc/qcom/apq8096.c | 2 +-
sound/soc/qcom/lpass-platform.c | 14 ++---
sound/soc/qcom/qdsp6/q6asm-dai.c | 6 +-
sound/soc/qcom/qdsp6/q6routing.c | 2 +-
sound/soc/qcom/sdm845.c | 14 ++---
sound/soc/qcom/storm.c | 2 +-
sound/soc/rockchip/rk3288_hdmi_analog.c | 2 +-
sound/soc/rockchip/rk3399_gru_sound.c | 8 +--
sound/soc/rockchip/rockchip_i2s.c | 2 +-
sound/soc/rockchip/rockchip_max98090.c | 2 +-
sound/soc/rockchip/rockchip_rt5645.c | 2 +-
sound/soc/samsung/aries_wm8994.c | 4 +-
sound/soc/samsung/arndale.c | 4 +-
sound/soc/samsung/h1940_uda1380.c | 2 +-
sound/soc/samsung/i2s.c | 2 +-
sound/soc/samsung/jive_wm8750.c | 2 +-
sound/soc/samsung/littlemill.c | 2 +-
sound/soc/samsung/neo1973_wm8753.c | 8 +--
sound/soc/samsung/odroid.c | 6 +-
sound/soc/samsung/pcm.c | 4 +-
sound/soc/samsung/rx1950_uda1380.c | 2 +-
sound/soc/samsung/s3c-i2s-v2.c | 2 +-
sound/soc/samsung/s3c24xx_simtec.c | 2 +-
sound/soc/samsung/s3c24xx_uda134x.c | 6 +-
sound/soc/samsung/smartq_wm8987.c | 2 +-
sound/soc/samsung/smdk_spdif.c | 2 +-
sound/soc/samsung/smdk_wm8580.c | 2 +-
sound/soc/samsung/smdk_wm8994.c | 2 +-
sound/soc/samsung/smdk_wm8994pcm.c | 2 +-
sound/soc/samsung/snow.c | 2 +-
sound/soc/samsung/spdif.c | 6 +-
sound/soc/samsung/tm2_wm5110.c | 8 +--
sound/soc/sh/dma-sh7760.c | 12 ++--
sound/soc/sh/fsi.c | 2 +-
sound/soc/sh/migor.c | 4 +-
sound/soc/sh/rcar/core.c | 4 +-
sound/soc/soc-component.c | 20 +++---
sound/soc/soc-dai.c | 8 +--
sound/soc/soc-dapm.c | 6 +-
sound/soc/soc-generic-dmaengine-pcm.c | 4 +-
sound/soc/soc-link.c | 12 ++--
sound/soc/soc-pcm.c | 62 +++++++++----------
sound/soc/soc-utils.c | 2 +-
sound/soc/sof/intel/hda-dai.c | 10 +--
sound/soc/sof/intel/hda-dsp.c | 2 +-
sound/soc/sof/intel/hda-pcm.c | 2 +-
sound/soc/sof/pcm.c | 18 +++---
sound/soc/sprd/sprd-pcm-dma.c | 2 +-
sound/soc/stm/stm32_adfsdm.c | 12 ++--
sound/soc/stm/stm32_sai_sub.c | 2 +-
sound/soc/sunxi/sun4i-codec.c | 12 ++--
sound/soc/sunxi/sun4i-spdif.c | 2 +-
sound/soc/tegra/tegra_alc5632.c | 2 +-
sound/soc/tegra/tegra_max98090.c | 2 +-
sound/soc/tegra/tegra_rt5640.c | 2 +-
sound/soc/tegra/tegra_rt5677.c | 2 +-
sound/soc/tegra/tegra_sgtl5000.c | 2 +-
sound/soc/tegra/tegra_wm8753.c | 2 +-
sound/soc/tegra/tegra_wm8903.c | 2 +-
sound/soc/tegra/trimslice.c | 2 +-
sound/soc/ti/davinci-evm.c | 6 +-
sound/soc/ti/davinci-vcif.c | 4 +-
sound/soc/ti/j721e-evm.c | 6 +-
sound/soc/ti/n810.c | 4 +-
sound/soc/ti/omap-abe-twl6040.c | 4 +-
sound/soc/ti/omap-mcbsp.c | 4 +-
sound/soc/ti/omap-twl4030.c | 2 +-
sound/soc/ti/omap3pandora.c | 2 +-
sound/soc/ti/osk5912.c | 2 +-
sound/soc/ti/rx51.c | 4 +-
sound/soc/uniphier/aio-dma.c | 6 +-
sound/soc/ux500/mop500_ab8500.c | 8 +--
sound/soc/ux500/ux500_pcm.c | 2 +-
sound/soc/xtensa/xtfpga-i2s.c | 2 +-
177 files changed, 397 insertions(+), 395 deletions(-)
--
2.25.1
|
|
Build errors are seen on 32-bit platforms because of a plain 64-by-32
division. For example, following build erros were reported.
"ERROR: modpost: "__udivdi3" [sound/soc/tegra/snd-soc-tegra210-dmic.ko]
undefined!"
"ERROR: modpost: "__divdi3" [sound/soc/tegra/snd-soc-tegra210-dmic.ko]
undefined!"
This can be fixed by using div_u64() helper from 'math64.h' header.
Fixes: 8c8ff982e9e2 ("ASoC: tegra: Add Tegra210 based DMIC driver")
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1595492011-2411-1-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Now we can use asoc_substream_to_rtd() macro,
let's use it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87sgdn0yv1.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Pujar <spujar@nvidia.com>:
Overview
========
Audio Processing Engine (APE) comprises of Audio DMA (ADMA) and Audio
Hub (AHUB) unit. AHUB is a collection of hardware accelerators for audio
pre-processing and post-processing. It also includes a programmable full
crossbar for routing audio data across these accelerators.
This series exposes some of these below mentioned HW devices as ASoC
components for Tegra platforms from Tegra210 onwards.
* ADMAIF : The interface between ADMA and AHUB
* XBAR : Crossbar for routing audio samples across various modules
* I2S : Inter-IC Sound Controller
* DMIC : Digital Microphone
* DSPK : Digital Speaker
Following is the summary of current series.
* Add YAML DT binding documentation for above mentioned modules.
* Helper function for ACIF programming is exposed for Tegra210 and later.
* Add ASoC driver components for each of the above modules.
* Build ACONNECT and ADMA drivers which are essential to realize audio
use case.
* Add DT entries for above components for Tegra210, Tegra186 and
Tegra194.
As per the suggestion in [0] audio graph based sound card support
is pushed in a separate series.
[0] https://lkml.org/lkml/2020/6/27/4
Changelog
=========
v4 -> v5
--------
* Common changes
- simple-card driver changes are dropped. Changes are migrated to audio
graph card and are moved to a separate series as suggested.
- '#sound-dai-cells' property is not needed for planned audio graph card
Hence dropped from documentation and related DT binding of component
drivers.
- CIF and DAP DAIs are added for I/O drivers (DMIC, DSPK, I2S) to
represent DAI links using audio graph card. Similary DAIs are added in
AHUB driver to describe endpoints in audio crossbar. Routing is updated
to reflect the same in drivers.
v3 -> v4
--------
* [1/23] "ASoC: dt-bindings: tegra: Add DT bindings for Tegra210"
- Removed multiple examples and retained one example per doc
- Fixed as per inputs on the previous series
- Tested bindings with 'make dt_binding_check/dtbs_check'
* [2/23] "ASoC: tegra: Add support for CIF programming"
- No change
* Common changes (for patch [3/10] to [7/10])
- Mixer control overrides, for PCM parameters (rate, channel, bits),
in each driver are dropped.
- Updated routing as per DPCM usage
- Minor changes related to formatting
* New changes (patch [8/23] to [18/23] and patch [23/23])
- Based on discussions in following threads DPCM is used for Tegra Audio.
https://lkml.org/lkml/2020/2/20/91
https://lkml.org/lkml/2020/4/30/519
- The simple-card driver is used for Tegra Audio and accordingly
some enhancements are made in simple-card and core drivers.
- Patch [8/23] to [18/23] are related to simple-card and core changes.
- Patch [23/23] adds sound card support to realize complete audio path.
This is based on simple-card driver with proposed enhancements.
- Re-ordered patches depending on above
v2 -> v3
--------
* [1/10] "dt-bindings: sound: tegra: add DT binding for AHUB
- Updated licence
- Removed redundancy w.r.t items/const/enum
- Added constraints wherever needed with "pattern" property
* [2/10] "ASoC: tegra: add support for CIF programming"
- Removed tegra_cif.c
- Instead added inline helper function in tegra_cif.h
* common changes (for patch [3/10] to [7/10])
- Replace LATE system calls with Normal sleep
- Remove explicit RPM suspend in driver remove() call
- Use devm_kzalloc() instead of devm_kcalloc() for single element
- Replace 'ret' with 'err' for better reading
- Consistent error printing style across drivers
- Minor formating fixes
* [8/10] "arm64: tegra: add AHUB components for few Tegra chips"
- no change
* [9/10] "arm64: tegra: enable AHUB modules for few Tegra chips"
- no change
* [10/10] "arm64: defconfig: enable AHUB components for Tegra210 and later"
(New patch)
- Enables ACONNECT and AHUB components. With this AHUB and components are
registered with ASoC core.
v1 -> v2
--------
* [1/9] "dt-bindings: sound: tegra: add DT binding for AHUB"
- no changes
* [2/9] "ASoC: tegra: add support for CIF programming"
- removed CIF programming changes for legacy chips.
- this patch now exposes helper function for CIF programming,
which can be used on Tegra210 later.
- later tegra_cif.c can be extended for legacy chips as well.
- updated commit message accordingly
* [3/9] "ASoC: tegra: add Tegra210 based DMIC driver"
- removed unnecessary initialization of 'ret' in probe()
* [4/9] "ASoC: tegra: add Tegra210 based I2S driver"
- removed unnecessary initialization of 'ret' in probe()
- fixed indentation
- added consistent bracing for if-else clauses
- updated 'rx_fifo_th' type to 'unsigned int'
- used BIT() macro for defines like '1 << {x}' in tegra210_i2s.h
* [5/9] "ASoC: tegra: add Tegra210 based AHUB driver"
- used of_device_get_match_data() to get 'soc_data' and removed
explicit of_match_device()
- used devm_platform_ioremap_resource() and removed explicit
platform_get_resource()
- fixed indentation for devm_snd_soc_register_component()
- updated commit message
- updated commit message to reflect compatible binding for Tegra186 and
Tegra194.
* [6/9] "ASoC: tegra: add Tegra186 based DSPK driver"
- removed unnecessary initialization of 'ret' in probe()
- updated 'max_th' to 'unsigned int'
- shortened lengthy macro names to avoid wrapping in
tegra186_dspk_wr_reg() and to be consistent
* [7/9] "ASoC: tegra: add Tegra210 based ADMAIF driver"
- used of_device_get_match_data() and removed explicit of_match_device()
- used BIT() macro for defines like '1 << {x}' in tegra210_admaif.h
- updated commit message to reflect compatible binding for Tegra186 and
Tegra194.
* [8/9] "arm64: tegra: add AHUB components for few Tegra chips"
- no change
* [9/9] "arm64: tegra: enable AHUB modules for few Tegra chips"
- no change
* common changes for patch [3/9] to [7/9]
- sorted headers in alphabetical order
- moved MODULE_DEVICE_TABLE() right below *_of_match table
- removed macro DRV_NAME
- removed explicit 'owner' field from platform_driver structure
- added 'const' to snd_soc_dai_ops structure
Sameer Pujar (11):
ASoC: dt-bindings: tegra: Add DT bindings for Tegra210
ASoC: tegra: Add support for CIF programming
ASoC: tegra: Add Tegra210 based DMIC driver
ASoC: tegra: Add Tegra210 based I2S driver
ASoC: tegra: Add Tegra210 based AHUB driver
ASoC: tegra: Add Tegra186 based DSPK driver
ASoC: tegra: Add Tegra210 based ADMAIF driver
arm64: defconfig: Build AHUB component drivers
arm64: defconfig: Build ADMA and ACONNECT driver
arm64: tegra: Enable ACONNECT, ADMA and AGIC on Jetson Nano
arm64: tegra: Add DT binding for AHUB components
.../bindings/sound/nvidia,tegra186-dspk.yaml | 83 +++
.../bindings/sound/nvidia,tegra210-admaif.yaml | 111 +++
.../bindings/sound/nvidia,tegra210-ahub.yaml | 136 ++++
.../bindings/sound/nvidia,tegra210-dmic.yaml | 83 +++
.../bindings/sound/nvidia,tegra210-i2s.yaml | 101 +++
arch/arm64/boot/dts/nvidia/tegra186.dtsi | 217 +++++-
arch/arm64/boot/dts/nvidia/tegra194.dtsi | 225 +++++-
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 12 +
arch/arm64/boot/dts/nvidia/tegra210.dtsi | 140 ++++
arch/arm64/configs/defconfig | 8 +
sound/soc/tegra/Kconfig | 56 ++
sound/soc/tegra/Makefile | 10 +
sound/soc/tegra/tegra186_dspk.c | 442 +++++++++++
sound/soc/tegra/tegra186_dspk.h | 70 ++
sound/soc/tegra/tegra210_admaif.c | 800 ++++++++++++++++++++
sound/soc/tegra/tegra210_admaif.h | 162 ++++
sound/soc/tegra/tegra210_ahub.c | 676 +++++++++++++++++
sound/soc/tegra/tegra210_ahub.h | 127 ++++
sound/soc/tegra/tegra210_dmic.c | 455 ++++++++++++
sound/soc/tegra/tegra210_dmic.h | 82 +++
sound/soc/tegra/tegra210_i2s.c | 812 +++++++++++++++++++++
sound/soc/tegra/tegra210_i2s.h | 126 ++++
sound/soc/tegra/tegra_cif.h | 65 ++
sound/soc/tegra/tegra_pcm.c | 235 +++++-
sound/soc/tegra/tegra_pcm.h | 21 +-
25 files changed, 5251 insertions(+), 4 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra186-dspk.yaml
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-admaif.yaml
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-dmic.yaml
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-i2s.yaml
create mode 100644 sound/soc/tegra/tegra186_dspk.c
create mode 100644 sound/soc/tegra/tegra186_dspk.h
create mode 100644 sound/soc/tegra/tegra210_admaif.c
create mode 100644 sound/soc/tegra/tegra210_admaif.h
create mode 100644 sound/soc/tegra/tegra210_ahub.c
create mode 100644 sound/soc/tegra/tegra210_ahub.h
create mode 100644 sound/soc/tegra/tegra210_dmic.c
create mode 100644 sound/soc/tegra/tegra210_dmic.h
create mode 100644 sound/soc/tegra/tegra210_i2s.c
create mode 100644 sound/soc/tegra/tegra210_i2s.h
create mode 100644 sound/soc/tegra/tegra_cif.h
--
2.7.4
|
|
ADMAIF is the interface between ADMA and AHUB. Each ADMA channel that
sends/receives data to/from AHUB must intreface through an ADMAIF channel.
ADMA channel sending data to AHUB pairs with an ADMAIF Tx channel and
similarly ADMA channel receiving data from AHUB pairs with an ADMAIF Rx
channel. Buffer size is configurable for each ADMAIF channel, but currently
SW uses default values.
This patch registers ADMAIF driver with ASoC framework. The component
driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
driver exposes ADMAIF interfaces, which can be used to connect different
components in the ASoC layer. Makefile and Kconfig support is added to
allow to build the driver. The ADMAIF device can be enabled in the DT via
"nvidia,tegra210-admaif" compatible binding.
Tegra PCM driver is updated to expose required PCM interfaces and
snd_pcm_ops callbacks.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1595134890-16470-8-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Pujar <spujar@nvidia.com>:
Overview
========
Audio Processing Engine (APE) comprises of Audio DMA (ADMA) and Audio
Hub (AHUB) unit. AHUB is a collection of hardware accelerators for audio
pre-processing and post-processing. It also includes a programmable full
crossbar for routing audio data across these accelerators.
This series exposes some of these below mentioned HW devices as ASoC
components for Tegra platforms from Tegra210 onwards.
* ADMAIF : The interface between ADMA and AHUB
* XBAR : Crossbar for routing audio samples across various modules
* I2S : Inter-IC Sound Controller
* DMIC : Digital Microphone
* DSPK : Digital Speaker
Following is the summary of current series.
* Add YAML DT binding documentation for above mentioned modules.
* Helper function for ACIF programming is exposed for Tegra210 and later.
* Add ASoC driver components for each of the above modules.
* Build ACONNECT and ADMA drivers which are essential to realize audio
use case.
* Add DT entries for above components for Tegra210, Tegra186 and
Tegra194.
As per the suggestion in [0] audio graph based sound card support
is pushed in a separate series.
[0] https://lkml.org/lkml/2020/6/27/4
Changelog
=========
v4 -> v5
--------
* Common changes
- simple-card driver changes are dropped. Changes are migrated to audio
graph card and are moved to a separate series as suggested.
- '#sound-dai-cells' property is not needed for planned audio graph card
Hence dropped from documentation and related DT binding of component
drivers.
- CIF and DAP DAIs are added for I/O drivers (DMIC, DSPK, I2S) to
represent DAI links using audio graph card. Similary DAIs are added in
AHUB driver to describe endpoints in audio crossbar. Routing is updated
to reflect the same in drivers.
v3 -> v4
--------
* [1/23] "ASoC: dt-bindings: tegra: Add DT bindings for Tegra210"
- Removed multiple examples and retained one example per doc
- Fixed as per inputs on the previous series
- Tested bindings with 'make dt_binding_check/dtbs_check'
* [2/23] "ASoC: tegra: Add support for CIF programming"
- No change
* Common changes (for patch [3/10] to [7/10])
- Mixer control overrides, for PCM parameters (rate, channel, bits),
in each driver are dropped.
- Updated routing as per DPCM usage
- Minor changes related to formatting
* New changes (patch [8/23] to [18/23] and patch [23/23])
- Based on discussions in following threads DPCM is used for Tegra Audio.
https://lkml.org/lkml/2020/2/20/91
https://lkml.org/lkml/2020/4/30/519
- The simple-card driver is used for Tegra Audio and accordingly
some enhancements are made in simple-card and core drivers.
- Patch [8/23] to [18/23] are related to simple-card and core changes.
- Patch [23/23] adds sound card support to realize complete audio path.
This is based on simple-card driver with proposed enhancements.
- Re-ordered patches depending on above
v2 -> v3
--------
* [1/10] "dt-bindings: sound: tegra: add DT binding for AHUB
- Updated licence
- Removed redundancy w.r.t items/const/enum
- Added constraints wherever needed with "pattern" property
* [2/10] "ASoC: tegra: add support for CIF programming"
- Removed tegra_cif.c
- Instead added inline helper function in tegra_cif.h
* common changes (for patch [3/10] to [7/10])
- Replace LATE system calls with Normal sleep
- Remove explicit RPM suspend in driver remove() call
- Use devm_kzalloc() instead of devm_kcalloc() for single element
- Replace 'ret' with 'err' for better reading
- Consistent error printing style across drivers
- Minor formating fixes
* [8/10] "arm64: tegra: add AHUB components for few Tegra chips"
- no change
* [9/10] "arm64: tegra: enable AHUB modules for few Tegra chips"
- no change
* [10/10] "arm64: defconfig: enable AHUB components for Tegra210 and later"
(New patch)
- Enables ACONNECT and AHUB components. With this AHUB and components are
registered with ASoC core.
v1 -> v2
--------
* [1/9] "dt-bindings: sound: tegra: add DT binding for AHUB"
- no changes
* [2/9] "ASoC: tegra: add support for CIF programming"
- removed CIF programming changes for legacy chips.
- this patch now exposes helper function for CIF programming,
which can be used on Tegra210 later.
- later tegra_cif.c can be extended for legacy chips as well.
- updated commit message accordingly
* [3/9] "ASoC: tegra: add Tegra210 based DMIC driver"
- removed unnecessary initialization of 'ret' in probe()
* [4/9] "ASoC: tegra: add Tegra210 based I2S driver"
- removed unnecessary initialization of 'ret' in probe()
- fixed indentation
- added consistent bracing for if-else clauses
- updated 'rx_fifo_th' type to 'unsigned int'
- used BIT() macro for defines like '1 << {x}' in tegra210_i2s.h
* [5/9] "ASoC: tegra: add Tegra210 based AHUB driver"
- used of_device_get_match_data() to get 'soc_data' and removed
explicit of_match_device()
- used devm_platform_ioremap_resource() and removed explicit
platform_get_resource()
- fixed indentation for devm_snd_soc_register_component()
- updated commit message
- updated commit message to reflect compatible binding for Tegra186 and
Tegra194.
* [6/9] "ASoC: tegra: add Tegra186 based DSPK driver"
- removed unnecessary initialization of 'ret' in probe()
- updated 'max_th' to 'unsigned int'
- shortened lengthy macro names to avoid wrapping in
tegra186_dspk_wr_reg() and to be consistent
* [7/9] "ASoC: tegra: add Tegra210 based ADMAIF driver"
- used of_device_get_match_data() and removed explicit of_match_device()
- used BIT() macro for defines like '1 << {x}' in tegra210_admaif.h
- updated commit message to reflect compatible binding for Tegra186 and
Tegra194.
* [8/9] "arm64: tegra: add AHUB components for few Tegra chips"
- no change
* [9/9] "arm64: tegra: enable AHUB modules for few Tegra chips"
- no change
* common changes for patch [3/9] to [7/9]
- sorted headers in alphabetical order
- moved MODULE_DEVICE_TABLE() right below *_of_match table
- removed macro DRV_NAME
- removed explicit 'owner' field from platform_driver structure
- added 'const' to snd_soc_dai_ops structure
Sameer Pujar (11):
ASoC: dt-bindings: tegra: Add DT bindings for Tegra210
ASoC: tegra: Add support for CIF programming
ASoC: tegra: Add Tegra210 based DMIC driver
ASoC: tegra: Add Tegra210 based I2S driver
ASoC: tegra: Add Tegra210 based AHUB driver
ASoC: tegra: Add Tegra186 based DSPK driver
ASoC: tegra: Add Tegra210 based ADMAIF driver
arm64: defconfig: Build AHUB component drivers
arm64: defconfig: Build ADMA and ACONNECT driver
arm64: tegra: Enable ACONNECT, ADMA and AGIC on Jetson Nano
arm64: tegra: Add DT binding for AHUB components
.../bindings/sound/nvidia,tegra186-dspk.yaml | 83 +++
.../bindings/sound/nvidia,tegra210-admaif.yaml | 111 +++
.../bindings/sound/nvidia,tegra210-ahub.yaml | 136 ++++
.../bindings/sound/nvidia,tegra210-dmic.yaml | 83 +++
.../bindings/sound/nvidia,tegra210-i2s.yaml | 101 +++
arch/arm64/boot/dts/nvidia/tegra186.dtsi | 217 +++++-
arch/arm64/boot/dts/nvidia/tegra194.dtsi | 225 +++++-
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 12 +
arch/arm64/boot/dts/nvidia/tegra210.dtsi | 140 ++++
arch/arm64/configs/defconfig | 8 +
sound/soc/tegra/Kconfig | 56 ++
sound/soc/tegra/Makefile | 10 +
sound/soc/tegra/tegra186_dspk.c | 442 +++++++++++
sound/soc/tegra/tegra186_dspk.h | 70 ++
sound/soc/tegra/tegra210_admaif.c | 800 ++++++++++++++++++++
sound/soc/tegra/tegra210_admaif.h | 162 ++++
sound/soc/tegra/tegra210_ahub.c | 676 +++++++++++++++++
sound/soc/tegra/tegra210_ahub.h | 127 ++++
sound/soc/tegra/tegra210_dmic.c | 455 ++++++++++++
sound/soc/tegra/tegra210_dmic.h | 82 +++
sound/soc/tegra/tegra210_i2s.c | 812 +++++++++++++++++++++
sound/soc/tegra/tegra210_i2s.h | 126 ++++
sound/soc/tegra/tegra_cif.h | 65 ++
sound/soc/tegra/tegra_pcm.c | 235 +++++-
sound/soc/tegra/tegra_pcm.h | 21 +-
25 files changed, 5251 insertions(+), 4 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra186-dspk.yaml
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-admaif.yaml
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-dmic.yaml
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-i2s.yaml
create mode 100644 sound/soc/tegra/tegra186_dspk.c
create mode 100644 sound/soc/tegra/tegra186_dspk.h
create mode 100644 sound/soc/tegra/tegra210_admaif.c
create mode 100644 sound/soc/tegra/tegra210_admaif.h
create mode 100644 sound/soc/tegra/tegra210_ahub.c
create mode 100644 sound/soc/tegra/tegra210_ahub.h
create mode 100644 sound/soc/tegra/tegra210_dmic.c
create mode 100644 sound/soc/tegra/tegra210_dmic.h
create mode 100644 sound/soc/tegra/tegra210_i2s.c
create mode 100644 sound/soc/tegra/tegra210_i2s.h
create mode 100644 sound/soc/tegra/tegra_cif.h
--
2.7.4
|
|
Delete the doubled word "to" in two comments.
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: alsa-devel@alsa-project.org
Link: https://lore.kernel.org/r/20200719180912.30770-1-rdunlap@infradead.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The Digital Speaker Controller (DSPK) converts the multi-bit Pulse Code
Modulation (PCM) audio input to oversampled 1-bit Pulse Density Modulation
(PDM) output. From the signal flow perpsective, the DSPK can be viewed as
a PDM transmitter that up-samples the input to the desired sampling rate
by interpolation then converts the oversampled PCM input to the desired
1-bit output via Delta Sigma Modulation (DSM).
This patch registers DSPK component with ASoC framework. The component
driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
driver exposes DSPK interfaces, which can be used to connect different
components in the ASoC layer. Makefile and Kconfig support is added to
allow to build the driver. The DSPK devices can be enabled in the DT via
"nvidia,tegra186-dspk" compatible binding. This driver can be used
on Tegra194 chip as well.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1595134890-16470-7-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The Audio Hub (AHUB) comprises a collection of hardware accelerators for
audio pre/post-processing and a programmable full crossbar (XBAR) for
routing audio data across these accelerators in time and in parallel.
AHUB supports multiple interfaces to I2S, DSPK, DMIC etc., XBAR is a
switch used to configure or modify audio routing between HW accelerators
present inside AHUB.
This patch registers AHUB component with ASoC framework. The component
driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
driver exposes AHUB interfaces, which can be used to connect different
components in the ASoC layer. Currently the driver takes care of XBAR
programming to allow audio data flow through various clients of the AHUB.
Makefile and Kconfig support is added to allow to build the driver. The
AHUB component can be enabled in the DT via below compatible bindings.
- "nvidia,tegra210-ahub" for Tegra210
- "nvidia,tegra186-ahub" for Tegra186 and Tegra194
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1595134890-16470-6-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The Inter-IC Sound (I2S) controller implements full-duplex, bi-directional
and single direction point to point serial interface. It can interface
with I2S compatible devices. Tegra I2S controller can operate as both
master and slave.
This patch registers I2S controller with ASoC framework. The component
driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
driver exposes I2S interfaces, which can be used to connect different
components in the ASoC layer. Makefile and Kconfig support is added to
allow to build the driver. The I2S devices can be enabled in the DT via
"nvidia,tegra210-i2s" compatible binding.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1595134890-16470-5-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The Digital MIC (DMIC) Controller is used to interface with Pulse Density
Modulation (PDM) input devices. The DMIC controller implements a converter
to convert PDM signals to Pulse Code Modulation (PCM) signals. From signal
flow perspective, the DMIC can be viewed as a PDM receiver.
This patch registers DMIC component with ASoC framework. The component
driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
driver exposes DMIC interfaces, which can be used to connect different
components in the ASoC layer. Makefile and Kconfig support is added to
allow to build the driver. The DMIC devices can be enabled in the DT via
"nvidia,tegra210-dmic" compatible string. This driver can be used for
Tegra186 and Tegra194 chips as well.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1595134890-16470-4-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Audio Client Interface (CIF) is a proprietary interface employed to route
audio samples through Audio Hub (AHUB) components by inter connecting the
various modules.
This patch exports an inline function tegra_set_cif() which can be used,
for now, to program CIF on Tegra210 and later Tegra generations. Later it
can be extended to include helpers for legacy chips as well.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/1595134890-16470-3-git-send-email-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Fix W=1 warning:
sound/soc//tegra/tegra20_das.c:101:11: warning:
comparison of unsigned expression >= 0 is always true [-Wtype-limits]
101 | if ((reg >= TEGRA20_DAS_DAP_CTRL_SEL) &&
| ^~
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20200707190612.97799-5-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Calling pm_runtime_get_sync increments the counter even in case of
failure, causing incorrect ref count if pm_runtime_put is not called in
error handling paths. Call pm_runtime_put if pm_runtime_get_sync fails.
Signed-off-by: Qiushi Wu <wu000273@umn.edu>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20200613204422.24484-1-wu000273@umn.edu
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Using devm_snd_soc_register_card() can make the code
shorter and cleaner.
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Link: https://lore.kernel.org/r/20200428110742.110335-1-weiyongjun1@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.8
|
|
Tegra PMC clock clk_out_1 is dedicated for audio mclk from Tegra30
through Tegra210 and currently Tegra clock driver keeps the audio mclk
enabled.
With the move of PMC clocks from clock driver into pmc driver, audio
mclk enable from clock driver is removed and this should be taken care
of by the audio driver.
tegra_asoc_utils_init() calls tegra_asoc_utils_set_rate() and audio mclk
rate configuration is not needed during init and the rate is actually
set during the ->hw_params() callback.
So, this patch removes tegra_asoc_utils_set_rate() call and just leaves
the audio mclk enabled.
Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
Tested-by: Dmitry Osipenko <digetx@gmail.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
|
|
Tegra PMC clock clk_out_1 is dedicated for audio mclk from Tegra30
through Tegra210 and currently Tegra clock driver does the initial
parent configuration for audio mclk and keeps it enabled by default.
With the move of PMC clocks from clock driver into PMC driver, audio
clocks parent configuration can be specified through the device tree
using assigned-clock-parents property and audio mclk control should be
taken care of by the audio driver.
This patch has implementation for parent configuration when default
parent configuration through assigned-clock-parents property is not
specified in the device tree.
Tested-by: Dmitry Osipenko <digetx@gmail.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
|
|
tegra_asoc_utils uses clk_get() to get the clock and clk_put() to free
them explicitly.
This patch updates it to use device managed resource API devm_clk_get()
so the clock will be automatically released and freed when the device is
unbound and removes tegra_asoc_utils_fini() as its no longer needed.
Tested-by: Dmitry Osipenko <digetx@gmail.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
|
|
The microphone-jack state needs to be masked in a case of a 4-pin jack
when microphone and ground pins are shorted. Presence of nvidia,headset
tells that WM8903 CODEC driver should mask microphone's status if short
circuit is detected, i.e headphones are inserted.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20200330204011.18465-3-digetx@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/877dzbir3w.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The enable-GPIO needs to be toggled on a DAPM event in order to turn
microphone ON/OFF, otherwise microphone won't work.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20200320205504.30466-3-digetx@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Commit f3ee99087c8ca0ecfdd549ef5a94f557c42d5428 ("ASoC: tegra: Allow
24bit and 32bit samples") added 24-bit and 32-bit support for to the
Tegra30 I2S driver. However, there are two additional commits that are
also needed to get 24-bit and 32-bit support to work correctly. These
commits are not yet applied because there are still some review comments
that need to be addressed. With only this change applied, 24-bit and
32-bit support is advertised by the I2S driver, but it does not work and
the audio is distorted. Therefore, revert this patch for now until the
other changes are also ready.
Furthermore, a clock issue with 24-bit support has been identified with
this change and so if we revert this now, we can also fix that in the
updated version.
Reported-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20200131091901.13014-1-jonathanh@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
|
|
Now, snd_soc_dai_driver::bus_control is used for how to resume.
But, no driver which has bus_control has DAI driver suspend/resume
support.
This patch removes pointless bus_control from ALSA SoC.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87pnffx7i4.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Current snd_soc_get_pcm_runtime() is finding rtd by checking dai_link
name. But, it is strange and waste of CPU power, because its user want
to get from rtd from dai_link, not from dai_link name.
This patch find rtd via dai_link pointer instead of its name.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/87a781yq67.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We see odd FIFO overruns with this, we assume the best thing to do is
to disable the RX I2S frontend first, and then disable the FIFO that
is using it.
This also fixes an issue where using multi-word frames (TDM) have
partial samples stuck in the FIFO which then get read out when the
next capture is started.
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20191018154833.7560-5-ben.dooks@codethink.co.uk
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Add a callback to configure TDM settings for the Tegra30 I2S ASoC 'platform'
driver.
Signed-off-by: Edward Cragg <edward.cragg@codethink.co.uk>
[ben.dooks@codethink.co.uk: merge fix for power management]
[ben.dooks@codethink.co.uk: add review change for fsync of 1 clock]
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20191018154833.7560-2-ben.dooks@codethink.co.uk
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The tegra3 audio can support 24 and 32 bit sample sizes so add the
option to the tegra30_i2s_hw_params to configure the S24_LE or S32_LE
formats when requested.
Signed-off-by: Edward Cragg <edward.cragg@codethink.co.uk>
[ben.dooks@codethink.co.uk: fixup merge of 24 and 32bit]
[ben.dooks@codethink.co.uk: add pm calls around ytdm config]
[ben.dooks@codethink.co.uk: drop debug printing to dev_dbg]
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20191018154833.7560-3-ben.dooks@codethink.co.uk
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Use devm_platform_ioremap_resource() to simplify the code a bit.
This is detected by coccinelle.
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Link: https://lore.kernel.org/r/20190904083909.18804-1-yuehaibing@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|