Unverified Commit 146a244b authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files
parents 69d8e6b3 eaa7dcd2
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
@@ -2364,6 +2364,49 @@ static int mos7840_port_remove(struct usb_serial_port *port)
	return 0;
}

static int mos7840_suspend(struct usb_serial *serial, pm_message_t message)
{
	struct moschip_port *mos7840_port;
	struct usb_serial_port *port;
	int i;

	for (i = 0; i < serial->num_ports; ++i) {
		port = serial->port[i];
		if (!tty_port_initialized(&port->port))
			continue;

		mos7840_port = usb_get_serial_port_data(port);

		usb_kill_urb(mos7840_port->read_urb);
		mos7840_port->read_urb_busy = false;
	}

	return 0;
}

static int mos7840_resume(struct usb_serial *serial)
{
	struct moschip_port *mos7840_port;
	struct usb_serial_port *port;
	int res;
	int i;

	for (i = 0; i < serial->num_ports; ++i) {
		port = serial->port[i];
		if (!tty_port_initialized(&port->port))
			continue;

		mos7840_port = usb_get_serial_port_data(port);

		mos7840_port->read_urb_busy = true;
		res = usb_submit_urb(mos7840_port->read_urb, GFP_NOIO);
		if (res)
			mos7840_port->read_urb_busy = false;
	}

	return 0;
}

static struct usb_serial_driver moschip7840_4port_device = {
	.driver = {
		   .owner = THIS_MODULE,
@@ -2392,6 +2435,8 @@ static struct usb_serial_driver moschip7840_4port_device = {
	.port_remove = mos7840_port_remove,
	.read_bulk_callback = mos7840_bulk_in_callback,
	.read_int_callback = mos7840_interrupt_callback,
	.suspend = mos7840_suspend,
	.resume = mos7840_resume,
};

static struct usb_serial_driver * const serial_drivers[] = {