Merge series "ASoC: qcom: Add support for SC7180 lpass variant" from Rohit kumar <rohitkr@codeaurora.org>:
This patch chain add audio support for SC7180 soc by doing the required modification in existing common lpass-cpu/lpass-platform driver. This also fixes some concurrency issue. This patch series is already tested by Srinivas on Dragon Board 410c. Changes since v5: - Fixed remove api in lpass-sc7180.c - Addressed comments by Rob in yaml Documentation. Ajit Pandey (4): ASoC: qcom: Add common array to initialize soc based core clocks ASoC: qcom: lpass-platform: Replace card->dev with component->dev include: dt-bindings: sound: Add sc7180-lpass bindings header ASoC: qcom: lpass-sc7180: Add platform driver for lpass audio Rohit kumar (8): ASoC: qcom: lpass-cpu: Move ahbix clk to platform specific function ASoC: qcom: lpass-platform: fix memory leak ASoC: qcom: lpass: Use regmap_field for i2sctl and dmactl registers ASoC: qcom: lpass-cpu: fix concurrency issue dt-bindings: sound: lpass-cpu: Add sc7180 lpass cpu node ASoC: qcom: lpass-cpu: Use platform_get_resource ASoC: qcom: lpass-platform: Use platform_get_irq dt-bindings: sound: lpass-cpu: Move to yaml format .../devicetree/bindings/sound/qcom,lpass-cpu.txt | 79 -------- .../devicetree/bindings/sound/qcom,lpass-cpu.yaml | 189 ++++++++++++++++++ include/dt-bindings/sound/sc7180-lpass.h | 10 + sound/soc/qcom/Kconfig | 5 + sound/soc/qcom/Makefile | 2 + sound/soc/qcom/lpass-apq8016.c | 86 ++++++-- sound/soc/qcom/lpass-cpu.c | 204 ++++++++++--------- sound/soc/qcom/lpass-ipq806x.c | 67 +++++++ sound/soc/qcom/lpass-lpaif-reg.h | 157 ++++++++------- sound/soc/qcom/lpass-platform.c | 155 +++++++++++---- sound/soc/qcom/lpass-sc7180.c | 216 +++++++++++++++++++++ sound/soc/qcom/lpass.h | 63 +++++- 12 files changed, 934 insertions(+), 299 deletions(-) delete mode 100644 Documentation/devicetree/bindings/sound/qcom,lpass-cpu.txt create mode 100644 Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml create mode 100644 include/dt-bindings/sound/sc7180-lpass.h create mode 100644 sound/soc/qcom/lpass-sc7180.c -- Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc., is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.
This commit is contained in:
@@ -1,79 +0,0 @@
|
||||
* Qualcomm Technologies LPASS CPU DAI
|
||||
|
||||
This node models the Qualcomm Technologies Low-Power Audio SubSystem (LPASS).
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : "qcom,lpass-cpu" or "qcom,apq8016-lpass-cpu"
|
||||
- clocks : Must contain an entry for each entry in clock-names.
|
||||
- clock-names : A list which must include the following entries:
|
||||
* "ahbix-clk"
|
||||
* "mi2s-osr-clk"
|
||||
* "mi2s-bit-clk"
|
||||
: required clocks for "qcom,lpass-cpu-apq8016"
|
||||
* "ahbix-clk"
|
||||
* "mi2s-bit-clk0"
|
||||
* "mi2s-bit-clk1"
|
||||
* "mi2s-bit-clk2"
|
||||
* "mi2s-bit-clk3"
|
||||
* "pcnoc-mport-clk"
|
||||
* "pcnoc-sway-clk"
|
||||
|
||||
- interrupts : Must contain an entry for each entry in
|
||||
interrupt-names.
|
||||
- interrupt-names : A list which must include the following entries:
|
||||
* "lpass-irq-lpaif"
|
||||
- pinctrl-N : One property must exist for each entry in
|
||||
pinctrl-names. See ../pinctrl/pinctrl-bindings.txt
|
||||
for details of the property values.
|
||||
- pinctrl-names : Must contain a "default" entry.
|
||||
- reg : Must contain an address for each entry in reg-names.
|
||||
- reg-names : A list which must include the following entries:
|
||||
* "lpass-lpaif"
|
||||
- #address-cells : Must be 1
|
||||
- #size-cells : Must be 0
|
||||
|
||||
|
||||
|
||||
Optional properties:
|
||||
|
||||
- qcom,adsp : Phandle for the audio DSP node
|
||||
|
||||
By default, the driver uses up to 4 MI2S SD lines, for a total of 8 channels.
|
||||
The SD lines to use can be configured by adding subnodes for each of the DAIs.
|
||||
|
||||
Required properties for each DAI (represented by a subnode):
|
||||
- reg : Must be one of the DAI IDs
|
||||
(usually part of dt-bindings header)
|
||||
- qcom,playback-sd-lines: List of serial data lines to use for playback
|
||||
Each SD line should be represented by a number from 0-3.
|
||||
- qcom,capture-sd-lines : List of serial data lines to use for capture
|
||||
Each SD line should be represented by a number from 0-3.
|
||||
|
||||
Note that adding a subnode changes the default to "no lines configured",
|
||||
so both playback and capture lines should be configured when a subnode is added.
|
||||
|
||||
Example:
|
||||
|
||||
lpass@28100000 {
|
||||
compatible = "qcom,lpass-cpu";
|
||||
clocks = <&lcc AHBIX_CLK>, <&lcc MI2S_OSR_CLK>, <&lcc MI2S_BIT_CLK>;
|
||||
clock-names = "ahbix-clk", "mi2s-osr-clk", "mi2s-bit-clk";
|
||||
interrupts = <0 85 1>;
|
||||
interrupt-names = "lpass-irq-lpaif";
|
||||
pinctrl-names = "default", "idle";
|
||||
pinctrl-0 = <&mi2s_default>;
|
||||
pinctrl-1 = <&mi2s_idle>;
|
||||
reg = <0x28100000 0x10000>;
|
||||
reg-names = "lpass-lpaif";
|
||||
qcom,adsp = <&adsp>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* Optional to set different MI2S SD lines */
|
||||
dai@3 {
|
||||
reg = <MI2S_QUATERNARY>;
|
||||
qcom,playback-sd-lines = <0 1>;
|
||||
};
|
||||
};
|
189
Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml
Normal file
189
Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml
Normal file
@@ -0,0 +1,189 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/sound/qcom,lpass-cpu.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Technologies Inc. LPASS CPU dai driver bindings
|
||||
|
||||
maintainers:
|
||||
- Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
- Rohit kumar <rohitkr@codeaurora.org>
|
||||
|
||||
description: |
|
||||
Qualcomm Technologies Inc. SOC Low-Power Audio SubSystem (LPASS) that consist
|
||||
of MI2S interface for audio data transfer on external codecs. LPASS cpu driver
|
||||
is a module to configure Low-Power Audio Interface(LPAIF) core registers
|
||||
across different IP versions.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,lpass-cpu
|
||||
- qcom,apq8016-lpass-cpu
|
||||
- qcom,sc7180-lpass-cpu
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
description: LPAIF core registers
|
||||
|
||||
clocks:
|
||||
minItems: 3
|
||||
maxItems: 6
|
||||
|
||||
clock-names:
|
||||
minItems: 3
|
||||
maxItems: 6
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
description: LPAIF DMA buffer interrupt
|
||||
|
||||
qcom,adsp:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description: Phandle for the audio DSP node
|
||||
|
||||
iommus:
|
||||
maxItems: 1
|
||||
description: Phandle to apps_smmu node with sid mask
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
'#sound-dai-cells':
|
||||
const: 1
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
patternProperties:
|
||||
"(^mi2s-[0-9a-f]$|mi2s)":
|
||||
type: object
|
||||
description: Required properties for each DAI
|
||||
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
description: Must be one of the DAI ID
|
||||
|
||||
qcom,playback-sd-lines:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
description: list of MI2S data lines for playback
|
||||
|
||||
qcom,capture-sd-lines:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
description: list of MI2S data lines for capture
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- interrupts
|
||||
- '#sound-dai-cells'
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: qcom,lpass-cpu
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: ahbix-clk
|
||||
- const: mi2s-osr-clk
|
||||
- const: mi2s-bit-clk
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: qcom,apq8016-lpass-cpu
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: ahbix-clk
|
||||
- const: mi2s-bit-clk0
|
||||
- const: mi2s-bit-clk1
|
||||
- const: mi2s-bit-clk2
|
||||
- const: mi2s-bit-clk3
|
||||
- const: pcnoc-mport-clk
|
||||
- const: pcnoc-sway-clk
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: qcom,sc7180-lpass-cpu
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: pcnoc-sway-clk
|
||||
- const: audio-core
|
||||
- const: mclk0
|
||||
- const: pcnoc-mport-clk
|
||||
- const: mi2s-bit-clk0
|
||||
- const: mi2s-bit-clk1
|
||||
required:
|
||||
- iommus
|
||||
- power-domains
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/sound/sc7180-lpass.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
lpass@62f00000 {
|
||||
compatible = "qcom,sc7180-lpass-cpu";
|
||||
|
||||
reg = <0 0x62f00000 0 0x29000>;
|
||||
|
||||
iommus = <&apps_smmu 0x1020 0>;
|
||||
power-domains = <&lpass_hm 0>;
|
||||
|
||||
clocks = <&gcc 131>,
|
||||
<&lpasscorecc 6>,
|
||||
<&lpasscorecc 7>,
|
||||
<&lpasscorecc 10>,
|
||||
<&lpasscorecc 8>,
|
||||
<&lpasscorecc 9>;
|
||||
|
||||
clock-names = "pcnoc-sway-clk", "audio-core",
|
||||
"mclk0", "pcnoc-mport-clk",
|
||||
"mi2s-bit-clk0", "mi2s-bit-clk1";
|
||||
|
||||
interrupts = <0 160 1>;
|
||||
|
||||
#sound-dai-cells = <1>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
/* Optional to set different MI2S SD lines */
|
||||
mi2s-primary@0 {
|
||||
reg = <MI2S_PRIMARY>;
|
||||
qcom,playback-sd-lines = <1>;
|
||||
qcom,capture-sd-lines = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
...
|
Reference in New Issue
Block a user