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

Commit 4c3c835d authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Promotion of kernel.lnx.4.4-170731.

CRs      Change ID                                   Subject
--------------------------------------------------------------------------------------------------------------
2084234   I655990f66929237cd4461462306eab9e66a08663   msm: wlan: Fix regulatory rule of JO
2076578   Ibcc9fd44403d24112b01150a7d1f3c6e705ea99a   msm: camera: Instead of read_lock use read_lock_irqsave.
2084607   I407e4ecc5bd7af738c0d0599d1fa57007e959495   Revert "ARM: dts: msm: Enable ACD functionality for sdm6
2080211   I52b02adc4d97cbed42b0c8034a5a48dba1e343d3   power: qpnp-fg-gen3: Use msoc for recharge-soc compariso

Change-Id: I818a5c2b48b7c84965307d2abf158ab70142ffd1
CRs-Fixed: 2076578, 2084607, 2080211, 2084234
parents 8fa05d18 02c043ee
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@
		qcom,vctl-timeout-us = <500>;
		qcom,vctl-port = <0x0>;
		qcom,phase-port = <0x1>;
		qcom,saw2-avs-ctl = <0x101c031>;
		qcom,saw2-avs-ctl = <0x1010031>;
		qcom,saw2-avs-limit = <0x4580458>;
		qcom,pfm-port = <0x2>;
	};
@@ -40,7 +40,7 @@
		qcom,vctl-timeout-us = <500>;
		qcom,vctl-port = <0x0>;
		qcom,phase-port = <0x1>;
		qcom,saw2-avs-ctl = <0x101c031>;
		qcom,saw2-avs-ctl = <0x1010031>;
		qcom,saw2-avs-limit = <0x4580458>;
		qcom,pfm-port = <0x2>;
	};
+2 −11
Original line number Diff line number Diff line
@@ -1306,18 +1306,9 @@
		compatible = "qcom,clk-cpu-osm-sdm630";
		reg = <0x179c0000 0x4000>, <0x17916000 0x1000>,
			<0x17816000 0x1000>, <0x179d1000 0x1000>,
			<0x00784130 0x8>, <0x17914800 0x800>,
			<0x17814800 0x800>;
			<0x00784130 0x8>;
		reg-names = "osm", "pwrcl_pll", "perfcl_pll",
			"apcs_common", "perfcl_efuse",
			"pwrcl_acd", "perfcl_acd";

		qcom,acdtd-val = <0x0000a111 0x0000a111>;
		qcom,acdcr-val = <0x002c5ffd 0x002c5ffd>;
		qcom,acdsscr-val = <0x00000901 0x00000901>;
		qcom,acdextint0-val = <0x2cf9ae8 0x2cf9ae8>;
		qcom,acdextint1-val = <0x2cf9afe 0x2cf9afe>;
		qcom,acdautoxfer-val = <0x00000015 0x00000015>;
			"apcs_common", "perfcl_efuse";

		vdd-pwrcl-supply = <&apc0_pwrcl_vreg>;
		vdd-perfcl-supply = <&apc1_perfcl_vreg>;
+7 −4
Original line number Diff line number Diff line
@@ -287,6 +287,7 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id)
		return;

	while (1) {
		unsigned long wl_flags;

		if (try_count > 5) {
			pr_err("%s : not able to delete stream %d\n",
@@ -294,18 +295,20 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id)
			break;
		}

		write_lock(&session->stream_rwlock);
		write_lock_irqsave(&session->stream_rwlock, wl_flags);
		try_count++;
		stream = msm_queue_find(&session->stream_q, struct msm_stream,
			list, __msm_queue_find_stream, &stream_id);

		if (!stream) {
			write_unlock(&session->stream_rwlock);
			write_unlock_irqrestore(&session->stream_rwlock,
				wl_flags);
			return;
		}

		if (msm_vb2_get_stream_state(stream) != 1) {
			write_unlock(&session->stream_rwlock);
			write_unlock_irqrestore(&session->stream_rwlock,
				wl_flags);
			continue;
		}

@@ -315,7 +318,7 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id)
		kfree(stream);
		stream = NULL;
		spin_unlock_irqrestore(&(session->stream_q.lock), flags);
		write_unlock(&session->stream_rwlock);
		write_unlock_irqrestore(&session->stream_rwlock, wl_flags);
		break;
	}

+45 −42
Original line number Diff line number Diff line
@@ -47,22 +47,23 @@ int msm_vb2_buf_init(struct vb2_buffer *vb)
	struct msm_session *session;
	struct msm_vb2_buffer *msm_vb2_buf;
	struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
	unsigned long rl_flags;

	session = msm_get_session_from_vb2q(vb->vb2_queue);
	if (IS_ERR_OR_NULL(session))
		return -EINVAL;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream_from_vb2q(vb->vb2_queue);
	if (!stream) {
		pr_err("%s: Couldn't find stream\n", __func__);
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return -EINVAL;
	}
	msm_vb2_buf = container_of(vbuf, struct msm_vb2_buffer, vb2_v4l2_buf);
	msm_vb2_buf->in_freeq = 0;
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
	return 0;
}

@@ -71,7 +72,7 @@ static void msm_vb2_buf_queue(struct vb2_buffer *vb)
	struct msm_vb2_buffer *msm_vb2;
	struct msm_stream *stream;
	struct msm_session *session;
	unsigned long flags;
	unsigned long flags, rl_flags;
	struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);

	msm_vb2 = container_of(vbuf, struct msm_vb2_buffer, vb2_v4l2_buf);
@@ -84,19 +85,19 @@ static void msm_vb2_buf_queue(struct vb2_buffer *vb)
	if (IS_ERR_OR_NULL(session))
		return;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream_from_vb2q(vb->vb2_queue);
	if (!stream) {
		pr_err("%s:%d] NULL stream", __func__, __LINE__);
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return;
	}

	spin_lock_irqsave(&stream->stream_lock, flags);
	list_add_tail(&msm_vb2->list, &stream->queued_list);
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
}

static void msm_vb2_buf_finish(struct vb2_buffer *vb)
@@ -104,7 +105,7 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb)
	struct msm_vb2_buffer *msm_vb2;
	struct msm_stream *stream;
	struct msm_session *session;
	unsigned long flags;
	unsigned long flags, rl_flags;
	struct msm_vb2_buffer *msm_vb2_entry, *temp;
	struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);

@@ -118,12 +119,12 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb)
	if (IS_ERR_OR_NULL(session))
		return;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream_from_vb2q(vb->vb2_queue);
	if (!stream) {
		pr_err("%s:%d] NULL stream", __func__, __LINE__);
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return;
	}

@@ -136,7 +137,7 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb)
		}
	}
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
	return;
}

@@ -145,19 +146,19 @@ static void msm_vb2_stop_stream(struct vb2_queue *q)
	struct msm_vb2_buffer *msm_vb2, *temp;
	struct msm_stream *stream;
	struct msm_session *session;
	unsigned long flags;
	unsigned long flags, rl_flags;
	struct vb2_v4l2_buffer *vb2_v4l2_buf;

	session = msm_get_session_from_vb2q(q);
	if (IS_ERR_OR_NULL(session))
		return;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream_from_vb2q(q);
	if (!stream) {
		pr_err_ratelimited("%s:%d] NULL stream", __func__, __LINE__);
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return;
	}

@@ -177,7 +178,7 @@ static void msm_vb2_stop_stream(struct vb2_queue *q)
			msm_vb2->in_freeq = 0;
		}
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
}

int msm_vb2_get_stream_state(struct msm_stream *stream)
@@ -255,17 +256,17 @@ static struct vb2_v4l2_buffer *msm_vb2_get_buf(int session_id,
	struct msm_session *session;
	struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL;
	struct msm_vb2_buffer *msm_vb2 = NULL;
	unsigned long flags;
	unsigned long flags, rl_flags;

	session = msm_get_session(session_id);
	if (IS_ERR_OR_NULL(session))
		return NULL;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream(session, stream_id);
	if (IS_ERR_OR_NULL(stream)) {
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return NULL;
	}

@@ -291,7 +292,7 @@ static struct vb2_v4l2_buffer *msm_vb2_get_buf(int session_id,
	vb2_v4l2_buf = NULL;
end:
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
	return vb2_v4l2_buf;
}

@@ -302,18 +303,18 @@ static struct vb2_v4l2_buffer *msm_vb2_get_buf_by_idx(int session_id,
	struct msm_session *session;
	struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL;
	struct msm_vb2_buffer *msm_vb2 = NULL;
	unsigned long flags;
	unsigned long flags, rl_flags;

	session = msm_get_session(session_id);
	if (IS_ERR_OR_NULL(session))
		return NULL;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream(session, stream_id);

	if (IS_ERR_OR_NULL(stream)) {
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return NULL;
	}

@@ -337,7 +338,7 @@ static struct vb2_v4l2_buffer *msm_vb2_get_buf_by_idx(int session_id,
	vb2_v4l2_buf = NULL;
end:
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
	return vb2_v4l2_buf;
}

@@ -349,17 +350,17 @@ static int msm_vb2_put_buf(struct vb2_v4l2_buffer *vb, int session_id,
	struct msm_vb2_buffer *msm_vb2;
	struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL;
	int rc = 0;
	unsigned long flags;
	unsigned long flags, rl_flags;

	session = msm_get_session(session_id);
	if (IS_ERR_OR_NULL(session))
		return -EINVAL;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream(session, stream_id);
	if (IS_ERR_OR_NULL(stream)) {
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return -EINVAL;
	}

@@ -374,7 +375,8 @@ static int msm_vb2_put_buf(struct vb2_v4l2_buffer *vb, int session_id,
			pr_err("VB buffer is INVALID vb=%pK, ses_id=%d, str_id=%d\n",
					vb, session_id, stream_id);
			spin_unlock_irqrestore(&stream->stream_lock, flags);
			read_unlock(&session->stream_rwlock);
			read_unlock_irqrestore(&session->stream_rwlock,
				rl_flags);
			return -EINVAL;
		}
		msm_vb2 =
@@ -391,7 +393,7 @@ static int msm_vb2_put_buf(struct vb2_v4l2_buffer *vb, int session_id,
		rc = -EINVAL;
	}
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
	return rc;
}

@@ -399,7 +401,7 @@ static int msm_vb2_buf_done(struct vb2_v4l2_buffer *vb, int session_id,
				unsigned int stream_id, uint32_t sequence,
				struct timeval *ts, uint32_t reserved)
{
	unsigned long flags;
	unsigned long flags, rl_flags;
	struct msm_vb2_buffer *msm_vb2;
	struct msm_stream *stream;
	struct msm_session *session;
@@ -410,11 +412,11 @@ static int msm_vb2_buf_done(struct vb2_v4l2_buffer *vb, int session_id,
	if (IS_ERR_OR_NULL(session))
		return -EINVAL;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream(session, stream_id);
	if (IS_ERR_OR_NULL(stream)) {
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return -EINVAL;
	}

@@ -429,7 +431,8 @@ static int msm_vb2_buf_done(struct vb2_v4l2_buffer *vb, int session_id,
			pr_err("VB buffer is INVALID ses_id=%d, str_id=%d, vb=%pK\n",
				    session_id, stream_id, vb);
			spin_unlock_irqrestore(&stream->stream_lock, flags);
			read_unlock(&session->stream_rwlock);
			read_unlock_irqrestore(&session->stream_rwlock,
				rl_flags);
			return -EINVAL;
		}
		msm_vb2 =
@@ -450,7 +453,7 @@ static int msm_vb2_buf_done(struct vb2_v4l2_buffer *vb, int session_id,
		rc = -EINVAL;
	}
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
	return rc;
}

@@ -461,18 +464,18 @@ long msm_vb2_return_buf_by_idx(int session_id, unsigned int stream_id,
	struct msm_session *session;
	struct vb2_v4l2_buffer *vb2_v4l2_buf = NULL;
	struct msm_vb2_buffer *msm_vb2 = NULL;
	unsigned long flags;
	unsigned long flags, rl_flags;
	long rc = -EINVAL;

	session = msm_get_session(session_id);
	if (IS_ERR_OR_NULL(session))
		return rc;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream(session, stream_id);
	if (IS_ERR_OR_NULL(stream)) {
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return -EINVAL;
	}

@@ -501,14 +504,14 @@ long msm_vb2_return_buf_by_idx(int session_id, unsigned int stream_id,

end:
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
	return rc;
}
EXPORT_SYMBOL(msm_vb2_return_buf_by_idx);

static int msm_vb2_flush_buf(int session_id, unsigned int stream_id)
{
	unsigned long flags;
	unsigned long flags, rl_flags;
	struct msm_vb2_buffer *msm_vb2;
	struct msm_stream *stream;
	struct msm_session *session;
@@ -518,11 +521,11 @@ static int msm_vb2_flush_buf(int session_id, unsigned int stream_id)
	if (IS_ERR_OR_NULL(session))
		return -EINVAL;

	read_lock(&session->stream_rwlock);
	read_lock_irqsave(&session->stream_rwlock, rl_flags);

	stream = msm_get_stream(session, stream_id);
	if (IS_ERR_OR_NULL(stream)) {
		read_unlock(&session->stream_rwlock);
		read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
		return -EINVAL;
	}

@@ -534,7 +537,7 @@ static int msm_vb2_flush_buf(int session_id, unsigned int stream_id)
		msm_vb2->in_freeq = 0;
	}
	spin_unlock_irqrestore(&stream->stream_lock, flags);
	read_unlock(&session->stream_rwlock);
	read_unlock_irqrestore(&session->stream_rwlock, rl_flags);
	return 0;
}

+5 −4
Original line number Diff line number Diff line
@@ -1611,7 +1611,7 @@ static int fg_set_recharge_voltage(struct fg_chip *chip, int voltage_mv)
static int fg_charge_full_update(struct fg_chip *chip)
{
	union power_supply_propval prop = {0, };
	int rc, msoc, bsoc, recharge_soc;
	int rc, msoc, bsoc, recharge_soc, msoc_raw;
	u8 full_soc[2] = {0xFF, 0xFF};

	if (!chip->dt.hold_soc_while_full)
@@ -1647,6 +1647,7 @@ static int fg_charge_full_update(struct fg_chip *chip)
		pr_err("Error in getting msoc, rc=%d\n", rc);
		goto out;
	}
	msoc_raw = DIV_ROUND_CLOSEST(msoc * FULL_SOC_RAW, FULL_CAPACITY);

	fg_dbg(chip, FG_STATUS, "msoc: %d bsoc: %x health: %d status: %d full: %d\n",
		msoc, bsoc, chip->health, chip->charge_status,
@@ -1670,7 +1671,7 @@ static int fg_charge_full_update(struct fg_chip *chip)
			fg_dbg(chip, FG_STATUS, "Terminated charging @ SOC%d\n",
				msoc);
		}
	} else if ((bsoc >> 8) <= recharge_soc && chip->charge_full) {
	} else if (msoc_raw < recharge_soc && chip->charge_full) {
		chip->delta_soc = FULL_CAPACITY - msoc;

		/*
@@ -1700,8 +1701,8 @@ static int fg_charge_full_update(struct fg_chip *chip)
				rc);
			goto out;
		}
		fg_dbg(chip, FG_STATUS, "bsoc: %d recharge_soc: %d delta_soc: %d\n",
			bsoc >> 8, recharge_soc, chip->delta_soc);
		fg_dbg(chip, FG_STATUS, "msoc_raw = %d bsoc: %d recharge_soc: %d delta_soc: %d\n",
			msoc_raw, bsoc >> 8, recharge_soc, chip->delta_soc);
	} else {
		goto out;
	}
Loading