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.
next prev parent 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.