diff options
| -rw-r--r-- | Documentation/devicetree/bindings/sound/qcom-audio-dev.txt | 104 | ||||
| -rw-r--r-- | arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi | 28 | ||||
| -rw-r--r-- | arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi | 28 | ||||
| -rw-r--r-- | arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi | 28 | ||||
| -rw-r--r-- | arch/arm/boot/dts/qcom/msm8996-mmxf-adp.dtsi | 28 | ||||
| -rw-r--r-- | arch/arm/boot/dts/qcom/msm8996.dtsi | 228 | ||||
| -rw-r--r-- | arch/arm/boot/dts/qcom/vplatform-lfv-msm8996-audio-common.dtsi | 256 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_crtc.c | 22 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_crtc.h | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_kms.h | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_kms_utils.c | 60 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_plane.c | 18 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_plane.h | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_splash.c | 26 | ||||
| -rw-r--r-- | include/sound/q6asm-v2.h | 1 | ||||
| -rw-r--r-- | include/uapi/sound/compress_params.h | 3 | ||||
| -rw-r--r-- | sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c | 12 | ||||
| -rw-r--r-- | sound/soc/msm/qdsp6v2/q6asm.c | 3 |
18 files changed, 861 insertions, 14 deletions
diff --git a/Documentation/devicetree/bindings/sound/qcom-audio-dev.txt b/Documentation/devicetree/bindings/sound/qcom-audio-dev.txt index 80c3f7c462b1..e42c348aad26 100644 --- a/Documentation/devicetree/bindings/sound/qcom-audio-dev.txt +++ b/Documentation/devicetree/bindings/sound/qcom-audio-dev.txt @@ -2678,3 +2678,107 @@ Example 2: qcom,spkr-tdm-rx = <&dai_quat_tdm_rx_0>; qcom,mic-tdm-tx = <&dai_quat_tdm_tx_0>; }; + +* msm-dai-group-mi2s + +[First Level Nodes] + +Required properties: + + - compatible : "qcom,msm-dai-group-mi2s" + - qcom,msm-cpudai-mi2s-group-id: ID of the group device. MI2S interface + supports up to 8 groups: + Secondary RX: 4354 + Secondary TX: 4355 + Tertiary RX: 4356 + Tertiary TX: 4357 + Quaternary RX: 4358 + Quaternary TX: 4359 + + - qcom,msm-cpudai-mi2s-group-num-ports: Number of ports in + msm-cpudai-mi2s-group-port-id array. + Max number of ports supported by DSP is 8. + + - qcom,msm-cpudai-mi2s-group-port-id: Array of mi2s port IDs of the group. + The size of the array is determined by + the value in msm-cpudai-mi2s-group-num-ports. + Each group supports up to 4 ports: + Secondary RX: 4160, 4162, 4164, 4174, + Secondary TX: 4161, 4163, 4165, 4175, + Tertiary RX: 4168, 4170, 4172, 4176, + Tertiary TX: 4169, 4171, 4173, 4177, + Quaternary RX: 4102, 4128, 4130, 4132, + Quaternary TX: 4103, 4129, 4131, 4133, + + - qcom,msm-cpudai-mi2s-channel-mode: group mi2s line channel mode. + I2S_SD0 : 0x1 + I2S_SD1 : 0x2 + I2S_SD2 : 0x3 + I2S_SD3 : 0x4 + I2S_QUAD01 : 0x5 + I2S_QUAD23 : 0x6 + I2S_6CHS : 0x7 + I2S_8CHS : 0x8 + + - qcom,msm-cpudai-mi2s-sync-mode: group mi2s master mode. + 0 - Slave + 1 - Master + + - qcom,msm-cpudai-mi2s-mclk: mi2s mclk value if required. + 0 - not provided any mclk + others - the real mclk value, at least + equal with bclk. + + - qcom,msm-cpudai-mi2s-bclk: mi2s bclk value required, the clk value should + equal channels * bit_width * rate. + + [Second Level Nodes] + +Required properties: + + - compatible : "qcom,msm-dai-group-mi2s-dev" + - qcom,msm-dai-q6-mi2s-dev-id: mi2s port ID. + - qcom,msm-cpudai-mi2s-channel-mode: mi2s port line channel mode + I2S_SD0 : 0x1 + I2S_SD1 : 0x2 + I2S_SD2 : 0x3 + I2S_SD3 : 0x4 + I2S_QUAD01 : 0x5 + I2S_QUAD23 : 0x6 + I2S_6CHS : 0x7 + I2S_8CHS : 0x8 + + - qcom,msm-cpudai-mi2s-data-align: Indicate how data is packed + within the slot. For example, 32 slot width in case of + sample bit width is 24. + 0 - MSB + 1 - LSB + +Optional properties: + + - pinctrl-names: Pinctrl state names for each pin group + configuration. + + - pinctrl-x: Defines pinctrl state for each pin group. + +Example: + qcom,msm-dai-group-mi2s-tert-tx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4357>; + qcom,msm-cpudai-mi2s-group-num-ports = <2>; + qcom,msm-cpudai-mi2s-group-port-id = <4167 4169>; + qcom,msm-cpudai-mi2s-channel-mode = <5>; + dai_tert_mi2s_tx_1:qcom,msm-dai-q6-mi2s-tert-tx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4167>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_tx_2:qcom,msm-dai-q6-mi2s-tert-tx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4169>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; diff --git a/arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi b/arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi index 111266ca59f0..1a9a24cec1ba 100644 --- a/arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi +++ b/arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi @@ -729,7 +729,19 @@ <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, - <&dai_quat_tdm_tx_3>; + <&dai_quat_tdm_tx_3>, <&dai_sec_mi2s_rx_1>, + <&dai_sec_mi2s_rx_2>, <&dai_sec_mi2s_rx_3>, + <&dai_sec_mi2s_rx_4>, <&dai_sec_mi2s_tx_1>, + <&dai_sec_mi2s_tx_2>, <&dai_sec_mi2s_tx_3>, + <&dai_sec_mi2s_tx_4>, <&dai_tert_mi2s_rx_1>, + <&dai_tert_mi2s_rx_2>, <&dai_tert_mi2s_rx_3>, + <&dai_tert_mi2s_rx_4>, <&dai_tert_mi2s_tx_1>, + <&dai_tert_mi2s_tx_2>, <&dai_tert_mi2s_tx_3>, + <&dai_tert_mi2s_tx_4>, <&dai_quat_mi2s_rx_1>, + <&dai_quat_mi2s_rx_2>, <&dai_quat_mi2s_rx_3>, + <&dai_quat_mi2s_rx_4>, <&dai_quat_mi2s_tx_1>, + <&dai_quat_mi2s_tx_2>, <&dai_quat_mi2s_tx_3>, + <&dai_quat_mi2s_tx_4>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", @@ -753,7 +765,19 @@ "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", - "msm-dai-q6-tdm.36919"; + "msm-dai-q6-tdm.36919", "msm-dai-q6-mi2s.4160", + "msm-dai-q6-mi2s.4162", "msm-dai-q6-mi2s.4164", + "msm-dai-q6-mi2s.4174", "msm-dai-q6-mi2s.4161", + "msm-dai-q6-mi2s.4163", "msm-dai-q6-mi2s.4165", + "msm-dai-q6-mi2s.4175", "msm-dai-q6-mi2s.4168", + "msm-dai-q6-mi2s.4170", "msm-dai-q6-mi2s.4172", + "msm-dai-q6-mi2s.4176", "msm-dai-q6-mi2s.4169", + "msm-dai-q6-mi2s.4171", "msm-dai-q6-mi2s.4173", + "msm-dai-q6-mi2s.4177", "msm-dai-q6-mi2s.4128", + "msm-dai-q6-mi2s.4130", "msm-dai-q6-mi2s.4132", + "msm-dai-q6-mi2s.4134", "msm-dai-q6-mi2s.4129", + "msm-dai-q6-mi2s.4131", "msm-dai-q6-mi2s.4133", + "msm-dai-q6-mi2s.4135"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; diff --git a/arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi b/arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi index 211bcd607efb..b2f9becfff35 100644 --- a/arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi @@ -1106,7 +1106,19 @@ <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, - <&dai_quat_tdm_tx_3>; + <&dai_quat_tdm_tx_3>, <&dai_sec_mi2s_rx_1>, + <&dai_sec_mi2s_rx_2>, <&dai_sec_mi2s_rx_3>, + <&dai_sec_mi2s_rx_4>, <&dai_sec_mi2s_tx_1>, + <&dai_sec_mi2s_tx_2>, <&dai_sec_mi2s_tx_3>, + <&dai_sec_mi2s_tx_4>, <&dai_tert_mi2s_rx_1>, + <&dai_tert_mi2s_rx_2>, <&dai_tert_mi2s_rx_3>, + <&dai_tert_mi2s_rx_4>, <&dai_tert_mi2s_tx_1>, + <&dai_tert_mi2s_tx_2>, <&dai_tert_mi2s_tx_3>, + <&dai_tert_mi2s_tx_4>, <&dai_quat_mi2s_rx_1>, + <&dai_quat_mi2s_rx_2>, <&dai_quat_mi2s_rx_3>, + <&dai_quat_mi2s_rx_4>, <&dai_quat_mi2s_tx_1>, + <&dai_quat_mi2s_tx_2>, <&dai_quat_mi2s_tx_3>, + <&dai_quat_mi2s_tx_4>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", @@ -1130,7 +1142,19 @@ "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", - "msm-dai-q6-tdm.36919"; + "msm-dai-q6-tdm.36919", "msm-dai-q6-mi2s.4160", + "msm-dai-q6-mi2s.4162", "msm-dai-q6-mi2s.4164", + "msm-dai-q6-mi2s.4174", "msm-dai-q6-mi2s.4161", + "msm-dai-q6-mi2s.4163", "msm-dai-q6-mi2s.4165", + "msm-dai-q6-mi2s.4175", "msm-dai-q6-mi2s.4168", + "msm-dai-q6-mi2s.4170", "msm-dai-q6-mi2s.4172", + "msm-dai-q6-mi2s.4176", "msm-dai-q6-mi2s.4169", + "msm-dai-q6-mi2s.4171", "msm-dai-q6-mi2s.4173", + "msm-dai-q6-mi2s.4177", "msm-dai-q6-mi2s.4128", + "msm-dai-q6-mi2s.4130", "msm-dai-q6-mi2s.4132", + "msm-dai-q6-mi2s.4134", "msm-dai-q6-mi2s.4129", + "msm-dai-q6-mi2s.4131", "msm-dai-q6-mi2s.4133", + "msm-dai-q6-mi2s.4135"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; diff --git a/arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi b/arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi index c2f62be67892..859bbfd6012f 100644 --- a/arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi @@ -959,7 +959,19 @@ <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, - <&dai_quat_tdm_tx_3>; + <&dai_quat_tdm_tx_3>, <&dai_sec_mi2s_rx_1>, + <&dai_sec_mi2s_rx_2>, <&dai_sec_mi2s_rx_3>, + <&dai_sec_mi2s_rx_4>, <&dai_sec_mi2s_tx_1>, + <&dai_sec_mi2s_tx_2>, <&dai_sec_mi2s_tx_3>, + <&dai_sec_mi2s_tx_4>, <&dai_tert_mi2s_rx_1>, + <&dai_tert_mi2s_rx_2>, <&dai_tert_mi2s_rx_3>, + <&dai_tert_mi2s_rx_4>, <&dai_tert_mi2s_tx_1>, + <&dai_tert_mi2s_tx_2>, <&dai_tert_mi2s_tx_3>, + <&dai_tert_mi2s_tx_4>, <&dai_quat_mi2s_rx_1>, + <&dai_quat_mi2s_rx_2>, <&dai_quat_mi2s_rx_3>, + <&dai_quat_mi2s_rx_4>, <&dai_quat_mi2s_tx_1>, + <&dai_quat_mi2s_tx_2>, <&dai_quat_mi2s_tx_3>, + <&dai_quat_mi2s_tx_4>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", @@ -983,7 +995,19 @@ "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", - "msm-dai-q6-tdm.36919"; + "msm-dai-q6-tdm.36919", "msm-dai-q6-mi2s.4160", + "msm-dai-q6-mi2s.4162", "msm-dai-q6-mi2s.4164", + "msm-dai-q6-mi2s.4174", "msm-dai-q6-mi2s.4161", + "msm-dai-q6-mi2s.4163", "msm-dai-q6-mi2s.4165", + "msm-dai-q6-mi2s.4175", "msm-dai-q6-mi2s.4168", + "msm-dai-q6-mi2s.4170", "msm-dai-q6-mi2s.4172", + "msm-dai-q6-mi2s.4176", "msm-dai-q6-mi2s.4169", + "msm-dai-q6-mi2s.4171", "msm-dai-q6-mi2s.4173", + "msm-dai-q6-mi2s.4177", "msm-dai-q6-mi2s.4128", + "msm-dai-q6-mi2s.4130", "msm-dai-q6-mi2s.4132", + "msm-dai-q6-mi2s.4134", "msm-dai-q6-mi2s.4129", + "msm-dai-q6-mi2s.4131", "msm-dai-q6-mi2s.4133", + "msm-dai-q6-mi2s.4135"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; diff --git a/arch/arm/boot/dts/qcom/msm8996-mmxf-adp.dtsi b/arch/arm/boot/dts/qcom/msm8996-mmxf-adp.dtsi index c0969a6aa106..085f94d7f5b3 100644 --- a/arch/arm/boot/dts/qcom/msm8996-mmxf-adp.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996-mmxf-adp.dtsi @@ -554,7 +554,19 @@ <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, - <&dai_quat_tdm_tx_3>; + <&dai_quat_tdm_tx_3>, <&dai_sec_mi2s_rx_1>, + <&dai_sec_mi2s_rx_2>, <&dai_sec_mi2s_rx_3>, + <&dai_sec_mi2s_rx_4>, <&dai_sec_mi2s_tx_1>, + <&dai_sec_mi2s_tx_2>, <&dai_sec_mi2s_tx_3>, + <&dai_sec_mi2s_tx_4>, <&dai_tert_mi2s_rx_1>, + <&dai_tert_mi2s_rx_2>, <&dai_tert_mi2s_rx_3>, + <&dai_tert_mi2s_rx_4>, <&dai_tert_mi2s_tx_1>, + <&dai_tert_mi2s_tx_2>, <&dai_tert_mi2s_tx_3>, + <&dai_tert_mi2s_tx_4>, <&dai_quat_mi2s_rx_1>, + <&dai_quat_mi2s_rx_2>, <&dai_quat_mi2s_rx_3>, + <&dai_quat_mi2s_rx_4>, <&dai_quat_mi2s_tx_1>, + <&dai_quat_mi2s_tx_2>, <&dai_quat_mi2s_tx_3>, + <&dai_quat_mi2s_tx_4>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", @@ -578,7 +590,19 @@ "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", - "msm-dai-q6-tdm.36919"; + "msm-dai-q6-tdm.36919", "msm-dai-q6-mi2s.4160", + "msm-dai-q6-mi2s.4162", "msm-dai-q6-mi2s.4164", + "msm-dai-q6-mi2s.4174", "msm-dai-q6-mi2s.4161", + "msm-dai-q6-mi2s.4163", "msm-dai-q6-mi2s.4165", + "msm-dai-q6-mi2s.4175", "msm-dai-q6-mi2s.4168", + "msm-dai-q6-mi2s.4170", "msm-dai-q6-mi2s.4172", + "msm-dai-q6-mi2s.4176", "msm-dai-q6-mi2s.4169", + "msm-dai-q6-mi2s.4171", "msm-dai-q6-mi2s.4173", + "msm-dai-q6-mi2s.4177", "msm-dai-q6-mi2s.4128", + "msm-dai-q6-mi2s.4130", "msm-dai-q6-mi2s.4132", + "msm-dai-q6-mi2s.4134", "msm-dai-q6-mi2s.4129", + "msm-dai-q6-mi2s.4131", "msm-dai-q6-mi2s.4133", + "msm-dai-q6-mi2s.4135"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; diff --git a/arch/arm/boot/dts/qcom/msm8996.dtsi b/arch/arm/boot/dts/qcom/msm8996.dtsi index 4ca58d03115c..6e2d9a8bf1fc 100644 --- a/arch/arm/boot/dts/qcom/msm8996.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996.dtsi @@ -3560,6 +3560,234 @@ }; }; + qcom,msm-dai-group-mi2s-sec-rx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4354>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4160 4162 4164 4174>; + qcom,msm-cpudai-mi2s-channel-mode = <2>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <12288000>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_sec_mi2s_rx_1:qcom,msm-dai-q6-mi2s-sec-rx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4160>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_rx_2:qcom,msm-dai-q6-mi2s-sec-rx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4162>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_rx_3:qcom,msm-dai-q6-mi2s-sec-rx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4164>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_rx_4:qcom,msm-dai-q6-mi2s-sec-rx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4174>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-sec-tx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4355>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4161 4163 4165 4175>; + qcom,msm-cpudai-mi2s-channel-mode = <1>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <12288000>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_sec_mi2s_tx_1:qcom,msm-dai-q6-mi2s-sec-tx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4161>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_tx_2:qcom,msm-dai-q6-mi2s-sec-tx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4163>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_tx_3:qcom,msm-dai-q6-mi2s-sec-tx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4165>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_tx_4:qcom,msm-dai-q6-mi2s-sec-tx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4175>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-tert-rx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4356>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4168 4170 4172 4176>; + qcom,msm-cpudai-mi2s-channel-mode = <5>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <3072000>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_tert_mi2s_rx_1:qcom,msm-dai-q6-mi2s-tert-rx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4168>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_rx_2:qcom,msm-dai-q6-mi2s-tert-rx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4170>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_rx_3:qcom,msm-dai-q6-mi2s-tert-rx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4172>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_rx_4:qcom,msm-dai-q6-mi2s-tert-rx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4176>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-tert-tx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4357>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4169 4171 4173 4177>; + qcom,msm-cpudai-mi2s-channel-mode = <5>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <3072000>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_tert_mi2s_tx_1:qcom,msm-dai-q6-mi2s-tert-tx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4169>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_tx_2:qcom,msm-dai-q6-mi2s-tert-tx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4171>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_tx_3:qcom,msm-dai-q6-mi2s-tert-tx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4173>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_tx_4:qcom,msm-dai-q6-mi2s-tert-tx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4177>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-quat-rx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4358>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4128 4130 4132 4134>; + qcom,msm-cpudai-mi2s-channel-mode = <8>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <0>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_quat_mi2s_rx_1:qcom,msm-dai-q6-mi2s-quat-rx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4128>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_rx_2:qcom,msm-dai-q6-mi2s-quat-rx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4130>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_rx_3:qcom,msm-dai-q6-mi2s-quat-rx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4132>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <3>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_rx_4:qcom,msm-dai-q6-mi2s-quat-rx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4134>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <4>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-quat-tx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4359>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4129 4131 4133 4135>; + qcom,msm-cpudai-mi2s-channel-mode = <7>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <0>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_quat_mi2s_tx_1:qcom,msm-dai-q6-mi2s-quat-tx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4129>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_tx_2:qcom,msm-dai-q6-mi2s-quat-tx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4131>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_tx_3:qcom,msm-dai-q6-mi2s-quat-tx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4133>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <3>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_tx_4:qcom,msm-dai-q6-mi2s-quat-tx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4135>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <4>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + qcom,msm-dai-tdm-pri-rx { compatible = "qcom,msm-dai-tdm"; qcom,msm-cpudai-tdm-group-id = <37120>; diff --git a/arch/arm/boot/dts/qcom/vplatform-lfv-msm8996-audio-common.dtsi b/arch/arm/boot/dts/qcom/vplatform-lfv-msm8996-audio-common.dtsi index 3928836b8e80..9026474e40e3 100644 --- a/arch/arm/boot/dts/qcom/vplatform-lfv-msm8996-audio-common.dtsi +++ b/arch/arm/boot/dts/qcom/vplatform-lfv-msm8996-audio-common.dtsi @@ -48,7 +48,19 @@ <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, - <&dai_quat_tdm_tx_3>; + <&dai_quat_tdm_tx_3>, <&dai_sec_mi2s_rx_1>, + <&dai_sec_mi2s_rx_2>, <&dai_sec_mi2s_rx_3>, + <&dai_sec_mi2s_rx_4>, <&dai_sec_mi2s_tx_1>, + <&dai_sec_mi2s_tx_2>, <&dai_sec_mi2s_tx_3>, + <&dai_sec_mi2s_tx_4>, <&dai_tert_mi2s_rx_1>, + <&dai_tert_mi2s_rx_2>, <&dai_tert_mi2s_rx_3>, + <&dai_tert_mi2s_rx_4>, <&dai_tert_mi2s_tx_1>, + <&dai_tert_mi2s_tx_2>, <&dai_tert_mi2s_tx_3>, + <&dai_tert_mi2s_tx_4>, <&dai_quat_mi2s_rx_1>, + <&dai_quat_mi2s_rx_2>, <&dai_quat_mi2s_rx_3>, + <&dai_quat_mi2s_rx_4>, <&dai_quat_mi2s_tx_1>, + <&dai_quat_mi2s_tx_2>, <&dai_quat_mi2s_tx_3>, + <&dai_quat_mi2s_tx_4>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", @@ -72,7 +84,19 @@ "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", - "msm-dai-q6-tdm.36919"; + "msm-dai-q6-tdm.36919", "msm-dai-q6-mi2s.4160", + "msm-dai-q6-mi2s.4162", "msm-dai-q6-mi2s.4164", + "msm-dai-q6-mi2s.4174", "msm-dai-q6-mi2s.4161", + "msm-dai-q6-mi2s.4163", "msm-dai-q6-mi2s.4165", + "msm-dai-q6-mi2s.4175", "msm-dai-q6-mi2s.4168", + "msm-dai-q6-mi2s.4170", "msm-dai-q6-mi2s.4172", + "msm-dai-q6-mi2s.4176", "msm-dai-q6-mi2s.4169", + "msm-dai-q6-mi2s.4171", "msm-dai-q6-mi2s.4173", + "msm-dai-q6-mi2s.4177", "msm-dai-q6-mi2s.4128", + "msm-dai-q6-mi2s.4130", "msm-dai-q6-mi2s.4132", + "msm-dai-q6-mi2s.4134", "msm-dai-q6-mi2s.4129", + "msm-dai-q6-mi2s.4131", "msm-dai-q6-mi2s.4133", + "msm-dai-q6-mi2s.4135"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; @@ -249,6 +273,234 @@ }; }; + qcom,msm-dai-group-mi2s-sec-rx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4354>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4160 4162 4164 4174>; + qcom,msm-cpudai-mi2s-channel-mode = <2>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <12288000>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_sec_mi2s_rx_1:qcom,msm-dai-q6-mi2s-sec-rx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4160>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_rx_2:qcom,msm-dai-q6-mi2s-sec-rx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4162>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_rx_3:qcom,msm-dai-q6-mi2s-sec-rx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4164>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_rx_4:qcom,msm-dai-q6-mi2s-sec-rx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4174>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-sec-tx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4355>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4161 4163 4165 4175>; + qcom,msm-cpudai-mi2s-channel-mode = <1>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <12288000>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_sec_mi2s_tx_1:qcom,msm-dai-q6-mi2s-sec-tx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4161>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_tx_2:qcom,msm-dai-q6-mi2s-sec-tx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4163>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_tx_3:qcom,msm-dai-q6-mi2s-sec-tx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4165>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_sec_mi2s_tx_4:qcom,msm-dai-q6-mi2s-sec-tx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4175>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-tert-rx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4356>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4168 4170 4172 4176>; + qcom,msm-cpudai-mi2s-channel-mode = <5>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <3072000>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_tert_mi2s_rx_1:qcom,msm-dai-q6-mi2s-tert-rx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4168>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_rx_2:qcom,msm-dai-q6-mi2s-tert-rx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4170>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_rx_3:qcom,msm-dai-q6-mi2s-tert-rx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4172>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_rx_4:qcom,msm-dai-q6-mi2s-tert-rx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4176>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-tert-tx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4357>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4169 4171 4173 4177>; + qcom,msm-cpudai-mi2s-channel-mode = <5>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <3072000>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_tert_mi2s_tx_1:qcom,msm-dai-q6-mi2s-tert-tx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4169>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_tx_2:qcom,msm-dai-q6-mi2s-tert-tx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4171>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_tx_3:qcom,msm-dai-q6-mi2s-tert-tx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4173>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_tert_mi2s_tx_4:qcom,msm-dai-q6-mi2s-tert-tx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4177>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-quat-rx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4358>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4128 4130 4132 4134>; + qcom,msm-cpudai-mi2s-channel-mode = <8>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <0>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_quat_mi2s_rx_1:qcom,msm-dai-q6-mi2s-quat-rx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4128>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_rx_2:qcom,msm-dai-q6-mi2s-quat-rx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4130>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_rx_3:qcom,msm-dai-q6-mi2s-quat-rx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4132>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <3>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_rx_4:qcom,msm-dai-q6-mi2s-quat-rx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4134>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <4>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + + qcom,msm-dai-group-mi2s-quat-tx { + compatible = "qcom,msm-dai-group-mi2s"; + qcom,msm-cpudai-mi2s-group-id = <4359>; + qcom,msm-cpudai-mi2s-group-num-ports = <4>; + qcom,msm-cpudai-mi2s-group-port-id = <4129 4131 4133 4135>; + qcom,msm-cpudai-mi2s-channel-mode = <7>; + qcom,msm-cpudai-mi2s-sync-mode = <1>; + qcom,msm-cpudai-mi2s-mclk = <0>; + qcom,msm-cpudai-mi2s-bclk = <3072000>; + dai_quat_mi2s_tx_1:qcom,msm-dai-q6-mi2s-quat-tx-1 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4129>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <1>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_tx_2:qcom,msm-dai-q6-mi2s-quat-tx-2 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4131>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <2>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_tx_3:qcom,msm-dai-q6-mi2s-quat-tx-3 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4133>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <3>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + + dai_quat_mi2s_tx_4:qcom,msm-dai-q6-mi2s-quat-tx-4 { + compatible = "qcom,msm-dai-group-mi2s-dev"; + qcom,msm-cpudai-mi2s-dev-id = <4135>; + qcom,msm-cpudai-mi2s-dev-channel-mode = <4>; + qcom,msm-cpudai-mi2s-data-align = <0>; + }; + }; + qcom,msm-dai-tdm-pri-rx { compatible = "qcom,msm-dai-tdm"; qcom,msm-cpudai-tdm-group-id = <37120>; diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.c b/drivers/gpu/drm/msm/sde/sde_crtc.c index 01da32ae5958..86d260e7ca5f 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.c +++ b/drivers/gpu/drm/msm/sde/sde_crtc.c @@ -1649,7 +1649,7 @@ static void sde_crtc_install_properties(struct drm_crtc *crtc, */ if (sde_kms->splash_info.handoff) sde_kms_info_add_keyint(info, "max_blendstages", - catalog->max_mixer_blendstages - 1); + catalog->max_mixer_blendstages - 2); else sde_kms_info_add_keyint(info, "max_blendstages", catalog->max_mixer_blendstages); @@ -1995,6 +1995,26 @@ static void _sde_crtc_init_debugfs(struct sde_crtc *sde_crtc, } #endif +void sde_crtc_update_blob_property(struct drm_crtc *crtc, + const char *key, + int32_t value) +{ + struct sde_crtc *sde_crtc; + char *kms_info_str = NULL; + size_t len; + + sde_crtc = to_sde_crtc(crtc); + + kms_info_str = (char *)msm_property_get_blob(&sde_crtc->property_info, + &sde_crtc->blob_info, &len, CRTC_PROP_INFO); + if (!kms_info_str) { + SDE_ERROR("get crtc property_info failed"); + return; + } + + sde_kms_info_update_keystr(kms_info_str, key, value); +} + /* initialize crtc */ struct drm_crtc *sde_crtc_init(struct drm_device *dev, struct drm_plane *plane) diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.h b/drivers/gpu/drm/msm/sde/sde_crtc.h index 200073995d43..a1042390b1a9 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.h +++ b/drivers/gpu/drm/msm/sde/sde_crtc.h @@ -292,4 +292,13 @@ static inline bool sde_crtc_is_enabled(struct drm_crtc *crtc) return crtc ? crtc->enabled : false; } +/** + * sde_crtc_update_blob_property - update blob property of a given crtc + * @crtc: Pointer to crtc + * @key: Pointer to key string + * @value: Signed 32 bit integer value + */ +void sde_crtc_update_blob_property(struct drm_crtc *crtc, + const char *key, + int32_t value); #endif /* _SDE_CRTC_H_ */ diff --git a/drivers/gpu/drm/msm/sde/sde_kms.h b/drivers/gpu/drm/msm/sde/sde_kms.h index dee16d119d47..c7355f5bd891 100644 --- a/drivers/gpu/drm/msm/sde/sde_kms.h +++ b/drivers/gpu/drm/msm/sde/sde_kms.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. + * Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark <robdclark@gmail.com> * @@ -306,6 +306,16 @@ void sde_kms_info_add_keyint(struct sde_kms_info *info, int32_t value); /** + * sde_kms_info_update_keystr - update the special string's value. + * @info_str: Pointer to source blob str + * @key: Pointer to key string + * @value: Signed 32-bit integer value + */ +void sde_kms_info_update_keystr(char *info_str, + const char *key, + int32_t value); + +/** * sde_kms_info_add_keystr - add string value to 'sde_kms_info' * @info: Pointer to sde_kms_info structure * @key: Pointer to key string diff --git a/drivers/gpu/drm/msm/sde/sde_kms_utils.c b/drivers/gpu/drm/msm/sde/sde_kms_utils.c index 30e12c969538..90fd3912eb59 100644 --- a/drivers/gpu/drm/msm/sde/sde_kms_utils.c +++ b/drivers/gpu/drm/msm/sde/sde_kms_utils.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. +/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -41,6 +41,64 @@ void sde_kms_info_add_keyint(struct sde_kms_info *info, } } +void sde_kms_info_update_keystr(char *info_str, + const char *key, + int32_t value) +{ + char *str, *temp, *append_str; + uint32_t dst_len = 0, prefix_len = 0; + char c; + int32_t size = 0; + + if (info_str && key) { + str = strnstr(info_str, key, strlen(info_str)); + if (str) { + temp = str + strlen(key); + c = *temp; + while (c != '\n') { + dst_len++; + c = *(++temp); + } + /* + * If input key string to update is exactly the last + * string in source string, no need to allocate one + * memory to store the string after string key. Just + * replace the value of the last string. + * + * If it is not, allocate one new memory to save + * the string after string key+"\n". This new allocated + * string will be appended to the whole source string + * after key value is updated. + */ + size = strlen(str) - strlen(key) - dst_len - 1; + if (size > 0) { + append_str = kzalloc(size + 1, GFP_KERNEL); + if (!append_str) { + SDE_ERROR("failed to alloc memory\n"); + return; + } + memcpy(append_str, + str + strlen(key) + dst_len + 1, size); + } + + prefix_len = strlen(info_str) - strlen(str); + /* Update string with new value for the string key. */ + snprintf(info_str + prefix_len, + SDE_KMS_INFO_MAX_SIZE - prefix_len, + "%s%d\n", key, value); + + /* Append the string save aboved. */ + if (size > 0 && append_str) { + size = prefix_len + strlen(key) + dst_len + 1; + snprintf(info_str + size, + SDE_KMS_INFO_MAX_SIZE - size, + "%s", append_str); + kfree(append_str); + } + } + } +} + void sde_kms_info_add_keystr(struct sde_kms_info *info, const char *key, const char *value) diff --git a/drivers/gpu/drm/msm/sde/sde_plane.c b/drivers/gpu/drm/msm/sde/sde_plane.c index e50577e3eb4b..a35428c93867 100644 --- a/drivers/gpu/drm/msm/sde/sde_plane.c +++ b/drivers/gpu/drm/msm/sde/sde_plane.c @@ -2732,6 +2732,24 @@ end: return rc; } +void sde_plane_update_blob_property(struct drm_plane *plane, + const char *key, + int32_t value) +{ + char *kms_info_str = NULL; + struct sde_plane *sde_plane = to_sde_plane(plane); + size_t len; + + kms_info_str = (char *)msm_property_get_blob(&sde_plane->property_info, + &sde_plane->blob_info, &len, 0); + if (!kms_info_str) { + SDE_ERROR("get plane property_info failed\n"); + return; + } + + sde_kms_info_update_keystr(kms_info_str, key, value); +} + /* initialize plane */ struct drm_plane *sde_plane_init(struct drm_device *dev, uint32_t pipe, bool primary_plane, diff --git a/drivers/gpu/drm/msm/sde/sde_plane.h b/drivers/gpu/drm/msm/sde/sde_plane.h index 8ac582643926..c1414e7db74e 100644 --- a/drivers/gpu/drm/msm/sde/sde_plane.h +++ b/drivers/gpu/drm/msm/sde/sde_plane.h @@ -102,4 +102,13 @@ int sde_plane_wait_input_fence(struct drm_plane *plane, uint32_t wait_ms); int sde_plane_color_fill(struct drm_plane *plane, uint32_t color, uint32_t alpha); +/** + * sde_plane_update_blob_property - update plane blob property + * @plane: Pointer to DRM plane object + * @key: Pointer to key string + * @value: Signed 32 bit integer value + */ +void sde_plane_update_blob_property(struct drm_plane *plane, + const char *key, + int32_t value); #endif /* _SDE_PLANE_H_ */ diff --git a/drivers/gpu/drm/msm/sde/sde_splash.c b/drivers/gpu/drm/msm/sde/sde_splash.c index 16f9248b7abe..3ea93b654ce8 100644 --- a/drivers/gpu/drm/msm/sde/sde_splash.c +++ b/drivers/gpu/drm/msm/sde/sde_splash.c @@ -26,6 +26,7 @@ #include "dsi_display.h" #include "sde_hdmi.h" #include "sde_crtc.h" +#include "sde_plane.h" #define MDP_SSPP_TOP0_OFF 0x1000 #define DISP_INTF_SEL 0x004 @@ -391,6 +392,28 @@ static bool _sde_splash_validate_commit(struct sde_kms *sde_kms, return false; } +static void _sde_splash_update_property(struct sde_kms *sde_kms) +{ + struct drm_device *dev = sde_kms->dev; + struct drm_crtc *crtc; + struct drm_plane *plane; + struct sde_mdss_cfg *catalog = sde_kms->catalog; + + /* + * Update plane availability property + * after splash handoff is done. + */ + drm_for_each_plane(plane, dev) { + sde_plane_update_blob_property(plane, + "plane_unavailability=", 0); + } + + /* update crtc blend stage property */ + drm_for_each_crtc(crtc, dev) + sde_crtc_update_blob_property(crtc, "max_blendstages=", + catalog->max_mixer_blendstages); +} + __ref int sde_splash_init(struct sde_power_handle *phandle, struct msm_kms *kms) { struct sde_kms *sde_kms; @@ -837,6 +860,9 @@ int sde_splash_free_resource(struct msm_kms *kms, /* send uevent to notify user to recycle resource */ _sde_splash_sent_pipe_update_uevent(sde_kms); + /* update impacted crtc and plane property by splash */ + _sde_splash_update_property(sde_kms); + /* set display's splash status to false after handoff is done */ _sde_splash_update_display_splash_status(sde_kms); diff --git a/include/sound/q6asm-v2.h b/include/sound/q6asm-v2.h index 8af49bb6a9fa..d2d639ec462f 100644 --- a/include/sound/q6asm-v2.h +++ b/include/sound/q6asm-v2.h @@ -57,6 +57,7 @@ #define FORMAT_GEN_COMPR 0x001f #define FORMAT_TRUEHD 0x0020 #define FORMAT_IEC61937 0x0021 +#define FORMAT_APTXHD 0x0022 #define ENCDEC_SBCBITRATE 0x0001 #define ENCDEC_IMMEDIATE_DECODE 0x0002 diff --git a/include/uapi/sound/compress_params.h b/include/uapi/sound/compress_params.h index f4028e805cc7..6f57d4f60ce0 100644 --- a/include/uapi/sound/compress_params.h +++ b/include/uapi/sound/compress_params.h @@ -105,7 +105,8 @@ #define SND_AUDIOCODEC_DSD ((__u32) 0x00000021) #define SND_AUDIOCODEC_APTX ((__u32) 0x00000022) #define SND_AUDIOCODEC_TRUEHD ((__u32) 0x00000023) -#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_TRUEHD +#define SND_AUDIOCODEC_APTXHD ((__u32) 0x00000024) +#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_APTXHD /* * Profile and modes are listed with bit masks. This allows for a * more compact representation of fields that will not evolve diff --git a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c index b2aa6bd3f504..edbd6b485dac 100644 --- a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c +++ b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c @@ -946,6 +946,7 @@ static void populate_codec_list(struct msm_compr_audio *prtd) prtd->compr_cap.codecs[14] = SND_AUDIOCODEC_APTX; prtd->compr_cap.codecs[15] = SND_AUDIOCODEC_TRUEHD; prtd->compr_cap.codecs[16] = SND_AUDIOCODEC_IEC61937; + prtd->compr_cap.codecs[17] = SND_AUDIOCODEC_APTXHD; } static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream, @@ -1213,6 +1214,8 @@ static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream, pr_err("%s: CMD IEC61937 Format block failed ret %d\n", __func__, ret); break; + case FORMAT_APTXHD: + pr_debug("SND_AUDIOCODEC_APTXHD\n"); case FORMAT_APTX: pr_debug("SND_AUDIOCODEC_APTX\n"); memset(&aptx_cfg, 0x0, sizeof(struct aptx_dec_bt_addr_cfg)); @@ -2106,6 +2109,12 @@ static int msm_compr_set_params(struct snd_compr_stream *cstream, break; } + case SND_AUDIOCODEC_APTXHD: { + pr_debug("%s: SND_AUDIOCODEC_APTXHD\n", __func__); + prtd->codec = FORMAT_APTXHD; + break; + } + default: pr_err("codec not supported, id =%d\n", params->codec.id); return -EINVAL; @@ -2974,6 +2983,7 @@ static int msm_compr_get_codec_caps(struct snd_compr_stream *cstream, case SND_AUDIOCODEC_TRUEHD: case SND_AUDIOCODEC_IEC61937: case SND_AUDIOCODEC_APTX: + case SND_AUDIOCODEC_APTXHD: break; default: pr_err("%s: Unsupported audio codec %d\n", @@ -3412,6 +3422,7 @@ static int msm_compr_send_dec_params(struct snd_compr_stream *cstream, case FORMAT_TRUEHD: case FORMAT_IEC61937: case FORMAT_APTX: + case FORMAT_APTXHD: pr_debug("%s: no runtime parameters for codec: %d\n", __func__, prtd->codec); break; @@ -3481,6 +3492,7 @@ static int msm_compr_dec_params_put(struct snd_kcontrol *kcontrol, case FORMAT_TRUEHD: case FORMAT_IEC61937: case FORMAT_APTX: + case FORMAT_APTXHD: pr_debug("%s: no runtime parameters for codec: %d\n", __func__, prtd->codec); break; diff --git a/sound/soc/msm/qdsp6v2/q6asm.c b/sound/soc/msm/qdsp6v2/q6asm.c index b7f85c504f7a..f6194eade877 100644 --- a/sound/soc/msm/qdsp6v2/q6asm.c +++ b/sound/soc/msm/qdsp6v2/q6asm.c @@ -3245,6 +3245,9 @@ static int __q6asm_open_write(struct audio_client *ac, uint32_t format, case FORMAT_APTX: open.dec_fmt_id = ASM_MEDIA_FMT_APTX; break; + case FORMAT_APTXHD: + open.dec_fmt_id = ASM_MEDIA_FMT_APTX_HD; + break; case FORMAT_GEN_COMPR: open.dec_fmt_id = ASM_MEDIA_FMT_GENERIC_COMPRESSED; break; |
