mbox series

[v3,0/5] Qualcomm's lpass-hdmi ASoC driver to support audio over dp port

Message ID 1598855964-1042-1-git-send-email-srivasam@codeaurora.org
Headers show
Series Qualcomm's lpass-hdmi ASoC driver to support audio over dp port | expand

Message

Srinivasa Rao Mandadapu Aug. 31, 2020, 6:39 a.m. UTC
These patches are to support audio over DP port on Qualcomm's SC7180 LPASS Asoc.
It includes machine driver, cpu driver, platform driver updates for HDMI path support, 
device tree documention, lpass variant structure optimization and configuration changes.
These patches depends on the DP patch series 
https://patchwork.kernel.org/project/dri-devel/list/?series=332029

Changes Since v2:
	-- Audio buffer size(i.e. LPASS_PLATFORM_BUFFER_SIZE) in lpass-platform.c increased.

V Sujith Kumar Reddy (5):
  ASoC: Add sc7180-lpass binding header hdmi define
  ASoC: dt-bindings: Add dt binding for lpass hdmi
  ASoC: qcom: Add support for lpass hdmi driver
  ASoC: qcom: Add support for audio over DP
  ASoC: qcom: Optimise lpass variant structure

 .../devicetree/bindings/sound/qcom,lpass-cpu.yaml  |  51 +-
 include/dt-bindings/sound/sc7180-lpass.h           |   1 +
 sound/soc/qcom/Kconfig                             |   5 +
 sound/soc/qcom/Makefile                            |   2 +
 sound/soc/qcom/lpass-apq8016.c                     |  25 +-
 sound/soc/qcom/lpass-cpu.c                         |  92 ++-
 sound/soc/qcom/lpass-hdmi.c                        | 685 +++++++++++++++++++++
 sound/soc/qcom/lpass-hdmi.h                        | 129 ++++
 sound/soc/qcom/lpass-ipq806x.c                     |  25 +-
 sound/soc/qcom/lpass-lpaif-reg.h                   |  51 +-
 sound/soc/qcom/lpass-platform.c                    | 287 +++++++--
 sound/soc/qcom/lpass-sc7180.c                      | 147 ++++-
 sound/soc/qcom/lpass.h                             | 123 +++-
 13 files changed, 1472 insertions(+), 151 deletions(-)
 create mode 100644 sound/soc/qcom/lpass-hdmi.c
 create mode 100644 sound/soc/qcom/lpass-hdmi.h

Comments

Srinivas Kandagatla Sept. 4, 2020, 10:41 a.m. UTC | #1
On 31/08/2020 07:39, Srinivasa Rao Mandadapu wrote:
> From: V Sujith Kumar Reddy <vsujithk@codeaurora.org>
> 
> Adds bindings for lpass hdmi interface
> which can support audio path over dp.
> 
> Signed-off-by: Srinivasa Rao <srivasam@codeaurora.org>
> Signed-off-by: V Sujith Kumar Reddy <vsujithk@codeaurora.org>
> ---
>   .../devicetree/bindings/sound/qcom,lpass-cpu.yaml  | 51 ++++++++++++++++++++--
>   1 file changed, 47 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml b/Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml
> index 09c9bd2..7c2ac0c 100644
> --- a/Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml
> +++ b/Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml
> @@ -22,6 +22,7 @@ properties:
>         - qcom,lpass-cpu
>         - qcom,apq8016-lpass-cpu
>         - qcom,sc7180-lpass-cpu
> +      - qcom,sc7180-lpass-hdmi

Why do we need a new compatible per interface, IMO, you should just use 
the existing compatible.
Or please explain the reasons why we need this?

>   
>     reg:
>       maxItems: 1
> @@ -60,10 +61,12 @@ properties:
>       const: 0
>   
>   patternProperties:
> -  "(^mi2s-[0-9a-f]$|mi2s)":
> +  "^dai@[0-9a-f]$":
>       type: object
> -    description: Required properties for each DAI
> -
> +    description: |
> +      LPASS CPU dai node for each I2S device. Bindings of each node
> +      depends on the specific driver providing the functionality and
> +      properties.
>       properties:
>         reg:
>           maxItems: 1
> @@ -145,6 +148,22 @@ allOf:
>           - iommus
>           - power-domains
>   
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: qcom,sc7180-lpass-hdmi
> +    then:
> +      properties:
> +        clock-names:
> +          items:
> +            - const: pcnoc-sway-clk
> +            - const: audio-core
> +            - const: pcnoc-mport-clk
> +      required:
> +        - iommus
> +        - power-domains
> +
>   examples:
>     - |
>       #include <dt-bindings/sound/sc7180-lpass.h>
> @@ -178,12 +197,36 @@ examples:
>               #address-cells = <1>;
>               #size-cells = <0>;
>               /* Optional to set different MI2S SD lines */
> -            mi2s-primary@0 {
> +            dai@mi2s-primary {
>                   reg = <MI2S_PRIMARY>;
>                   qcom,playback-sd-lines = <1>;
>                   qcom,capture-sd-lines = <0>;
>               };
>           };
> +
> +        lpassh@62d87000 {
> +            compatible = "qcom,sc7180-lpass-hdmi";
> +
> +            reg = <0 0x62d87000 0 0x68000>;
> +
> +            iommus = <&apps_smmu 0x1032 0>;
> +
> +            power-domains = <&lpass_hm 0>;
> +
> +            clocks = <&gcc 131>,
> +                 <&lpasscc 6>,
> +                 <&lpasscc 10>;
> +
> +            clock-names = "pcnoc-sway-clk", "audio-core",
> +                          "pcnoc-mport-clk";
> +
> +            #sound-dai-cells = <1>;
> +
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            interrupts = <0 268 1>;
> +        };
>       };
>   
>   ...
>
Srinivasa Rao Mandadapu Sept. 4, 2020, 11:02 a.m. UTC | #2
Thanks Srinivas For Review!!!

On 9/4/2020 4:11 PM, Srinivas Kandagatla wrote:
>
>
> On 31/08/2020 07:39, Srinivasa Rao Mandadapu wrote:
>> From: V Sujith Kumar Reddy <vsujithk@codeaurora.org>
>>
>> Adds bindings for lpass hdmi interface
>> which can support audio path over dp.
>>
>> Signed-off-by: Srinivasa Rao <srivasam@codeaurora.org>
>> Signed-off-by: V Sujith Kumar Reddy <vsujithk@codeaurora.org>
>> ---
>>   .../devicetree/bindings/sound/qcom,lpass-cpu.yaml  | 51 
>> ++++++++++++++++++++--
>>   1 file changed, 47 insertions(+), 4 deletions(-)
>>
>> diff --git 
>> a/Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml 
>> b/Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml
>> index 09c9bd2..7c2ac0c 100644
>> --- a/Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml
>> +++ b/Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml
>> @@ -22,6 +22,7 @@ properties:
>>         - qcom,lpass-cpu
>>         - qcom,apq8016-lpass-cpu
>>         - qcom,sc7180-lpass-cpu
>> +      - qcom,sc7180-lpass-hdmi
>
> Why do we need a new compatible per interface, IMO, you should just 
> use the existing compatible.
> Or please explain the reasons why we need this?
Two compatible strings are used because iommu's are different for I2S 
and HDMI.
>
>>       reg:
>>       maxItems: 1
>> @@ -60,10 +61,12 @@ properties:
>>       const: 0
>>     patternProperties:
>> -  "(^mi2s-[0-9a-f]$|mi2s)":
>> +  "^dai@[0-9a-f]$":
>>       type: object
>> -    description: Required properties for each DAI
>> -
>> +    description: |
>> +      LPASS CPU dai node for each I2S device. Bindings of each node
>> +      depends on the specific driver providing the functionality and
>> +      properties.
>>       properties:
>>         reg:
>>           maxItems: 1
>> @@ -145,6 +148,22 @@ allOf:
>>           - iommus
>>           - power-domains
>>   +  - if:
>> +      properties:
>> +        compatible:
>> +          contains:
>> +            const: qcom,sc7180-lpass-hdmi
>> +    then:
>> +      properties:
>> +        clock-names:
>> +          items:
>> +            - const: pcnoc-sway-clk
>> +            - const: audio-core
>> +            - const: pcnoc-mport-clk
>> +      required:
>> +        - iommus
>> +        - power-domains
>> +
>>   examples:
>>     - |
>>       #include <dt-bindings/sound/sc7180-lpass.h>
>> @@ -178,12 +197,36 @@ examples:
>>               #address-cells = <1>;
>>               #size-cells = <0>;
>>               /* Optional to set different MI2S SD lines */
>> -            mi2s-primary@0 {
>> +            dai@mi2s-primary {
>>                   reg = <MI2S_PRIMARY>;
>>                   qcom,playback-sd-lines = <1>;
>>                   qcom,capture-sd-lines = <0>;
>>               };
>>           };
>> +
>> +        lpassh@62d87000 {
>> +            compatible = "qcom,sc7180-lpass-hdmi";
>> +
>> +            reg = <0 0x62d87000 0 0x68000>;
>> +
>> +            iommus = <&apps_smmu 0x1032 0>;
>> +
>> +            power-domains = <&lpass_hm 0>;
>> +
>> +            clocks = <&gcc 131>,
>> +                 <&lpasscc 6>,
>> +                 <&lpasscc 10>;
>> +
>> +            clock-names = "pcnoc-sway-clk", "audio-core",
>> +                          "pcnoc-mport-clk";
>> +
>> +            #sound-dai-cells = <1>;
>> +
>> +            #address-cells = <1>;
>> +            #size-cells = <0>;
>> +
>> +            interrupts = <0 268 1>;
>> +        };
>>       };
>>     ...
>>