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

Commit 7d835dde authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: bam: Remove suspend_work"

parents 9a7e34b7 0606d9b2
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -154,7 +154,6 @@ static int ss_usb_cons_release_resource(void);
static int hsic_cons_request_resource(void);
static int hsic_cons_release_resource(void);


static int (*request_resource_cb[MAX_BAMS])(void) = {
	[CI_CTRL] = usb_cons_request_resource,
	[HSIC_CTRL]  = hsic_cons_request_resource,
@@ -199,7 +198,6 @@ struct usb_bam_ipa_handshake_info {

	struct mutex suspend_resume_mutex;
	struct work_struct resume_work;
	struct work_struct suspend_work;
	struct work_struct finish_suspend_work;
};

@@ -223,6 +221,7 @@ static bool qdss_usb_active;
static int __usb_bam_register_wake_cb(int idx, int (*callback)(void *user),
	void *param, bool trigger_cb_per_pipe);
static void wait_for_prod_release(enum usb_ctrl cur_bam);
static void usb_bam_start_suspend(struct usb_bam_ipa_handshake_info *info_ptr);

void msm_bam_set_hsic_host_dev(struct device *dev)
{
@@ -1802,7 +1801,7 @@ void usb_bam_suspend(struct usb_bam_connect_ipa_params *ipa_params)
	/* If cable was disconnected, let disconnection seq do everything */
	if (info[cur_bam].disconnected) {
		spin_unlock(&usb_bam_ipa_handshake_info_lock);
		pr_debug("%s: Cable disconnected\n", __func__);
		pr_err("%s: Cable disconnected\n", __func__);
		return;
	}

@@ -1814,19 +1813,16 @@ void usb_bam_suspend(struct usb_bam_connect_ipa_params *ipa_params)

	spin_unlock(&usb_bam_ipa_handshake_info_lock);

	queue_work(ctx.usb_bam_wq, &info[cur_bam].suspend_work);
	usb_bam_start_suspend(&info[cur_bam]);
}

static void usb_bam_start_suspend(struct work_struct *w)
static void usb_bam_start_suspend(struct usb_bam_ipa_handshake_info *info_ptr)
{
	struct usb_bam_pipe_connect *pipe_connect;
	struct usb_bam_ipa_handshake_info *info_ptr;
	enum usb_ctrl cur_bam;
	u8 src_idx, dst_idx;
	int pipes_to_suspend;

	info_ptr = container_of(w, struct usb_bam_ipa_handshake_info,
			suspend_work);
	cur_bam = info_ptr->bam_type;
	pr_debug("%s: Starting suspend sequence(BAM=%s)\n", __func__,
			bam_enable_strings[cur_bam]);
@@ -3445,7 +3441,6 @@ static int usb_bam_probe(struct platform_device *pdev)
		info[i].pipes_resumed = 0;
		info[i].bam_type = i;
		INIT_WORK(&info[i].resume_work, usb_bam_finish_resume);
		INIT_WORK(&info[i].suspend_work, usb_bam_start_suspend);
		INIT_WORK(&info[i].finish_suspend_work,
			  usb_bam_finish_suspend_);
		mutex_init(&info[i].suspend_resume_mutex);
+8 −0
Original line number Diff line number Diff line
@@ -1597,7 +1597,15 @@ static void gbam2bam_suspend_work(struct work_struct *w)
	if (d->trans == USB_GADGET_XPORT_BAM2BAM_IPA) {
		usb_bam_register_start_stop_cbs(d->dst_connection_idx,
						gbam_start, gbam_stop, port);

		/*
		 * release lock here because gbam_start() or
		 * gbam_stop() called from usb_bam_suspend()
		 * re-acquires port lock.
		 */
		spin_unlock_irqrestore(&port->port_lock, flags);
		usb_bam_suspend(&d->ipa_params);
		spin_lock_irqsave(&port->port_lock, flags);
	}

exit:
+8 −0
Original line number Diff line number Diff line
@@ -1969,7 +1969,15 @@ static void bam2bam_data_suspend_work(struct work_struct *w)
		usb_bam_register_start_stop_cbs(d->dst_connection_idx,
						bam_data_start, bam_data_stop,
						port);

		/*
		 * release lock here because bam_data_start() or
		 * bam_data_stop() called from usb_bam_suspend()
		 * re-acquires port lock.
		 */
		spin_unlock_irqrestore(&port->port_lock, flags);
		usb_bam_suspend(&d->ipa_params);
		spin_lock_irqsave(&port->port_lock, flags);
	}

exit: