Merge "msm: mhi_dev: Redesign MHI driver async path"
diff --git a/arch/arm/boot/dts/qcom/sa415m-ccard-pcie-ep.dts b/arch/arm/boot/dts/qcom/sa415m-ccard-pcie-ep.dts
index a14ad6f..e1f520d4 100644
--- a/arch/arm/boot/dts/qcom/sa415m-ccard-pcie-ep.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ccard-pcie-ep.dts
@@ -19,6 +19,16 @@
compatible = "qcom,sa415m-ccard",
"qcom,sdxpoorwills", "qcom,ccard";
qcom,board-id = <25 1>, <25 0x101>;
+
+ qcom_gadget {
+ compatible = "qcom,usb-gadget";
+ qcom,vid = <0x05c6>;
+
+ composition1 {
+ qcom,pid = <0x9105>;
+ qcom,composition = "diag.diag,gsi.dpl";
+ };
+ };
};
&usb {
diff --git a/arch/arm/boot/dts/qcom/sa415m-ccard-usb-ep.dts b/arch/arm/boot/dts/qcom/sa415m-ccard-usb-ep.dts
index 29db2d4..cc091b1 100644
--- a/arch/arm/boot/dts/qcom/sa415m-ccard-usb-ep.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ccard-usb-ep.dts
@@ -30,11 +30,6 @@
};
composition2 {
- qcom,pid = <0x9105>;
- qcom,composition = "diag.diag,gsi.dpl";
- };
-
- composition3 {
qcom,pid = <0x9107>;
qcom,composition = "diag.diag,ipc.ipc,gsi.rmnet.v2x,gsi.ecm,gsi.dpl";
};
diff --git a/arch/arm/boot/dts/qcom/sa415m-ccard.dts b/arch/arm/boot/dts/qcom/sa415m-ccard.dts
index a0212fc..65c5761 100644
--- a/arch/arm/boot/dts/qcom/sa415m-ccard.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ccard.dts
@@ -19,4 +19,14 @@
compatible = "qcom,sa415m-ccard",
"qcom,sdxpoorwills", "qcom,ccard";
qcom,board-id = <25 0>, <25 0x100>;
+
+ qcom_gadget {
+ compatible = "qcom,usb-gadget";
+ qcom,vid = <0x05c6>;
+
+ composition1 {
+ qcom,pid = <0x90dc>;
+ qcom,composition = "diag.diag,cser.dun.0,gsi.rmnet,gsi.dpl,qdss.qdss";
+ };
+ };
};
diff --git a/arch/arm/boot/dts/qcom/sa415m-ttp-pcie-ep.dts b/arch/arm/boot/dts/qcom/sa415m-ttp-pcie-ep.dts
index 0cbc9e3..619a601 100644
--- a/arch/arm/boot/dts/qcom/sa415m-ttp-pcie-ep.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ttp-pcie-ep.dts
@@ -20,6 +20,16 @@
compatible = "qcom,sa415m-ttp",
"qcom,sdxpoorwills", "qcom,ttp";
qcom,board-id = <30 0x101>;
+
+ qcom_gadget {
+ compatible = "qcom,usb-gadget";
+ qcom,vid = <0x05c6>;
+
+ composition1 {
+ qcom,pid = <0x9105>;
+ qcom,composition = "diag.diag,gsi.dpl";
+ };
+ };
};
&mss_mem {
diff --git a/arch/arm/boot/dts/qcom/sa415m-ttp-usb-ep.dts b/arch/arm/boot/dts/qcom/sa415m-ttp-usb-ep.dts
index 7d91330..a907069 100644
--- a/arch/arm/boot/dts/qcom/sa415m-ttp-usb-ep.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ttp-usb-ep.dts
@@ -31,11 +31,6 @@
};
composition2 {
- qcom,pid = <0x9105>;
- qcom,composition = "diag.diag,gsi.dpl";
- };
-
- composition3 {
qcom,pid = <0x9107>;
qcom,composition = "diag.diag,ipc.ipc,gsi.rmnet.v2x,gsi.ecm,gsi.dpl";
};
diff --git a/arch/arm/boot/dts/qcom/sa415m-ttp.dts b/arch/arm/boot/dts/qcom/sa415m-ttp.dts
index d83eb68..578c43c 100644
--- a/arch/arm/boot/dts/qcom/sa415m-ttp.dts
+++ b/arch/arm/boot/dts/qcom/sa415m-ttp.dts
@@ -20,6 +20,16 @@
compatible = "qcom,sa415m-ttp",
"qcom,sdxpoorwills", "qcom,ttp";
qcom,board-id = <30 0x100>;
+
+ qcom_gadget {
+ compatible = "qcom,usb-gadget";
+ qcom,vid = <0x05c6>;
+
+ composition1 {
+ qcom,pid = <0x90dc>;
+ qcom,composition = "diag.diag,cser.dun.0,gsi.rmnet,gsi.dpl,qdss.qdss";
+ };
+ };
};
&blsp1_uart2b_hs {
diff --git a/drivers/input/misc/qti-haptics.c b/drivers/input/misc/qti-haptics.c
index 27ce7cf..a2c8e76 100644
--- a/drivers/input/misc/qti-haptics.c
+++ b/drivers/input/misc/qti-haptics.c
@@ -254,6 +254,11 @@
static int wf_repeat[8] = {1, 2, 4, 8, 16, 32, 64, 128};
static int wf_s_repeat[4] = {1, 2, 4, 8};
+static int twm_sys_enable;
+module_param_named(
+ haptics_twm, twm_sys_enable, int, 0600
+);
+
static inline bool is_secure(u8 addr)
{
return ((addr & 0xFF) > 0xD0);
@@ -2028,6 +2033,7 @@
{
struct qti_hap_chip *chip = dev_get_drvdata(&pdev->dev);
int rc;
+ bool enable_haptics_twm;
dev_dbg(chip->dev, "Shutdown!\n");
@@ -2043,7 +2049,9 @@
chip->vdd_enabled = false;
}
- if (chip->twm_state == PMIC_TWM_ENABLE && chip->haptics_ext_pin_twm) {
+ enable_haptics_twm = chip->haptics_ext_pin_twm && twm_sys_enable;
+
+ if (chip->twm_state == PMIC_TWM_ENABLE && enable_haptics_twm) {
rc = qti_haptics_twm_config(chip);
if (rc < 0)
pr_err("Haptics TWM config failed rc=%d\n", rc);
diff --git a/drivers/platform/msm/ipa/ipa_common_i.h b/drivers/platform/msm/ipa/ipa_common_i.h
index 3b40b41..858804d 100644
--- a/drivers/platform/msm/ipa/ipa_common_i.h
+++ b/drivers/platform/msm/ipa/ipa_common_i.h
@@ -21,6 +21,8 @@
#include <linux/ipa_uc_offload.h>
#include <linux/ipa_wdi3.h>
#include <linux/ratelimit.h>
+#include <linux/swab.h>
+#include <linux/compiler.h>
#define WARNON_RATELIMIT_BURST 1
#define IPA_RATELIMIT_BURST 1
diff --git a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c
index bc107d8..17f22f1 100644
--- a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c
+++ b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2020, 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
@@ -1590,7 +1590,7 @@
(RMNET_IOCTL_FEAT_NOTIFY_MUX_CHANNEL |
RMNET_IOCTL_FEAT_SET_EGRESS_DATA_FORMAT |
RMNET_IOCTL_FEAT_SET_INGRESS_DATA_FORMAT);
- if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data,
+ if (copy_to_user(ifr->ifr_ifru.ifru_data,
&extend_ioctl_data,
sizeof(struct rmnet_ioctl_extended_s)))
rc = -EFAULT;
@@ -1604,7 +1604,7 @@
/* Get MRU */
case RMNET_IOCTL_GET_MRU:
extend_ioctl_data.u.data = mru;
- if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data,
+ if (copy_to_user(ifr->ifr_ifru.ifru_data,
&extend_ioctl_data,
sizeof(struct rmnet_ioctl_extended_s)))
rc = -EFAULT;
@@ -1613,7 +1613,7 @@
case RMNET_IOCTL_GET_SG_SUPPORT:
extend_ioctl_data.u.data =
ipa3_rmnet_res.ipa_advertise_sg_support;
- if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data,
+ if (copy_to_user(ifr->ifr_ifru.ifru_data,
&extend_ioctl_data,
sizeof(struct rmnet_ioctl_extended_s)))
rc = -EFAULT;
@@ -1622,7 +1622,7 @@
case RMNET_IOCTL_GET_EPID:
IPAWANDBG("get ioctl: RMNET_IOCTL_GET_EPID\n");
extend_ioctl_data.u.data = epid;
- if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data,
+ if (copy_to_user(ifr->ifr_ifru.ifru_data,
&extend_ioctl_data,
sizeof(struct rmnet_ioctl_extended_s)))
rc = -EFAULT;
@@ -1643,7 +1643,7 @@
ipa3_get_ep_mapping(IPA_CLIENT_APPS_WAN_PROD);
extend_ioctl_data.u.ipa_ep_pair.producer_pipe_num =
ipa3_get_ep_mapping(IPA_CLIENT_APPS_WAN_CONS);
- if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data,
+ if (copy_to_user(ifr->ifr_ifru.ifru_data,
&extend_ioctl_data,
sizeof(struct rmnet_ioctl_extended_s)))
rc = -EFAULT;
@@ -1660,13 +1660,19 @@
break;
/* Get driver name */
case RMNET_IOCTL_GET_DRIVER_NAME:
- memcpy(&extend_ioctl_data.u.if_name,
- IPA_NETDEV()->name, IFNAMSIZ);
- extend_ioctl_data.u.if_name[IFNAMSIZ - 1] = '\0';
- if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data,
+ if (IPA_NETDEV() != NULL) {
+ memcpy(&extend_ioctl_data.u.if_name,
+ IPA_NETDEV()->name, IFNAMSIZ);
+ extend_ioctl_data.u.if_name[IFNAMSIZ - 1] =
+ '\0';
+ if (copy_to_user(ifr->ifr_ifru.ifru_data,
&extend_ioctl_data,
sizeof(struct rmnet_ioctl_extended_s)))
+ rc = -EFAULT;
+ } else {
+ IPAWANERR("IPA_NETDEV is NULL\n");
rc = -EFAULT;
+ }
break;
/* Add MUX ID */
case RMNET_IOCTL_ADD_MUX_CHANNEL:
diff --git a/kernel/audit.c b/kernel/audit.c
index f98476d..7d9b52a 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -908,9 +908,9 @@
}
if (audit_enabled != AUDIT_OFF)
audit_log_config_change("audit_pid", new_pid, audit_pid, 1);
+ mutex_lock(&audit_sock_mutex);
audit_pid = new_pid;
audit_nlk_portid = NETLINK_CB(skb).portid;
- mutex_lock(&audit_sock_mutex);
audit_sock = skb->sk;
mutex_unlock(&audit_sock_mutex);
}
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index e2f1d27..0ed63b8 100755
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -2338,7 +2338,7 @@
#else /* CONFIG_SCHED_WALT */
static inline u64 sched_ktime_clock(void)
{
- return 0;
+ return sched_clock();
}
static inline void note_task_waking(struct task_struct *p, u64 wallclock) { }
#endif /* CONFIG_SCHED_WALT */
@@ -2371,16 +2371,20 @@
static inline void cpufreq_update_util(struct rq *rq, unsigned int flags)
{
struct update_util_data *data;
+ u64 clock;
#ifdef CONFIG_SCHED_WALT
if (!(flags & SCHED_CPUFREQ_WALT))
return;
+ clock = sched_ktime_clock();
+#else
+ clock = rq_clock(rq);
#endif
data = rcu_dereference_sched(*per_cpu_ptr(&cpufreq_update_util_data,
cpu_of(rq)));
if (data)
- data->func(data, sched_ktime_clock(), flags);
+ data->func(data, clock, flags);
}
static inline void cpufreq_update_this_cpu(struct rq *rq, unsigned int flags)