Merge "mm/memblock.c: cast constant ULLONG_MAX to phys_addr_t"
diff --git a/Documentation/devicetree/bindings/arm/msm/msm.txt b/Documentation/devicetree/bindings/arm/msm/msm.txt
index 67060d3..2f91abe 100644
--- a/Documentation/devicetree/bindings/arm/msm/msm.txt
+++ b/Documentation/devicetree/bindings/arm/msm/msm.txt
@@ -152,6 +152,9 @@
- QM215
compatible = "qcom, qm215"
+- QCM2150
+ compatible = "qcom, qcm2150"
+
- MDM9640
compatible = "qcom,mdm9640"
@@ -378,6 +381,7 @@
compatible = "qcom,sda439-cdp"
compatible = "qcom,sda439-mtp"
compatible = "qcom,qm215-qrd"
+compatible = "qcom,qcm2150-qrd"
compatible = "qcom,msm8953-rumi"
compatible = "qcom,msm8953-sim"
compatible = "qcom,msm8953-cdp"
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 5157889..06956b0 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -351,7 +351,8 @@
apq8017-cdp-overlay.dtbo \
apq8017-cdp-wcd-rome-overlay.dtbo
-dtbo-$(CONFIG_ARCH_QM215) +=qm215-qrd-overlay.dtbo
+dtbo-$(CONFIG_ARCH_QM215) +=qm215-qrd-overlay.dtbo \
+ qcm2150-qrd-overlay.dtbo
dtbo-$(CONFIG_ARCH_QM215) +=qm215-qrd-smb1360-overlay.dtbo
dtbo-$(CONFIG_ARCH_MSM8953) += msm8953-mtp-overlay.dtbo \
@@ -434,6 +435,7 @@
apq8017-pmi8937.dtb
qm215-qrd-overlay.dtbo-base := qm215.dtb
+qcm2150-qrd-overlay.dtbo-base := qcm2150.dtb
qm215-qrd-smb1360-overlay.dtbo-base := qm215.dtb
msm8953-mtp-overlay.dtbo-base := sdm450.dtb \
@@ -583,7 +585,8 @@
msm8917-pmi8940-cdp.dtb \
msm8917-pmi8940-rcm.dtb
-dtb-$(CONFIG_ARCH_QM215) += qm215-qrd.dtb
+dtb-$(CONFIG_ARCH_QM215) += qm215-qrd.dtb \
+ qcm2150-qrd.dtb
dtb-$(CONFIG_ARCH_QM215) += qm215-qrd-smb1360.dtb
dtb-$(CONFIG_ARCH_MSM8909) += msm8909-pm8916-mtp.dtb \
@@ -641,6 +644,7 @@
sdm439-external-codec-mtp.dtb \
sdm439-rcm.dtb \
qm215-qrd.dtb \
+ qcm2150-qrd.dtb \
qm215-qrd-smb1360.dtb
dtb-$(CONFIG_ARCH_SDM429) += sdm429-mtp.dtb \
diff --git a/arch/arm64/boot/dts/qcom/qcm2150-qrd-overlay.dts b/arch/arm64/boot/dts/qcom/qcm2150-qrd-overlay.dts
new file mode 100644
index 0000000..d810150
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qcm2150-qrd-overlay.dts
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 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
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include "qcm2150-qrd.dtsi"
+
+/ {
+ model = "QRD";
+ qcom,board-id = <0x01000b 4>;
+};
diff --git a/arch/arm64/boot/dts/qcom/qcm2150-qrd.dts b/arch/arm64/boot/dts/qcom/qcm2150-qrd.dts
new file mode 100644
index 0000000..5d1e1c5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qcm2150-qrd.dts
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 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
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "qcm2150.dtsi"
+#include "qcm2150-qrd.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. QCM2150 QRD";
+ compatible = "qcom,qcm2150-qrd", "qcom,qcm2150", "qcom,qrd";
+ qcom,board-id = <0x01000b 4>;
+ qcom,pmic-id = <0x010016 0x25 0x0 0x0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/qcm2150-qrd.dtsi b/arch/arm64/boot/dts/qcom/qcm2150-qrd.dtsi
new file mode 100644
index 0000000..05af319
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qcm2150-qrd.dtsi
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 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
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "qm215-qrd.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. QCM2150 QRD";
+};
diff --git a/arch/arm64/boot/dts/qcom/qcm2150.dts b/arch/arm64/boot/dts/qcom/qcm2150.dts
new file mode 100644
index 0000000..179d0ed
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qcm2150.dts
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 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
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "qcm2150.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. QCM2150";
+ compatible = "qcom,qcm2150";
+ qcom,pmic-name = "PM8916";
+};
diff --git a/arch/arm64/boot/dts/qcom/qcm2150.dtsi b/arch/arm64/boot/dts/qcom/qcm2150.dtsi
new file mode 100644
index 0000000..eac04e1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qcm2150.dtsi
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 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
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "qm215.dtsi"
+#include "qm215-pm8916.dtsi"
+#include "qm215-audio.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. QCM2150";
+ compatible = "qcom,qcm2150";
+ qcom,msm-id = <436 0x0>;
+ qcom,msm-name = "QCM2150";
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm429-spyro-qrd-evt.dtsi b/arch/arm64/boot/dts/qcom/sdm429-spyro-qrd-evt.dtsi
index 0f73bd9..9014166 100644
--- a/arch/arm64/boot/dts/qcom/sdm429-spyro-qrd-evt.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm429-spyro-qrd-evt.dtsi
@@ -233,7 +233,7 @@
&secure_mem {
alignment = <0 0x400000>;
- size = <0 0x400000>;
+ size = <0 0x800000>;
status = "okay";
};
diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c
index dba81f9..f62d96d 100644
--- a/drivers/char/adsprpc.c
+++ b/drivers/char/adsprpc.c
@@ -744,15 +744,14 @@
}
if (map->flags == ADSP_MMAP_HEAP_ADDR ||
map->flags == ADSP_MMAP_REMOTE_HEAP_ADDR) {
- unsigned long dma_attrs = 0;
if (me->dev == NULL) {
pr_err("failed to free remote heap allocation\n");
return;
}
if (map->phys) {
- dma_attrs |=
- DMA_ATTR_SKIP_ZEROING | DMA_ATTR_NO_KERNEL_MAPPING;
+ unsigned long dma_attrs = DMA_ATTR_SKIP_ZEROING |
+ DMA_ATTR_NO_KERNEL_MAPPING;
dma_free_attrs(me->dev, map->size, (void *)map->va,
(dma_addr_t)map->phys, dma_attrs);
}
@@ -2451,29 +2450,34 @@
{
int err = 0;
struct fastrpc_apps *me = &gfa;
+ int tgid = 0;
int destVM[1] = {VMID_HLOS};
int destVMperm[1] = {PERM_READ | PERM_WRITE | PERM_EXEC};
if (flags == ADSP_MMAP_HEAP_ADDR) {
struct fastrpc_ioctl_invoke_crc ioctl;
struct scm_desc desc = {0};
- remote_arg_t ra[1];
- int err = 0;
+ remote_arg_t ra[2];
+
struct {
uint8_t skey;
} routargs;
- ra[0].buf.pv = (void *)&routargs;
- ra[0].buf.len = sizeof(routargs);
+ if (fl == NULL)
+ goto bail;
+ tgid = fl->tgid;
+ ra[0].buf.pv = (void *)&tgid;
+ ra[0].buf.len = sizeof(tgid);
+ ra[1].buf.pv = (void *)&routargs;
+ ra[1].buf.len = sizeof(routargs);
ioctl.inv.handle = FASTRPC_STATIC_HANDLE_KERNEL;
- ioctl.inv.sc = REMOTE_SCALARS_MAKE(7, 0, 1);
+ ioctl.inv.sc = REMOTE_SCALARS_MAKE(9, 1, 1);
ioctl.inv.pra = ra;
ioctl.fds = NULL;
ioctl.attrs = NULL;
ioctl.crc = NULL;
- if (fl == NULL)
- goto bail;
+
VERIFY(err, 0 == (err = fastrpc_internal_invoke(fl,
FASTRPC_MODE_PARALLEL, 1, &ioctl)));
diff --git a/drivers/i2c/busses/i2c-msm-v2.c b/drivers/i2c/busses/i2c-msm-v2.c
index 631169b..ad999a2 100644
--- a/drivers/i2c/busses/i2c-msm-v2.c
+++ b/drivers/i2c/busses/i2c-msm-v2.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-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
@@ -2144,8 +2144,12 @@
{
struct i2c_msm_xfer_buf *cur_buf = &ctrl->xfer.cur_buf;
struct i2c_msg *cur_msg = ctrl->xfer.msgs + cur_buf->msg_idx;
- int bc_rem = cur_msg->len - cur_buf->end_idx;
+ int bc_rem = 0;
+ if (!cur_msg)
+ return false;
+
+ bc_rem = cur_msg->len - cur_buf->end_idx;
if (cur_buf->is_init && cur_buf->end_idx && bc_rem) {
/* not the first buffer in a message */
@@ -2321,17 +2325,12 @@
struct i2c_msm_ctrl *ctrl = i2c_get_adapdata(adap);
struct i2c_msm_xfer *xfer = &ctrl->xfer;
- if (num < 1) {
+ if (IS_ERR_OR_NULL(msgs) || num < 1) {
dev_err(ctrl->dev,
- "error on number of msgs(%d) received\n", num);
+ "Error on msgs Accessing invalid message pointer or message buffer\n");
return -EINVAL;
}
- if (IS_ERR_OR_NULL(msgs)) {
- dev_err(ctrl->dev, " error on msgs Accessing invalid pointer location\n");
- return PTR_ERR(msgs);
- }
-
/* if system is suspended just bail out */
if (ctrl->pwr_state == I2C_MSM_PM_SYS_SUSPENDED) {
dev_err(ctrl->dev,
diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_loader.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_loader.c
index 9f3f586..c7dbafa 100644
--- a/drivers/input/touchscreen/cyttsp5/cyttsp5_loader.c
+++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_loader.c
@@ -751,7 +751,7 @@
parade_debug(dev, DEBUG_LEVEL_2,
"%s: Enabling firmware class loader\n", __func__);
- retval = request_firmware_nowait(THIS_MODULE, FW_ACTION_NOHOTPLUG,
+ retval = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG,
CY_FW_MANUAL_UPGRADE_FILE_NAME, dev, GFP_KERNEL, dev,
_cyttsp5_firmware_cont);
if (retval < 0) {
diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_regs.h b/drivers/input/touchscreen/cyttsp5/cyttsp5_regs.h
index 69870ef..9502c7a 100644
--- a/drivers/input/touchscreen/cyttsp5/cyttsp5_regs.h
+++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_regs.h
@@ -168,7 +168,7 @@
#else
#define CY_HID_OUTPUT_TIMEOUT 200
#endif
-#define CY_HID_OUTPUT_START_BOOTLOADER_TIMEOUT 2000
+#define CY_HID_OUTPUT_START_BOOTLOADER_TIMEOUT 200
#define CY_HID_OUTPUT_USER_TIMEOUT 8000
#define CY_HID_OUTPUT_GET_SYSINFO_TIMEOUT 3000
#define CY_HID_OUTPUT_CALIBRATE_IDAC_TIMEOUT 5000
diff --git a/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c b/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c
index 35e25b3..e63c79a 100644
--- a/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c
+++ b/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c
@@ -3651,6 +3651,8 @@
} else {
ioctl_cmd = VIDIOC_MSM_BUF_MNGR_IOCTL_CMD;
idx = MSM_CAMERA_BUF_MNGR_IOCTL_ID_GET_BUF_BY_IDX;
+ buff_mgr_info.index =
+ frame_info.output_buffer_info[0].index;
}
rc = msm_cpp_buffer_ops(cpp_dev, ioctl_cmd, idx,
&buff_mgr_info);
@@ -4364,6 +4366,8 @@
memset(&k64_frame_info, 0, sizeof(k64_frame_info));
k64_frame_info.identity = k32_frame_info.identity;
k64_frame_info.frame_id = k32_frame_info.frame_id;
+ k64_frame_info.output_buffer_info[0].index =
+ k32_frame_info.output_buffer_info[0].index;
kp_ioctl.ioctl_ptr = (__force void __user *)&k64_frame_info;
diff --git a/drivers/soc/qcom/socinfo.c b/drivers/soc/qcom/socinfo.c
index c9489e3..e82b6ef 100644
--- a/drivers/soc/qcom/socinfo.c
+++ b/drivers/soc/qcom/socinfo.c
@@ -643,6 +643,9 @@
/* QM215 ID */
[386] = {MSM_CPU_QM215, "QM215"},
+ /* QCM2150 ID */
+ [436] = {MSM_CPU_QCM2150, "QCM2150"},
+
/* SDM429W IDs*/
[416] = {MSM_CPU_SDM429W, "SDM429W"},
/* Uninitialized IDs are not known to run Linux.
@@ -1644,6 +1647,10 @@
dummy_socinfo.id = 386;
strlcpy(dummy_socinfo.build_id, "qm215 - ",
sizeof(dummy_socinfo.build_id));
+ } else if (early_machine_is_qcm2150()) {
+ dummy_socinfo.id = 436;
+ strlcpy(dummy_socinfo.build_id, "qcm2150 - ",
+ sizeof(dummy_socinfo.build_id));
}
strlcat(dummy_socinfo.build_id, "Dummy socinfo",
diff --git a/fs/crypto/keyinfo.c b/fs/crypto/keyinfo.c
index 837a3de..9f38e7f 100755
--- a/fs/crypto/keyinfo.c
+++ b/fs/crypto/keyinfo.c
@@ -606,8 +606,6 @@
if (res)
goto out;
- memzero_explicit(crypt_info->ci_raw_key,
- sizeof(crypt_info->ci_raw_key));
do_ice:
if (cmpxchg(&inode->i_crypt_info, NULL, crypt_info) == NULL)
crypt_info = NULL;
diff --git a/include/soc/qcom/socinfo.h b/include/soc/qcom/socinfo.h
index f6fc1e0..855c13d 100644
--- a/include/soc/qcom/socinfo.h
+++ b/include/soc/qcom/socinfo.h
@@ -144,6 +144,8 @@
of_flat_dt_is_compatible(of_get_flat_dt_root(), "qcom,mdm9650")
#define early_machine_is_qm215() \
of_flat_dt_is_compatible(of_get_flat_dt_root(), "qcom,qm215")
+#define early_machine_is_qcm2150() \
+ of_flat_dt_is_compatible(of_get_flat_dt_root(), "qcom,qcm2150")
#else
#define of_board_is_sim() 0
#define of_board_is_rumi() 0
@@ -204,6 +206,7 @@
#define early_machine_is_sdm429w() 0
#define early_machine_is_mdm9650() 0
#define early_machine_is_qm215() 0
+#define early_machine_is_qcm2150() 0
#define early_machine_is_sdm712() 0
#endif
@@ -289,6 +292,7 @@
MSM_CPU_SDM429W,
MSM_CPU_9650,
MSM_CPU_QM215,
+ MSM_CPU_QCM2150,
};
struct msm_soc_info {