Skip to content

Commit

Permalink
Fix sound on ASUS Transformers
Browse files Browse the repository at this point in the history
Merge series from Svyatoslav Ryhel <clamor95@gmail.com>:

- add quirk for headset detection used by some T30 devices
  (ASUS Transformers, LG Optimus 4X HD and Vu);
- add RT5631 and MAX9808x machine drivers
- update bindings

---
Changes from v1
- fm34 dropped for re-work
- quirk for headset detection and rt5631 bringup splitted
- minor adjustments in binding updates
- improvement of rt5631 rate asignment
---

David Heidelberg (1):
  dt-bindings: sound: nvidia,tegra-audio: add RT5631 CODEC

Svyatoslav Ryhel (7):
  dt-bindings: sound: nvidia,tegra-audio-common: add
    coupled-mic-hp-detect property
  ASoC: tegra: Support coupled mic-hp detection
  ARM: tegra: transformers: update sound nodes
  ASoC: tegra: Support RT5631 by machine driver
  ARM: tegra: transformers: bind RT5631 sound nodes
  dt-bindings: sound: nvidia,tegra-audio: add MAX9808x CODEC
  ASoC: tegra: Support MAX9808x by machine driver

 .../sound/nvidia,tegra-audio-common.yaml      |   4 +
 .../sound/nvidia,tegra-audio-max9808x.yaml    |  90 +++++++++++++
 .../sound/nvidia,tegra-audio-rt5631.yaml      |  85 ++++++++++++
 arch/arm/boot/dts/tegra20-asus-tf101.dts      |   7 +-
 arch/arm/boot/dts/tegra30-asus-tf201.dts      |  17 +++
 arch/arm/boot/dts/tegra30-asus-tf300t.dts     |   5 +-
 arch/arm/boot/dts/tegra30-asus-tf300tg.dts    |  17 +++
 arch/arm/boot/dts/tegra30-asus-tf700t.dts     |  17 +++
 .../dts/tegra30-asus-transformer-common.dtsi  |   9 +-
 sound/soc/tegra/Kconfig                       |  18 +++
 sound/soc/tegra/tegra_asoc_machine.c          | 125 +++++++++++++++++-
 11 files changed, 380 insertions(+), 14 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max9808x.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5631.yaml

--
2.37.2
  • Loading branch information
Mark Brown committed Mar 20, 2023
2 parents 9934844 + 85a375f commit be7a2da
Show file tree
Hide file tree
Showing 5 changed files with 318 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,8 @@ properties:
type: boolean
description: The Mic Jack represents state of the headset microphone pin

nvidia,coupled-mic-hp-det:
type: boolean
description: The Mic detect GPIO is viable only if HP detect GPIO is active

additionalProperties: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-max9808x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NVIDIA Tegra audio complex with MAX9808x CODEC

maintainers:
- Jon Hunter <jonathanh@nvidia.com>
- Thierry Reding <thierry.reding@gmail.com>

allOf:
- $ref: nvidia,tegra-audio-common.yaml#

properties:
compatible:
oneOf:
- items:
- pattern: '^[a-z0-9]+,tegra-audio-max98088(-[a-z0-9]+)+$'
- const: nvidia,tegra-audio-max98088
- items:
- pattern: '^[a-z0-9]+,tegra-audio-max98089(-[a-z0-9]+)+$'
- const: nvidia,tegra-audio-max98089

nvidia,audio-routing:
$ref: /schemas/types.yaml#/definitions/non-unique-string-array
description: |
A list of the connections between audio components.
Each entry is a pair of strings, the first being the connection's sink,
the second being the connection's source. Valid names for sources and
sinks are the pins (documented in the binding document),
and the jacks on the board.
minItems: 2
items:
enum:
# Board Connectors
- "Int Spk"
- "Headphone Jack"
- "Earpiece"
- "Headset Mic"
- "Internal Mic 1"
- "Internal Mic 2"

# CODEC Pins
- HPL
- HPR
- SPKL
- SPKR
- RECL
- RECR
- INA1
- INA2
- INB1
- INB2
- MIC1
- MIC2
- MICBIAS

unevaluatedProperties: false

examples:
- |
#include <dt-bindings/clock/tegra30-car.h>
#include <dt-bindings/soc/tegra-pmc.h>
sound {
compatible = "lge,tegra-audio-max98089-p895",
"nvidia,tegra-audio-max98089";
nvidia,model = "LG Optimus Vu MAX98089";
nvidia,audio-routing =
"Headphone Jack", "HPL",
"Headphone Jack", "HPR",
"Int Spk", "SPKL",
"Int Spk", "SPKR",
"Earpiece", "RECL",
"Earpiece", "RECR",
"INA1", "Headset Mic",
"MIC1", "MICBIAS",
"MICBIAS", "Internal Mic 1",
"MIC2", "Internal Mic 2";
nvidia,i2s-controller = <&tegra_i2s0>;
nvidia,audio-codec = <&codec>;
clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
<&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
<&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
clock-names = "pll_a", "pll_a_out0", "mclk";
};
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,tegra-audio-rt5631.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NVIDIA Tegra audio complex with RT5631 CODEC

maintainers:
- Jon Hunter <jonathanh@nvidia.com>
- Thierry Reding <thierry.reding@gmail.com>

allOf:
- $ref: nvidia,tegra-audio-common.yaml#

properties:
compatible:
items:
- pattern: '^[a-z0-9]+,tegra-audio-rt5631(-[a-z0-9]+)+$'
- const: nvidia,tegra-audio-rt5631

nvidia,audio-routing:
$ref: /schemas/types.yaml#/definitions/non-unique-string-array
description: |
A list of the connections between audio components.
Each entry is a pair of strings, the first being the connection's sink,
the second being the connection's source. Valid names for sources and
sinks are the pins (documented in the binding document),
and the jacks on the board.
minItems: 2
items:
enum:
# Board Connectors
- "Int Spk"
- "Headphone Jack"
- "Mic Jack"
- "Int Mic"

# CODEC Pins
- MIC1
- MIC2
- AXIL
- AXIR
- MONOIN_RXN
- MONOIN_RXP
- DMIC
- MIC Bias1
- MIC Bias2
- MONO_IN
- AUXO1
- AUXO2
- SPOL
- SPOR
- HPOL
- HPOR
- MONO

unevaluatedProperties: false

examples:
- |
#include <dt-bindings/clock/tegra30-car.h>
#include <dt-bindings/soc/tegra-pmc.h>
sound {
compatible = "asus,tegra-audio-rt5631-tf700t",
"nvidia,tegra-audio-rt5631";
nvidia,model = "Asus Transformer Infinity TF700T RT5631";
nvidia,audio-routing =
"Headphone Jack", "HPOL",
"Headphone Jack", "HPOR",
"Int Spk", "SPOL",
"Int Spk", "SPOR",
"MIC1", "MIC Bias1",
"MIC Bias1", "Mic Jack",
"DMIC", "Int Mic";
nvidia,i2s-controller = <&tegra_i2s1>;
nvidia,audio-codec = <&rt5631>;
clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
<&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
<&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
clock-names = "pll_a", "pll_a_out0", "mclk";
};
18 changes: 18 additions & 0 deletions sound/soc/tegra/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,15 @@ config SND_SOC_TEGRA_AUDIO_GRAPH_CARD
config SND_SOC_TEGRA_MACHINE_DRV
tristate

config SND_SOC_TEGRA_RT5631
tristate "SoC Audio support for Tegra boards using an RT5631 codec"
depends on SND_SOC_TEGRA && I2C && GPIOLIB
select SND_SOC_TEGRA_MACHINE_DRV
select SND_SOC_RT5631
help
Say Y or M here if you want to add support for SoC audio on Tegra
boards using the RT5631 codec, such as Transformer.

config SND_SOC_TEGRA_RT5640
tristate "SoC Audio support for Tegra boards using an RT5640 codec"
depends on I2C && GPIOLIB
Expand Down Expand Up @@ -254,6 +263,15 @@ config SND_SOC_TEGRA_MAX98090
Say Y or M here if you want to add support for SoC audio on Tegra
boards using the MAX98090 codec, such as Venice2.

config SND_SOC_TEGRA_MAX98088
tristate "SoC Audio support for Tegra boards using a MAX9808x codec"
depends on I2C && GPIOLIB
select SND_SOC_TEGRA_MACHINE_DRV
select SND_SOC_MAX98088
help
Say Y or M here if you want to add support for SoC audio on Tegra
boards using the MAX98088 codec, such as LG X3.

config SND_SOC_TEGRA_RT5677
tristate "SoC Audio support for Tegra boards using a RT5677 codec"
depends on I2C && GPIOLIB
Expand Down
Loading

0 comments on commit be7a2da

Please sign in to comment.