-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support HDMI audio on NVIDIA Tegra20
Merge series from Dmitry Osipenko <digetx@gmail.com>: This series revives Tegra20 S/PDIF driver which was upstreamed long time ago, but never was used. It also turns Tegra DRM HDMI driver into HDMI audio CODEC provider. Finally, HDMI audio is enabled in device-trees. For now the audio is enable only for Acer A500 tablet and Toshiba AC100 netbook because they're already supported by upstream, later on ASUS TF101 tablet will join them. I based S/PDIF patches on Arnd's Bergmann patch from a separate series [1] that removes obsolete slave_id. This eases merging of the patches by removing the merge conflict. This is a note for Mark Brown. I also based this series on top of power management series [2]. I.e. [2] should be applied first, otherwise "Add S/PDIF node to Tegra20 device-tree" patch should have merge conflict. This is a note for Thierry. [1] https://patchwork.ozlabs.org/project/linux-tegra/list/?series=273312 [2] https://patchwork.ozlabs.org/project/linux-tegra/list/?series=274534 Changelog: v4: - Added patches that update multi_v7_defconfig with the enabled S/PDIF and APB DMA drivers. v3: - Renamed S/PDIF device-tree clocks as was suggested by Rob Herring. - Added r-bs and acks that were given by Rob Herring to v2. v2: - Corrected I2S yaml problem that was reported by the DT bot for v1 by removing the non-existent required clock-names property. - Removed assigned-clocks property from S/PDIF yaml since this property is now inherited from the clocks property. - Reordered the "tegra20: spdif: Set FIFO trigger level" patch, making it the first sound/soc patch in the series, like it was suggested by Mark Brown in the comment to v1. Also reworded commit message of this patch to *not* make it looks like it should be backported to stable kernels. Arnd Bergmann (1): ASoC: tegra20-spdif: stop setting slave_id Dmitry Osipenko (21): ASoC: dt-bindings: Add binding for Tegra20 S/PDIF ASoC: dt-bindings: tegra20-i2s: Convert to schema ASoC: dt-bindings: tegra20-i2s: Document new nvidia,fixed-parent-rate property dt-bindings: host1x: Document optional HDMI sound-dai-cells ASoC: tegra20: spdif: Set FIFO trigger level ASoC: tegra20: spdif: Support device-tree ASoC: tegra20: spdif: Improve driver's code ASoC: tegra20: spdif: Use more resource-managed helpers ASoC: tegra20: spdif: Reset hardware ASoC: tegra20: spdif: Support system suspend ASoC: tegra20: spdif: Filter out unsupported rates ASoC: tegra20: i2s: Filter out unsupported rates drm/tegra: hdmi: Unwind tegra_hdmi_init() errors drm/tegra: hdmi: Register audio CODEC on Tegra20 ARM: tegra_defconfig: Enable S/PDIF driver ARM: config: multi v7: Enable NVIDIA Tegra20 S/PDIF driver ARM: config: multi v7: Enable NVIDIA Tegra20 APB DMA driver ARM: tegra: Add S/PDIF node to Tegra20 device-tree ARM: tegra: Add HDMI audio graph to Tegra20 device-tree ARM: tegra: acer-a500: Enable S/PDIF and HDMI audio ARM: tegra: paz00: Enable S/PDIF and HDMI audio .../display/tegra/nvidia,tegra20-host1x.txt | 1 + .../bindings/sound/nvidia,tegra20-i2s.txt | 30 --- .../bindings/sound/nvidia,tegra20-i2s.yaml | 77 +++++++ .../bindings/sound/nvidia,tegra20-spdif.yaml | 85 ++++++++ .../boot/dts/tegra20-acer-a500-picasso.dts | 8 + arch/arm/boot/dts/tegra20-paz00.dts | 8 + arch/arm/boot/dts/tegra20.dtsi | 40 +++- arch/arm/configs/multi_v7_defconfig | 2 + arch/arm/configs/tegra_defconfig | 1 + drivers/gpu/drm/tegra/Kconfig | 3 + drivers/gpu/drm/tegra/hdmi.c | 168 +++++++++++++-- sound/soc/tegra/tegra20_i2s.c | 49 +++++ sound/soc/tegra/tegra20_spdif.c | 197 ++++++++++++------ sound/soc/tegra/tegra20_spdif.h | 1 + sound/soc/tegra/tegra_pcm.c | 6 + sound/soc/tegra/tegra_pcm.h | 1 + 16 files changed, 574 insertions(+), 103 deletions(-) delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.yaml create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra20-spdif.yaml -- 2.33.1
- Loading branch information
Showing
25 changed files
with
475 additions
and
150 deletions.
There are no files selected for viewing
30 changes: 0 additions & 30 deletions
30
Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt
This file was deleted.
Oops, something went wrong.
77 changes: 77 additions & 0 deletions
77
Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/sound/nvidia,tegra20-i2s.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: NVIDIA Tegra20 I2S Controller | ||
|
||
description: | | ||
The I2S Controller streams synchronous serial audio data between system | ||
memory and an external audio device. The controller supports the I2S Left | ||
Justified Mode, Right Justified Mode, and DSP mode formats. | ||
maintainers: | ||
- Thierry Reding <treding@nvidia.com> | ||
- Jon Hunter <jonathanh@nvidia.com> | ||
|
||
properties: | ||
compatible: | ||
const: nvidia,tegra20-i2s | ||
|
||
reg: | ||
maxItems: 1 | ||
|
||
resets: | ||
maxItems: 1 | ||
|
||
reset-names: | ||
const: i2s | ||
|
||
interrupts: | ||
maxItems: 1 | ||
|
||
clocks: | ||
minItems: 1 | ||
|
||
dmas: | ||
minItems: 2 | ||
|
||
dma-names: | ||
items: | ||
- const: rx | ||
- const: tx | ||
|
||
nvidia,fixed-parent-rate: | ||
description: | | ||
Specifies whether board prefers parent clock to stay at a fixed rate. | ||
This allows multiple Tegra20 audio components work simultaneously by | ||
limiting number of supportable audio rates. | ||
type: boolean | ||
|
||
required: | ||
- compatible | ||
- reg | ||
- resets | ||
- reset-names | ||
- interrupts | ||
- clocks | ||
- dmas | ||
- dma-names | ||
|
||
additionalProperties: false | ||
|
||
examples: | ||
- | | ||
i2s@70002800 { | ||
compatible = "nvidia,tegra20-i2s"; | ||
reg = <0x70002800 0x200>; | ||
interrupts = <45>; | ||
clocks = <&tegra_car 11>; | ||
resets = <&tegra_car 11>; | ||
reset-names = "i2s"; | ||
dmas = <&apbdma 21>, <&apbdma 21>; | ||
dma-names = "rx", "tx"; | ||
}; | ||
... |
85 changes: 85 additions & 0 deletions
85
Documentation/devicetree/bindings/sound/nvidia,tegra20-spdif.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/sound/nvidia,tegra20-spdif.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: NVIDIA Tegra20 S/PDIF Controller | ||
|
||
description: | | ||
The S/PDIF controller supports both input and output in serial audio | ||
digital interface format. The input controller can digitally recover | ||
a clock from the received stream. The S/PDIF controller is also used | ||
to generate the embedded audio for HDMI output channel. | ||
maintainers: | ||
- Thierry Reding <treding@nvidia.com> | ||
- Jon Hunter <jonathanh@nvidia.com> | ||
|
||
properties: | ||
compatible: | ||
const: nvidia,tegra20-spdif | ||
|
||
reg: | ||
maxItems: 1 | ||
|
||
resets: | ||
maxItems: 1 | ||
|
||
interrupts: | ||
maxItems: 1 | ||
|
||
clocks: | ||
minItems: 2 | ||
|
||
clock-names: | ||
items: | ||
- const: out | ||
- const: in | ||
|
||
dmas: | ||
minItems: 2 | ||
|
||
dma-names: | ||
items: | ||
- const: rx | ||
- const: tx | ||
|
||
"#sound-dai-cells": | ||
const: 0 | ||
|
||
nvidia,fixed-parent-rate: | ||
description: | | ||
Specifies whether board prefers parent clock to stay at a fixed rate. | ||
This allows multiple Tegra20 audio components work simultaneously by | ||
limiting number of supportable audio rates. | ||
type: boolean | ||
|
||
required: | ||
- compatible | ||
- reg | ||
- resets | ||
- interrupts | ||
- clocks | ||
- clock-names | ||
- dmas | ||
- dma-names | ||
- "#sound-dai-cells" | ||
|
||
additionalProperties: false | ||
|
||
examples: | ||
- | | ||
spdif@70002400 { | ||
compatible = "nvidia,tegra20-spdif"; | ||
reg = <0x70002400 0x200>; | ||
interrupts = <77>; | ||
clocks = <&clk 99>, <&clk 98>; | ||
clock-names = "out", "in"; | ||
resets = <&rst 10>; | ||
dmas = <&apbdma 3>, <&apbdma 3>; | ||
dma-names = "rx", "tx"; | ||
#sound-dai-cells = <0>; | ||
}; | ||
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.