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

Commit 72571c4b authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: gadget: f_gsi: Handle IPA remote wakeup notification properly"

parents 00dcbc2c b3295b2c
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
 */

#include <linux/module.h>
@@ -149,6 +149,8 @@ static int gsi_wakeup_host(struct f_gsi *gsi)
		return -ENODEV;
	}

	gsi->rwake_inprogress = true;

	/*
	 * In Super-Speed mode, remote wakeup is not allowed for suspended
	 * functions which have been disallowed by the host to issue Function
@@ -171,6 +173,9 @@ static int gsi_wakeup_host(struct f_gsi *gsi)
	else if (ret)
		log_event_err("wakeup failed. ret=%d.", ret);

	if (ret)
		gsi->rwake_inprogress = false;

	return ret;
}

@@ -455,6 +460,7 @@ static int ipa_usb_notify_cb(enum ipa_usb_notify_event event,
		break;

	case IPA_USB_REMOTE_WAKEUP:
		if (!gsi->rwake_inprogress)
			gsi_wakeup_host(gsi);
		break;

@@ -2662,6 +2668,8 @@ static void gsi_resume(struct usb_function *f)
		gsi->params->state = RNDIS_DATA_INITIALIZED;
	}

	gsi->rwake_inprogress = false;

	post_event(&gsi->d_port, EVT_RESUMED);
	queue_delayed_work(gsi->d_port.ipa_usb_wq, &gsi->d_port.usb_ipa_w, 0);

+3 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
 */

#ifndef _F_GSI_H
@@ -283,6 +283,8 @@ struct f_gsi {
	void *ipc_log_ctxt;
	bool rmnet_dtr_status;

	bool rwake_inprogress;

	/* To test remote wakeup using debugfs */
	struct timer_list gsi_rw_timer;
	u8 debugfs_rw_timer_enable;