// SPDX-License-Identifier: GPL-2.0+ /* * USB Wishbone-Serial adapter driver * * Copyright (C) 2013 Wesley W. Terpstra <w.terpstra@gsi.de> * Copyright (C) 2013 GSI Helmholtz Centre for Heavy Ion Research GmbH
*/
/* * Etherbone must be told that a new stream has begun before data arrives. * This is necessary to restart the negotiation of Wishbone bus parameters. * Similarly, when the stream ends, Etherbone must be told so that the cycle * line can be driven low in the case that userspace failed to do so.
*/ staticint usb_gsi_openclose(struct usb_serial_port *port, int value)
{ struct usb_device *dev = port->serial->dev;
return usb_control_msg(
dev,
usb_sndctrlpipe(dev, 0), /* Send to EP0OUT */
GSI_VENDOR_OPENCLOSE,
USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE,
value, /* wValue = device is open(1) or closed(0) */
port->serial->interface->cur_altsetting->desc.bInterfaceNumber,
NULL, 0, /* There is no data stage */
5000); /* Timeout till operation fails */
}
staticint wishbone_serial_open(struct tty_struct *tty, struct usb_serial_port *port)
{ int retval;
retval = usb_gsi_openclose(port, 1); if (retval) {
dev_err(&port->serial->dev->dev, "Could not mark device as open (%d)\n",
retval); return retval;
}
retval = usb_serial_generic_open(tty, port); if (retval)
usb_gsi_openclose(port, 0);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.