From: Martyn Welch <martyn.welch@collabora.co.uk>
To: Konstantin Shkolnyy <Konstantin.Shkolnyy@silabs.com>,
Johan Hovold <johan@kernel.org>
Cc: "linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 4/4] USB: serial: cp210x: Switch to new register access functions for large registers
Date: Thu, 14 Jan 2016 18:22:41 +0000 [thread overview]
Message-ID: <5697E771.3050809@collabora.co.uk> (raw)
In-Reply-To: <BLUPR0701MB157297A9CB514F414CCA583691CC0@BLUPR0701MB1572.namprd07.prod.outlook.com>
On 14/01/16 18:15, Konstantin Shkolnyy wrote:
>> -----Original Message-----
>> From: Martyn Welch [mailto:martyn.welch@collabora.co.uk]
>> Sent: Thursday, January 14, 2016 11:52
>> To: Konstantin Shkolnyy; Johan Hovold
>> Cc: linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org
>> Subject: Re: [PATCH v3 4/4] USB: serial: cp210x: Switch to new register access
>> functions for large registers
> ...
>
>>> @@ -1038,27 +941,35 @@ static void cp210x_set_termios(struct tty_struct
>> *tty,
>>> }
>>>
>>> if ((cflag & CRTSCTS) != (old_cflag & CRTSCTS)) {
>>> - cp210x_get_config(port, CP210X_GET_FLOW, modem_ctl,
>> 16);
>>> - dev_dbg(dev, "%s - read modem controls = 0x%.4x 0x%.4x
>> 0x%.4x 0x%.4x\n",
>>> - __func__, modem_ctl[0], modem_ctl[1],
>>> - modem_ctl[2], modem_ctl[3]);
>>> +
>>> + /* Only bytes 0, 4 and 7 out of first 8 have functional bits */
>>> +
>>> + cp210x_read_reg_block(port, CP210X_GET_FLOW,
>> modem_ctl,
>>> + sizeof(modem_ctl));
>>> + dev_dbg(dev, "%s - read modem controls = %02x .. .. .. %02x
>> .. .. %02x\n",
>>> + __func__, modem_ctl[0], modem_ctl[4],
>> modem_ctl[7]);
>>>
>>> if (cflag & CRTSCTS) {
>>> modem_ctl[0] &= ~0x7B;
>>> modem_ctl[0] |= 0x09;
>>> - modem_ctl[1] = 0x80;
>>> + modem_ctl[4] = 0x80;
>>> + /* FIXME - why clear reserved bits just read? */
>>> + modem_ctl[5] = 0;
>>> + modem_ctl[6] = 0;
>>> + modem_ctl[7] = 0;
>>> dev_dbg(dev, "%s - flow control = CRTSCTS\n",
>> __func__);
>>> } else {
>>> modem_ctl[0] &= ~0x7B;
>>> modem_ctl[0] |= 0x01;
>>> - modem_ctl[1] |= 0x40;
>>> + /* FIXME - OR here istead of assignment looks wrong
>> */
>>
>> s/istead/instead/
>>
>> I'm a little unsure about FIXME comments being added rather than the
>> issue being addressed. If I'm reading this right, then this is the
>> control for the RTS/CTS lines, could the operation without these bits
>> being cleared/ORed be checked by using a serial cable (connected to
>> another serial port) and writing data with and without flow control
>> enabled through a terminal emulator?
>
> The patching procedure enforced by maintainers dictates that each separate patch addresses 1 issue.
> It's much easier to review changes this way. So this particular patch just converts from one register access function to another.
> The bugfix patch will come later.
>
> While doing this cleanup, I also noticed another bug - this function will always set the low 2 bits of byte 0 to 01b: "modem_ctl[0] |= 0x01".
> This field is called SERIAL_DTR_MASK. It's 0 by default. ("DTR is held inactive"). The function will only write it when CRTSCTS changes.
> So the device will start with 0, then, if CRTSCTS ever changes, it'll become 1 and stay 1 forever. Looks wrong to me.
> I'm still researching the subject when and how it should be set.
>
> * Wikipedia: "DTR and DSR are usually on all the time and, per the
> * RS-232 standard and its successors, are used to signal from each
> * end that the other equipment is actually present and powered-up."
> * So perhaps DTR should be turned ON in open() and OFF in close()?
>
> I'm waiting on this patch series to be accepted, then submit other improvements. Or it may be better to submit a longer patch series that has further improvements appended... I'm new here and not really sure.
>
Given there's a typo that needs correcting, I'd probably extend the
patch series if you have the work ready.
Martyn
next prev parent reply other threads:[~2016-01-14 18:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-02 3:12 [PATCH v3 4/4] USB: serial: cp210x: Switch to new register access functions for large registers Konstantin Shkolnyy
2016-01-14 17:51 ` Martyn Welch
2016-01-14 18:15 ` Konstantin Shkolnyy
2016-01-14 18:22 ` Martyn Welch [this message]
2016-01-14 18:29 ` Konstantin Shkolnyy
2016-01-14 18:53 ` Johan Hovold
2016-01-18 20:31 ` Johan Hovold
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=5697E771.3050809@collabora.co.uk \
--to=martyn.welch@collabora.co.uk \
--cc=Konstantin.Shkolnyy@silabs.com \
--cc=johan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.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.