summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/sound/qcom-audio-dev.txt104
-rw-r--r--arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi28
-rw-r--r--arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi28
-rw-r--r--arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi28
-rw-r--r--arch/arm/boot/dts/qcom/msm8996-mmxf-adp.dtsi28
-rw-r--r--arch/arm/boot/dts/qcom/msm8996.dtsi228
-rw-r--r--arch/arm/boot/dts/qcom/vplatform-lfv-msm8996-audio-common.dtsi256
-rw-r--r--drivers/gpu/drm/msm/sde/sde_crtc.c22
-rw-r--r--drivers/gpu/drm/msm/sde/sde_crtc.h9
-rw-r--r--drivers/gpu/drm/msm/sde/sde_kms.h12
-rw-r--r--drivers/gpu/drm/msm/sde/sde_kms_utils.c60
-rw-r--r--drivers/gpu/drm/msm/sde/sde_plane.c18
-rw-r--r--drivers/gpu/drm/msm/sde/sde_plane.h9
-rw-r--r--drivers/gpu/drm/msm/sde/sde_splash.c26
-rw-r--r--include/sound/q6asm-v2.h1
-rw-r--r--include/uapi/sound/compress_params.h3
-rw-r--r--sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c12
-rw-r--r--sound/soc/msm/qdsp6v2/q6asm.c3
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;