Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10a5c5b6 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 96eca370 on remote branch

Change-Id: Ib1b8db2b2d165effaca8114bd41c8afbec79f437
parents a5da6cf2 96eca370
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
/* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2016-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
@@ -38,6 +38,12 @@
	qcom,display-type = "primary";
};

&mdss_fb2 {
	qcom,cont-splash-memory {
		linux,contiguous-region = <&cont_splash_mem>;
	};
};

&slim_aud {
	tasha_codec {
		wsa_spkr_sd1: msm_cdc_pinctrll {
+13 −5
Original line number Diff line number Diff line
@@ -984,7 +984,7 @@ void extract_dci_pkt_rsp(unsigned char *buf, int len, int data_source,
	int save_req_uid = 0;
	struct diag_dci_pkt_rsp_header_t pkt_rsp_header;

	if (!buf) {
	if (!buf || len <= 0) {
		pr_err("diag: Invalid pointer in %s\n", __func__);
		return;
	}
@@ -998,6 +998,8 @@ void extract_dci_pkt_rsp(unsigned char *buf, int len, int data_source,
								dci_cmd_code);
		return;
	}
	if (len < (cmd_code_len + sizeof(int)))
		return;
	temp += cmd_code_len;
	tag = *(int *)temp;
	temp += sizeof(int);
@@ -1006,12 +1008,18 @@ void extract_dci_pkt_rsp(unsigned char *buf, int len, int data_source,
	 * The size of the response is (total length) - (length of the command
	 * code, the tag (int)
	 */
	if (len >= cmd_code_len + sizeof(int)) {
		rsp_len = len - (cmd_code_len + sizeof(int));
		if ((rsp_len == 0) || (rsp_len > (len - 5))) {
		pr_err("diag: Invalid length in %s, len: %d, rsp_len: %d",
			pr_err("diag: Invalid length in %s, len: %d, rsp_len: %d\n",
					__func__, len, rsp_len);
			return;
		}
	} else {
		pr_err("diag:%s: Invalid length(%d) for calculating rsp_len\n",
			__func__, len);
		return;
	}

	mutex_lock(&driver->dci_mutex);
	req_entry = diag_dci_get_request_entry(tag);
+2 −2
Original line number Diff line number Diff line
/* Copyright (c) 2008-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2008-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
@@ -705,7 +705,7 @@ static int diag_cmd_get_msg_mask(unsigned char *src_buf, int src_len,

	mask_info = (!info) ? &msg_mask : info->msg_mask;
	if (!src_buf || !dest_buf || src_len <= 0 || dest_len <= 0 ||
	    !mask_info) {
	    !mask_info || (src_len < sizeof(struct diag_build_mask_req_t))) {
		pr_err("diag: Invalid input in %s, src_buf: %pK, src_len: %d, dest_buf: %pK, dest_len: %d, mask_info: %pK\n",
		       __func__, src_buf, src_len, dest_buf, dest_len,
		       mask_info);
+54 −31
Original line number Diff line number Diff line
/* Copyright (c) 2008-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2008-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
@@ -684,7 +684,8 @@ int diag_process_time_sync_query_cmd(unsigned char *src_buf, int src_len,
	struct diag_cmd_time_sync_query_req_t *req = NULL;
	struct diag_cmd_time_sync_query_rsp_t rsp;

	if (!src_buf || !dest_buf || src_len <= 0 || dest_len <= 0) {
	if (!src_buf || !dest_buf || src_len <= 0 || dest_len <= 0 ||
		src_len < sizeof(struct diag_cmd_time_sync_query_req_t)) {
		pr_err("diag: Invalid input in %s, src_buf: %pK, src_len: %d, dest_buf: %pK, dest_len: %d",
			__func__, src_buf, src_len, dest_buf, dest_len);
		return -EINVAL;
@@ -711,7 +712,8 @@ int diag_process_time_sync_switch_cmd(unsigned char *src_buf, int src_len,
	int msg_size = sizeof(struct diag_ctrl_msg_time_sync);
	int err = 0, write_len = 0;

	if (!src_buf || !dest_buf || src_len <= 0 || dest_len <= 0) {
	if (!src_buf || !dest_buf || src_len <= 0 || dest_len <= 0 ||
		src_len < sizeof(struct diag_cmd_time_sync_switch_req_t)) {
		pr_err("diag: Invalid input in %s, src_buf: %pK, src_len: %d, dest_buf: %pK, dest_len: %d",
			__func__, src_buf, src_len, dest_buf, dest_len);
		return -EINVAL;
@@ -952,7 +954,7 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
	struct diag_cmd_reg_t *reg_item = NULL;
	struct diag_md_session_t *info = NULL;

	if (!buf)
	if (!buf || len <= 0)
		return -EIO;

	/* Check if the command is a supported mask command */
@@ -963,18 +965,31 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
	}

	temp = buf;
	if (len >= sizeof(uint8_t)) {
		entry.cmd_code = (uint16_t)(*(uint8_t *)temp);
		pr_debug("diag: received cmd_code %02x\n", entry.cmd_code);
	}
	if (len >= (2 * sizeof(uint8_t))) {
		temp += sizeof(uint8_t);
		entry.subsys_id = (uint16_t)(*(uint8_t *)temp);
		pr_debug("diag: received subsys_id %02x\n", entry.subsys_id);
	}
	if (len == (3 * sizeof(uint8_t))) {
		temp += sizeof(uint8_t);
		entry.cmd_code_hi = (uint16_t)(*(uint8_t *)temp);
		entry.cmd_code_lo = (uint16_t)(*(uint8_t *)temp);
		pr_debug("diag: received cmd_code_hi %02x\n",
			entry.cmd_code_hi);
	} else if (len >= (2 * sizeof(uint8_t)) + sizeof(uint16_t)) {
		temp += sizeof(uint8_t);
		entry.cmd_code_hi = (uint16_t)(*(uint16_t *)temp);
		entry.cmd_code_lo = (uint16_t)(*(uint16_t *)temp);
	temp += sizeof(uint16_t);

	pr_debug("diag: In %s, received cmd %02x %02x %02x\n",
		 __func__, entry.cmd_code, entry.subsys_id, entry.cmd_code_hi);
		pr_debug("diag: received cmd_code_hi %02x\n",
			entry.cmd_code_hi);
	}

	if (*buf == DIAG_CMD_LOG_ON_DMND && driver->log_on_demand_support &&
	if ((len >= sizeof(uint8_t)) && *buf == DIAG_CMD_LOG_ON_DMND &&
		driver->log_on_demand_support &&
	    driver->feature[PERIPHERAL_MODEM].rcvd_feature_mask) {
		write_len = diag_cmd_log_on_demand(buf, len,
						   driver->apps_rsp_buf,
@@ -1014,14 +1029,16 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)

#if defined(CONFIG_DIAG_OVER_USB)
	/* Check for the command/respond msg for the maximum packet length */
	if ((*buf == 0x4b) && (*(buf+1) == 0x12) &&
	if ((len >= (4 * sizeof(uint8_t))) &&
		(*buf == 0x4b) && (*(buf+1) == 0x12) &&
		(*(uint16_t *)(buf+2) == 0x0055)) {
		for (i = 0; i < 4; i++)
			*(driver->apps_rsp_buf+i) = *(buf+i);
		*(uint32_t *)(driver->apps_rsp_buf+4) = DIAG_MAX_REQ_SIZE;
		diag_send_rsp(driver->apps_rsp_buf, 8, pid);
		return 0;
	} else if ((*buf == 0x4b) && (*(buf+1) == 0x12) &&
	} else if ((len >= ((2 * sizeof(uint8_t)) + sizeof(uint16_t))) &&
		(*buf == 0x4b) && (*(buf+1) == 0x12) &&
		(*(uint16_t *)(buf+2) == DIAG_DIAG_STM)) {
		len = diag_process_stm_cmd(buf, driver->apps_rsp_buf);
		if (len > 0) {
@@ -1031,7 +1048,8 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
		return len;
	}
	/* Check for time sync query command */
	else if ((*buf == DIAG_CMD_DIAG_SUBSYS) &&
	else if ((len >= ((2 * sizeof(uint8_t)) + sizeof(uint16_t))) &&
		(*buf == DIAG_CMD_DIAG_SUBSYS) &&
		(*(buf+1) == DIAG_SS_DIAG) &&
		(*(uint16_t *)(buf+2) == DIAG_GET_TIME_API)) {
		write_len = diag_process_time_sync_query_cmd(buf, len,
@@ -1042,7 +1060,8 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
		return 0;
	}
	/* Check for time sync switch command */
	else if ((*buf == DIAG_CMD_DIAG_SUBSYS) &&
	else if ((len >= ((2 * sizeof(uint8_t)) + sizeof(uint16_t))) &&
		(*buf == DIAG_CMD_DIAG_SUBSYS) &&
		(*(buf+1) == DIAG_SS_DIAG) &&
		(*(uint16_t *)(buf+2) == DIAG_SET_TIME_API)) {
		write_len = diag_process_time_sync_switch_cmd(buf, len,
@@ -1053,7 +1072,8 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
		return 0;
	}
	/* Check for download command */
	else if ((chk_apps_master()) && (*buf == 0x3A)) {
	else if ((len >= sizeof(uint8_t)) && (chk_apps_master()) &&
		(*buf == 0x3A)) {
		/* send response back */
		driver->apps_rsp_buf[0] = *buf;
		diag_send_rsp(driver->apps_rsp_buf, 1, pid);
@@ -1066,8 +1086,8 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
		return 0;
	}
	/* Check for polling for Apps only DIAG */
	else if ((*buf == 0x4b) && (*(buf+1) == 0x32) &&
		(*(buf+2) == 0x03)) {
	else if ((len >= (3 * sizeof(uint8_t))) &&
		(*buf == 0x4b) && (*(buf+1) == 0x32) && (*(buf+2) == 0x03)) {
		/* If no one has registered for polling */
		if (chk_polling_response()) {
			/* Respond to polling for Apps only DIAG */
@@ -1081,7 +1101,8 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
		}
	}
	/* Return the Delayed Response Wrap Status */
	else if ((*buf == 0x4b) && (*(buf+1) == 0x32) &&
	else if ((len >= (4 * sizeof(uint8_t))) &&
		(*buf == 0x4b) && (*(buf+1) == 0x32) &&
		(*(buf+2) == 0x04) && (*(buf+3) == 0x0)) {
		memcpy(driver->apps_rsp_buf, buf, 4);
		driver->apps_rsp_buf[4] = wrap_enabled;
@@ -1089,7 +1110,8 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
		return 0;
	}
	/* Wrap the Delayed Rsp ID */
	else if ((*buf == 0x4b) && (*(buf+1) == 0x32) &&
	else if ((len >= (4 * sizeof(uint8_t))) &&
		(*buf == 0x4b) && (*(buf+1) == 0x32) &&
		(*(buf+2) == 0x05) && (*(buf+3) == 0x0)) {
		wrap_enabled = true;
		memcpy(driver->apps_rsp_buf, buf, 4);
@@ -1098,7 +1120,8 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
		return 0;
	}
	/* Mobile ID Rsp */
	else if ((*buf == DIAG_CMD_DIAG_SUBSYS) &&
	else if ((len >= (4 * sizeof(uint8_t))) &&
		(*buf == DIAG_CMD_DIAG_SUBSYS) &&
			(*(buf+1) == DIAG_SS_PARAMS) &&
			(*(buf+2) == DIAG_EXT_MOBILE_ID) && (*(buf+3) == 0x0)) {
		write_len = diag_cmd_get_mobile_id(buf, len,
@@ -1121,7 +1144,7 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
		 !(driver->diagfwd_cntl[PERIPHERAL_MODEM]->ch_open) &&
		 !(driver->feature[PERIPHERAL_MODEM].rcvd_feature_mask)) {
		/* respond to 0x0 command */
		if (*buf == 0x00) {
		if ((len >= sizeof(uint8_t)) && *buf == 0x00) {
			for (i = 0; i < 55; i++)
				driver->apps_rsp_buf[i] = 0;

@@ -1129,7 +1152,7 @@ int diag_process_apps_pkt(unsigned char *buf, int len, int pid)
			return 0;
		}
		/* respond to 0x7c command */
		else if (*buf == 0x7c) {
		else if ((len >= sizeof(uint8_t)) && *buf == 0x7c) {
			driver->apps_rsp_buf[0] = 0x7c;
			for (i = 1; i < 8; i++)
				driver->apps_rsp_buf[i] = 0;
+2 −2
Original line number Diff line number Diff line
/* Copyright (c) 2008-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2008-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
@@ -328,7 +328,7 @@ kgsl_mem_entry_destroy(struct kref *kref)
			    entry->memdesc.sgt->nents, i) {
			page = sg_page(sg);
			for (j = 0; j < (sg->length >> PAGE_SHIFT); j++)
				set_page_dirty(nth_page(page, j));
				set_page_dirty_lock(nth_page(page, j));
		}
	}

Loading