Merge "msm: camera: eeprom: Fix OOB condition for memory map count"
diff --git a/Documentation/devicetree/bindings/arm/msm/msm.txt b/Documentation/devicetree/bindings/arm/msm/msm.txt
index 4f8e4f5..67060d3 100644
--- a/Documentation/devicetree/bindings/arm/msm/msm.txt
+++ b/Documentation/devicetree/bindings/arm/msm/msm.txt
@@ -410,6 +410,6 @@
compatible = "qcom,sdxpoorwills-atp"
compatible = "qcom,sdxpoorwills-mtp"
compatible = "qcom,sdxpoorwills-cdp"
-compatible = "qcom,sdxpoorwills-ttp"
-compatible = "qcom,sdxpoorwills-ccard"
+compatible = "qcom,sa415m-ttp"
+compatible = "qcom,sa415m-ccard"
compatible = "qcom,mdm9607-ttp"
diff --git a/Documentation/devicetree/bindings/mhi/msm_mhi_dev.txt b/Documentation/devicetree/bindings/mhi/msm_mhi_dev.txt
index 3017468..ece30e4 100644
--- a/Documentation/devicetree/bindings/mhi/msm_mhi_dev.txt
+++ b/Documentation/devicetree/bindings/mhi/msm_mhi_dev.txt
@@ -31,6 +31,18 @@
MHI driver on the host. This property is required if iatu
property qcom,mhi-config-iatu is present.
+MSM MHI DEV NET
+
+MSM MHI DEV enables communication with the host over a PCIe link using the
+Network Interface.
+
+Required properties:
+ - compatible: should be "qcom,msm-mhi-dev-net" for MHI net device driver.
+
+Optional property:
+ - qcom,mhi-ethernet-interface;: If property is present use ethernet packet
+ parsing support.
+
Example:
mhi: qcom,msm-mhi-dev {
@@ -44,3 +56,8 @@
qcom,mhi-ep-msi = <1>;
qcom,mhi-version = <0x1000000>;
};
+
+ qcom,mhi_net_dev {
+ compatible = "qcom,msm-mhi-dev-net";
+ qcom,mhi-ethernet-interface;
+ };
diff --git a/Documentation/devicetree/bindings/sound/aw8896.txt b/Documentation/devicetree/bindings/sound/aw8896.txt
index e74ce67..c96b367 100644
--- a/Documentation/devicetree/bindings/sound/aw8896.txt
+++ b/Documentation/devicetree/bindings/sound/aw8896.txt
@@ -6,7 +6,13 @@
- reg : I2C address of the device
- - reset-gpio: gpio used for HW reset
+ - reset-gpio : gpio used for HW reset
+
+ - dvdd-supply : Power supply for PA's dvdd
+
+ - dvdd-voltage : Minimum and maximum voltage in uV to set for power supply
+
+ - dvdd-current : dvdd's max current in uA
Optional properties:
@@ -18,4 +24,7 @@
compatible = "awinic,i2c_smartpa";
reg = <0x34>;
reset-gpio = <&tlmm 68 0>;
+ dvdd-supply = <&pm660_l9>;
+ dvdd-voltage = <1800000 1800000>;
+ dvdd-current = <15000>;
};
diff --git a/arch/arm/boot/dts/qcom/Makefile b/arch/arm/boot/dts/qcom/Makefile
index 17524cf..ff0ae9a 100644
--- a/arch/arm/boot/dts/qcom/Makefile
+++ b/arch/arm/boot/dts/qcom/Makefile
@@ -3,7 +3,7 @@
sdxpoorwills-cdp.dtb \
sdxpoorwills-mtp.dtb \
sdxpoorwills-atp.dtb \
- sdxpoorwills-v2-ttp.dtb \
+ sa415m-ttp.dtb \
sdxpoorwills-cdp-256.dtb \
sdxpoorwills-mtp-256.dtb \
sdxpoorwills-dualwifi-cdp.dtb \
@@ -16,9 +16,10 @@
sdxpoorwills-v2-cdp.dtb \
sdxpoorwills-v2-dualwifi-mtp.dtb \
sdxpoorwills-v2-dualwifi-cdp.dtb \
- sdxpoorwills-ccard.dtb \
- sdxpoorwills-ccard-pcie-ep.dtb \
- sdxpoorwills-ccard-usb-ep.dtb \
+ sa415m-ccard.dtb \
+ sa415m-ccard-pcie-ep.dtb \
+ sa415m-ccard-usb-ep.dtb \
+ sa415m-ttp-usb-ep.dtb \
sdxpoorwills-v2-pcie-ep-mtp-256.dtb \
sdxpoorwills-v2-pcie-ep-mtp.dtb
diff --git a/arch/arm/boot/dts/qcom/pmxpoorwills.dtsi b/arch/arm/boot/dts/qcom/pmxpoorwills.dtsi
index 08e306d..fb88e76 100644
--- a/arch/arm/boot/dts/qcom/pmxpoorwills.dtsi
+++ b/arch/arm/boot/dts/qcom/pmxpoorwills.dtsi
@@ -60,16 +60,18 @@
<0x0 0xc2 0 IRQ_TYPE_NONE>,
<0x0 0xc3 0 IRQ_TYPE_NONE>,
<0x0 0xc4 0 IRQ_TYPE_NONE>,
- <0x0 0xc5 0 IRQ_TYPE_NONE>;
+ <0x0 0xc5 0 IRQ_TYPE_NONE>,
+ <0x0 0xc8 0 IRQ_TYPE_NONE>;
interrupt-names = "pmxpoorwills_gpio1",
"pmxpoorwills_gpio2",
"pmxpoorwills_gpio3",
"pmxpoorwills_gpio4",
"pmxpoorwills_gpio5",
- "pmxpoorwills_gpio6";
+ "pmxpoorwills_gpio6",
+ "pmxpoorwills_gpio9";
gpio-controller;
#gpio-cells = <2>;
- qcom,gpios-disallowed = <7 8 9>;
+ qcom,gpios-disallowed = <7 8>;
};
pmxpoorwills_rtc: qcom,pmxpoorwills_rtc {
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-ccard-pcie-ep.dts b/arch/arm/boot/dts/qcom/sa415m-ccard-pcie-ep.dts
similarity index 90%
rename from arch/arm/boot/dts/qcom/sdxpoorwills-ccard-pcie-ep.dts
rename to arch/arm/boot/dts/qcom/sa415m-ccard-pcie-ep.dts
index c7bf2bd..c2a447b 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-ccard-pcie-ep.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ccard-pcie-ep.dts
@@ -12,11 +12,11 @@
/dts-v1/;
-#include "sdxpoorwills-ccard.dtsi"
+#include "sa415m-ccard.dtsi"
/ {
model = "Qualcomm Technologies, Inc. SA415M CCARD PCIE-EP";
- compatible = "qcom,sdxpoorwills-ccard",
+ compatible = "qcom,sa415m-ccard",
"qcom,sdxpoorwills", "qcom,ccard";
qcom,board-id = <25 1>, <25 0x101>;
};
@@ -52,3 +52,7 @@
&ipc_router_mhi_dev_xprt {
status = "okay";
};
+
+&mhi_net_device {
+ status = "okay";
+};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-ccard-usb-ep.dts b/arch/arm/boot/dts/qcom/sa415m-ccard-usb-ep.dts
similarity index 89%
rename from arch/arm/boot/dts/qcom/sdxpoorwills-ccard-usb-ep.dts
rename to arch/arm/boot/dts/qcom/sa415m-ccard-usb-ep.dts
index 9f0764e..1cf3a55 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-ccard-usb-ep.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ccard-usb-ep.dts
@@ -12,11 +12,11 @@
/dts-v1/;
-#include "sdxpoorwills-ccard.dtsi"
+#include "sa415m-ccard.dtsi"
/ {
model = "Qualcomm Technologies, Inc. SA415M CCARD USB-EP";
- compatible = "qcom,sdxpoorwills-ccard",
+ compatible = "qcom,sa415m-ccard",
"qcom,sdxpoorwills", "qcom,ccard";
qcom,board-id = <25 2>, <25 0x102>;
};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-ccard.dts b/arch/arm/boot/dts/qcom/sa415m-ccard.dts
similarity index 89%
rename from arch/arm/boot/dts/qcom/sdxpoorwills-ccard.dts
rename to arch/arm/boot/dts/qcom/sa415m-ccard.dts
index b9acf1c..a0212fc 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-ccard.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ccard.dts
@@ -12,11 +12,11 @@
/dts-v1/;
-#include "sdxpoorwills-ccard.dtsi"
+#include "sa415m-ccard.dtsi"
/ {
model = "Qualcomm Technologies, Inc. SA415M CCARD";
- compatible = "qcom,sdxpoorwills-ccard",
+ compatible = "qcom,sa415m-ccard",
"qcom,sdxpoorwills", "qcom,ccard";
qcom,board-id = <25 0>, <25 0x100>;
};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-ccard.dtsi b/arch/arm/boot/dts/qcom/sa415m-ccard.dtsi
similarity index 93%
rename from arch/arm/boot/dts/qcom/sdxpoorwills-ccard.dtsi
rename to arch/arm/boot/dts/qcom/sa415m-ccard.dtsi
index d327aa3..aa708e6 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-ccard.dtsi
+++ b/arch/arm/boot/dts/qcom/sa415m-ccard.dtsi
@@ -10,7 +10,7 @@
* GNU General Public License for more details.
*/
-#include "sdxpoorwills-ttp.dtsi"
+#include "sa415m-ttp.dtsi"
#include "sdxpoorwills-v2.dtsi"
&blsp1_uart2b_hs {
@@ -141,12 +141,13 @@
};
};
-&pmxpoorwills_gpios {
- a2b_cdc_sel {
- a2b_cdc_sel_default: a2b_cdc_sel_default {
- pins = "gpio1";
- power-source = <1>;
- output-high;
- };
- };
+&emac_hw {
+ /delete-property/ vreg_rgmii-supply;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vreg_rgmii_off_default>;
+};
+
+&vreg_rgmii_io_pads {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-v2-ttp.dts b/arch/arm/boot/dts/qcom/sa415m-ttp-usb-ep.dts
similarity index 81%
copy from arch/arm/boot/dts/qcom/sdxpoorwills-v2-ttp.dts
copy to arch/arm/boot/dts/qcom/sa415m-ttp-usb-ep.dts
index a686c4b..802e8319 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-v2-ttp.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ttp-usb-ep.dts
@@ -12,14 +12,14 @@
/dts-v1/;
-#include "sdxpoorwills-ttp.dtsi"
+#include "sa415m-ttp.dtsi"
#include "sdxpoorwills-v2.dtsi"
/ {
- model = "Qualcomm Technologies, Inc. SDXPOORWILLS TTP V2";
- compatible = "qcom,sdxpoorwills-ttp",
+ model = "Qualcomm Technologies, Inc. SA415M TTP USB-EP";
+ compatible = "qcom,sa415m-ttp",
"qcom,sdxpoorwills", "qcom,ttp";
- qcom,board-id = <30 0x100>;
+ qcom,board-id = <30 0x102>;
};
&blsp1_uart2b_hs {
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-v2-ttp.dts b/arch/arm/boot/dts/qcom/sa415m-ttp.dts
similarity index 84%
rename from arch/arm/boot/dts/qcom/sdxpoorwills-v2-ttp.dts
rename to arch/arm/boot/dts/qcom/sa415m-ttp.dts
index a686c4b..d83eb68 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-v2-ttp.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ttp.dts
@@ -12,12 +12,12 @@
/dts-v1/;
-#include "sdxpoorwills-ttp.dtsi"
+#include "sa415m-ttp.dtsi"
#include "sdxpoorwills-v2.dtsi"
/ {
- model = "Qualcomm Technologies, Inc. SDXPOORWILLS TTP V2";
- compatible = "qcom,sdxpoorwills-ttp",
+ model = "Qualcomm Technologies, Inc. SA415M TTP V2";
+ compatible = "qcom,sa415m-ttp",
"qcom,sdxpoorwills", "qcom,ttp";
qcom,board-id = <30 0x100>;
};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-ttp.dtsi b/arch/arm/boot/dts/qcom/sa415m-ttp.dtsi
similarity index 96%
rename from arch/arm/boot/dts/qcom/sdxpoorwills-ttp.dtsi
rename to arch/arm/boot/dts/qcom/sa415m-ttp.dtsi
index c8fe492..e8fdc08 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-ttp.dtsi
+++ b/arch/arm/boot/dts/qcom/sa415m-ttp.dtsi
@@ -46,6 +46,14 @@
};
};
+&i2c_3 {
+ eeprom@52 {
+ compatible = "atmel,24c128";
+ reg = <0x52>;
+ pagesize = <32>;
+ };
+};
+
&i2c_4 {
status = "okay";
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-cdp-256.dtsi b/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-cdp-256.dtsi
index ba29301..1f07825 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-cdp-256.dtsi
+++ b/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-cdp-256.dtsi
@@ -39,6 +39,10 @@
status = "okay";
};
+&mhi_net_device {
+ status = "okay";
+};
+
&restart_pshold {
qcom,force-warm-reboot;
};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-cdp.dtsi b/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-cdp.dtsi
index 43490bf..f139ba9 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-cdp.dtsi
+++ b/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-cdp.dtsi
@@ -36,6 +36,10 @@
status = "okay";
};
+&mhi_net_device {
+ status = "okay";
+};
+
&restart_pshold {
qcom,force-warm-reboot;
};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-mtp-256.dtsi b/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-mtp-256.dtsi
index d2fe3be..14e70bc 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-mtp-256.dtsi
+++ b/arch/arm/boot/dts/qcom/sdxpoorwills-pcie-ep-mtp-256.dtsi
@@ -39,6 +39,10 @@
status = "okay";
};
+&mhi_net_device {
+ status = "okay";
+};
+
&restart_pshold {
qcom,force-warm-reboot;
};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-pcie.dtsi b/arch/arm/boot/dts/qcom/sdxpoorwills-pcie.dtsi
index 1907209..e0ecfaa 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-pcie.dtsi
+++ b/arch/arm/boot/dts/qcom/sdxpoorwills-pcie.dtsi
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2019, 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
@@ -130,7 +130,6 @@
qcom,vreg-cx-voltage-level = <RPMH_REGULATOR_LEVEL_MAX
RPMH_REGULATOR_LEVEL_SVS 0>;
- qcom,l0s-supported;
qcom,l1-supported;
qcom,l1ss-supported;
qcom,aux-clk-sync;
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-pinctrl.dtsi b/arch/arm/boot/dts/qcom/sdxpoorwills-pinctrl.dtsi
index 8c11e09..09a6219 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-pinctrl.dtsi
+++ b/arch/arm/boot/dts/qcom/sdxpoorwills-pinctrl.dtsi
@@ -1755,6 +1755,14 @@
};
&pmxpoorwills_gpios {
+ a2b_cdc_sel {
+ a2b_cdc_sel_default: a2b_cdc_sel_default {
+ pins = "gpio1";
+ power-source = <1>;
+ output-high;
+ };
+ };
+
ambient_therm {
ambient_therm_default: ambient_therm_default {
pins = "gpio2";
@@ -1768,4 +1776,13 @@
bias-high-impedance;
};
};
+
+ vreg_rgmii_off {
+ vreg_rgmii_off_default: vreg_rgmii_off_default {
+ pins = "gpio9";
+ bias-pull-down;
+ output-disable;
+ input-enable;
+ };
+ };
};
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills-regulator.dtsi b/arch/arm/boot/dts/qcom/sdxpoorwills-regulator.dtsi
index 7543f7c..70dc3ae 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills-regulator.dtsi
+++ b/arch/arm/boot/dts/qcom/sdxpoorwills-regulator.dtsi
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2017-2019, 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
@@ -398,8 +398,8 @@
vreg_rgmii_io_pads: rgmii_io_pads_regulator {
compatible = "regulator-fixed";
regulator-name = "rgmii_io_pads";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <2500000>;
regulator-enable-ramp-delay = <100>;
gpio = <&tlmm 83 GPIO_ACTIVE_HIGH>;
enable-active-high;
diff --git a/arch/arm/boot/dts/qcom/sdxpoorwills.dtsi b/arch/arm/boot/dts/qcom/sdxpoorwills.dtsi
index 02a1bf9..abbc8b5 100644
--- a/arch/arm/boot/dts/qcom/sdxpoorwills.dtsi
+++ b/arch/arm/boot/dts/qcom/sdxpoorwills.dtsi
@@ -520,6 +520,12 @@
status = "disabled";
};
+ mhi_net_device: qcom,mhi_net_dev {
+ compatible = "qcom,msm-mhi-dev-net";
+ qcom,mhi-ethernet-interface;
+ status = "disabled";
+ };
+
gdsc_emac: qcom,gdsc@147004 {
compatible = "qcom,gdsc";
regulator-name = "gdsc_emac";
diff --git a/arch/arm/configs/sdxpoorwills-auto-perf_defconfig b/arch/arm/configs/sdxpoorwills-auto-perf_defconfig
index f292555..1af9a91 100644
--- a/arch/arm/configs/sdxpoorwills-auto-perf_defconfig
+++ b/arch/arm/configs/sdxpoorwills-auto-perf_defconfig
@@ -65,7 +65,6 @@
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_IPV6_PIMSM_V2=y
-# CONFIG_ANDROID_PARANOID_NETWORK is not set
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
CONFIG_NF_CONNTRACK=y
@@ -193,6 +192,7 @@
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_QSEECOM=y
+CONFIG_EEPROM_AT24=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
diff --git a/arch/arm/configs/sdxpoorwills-auto_defconfig b/arch/arm/configs/sdxpoorwills-auto_defconfig
index d5544bd..572c46b 100644
--- a/arch/arm/configs/sdxpoorwills-auto_defconfig
+++ b/arch/arm/configs/sdxpoorwills-auto_defconfig
@@ -66,7 +66,6 @@
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_IPV6_PIMSM_V2=y
-# CONFIG_ANDROID_PARANOID_NETWORK is not set
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
CONFIG_NF_CONNTRACK=y
@@ -194,6 +193,7 @@
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_QSEECOM=y
+CONFIG_EEPROM_AT24=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
diff --git a/arch/arm/configs/sdxpoorwills-perf_defconfig b/arch/arm/configs/sdxpoorwills-perf_defconfig
index 4c48a1f..44eb38b 100644
--- a/arch/arm/configs/sdxpoorwills-perf_defconfig
+++ b/arch/arm/configs/sdxpoorwills-perf_defconfig
@@ -66,7 +66,6 @@
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_IPV6_PIMSM_V2=y
-# CONFIG_ANDROID_PARANOID_NETWORK is not set
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
CONFIG_NF_CONNTRACK=y
diff --git a/arch/arm/configs/sdxpoorwills_defconfig b/arch/arm/configs/sdxpoorwills_defconfig
index f892b1a..2b02a48 100644
--- a/arch/arm/configs/sdxpoorwills_defconfig
+++ b/arch/arm/configs/sdxpoorwills_defconfig
@@ -68,7 +68,6 @@
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_IPV6_PIMSM_V2=y
-# CONFIG_ANDROID_PARANOID_NETWORK is not set
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
CONFIG_NF_CONNTRACK=y
diff --git a/arch/arm64/boot/dts/qcom/sdm429-qrd-spyro-evt.dtsi b/arch/arm64/boot/dts/qcom/sdm429-qrd-spyro-evt.dtsi
index 78cd72f..eaa844b 100644
--- a/arch/arm64/boot/dts/qcom/sdm429-qrd-spyro-evt.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm429-qrd-spyro-evt.dtsi
@@ -592,8 +592,8 @@
/delete-property/qcom,cdc-us-eu-gpios;
- asoc-codec = <&stub_codec>, <&msm_dig_codec>;
- asoc-codec-names = "msm-stub-codec.1", "msm-dig-codec";
+ asoc-codec = <&stub_codec>, <&msm_dig_codec>, <&ext_smart_pa>;
+ asoc-codec-names = "msm-stub-codec.1", "msm-dig-codec", "ext-smart-pa";
};
&soc {
@@ -655,7 +655,7 @@
};
&i2c_2 {
- aw8896_smartpa@34 {
+ ext_smart_pa: aw8896_smartpa@34 {
compatible = "awinic,aw8896_smartpa";
reg = <0x34>;
reset-gpio = <&tlmm 68 0>;
diff --git a/arch/arm64/boot/dts/qcom/sdm429.dtsi b/arch/arm64/boot/dts/qcom/sdm429.dtsi
index 06c54a1..b261860 100644
--- a/arch/arm64/boot/dts/qcom/sdm429.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm429.dtsi
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2019, 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
@@ -220,6 +220,18 @@
< 400000000 1>,
< 533333333 3>;
+ qcom,speed5-bin-v0-c1 =
+ < 0 0>,
+ < 960000000 1>,
+ < 1305600000 1>,
+ < 1497600000 2>,
+ < 1708800000 3>;
+
+ qcom,speed5-bin-v0-cci =
+ < 0 0>,
+ < 400000000 1>,
+ < 533333333 3>;
+
#clock-cells = <1>;
};
diff --git a/arch/arm64/boot/dts/qcom/sdm439.dtsi b/arch/arm64/boot/dts/qcom/sdm439.dtsi
index e4e74cb..b42d18e 100644
--- a/arch/arm64/boot/dts/qcom/sdm439.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm439.dtsi
@@ -356,6 +356,26 @@
< 0 0>,
< 400000000 1>,
< 533333333 3>;
+
+ qcom,speed5-bin-v0-c0 =
+ < 0 0>,
+ < 768000000 1>,
+ < 998400000 1>,
+ < 1171200000 2>,
+ < 1305600000 3>,
+ < 1459200000 5>;
+
+ qcom,speed5-bin-v0-c1=
+ < 0 0>,
+ < 960000000 1>,
+ < 1305600000 1>,
+ < 1497600000 2>,
+ < 1708800000 3>;
+
+ qcom,speed5-bin-v0-cci =
+ < 0 0>,
+ < 400000000 1>,
+ < 533333333 3>;
};
&clock_gcc {
diff --git a/arch/arm64/boot/dts/qcom/sdm845-v2.1-rb3.dtsi b/arch/arm64/boot/dts/qcom/sdm845-v2.1-rb3.dtsi
index 1391080..9f3bd2b 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-v2.1-rb3.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-v2.1-rb3.dtsi
@@ -21,14 +21,6 @@
#include "sdm845-rb3.dtsi"
#include "sdm845-audio-overlay.dtsi"
-&labibb {
- status = "disabled";
-};
-
-&pmi8998_wled {
- status = "disabled";
-};
-
&qupv3_se3_i2c {
status = "disabled";
};
@@ -41,10 +33,6 @@
status = "ok";
};
-&ext_5v_boost {
- status = "disabled";
-};
-
&wil6210 {
status = "disabled";
};
@@ -83,14 +71,6 @@
pins = "gpio11";
};
-&sde_dp {
- status = "disabled";
-};
-
-&mdss_mdp {
- status = "disabled";
-};
-
&soc {
qcom,qbt1000 {
compatible = "qcom,qbt1000";
@@ -99,6 +79,10 @@
qcom,ipc-gpio = <&tlmm 121 0>;
qcom,finger-detect-gpio = <&pm8998_gpios 4 0>;
};
+
+ qcom,rmnet-ipa {
+ status="disabled";
+ };
};
&ssc_sensors {
@@ -193,3 +177,7 @@
};
};
};
+
+&ipa_hw {
+ status="disabled";
+};
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 01d5f5d..6107c03 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -70,12 +70,6 @@
#include <linux/pid_namespace.h>
#include <linux/security.h>
#include <linux/spinlock.h>
-
-#ifdef CONFIG_ANDROID_BINDER_IPC_32BIT
-#define BINDER_IPC_32BIT 1
-#endif
-
-#include <uapi/linux/android/binder.h>
#include "binder_alloc.h"
#include "binder_trace.h"
diff --git a/drivers/android/binder_alloc.h b/drivers/android/binder_alloc.h
index b60d161..8db0962 100644
--- a/drivers/android/binder_alloc.h
+++ b/drivers/android/binder_alloc.h
@@ -22,6 +22,11 @@
#include <linux/vmalloc.h>
#include <linux/slab.h>
#include <linux/list_lru.h>
+
+#ifdef CONFIG_ANDROID_BINDER_IPC_32BIT
+#define BINDER_IPC_32BIT 1
+#endif
+
#include <uapi/linux/android/binder.h>
extern struct list_lru binder_alloc_lru;
diff --git a/drivers/clk/msm/mdss/mdss-dsi-pll-12nm-util.c b/drivers/clk/msm/mdss/mdss-dsi-pll-12nm-util.c
index e502826..1baf534 100644
--- a/drivers/clk/msm/mdss/mdss-dsi-pll-12nm-util.c
+++ b/drivers/clk/msm/mdss/mdss-dsi-pll-12nm-util.c
@@ -900,7 +900,7 @@
rc = c->ops->set_rate(c, pll->vco_cached_rate);
if (rc) {
pr_err("index=%d vco_set_rate failed. rc=%d\n",
- rc, pll->index);
+ pll->index, rc);
goto error;
}
}
diff --git a/drivers/misc/qseecom.c b/drivers/misc/qseecom.c
index 72e5031..1fcafc1 100644
--- a/drivers/misc/qseecom.c
+++ b/drivers/misc/qseecom.c
@@ -535,7 +535,7 @@
smc_id = TZ_OS_APP_SHUTDOWN_ID;
desc.arginfo = TZ_OS_APP_SHUTDOWN_ID_PARAM_ID;
desc.args[0] = req->app_id;
- ret = __qseecom_scm_call2_locked(smc_id, &desc);
+ ret = scm_call2(smc_id, &desc);
break;
}
case QSEOS_APP_LOOKUP_COMMAND: {
diff --git a/drivers/platform/msm/mhi_dev/mhi_dev_net.c b/drivers/platform/msm/mhi_dev/mhi_dev_net.c
index d1f86a4..c78f20c 100644
--- a/drivers/platform/msm/mhi_dev/mhi_dev_net.c
+++ b/drivers/platform/msm/mhi_dev/mhi_dev_net.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2017-2019, 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
@@ -27,11 +27,13 @@
#include <linux/spinlock.h>
#include <linux/errno.h>
#include <linux/ktime.h>
+#include <linux/platform_device.h>
+#include <linux/etherdevice.h>
#include "mhi.h"
#define MHI_NET_DRIVER_NAME "mhi_dev_net_drv"
-#define MHI_NET_DEV_NAME "mhi_dev_net%d"
+#define MHI_NET_DEV_NAME "mhi_swip%d"
#define MHI_NET_DEFAULT_MTU 8192
#define MHI_NET_IPC_PAGES (100)
#define MHI_MAX_RX_REQ (128)
@@ -90,6 +92,7 @@
u32 out_chan;
/* read channel - always odd */
u32 in_chan;
+ bool eth_iface;
struct mhi_dev_client *out_handle;
struct mhi_dev_client *in_handle;
/*process pendig packets */
@@ -113,6 +116,7 @@
struct mhi_dev_net_ctxt {
struct mhi_dev_net_chan_attr chan_attr[MHI_MAX_SOFTWARE_CHANNELS];
struct mhi_dev_net_client *client_handle;
+ struct platform_device *pdev;
void (*net_event_notifier)(struct mhi_dev_client_cb_reason *cb);
};
@@ -247,8 +251,12 @@
unsigned long flags;
skb->len = mreq->transfer_len;
- skb->protocol =
- mhi_dev_net_eth_type_trans(skb);
+
+ if (net_handle->eth_iface)
+ skb->protocol = eth_type_trans(skb, net_handle->dev);
+ else
+ skb->protocol = mhi_dev_net_eth_type_trans(skb);
+
skb_put(skb, mreq->transfer_len);
net_handle->dev->stats.rx_packets++;
skb->dev = net_handle->dev;
@@ -433,12 +441,15 @@
.ndo_change_mtu = mhi_dev_net_change_mtu,
};
-static void mhi_dev_net_setup(struct net_device *dev)
+static void mhi_dev_net_rawip_setup(struct net_device *dev)
{
dev->netdev_ops = &mhi_dev_net_ops_ip;
ether_setup(dev);
+ mhi_dev_net_log(MHI_INFO,
+ "mhi_dev_net Raw IP setup\n");
/* set this after calling ether_setup */
+ dev->header_ops = NULL;
dev->type = ARPHRD_RAWIP;
dev->hard_header_len = 0;
dev->mtu = MHI_NET_DEFAULT_MTU;
@@ -446,6 +457,14 @@
dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
}
+static void mhi_dev_net_ether_setup(struct net_device *dev)
+{
+ dev->netdev_ops = &mhi_dev_net_ops_ip;
+ ether_setup(dev);
+ mhi_dev_net_log(MHI_INFO,
+ "mhi_dev_net Ethernet setup\n");
+}
+
static int mhi_dev_net_enable_iface(struct mhi_dev_net_client *mhi_dev_net_ptr)
{
int ret = 0;
@@ -462,12 +481,20 @@
"mhi_dev_net interface registration\n");
netdev = alloc_netdev(sizeof(struct mhi_dev_net_client),
MHI_NET_DEV_NAME, NET_NAME_PREDICTABLE,
- mhi_dev_net_setup);
+ mhi_net_ctxt.client_handle->eth_iface ?
+ mhi_dev_net_ether_setup :
+ mhi_dev_net_rawip_setup);
if (!netdev) {
pr_err("Failed to allocate netdev for mhi_dev_net\n");
goto net_dev_alloc_fail;
}
+ if (mhi_net_ctxt.client_handle->eth_iface) {
+ eth_random_addr(netdev->dev_addr);
+ if (!is_valid_ether_addr(netdev->dev_addr))
+ return -EADDRNOTAVAIL;
+ }
+
mhi_dev_net_ctxt = netdev_priv(netdev);
mhi_dev_net_ptr->dev = netdev;
*mhi_dev_net_ctxt = mhi_dev_net_ptr;
@@ -621,6 +648,12 @@
"Failed to create IPC logging for mhi_dev_net\n");
mhi_net_ctxt.client_handle = mhi_net_client;
+ if (mhi_net_ctxt.pdev)
+ mhi_net_ctxt.client_handle->eth_iface =
+ of_property_read_bool
+ ((&mhi_net_ctxt.pdev->dev)->of_node,
+ "qcom,mhi-ethernet-interface");
+
/*Process pending packet work queue*/
mhi_net_client->pending_pckt_wq =
create_singlethread_workqueue("pending_xmit_pckt_wq");
@@ -665,3 +698,47 @@
mhi_dev_net_close();
}
EXPORT_SYMBOL(mhi_dev_net_exit);
+
+static int mhi_dev_net_probe(struct platform_device *pdev)
+{
+ if (pdev->dev.of_node) {
+ mhi_net_ctxt.pdev = pdev;
+ mhi_dev_net_log(MHI_INFO,
+ "MHI Network probe success");
+ }
+
+ return 0;
+}
+
+static int mhi_dev_net_remove(struct platform_device *pdev)
+{
+ platform_set_drvdata(pdev, NULL);
+
+ return 0;
+}
+
+static const struct of_device_id mhi_dev_net_match_table[] = {
+ { .compatible = "qcom,msm-mhi-dev-net" },
+ {}
+};
+
+static struct platform_driver mhi_dev_net_driver = {
+ .driver = {
+ .name = "qcom,msm-mhi-dev-net",
+ .of_match_table = mhi_dev_net_match_table,
+ },
+ .probe = mhi_dev_net_probe,
+ .remove = mhi_dev_net_remove,
+};
+
+static int __init mhi_dev_net_init(void)
+{
+ return platform_driver_register(&mhi_dev_net_driver);
+}
+subsys_initcall(mhi_dev_net_init);
+
+static void __exit mhi_dev_exit(void)
+{
+ platform_driver_unregister(&mhi_dev_net_driver);
+}
+module_exit(mhi_dev_net_exit);
diff --git a/drivers/usb/gadget/config.c b/drivers/usb/gadget/config.c
index 17a6077..9b9d31e 100644
--- a/drivers/usb/gadget/config.c
+++ b/drivers/usb/gadget/config.c
@@ -198,9 +198,13 @@
void usb_free_all_descriptors(struct usb_function *f)
{
usb_free_descriptors(f->fs_descriptors);
+ f->fs_descriptors = NULL;
usb_free_descriptors(f->hs_descriptors);
+ f->hs_descriptors = NULL;
usb_free_descriptors(f->ss_descriptors);
+ f->ss_descriptors = NULL;
usb_free_descriptors(f->ssp_descriptors);
+ f->ssp_descriptors = NULL;
}
EXPORT_SYMBOL_GPL(usb_free_all_descriptors);
diff --git a/include/linux/diagchar.h b/include/linux/diagchar.h
index 8371859..d33071c 100644
--- a/include/linux/diagchar.h
+++ b/include/linux/diagchar.h
@@ -148,7 +148,7 @@
* a new RANGE of SSIDs to the msg_mask_tbl.
*/
#define MSG_MASK_TBL_CNT 26
-#define APPS_EVENT_LAST_ID 0xCA7
+#define APPS_EVENT_LAST_ID 0xCAA
#define MSG_SSID_0 0
#define MSG_SSID_0_LAST 130
@@ -183,7 +183,7 @@
#define MSG_SSID_15 8000
#define MSG_SSID_15_LAST 8000
#define MSG_SSID_16 8500
-#define MSG_SSID_16_LAST 8531
+#define MSG_SSID_16_LAST 8532
#define MSG_SSID_17 9000
#define MSG_SSID_17_LAST 9008
#define MSG_SSID_18 9500
@@ -783,7 +783,8 @@
MSG_LVL_LOW | MSG_LVL_MED | MSG_LVL_HIGH | MSG_LVL_ERROR |
MSG_LVL_FATAL,
MSG_LVL_MED,
- MSG_LVL_MED
+ MSG_LVL_MED,
+ MSG_LVL_LOW
};
static const uint32_t msg_bld_masks_17[] = {
@@ -921,7 +922,7 @@
/* LOG CODES */
static const uint32_t log_code_last_tbl[] = {
0x0, /* EQUIP ID 0 */
- 0x1C94, /* EQUIP ID 1 */
+ 0x1C9A, /* EQUIP ID 1 */
0x0, /* EQUIP ID 2 */
0x0, /* EQUIP ID 3 */
0x4910, /* EQUIP ID 4 */
diff --git a/sound/soc/codecs/aw8896.c b/sound/soc/codecs/aw8896.c
index dbc7cd8..2592b48 100644
--- a/sound/soc/codecs/aw8896.c
+++ b/sound/soc/codecs/aw8896.c
@@ -43,6 +43,7 @@
#define AW_READ_CHIPID_RETRIES 5
#define AW_READ_CHIPID_RETRY_DELAY 5
#define AW8896_MAX_DSP_START_TRY_COUNT 10
+#define DT_MAX_PROP_SIZE 80
static int aw8896_spk_control;
static int aw8896_rcv_control;
@@ -1068,6 +1069,14 @@
static int aw8896_parse_dt(struct device *dev, struct aw8896 *aw8896,
struct device_node *np) {
+ int prop_val = 0;
+ int ret = 0;
+ int len = 0;
+ const __be32 *prop = NULL;
+ struct device_node *regnode = NULL;
+ char *dvdd_supply = "dvdd";
+ char prop_name[DT_MAX_PROP_SIZE] = {0};
+
aw8896->reset_gpio = of_get_named_gpio(np, "reset-gpio", 0);
if (aw8896->reset_gpio < 0) {
dev_err(dev,
@@ -1082,7 +1091,47 @@
if (aw8896->irq_gpio < 0)
dev_info(dev, "%s: no irq gpio provided.\n", __func__);
+ snprintf(prop_name, DT_MAX_PROP_SIZE, "%s-supply", dvdd_supply);
+ regnode = of_parse_phandle(np, prop_name, 0);
+ if (!regnode) {
+ dev_err(dev, "%s: no %s provided\n", __func__, prop_name);
+ goto err_get_regulator;
+ }
+
+ aw8896->supply.regulator = devm_regulator_get(dev, dvdd_supply);
+ if (IS_ERR(aw8896->supply.regulator)) {
+ dev_err(dev, "%s: failed to get supply for %s\n", __func__,
+ dvdd_supply);
+ goto err_get_regulator;
+ }
+
+ snprintf(prop_name, DT_MAX_PROP_SIZE, "%s-voltage", dvdd_supply);
+ prop = of_get_property(np, prop_name, &len);
+ if (!prop || (len != (2 * sizeof(__be32)))) {
+ dev_err(dev, "%s: no %s provided or format invalid\n",
+ __func__, prop_name);
+ goto err_get_voltage;
+ }
+
+ aw8896->supply.min_uv = be32_to_cpup(&prop[0]);
+ aw8896->supply.max_uv = be32_to_cpup(&prop[1]);
+
+ snprintf(prop_name, DT_MAX_PROP_SIZE, "%s-current", dvdd_supply);
+ ret = of_property_read_u32(np, prop_name, &prop_val);
+ if (ret) {
+ dev_err(dev, "%s: no %s provided\n", __func__, prop_name);
+ goto err_get_current;
+ }
+ aw8896->supply.ua = prop_val;
+
return 0;
+
+err_get_current:
+err_get_voltage:
+ devm_regulator_put(aw8896->supply.regulator);
+ aw8896->supply.regulator = NULL;
+err_get_regulator:
+ return -EINVAL;
}
int aw8896_hw_reset(struct aw8896 *aw8896)
@@ -1354,7 +1403,7 @@
i2c_set_clientdata(i2c, aw8896);
mutex_init(&aw8896->lock);
- /* aw8896 rst & int */
+
if (np) {
ret = aw8896_parse_dt(&i2c->dev, aw8896, np);
if (ret) {
@@ -1388,6 +1437,30 @@
}
}
+ ret = regulator_set_voltage(aw8896->supply.regulator,
+ aw8896->supply.max_uv,
+ aw8896->supply.min_uv);
+ if (ret) {
+ dev_err(&i2c->dev, "%s: set voltage %d ~ %d failed\n",
+ __func__,
+ aw8896->supply.min_uv,
+ aw8896->supply.max_uv);
+ goto err_supply_set;
+ }
+
+ ret = regulator_set_load(aw8896->supply.regulator, aw8896->supply.ua);
+ if (ret < 0) {
+ dev_err(&i2c->dev, "%s: set current %d failed\n", __func__,
+ aw8896->supply.ua);
+ goto err_supply_set;
+ }
+
+ ret = regulator_enable(aw8896->supply.regulator);
+ if (ret < 0) {
+ dev_err(&i2c->dev, "%s: regulator enable failed\n", __func__);
+ goto err_supply_set;
+ }
+
ret = aw8896_hw_reset(aw8896);
if (ret < 0) {
dev_err(&i2c->dev, "%s: aw8896_hw_reset failed\n", __func__);
@@ -1461,6 +1534,11 @@
if (gpio_is_valid(aw8896->irq_gpio))
devm_gpio_free(&i2c->dev, aw8896->irq_gpio);
err_hw_rst:
+ if (aw8896->supply.regulator)
+ regulator_disable(aw8896->supply.regulator);
+err_supply_set:
+ if (aw8896->supply.regulator)
+ devm_regulator_put(aw8896->supply.regulator);
err_irq_gpio_request:
if (gpio_is_valid(aw8896->reset_gpio))
devm_gpio_free(&i2c->dev, aw8896->reset_gpio);
@@ -1486,6 +1564,11 @@
if (gpio_is_valid(aw8896->reset_gpio))
devm_gpio_free(&i2c->dev, aw8896->reset_gpio);
+ if (aw8896->supply.regulator) {
+ regulator_disable(aw8896->supply.regulator);
+ devm_regulator_put(aw8896->supply.regulator);
+ }
+
devm_kfree(&i2c->dev, aw8896);
aw8896 = NULL;
diff --git a/sound/soc/codecs/aw8896.h b/sound/soc/codecs/aw8896.h
index 48e01ca..5663cb2 100644
--- a/sound/soc/codecs/aw8896.h
+++ b/sound/soc/codecs/aw8896.h
@@ -15,6 +15,7 @@
#ifndef _AW8896_H_
#define _AW8896_H_
+#include <linux/regulator/driver.h>
/*
* i2c transaction on Linux limited to 64k
@@ -81,10 +82,18 @@
AW8896_DSP_CFG_OK,
};
+struct dvdd_supply {
+ struct regulator *regulator;
+ int min_uv;
+ int max_uv;
+ int ua;
+};
+
struct aw8896 {
struct regmap *regmap;
struct i2c_client *i2c;
struct snd_soc_codec *codec;
+ struct dvdd_supply supply;
struct mutex lock;
int dsp_init;
int dsp_fw_state;