All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
To: Samuel Thibault <samuel.thibault@gnu.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Andryuk <jandryuk@gmail.com>
Cc: qemu-devel@nongnu.org, kraxel@redhat.com
Subject: Re: [PATCH 8/9] dev-serial: fix FTDI_GET_MDM_ST response
Date: Mon, 26 Oct 2020 10:58:43 +0000	[thread overview]
Message-ID: <547c0ea5-dad4-d246-1de8-844a2e9a9507@ilande.co.uk> (raw)
In-Reply-To: <20201026095450.ko6snc4dusk3pvnw@function>

On 26/10/2020 09:54, Samuel Thibault wrote:

> Hello,
> 
> (Cc-ing Aurelien who introduced the support for modem control, and Jason
> who added the missing THRE and TEMT flags).
> 
> Mark Cave-Ayland, le lun. 26 oct. 2020 08:34:00 +0000, a ecrit:
>> The FTDI_GET_MDM_ST response should only return a single byte indicating the
>> modem status with bit 0 cleared (as documented in the Linux ftdi_sio.h header
>> file).
>>
>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> ---
>>   hw/usb/dev-serial.c | 5 ++---
>>   1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
>> index 4c374d0790..fa734bcf54 100644
>> --- a/hw/usb/dev-serial.c
>> +++ b/hw/usb/dev-serial.c
>> @@ -360,9 +360,8 @@ static void usb_serial_handle_control(USBDevice *dev, USBPacket *p,
>>           /* TODO: TX ON/OFF */
>>           break;
>>       case VendorDeviceRequest | FTDI_GET_MDM_ST:
>> -        data[0] = usb_get_modem_lines(s) | 1;
>> -        data[1] = FTDI_THRE | FTDI_TEMT;
>> -        p->actual_length = 2;
>> +        data[0] = usb_get_modem_lines(s);
>> +        p->actual_length = 1;
> 
> Err, but Linux' drivers/usb/serial/ftdi_sio.c:ftdi_process_packet()
> contradicts this:
> 
> 	if (len < 2) {
> 		dev_dbg(&port->dev, "malformed packet\n");
> 		return 0;
> 	}
> 
> 	status = buf[0] & FTDI_STATUS_B0_MASK;
> 	if (status != priv->prev_status) {
> 		char diff_status = status ^ priv->prev_status;
> 
> 		if (diff_status & FTDI_RS0_CTS)
> 			port->icount.cts++;
> 
> [...]
> 
> 	/* save if the transmitter is empty or not */
> 	if (buf[1] & FTDI_RS_TEMT)
> 		priv->transmit_empty = 1;
> 	else
> 		priv->transmit_empty = 0;
> 
> Did you actually get an issue with seeing this packet contain two bytes?

Hi Samuel,

Thanks for the review! There are 2 different places where the status is read: the one 
above in ftdi_process_packet() relates to the control packet header for incoming data 
which is always 2 bytes, whereas this relates to FTDI_SIO_GET_MODEM_STATUS_REQUEST in 
https://elixir.bootlin.com/linux/latest/source/drivers/usb/serial/ftdi_sio.c#L2825.

I have a FTDI Chipi-X adapter to compare with and that returns 2 bytes, but it looks 
like I mis-read the code and it's the SIO chipsets that return 1 byte which are older 
than the chipset being emulated by QEMU. This came from reading 
https://elixir.bootlin.com/linux/latest/source/drivers/usb/serial/ftdi_sio.h#L415 
which states that only 1 byte should be returned, but of course that comment could be 
out of date.

A quick test shows my Chipi-X returns 0x1 0x60 with nothing attached in response to 
FTDI_SIO_GET_MODEM_STATUS_REQUEST: assuming the reply length should be 2 bytes, the 
comment about B0-B3 being zero and the response from my Chip-X above suggests that 
the "| 1" should still be dropped from the response.


ATB,

Mark.


  reply	other threads:[~2020-10-26 11:11 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-26  8:33 [PATCH 0/9] dev-serial: minor fixes and improvements Mark Cave-Ayland
2020-10-26  8:33 ` [PATCH 1/9] dev-serial: style changes to improve readability and checkpatch fixes Mark Cave-Ayland
2020-10-26  9:35   ` Samuel Thibault
2020-10-26  8:33 ` [PATCH 2/9] dev-serial: use USB_SERIAL QOM macro for USBSerialState assignments Mark Cave-Ayland
2020-10-26  9:37   ` Samuel Thibault
2020-10-27  9:04   ` Philippe Mathieu-Daudé
2020-10-26  8:33 ` [PATCH 3/9] dev-serial: convert from DPRINTF to trace-events Mark Cave-Ayland
2020-10-26  9:38   ` Samuel Thibault
2020-10-27  9:08   ` Philippe Mathieu-Daudé
2020-10-26  8:33 ` [PATCH 4/9] dev-serial: add trace-events for baud rate and data parameters Mark Cave-Ayland
2020-10-26  9:40   ` Samuel Thibault
2020-10-27  9:08   ` Philippe Mathieu-Daudé
2020-10-26  8:33 ` [PATCH 5/9] dev-serial: replace DeviceOutVendor/DeviceInVendor with equivalent macros from usb.h Mark Cave-Ayland
2020-10-26  9:41   ` Samuel Thibault
2020-10-27  9:09   ` Philippe Mathieu-Daudé
2020-10-26  8:33 ` [PATCH 6/9] dev-serial: add always-plugged property to ensure USB device is always attached Mark Cave-Ayland
2020-10-26  9:45   ` Samuel Thibault
2020-10-27  8:09   ` Gerd Hoffmann
2020-10-27 13:23     ` Mark Cave-Ayland
2020-10-26  8:33 ` [PATCH 7/9] dev-serial: add support for setting data_bits in QEMUSerialSetParams Mark Cave-Ayland
2020-10-26  9:46   ` Samuel Thibault
2020-10-26  8:34 ` [PATCH 8/9] dev-serial: fix FTDI_GET_MDM_ST response Mark Cave-Ayland
2020-10-26  9:54   ` Samuel Thibault
2020-10-26 10:58     ` Mark Cave-Ayland [this message]
2020-10-26 11:14       ` Samuel Thibault
2020-10-26 13:00         ` Jason Andryuk
2020-10-26 13:40           ` Mark Cave-Ayland
2020-10-26 14:04             ` Jason Andryuk
2020-10-26 15:04             ` Samuel Thibault
2020-10-27 13:18               ` Mark Cave-Ayland
2020-10-27 13:30                 ` Jason Andryuk
2020-10-26  8:34 ` [PATCH 9/9] dev-serial: store flow control and xon/xoff characters Mark Cave-Ayland
2020-10-26  9:58   ` Samuel Thibault
2020-10-26  9:59 ` [PATCH 0/9] dev-serial: minor fixes and improvements Samuel Thibault

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=547c0ea5-dad4-d246-1de8-844a2e9a9507@ilande.co.uk \
    --to=mark.cave-ayland@ilande.co.uk \
    --cc=aurelien@aurel32.net \
    --cc=jandryuk@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=samuel.thibault@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.