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

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

Merge 7e6242a7 on remote branch

Change-Id: Ib8f7951e9b330aa65b2a8ffb3f1c6944ed17755d
parents 362ce740 7e6242a7
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -4748,23 +4748,20 @@ static int binder_thread_release(struct binder_proc *proc,
	}

	/*
	 * If this thread used poll, make sure we remove the waitqueue
	 * from any epoll data structures holding it with POLLFREE.
	 * waitqueue_active() is safe to use here because we're holding
	 * the inner lock.
	 * If this thread used poll, make sure we remove the waitqueue from any
	 * poll data structures holding it.
	 */
	if ((thread->looper & BINDER_LOOPER_STATE_POLL) &&
	    waitqueue_active(&thread->wait)) {
		wake_up_poll(&thread->wait, EPOLLHUP | POLLFREE);
	}
	if (thread->looper & BINDER_LOOPER_STATE_POLL)
		wake_up_pollfree(&thread->wait);

	binder_inner_proc_unlock(thread->proc);

	/*
	 * This is needed to avoid races between wake_up_poll() above and
	 * and ep_remove_waitqueue() called for other reasons (eg the epoll file
	 * descriptor being closed); ep_remove_waitqueue() holds an RCU read
	 * lock, so we can be sure it's done after calling synchronize_rcu().
	 * This is needed to avoid races between wake_up_pollfree() above and
	 * someone else removing the last entry from the queue for other reasons
	 * (e.g. ep_remove_wait_queue() being called due to an epoll file
	 * descriptor being closed).  Such other users hold an RCU read lock, so
	 * we can be sure they're done after we call synchronize_rcu().
	 */
	if (thread->looper & BINDER_LOOPER_STATE_POLL)
		synchronize_rcu();
+7 −7
Original line number Diff line number Diff line
@@ -435,13 +435,13 @@ static int i2c_msm_set_mstr_clk_ctl(struct i2c_msm_ctrl *ctrl, int fs_div,

	/*
	 * find matching freq and set divider values unless they are forced
	 * from parametr list
	 * from parameter list
	 */
	for (i = 0; i < ARRAY_SIZE(i2c_msm_clk_div_map); ++i, ++itr) {
		if (ctrl->rsrcs.clk_freq_out == itr->clk_freq_out) {
			if (!fs_div)
			if (fs_div < 0)
				fs_div = itr->fs_div;
			if (!ht_div)
			if (ht_div < 0)
				ht_div = itr->ht_div;
			break;
		}
@@ -450,7 +450,7 @@ static int i2c_msm_set_mstr_clk_ctl(struct i2c_msm_ctrl *ctrl, int fs_div,
	/* For non-standard clock freq, clk divider value
	 * fs_div should be supplied by client through device tree
	 */
	if (!fs_div) {
	if (fs_div < 0) {
		dev_err(ctrl->dev, "Missing clk divider value in DT for %dKHz\n",
			(ctrl->rsrcs.clk_freq_out / 1000));
		return -EINVAL;
@@ -2484,7 +2484,7 @@ static int i2c_msm_dt_to_pdata_populate(struct i2c_msm_ctrl *ctrl,
static int i2c_msm_rsrcs_process_dt(struct i2c_msm_ctrl *ctrl,
					struct platform_device *pdev)
{
	u32 fs_clk_div, ht_clk_div, noise_rjct_scl, noise_rjct_sda;
	int fs_clk_div, ht_clk_div, noise_rjct_scl, noise_rjct_sda;
	int ret;

	struct i2c_msm_dt_to_pdata_map map[] = {
@@ -2502,9 +2502,9 @@ static int i2c_msm_rsrcs_process_dt(struct i2c_msm_ctrl *ctrl,
	{"qcom,noise-rjct-sda",		&noise_rjct_sda,
							DT_OPT,  DT_U32,  0},
	{"qcom,high-time-clk-div",	&ht_clk_div,
							DT_OPT,  DT_U32,  0},
							DT_OPT,  DT_U32,  -1},
	{"qcom,fs-clk-div",		&fs_clk_div,
							DT_OPT,  DT_U32,  0},
							DT_OPT,  DT_U32,  -1},
	{NULL,  NULL,					0,       0,       0},
	};

+7 −0
Original line number Diff line number Diff line
@@ -1845,6 +1845,13 @@ static int app_msg_proc(struct npu_host_ctx *host_ctx, uint32_t *msg)
			break;
		}

		if (prop_rsp_pkt->header.size <
			sizeof(struct ipc_msg_header_pkt)) {
			NPU_ERR("Invalid rsp pkt size %d\n",
				prop_rsp_pkt->header.size);
			break;
		}

		misc_cmd->ret_status = prop_rsp_pkt->header.status;

		if (prop_rsp_pkt->num_params > 0) {
+5 −0
Original line number Diff line number Diff line
@@ -2227,6 +2227,11 @@ int cnss_wlfw_server_arrive(struct cnss_plat_data *plat_priv, void *data)
		return -EINVAL;
	}

	if (test_bit(CNSS_IN_REBOOT, &plat_priv->driver_state)) {
		cnss_pr_err("WLFW server will exit on shutdown\n");
		return -EINVAL;
	}

	cnss_ignore_qmi_failure(false);

	ret = cnss_wlfw_connect_to_server(plat_priv, data);
+19 −0
Original line number Diff line number Diff line
@@ -654,6 +654,15 @@ bool icnss_is_fw_ready(void)
}
EXPORT_SYMBOL(icnss_is_fw_ready);

unsigned long icnss_get_device_config(void)
{
	if (!penv)
		return 0;

	return penv->device_config;
}
EXPORT_SYMBOL(icnss_get_device_config);

void icnss_block_shutdown(bool status)
{
	if (!penv)
@@ -3804,6 +3813,14 @@ static int icnss_smmu_dt_parse(struct icnss_priv *priv)
	return 0;
}

static void icnss_read_device_configs(struct icnss_priv *priv)
{
	if (of_property_read_bool(priv->pdev->dev.of_node,
				  "wlan-ipa-disabled")) {
		set_bit(ICNSS_IPA_DISABLED, &priv->device_config);
	}
}

static int icnss_probe(struct platform_device *pdev)
{
	int ret = 0;
@@ -3831,6 +3848,8 @@ static int icnss_probe(struct platform_device *pdev)

	icnss_allow_recursive_recovery(dev);

	icnss_read_device_configs(priv);

	ret = icnss_resource_parse(priv);
	if (ret)
		goto out;
Loading