[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170410140313.GA31894@kroah.com>
Date: Mon, 10 Apr 2017 16:03:13 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: Rob Herring <robh+dt@...nel.org>
Cc: Sebastian Reichel <sre@...nel.org>,
Marcel Holtmann <marcel@...tmann.org>,
Gustavo Padovan <gustavo@...ovan.org>,
Johan Hedberg <johan.hedberg@...il.com>,
Samuel Thibault <samuel.thibault@...-lyon.org>,
Pavel Machek <pavel@....cz>, Tony Lindgren <tony@...mide.com>,
Jiri Slaby <jslaby@...e.com>,
Mark Rutland <mark.rutland@....com>,
"open list:BLUETOOTH DRIVERS" <linux-bluetooth@...r.kernel.org>,
"linux-serial@...r.kernel.org" <linux-serial@...r.kernel.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCHv3 02/10] serdev: add serdev_device_wait_until_sent
On Mon, Apr 10, 2017 at 08:46:57AM -0500, Rob Herring wrote:
> On Sat, Apr 8, 2017 at 11:57 AM, Greg Kroah-Hartman
> <gregkh@...uxfoundation.org> wrote:
> > On Tue, Mar 28, 2017 at 05:59:31PM +0200, Sebastian Reichel wrote:
> >> Add method, which waits until the transmission buffer has been sent.
> >> Note, that the change in ttyport_write_wakeup is related, since
> >> tty_wait_until_sent will hang without that change.
> >>
> >> Acked-by: Rob Herring <robh@...nel.org>
> >> Acked-by: Pavel Machek <pavel@....cz>
> >> Signed-off-by: Sebastian Reichel <sre@...nel.org>
> >> ---
> >> Changes since PATCHv2:
> >> * Avoid goto in ttyport_write_wakeup
> >> ---
> >> drivers/tty/serdev/core.c | 11 +++++++++++
> >> drivers/tty/serdev/serdev-ttyport.c | 18 ++++++++++++++----
> >> include/linux/serdev.h | 3 +++
> >> 3 files changed, 28 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
> >> index f4c6c90add78..a63b74031e22 100644
> >> --- a/drivers/tty/serdev/core.c
> >> +++ b/drivers/tty/serdev/core.c
> >> @@ -173,6 +173,17 @@ void serdev_device_set_flow_control(struct serdev_device *serdev, bool enable)
> >> }
> >> EXPORT_SYMBOL_GPL(serdev_device_set_flow_control);
> >>
> >> +void serdev_device_wait_until_sent(struct serdev_device *serdev, long timeout)
> >> +{
> >> + struct serdev_controller *ctrl = serdev->ctrl;
> >> +
> >> + if (!ctrl || !ctrl->ops->wait_until_sent)
> >> + return;
> >> +
> >> + ctrl->ops->wait_until_sent(ctrl, timeout);
> >> +}
> >> +EXPORT_SYMBOL_GPL(serdev_device_wait_until_sent);
> >
> > Is this still needed now that we have serdev_device_write() with an
> > unlimited timeout available?
>
> Yes, because only this waits until the data is on the wire.
What "wire" is that? The serial wire? How do you know this? Many usb
to serial devices have no way to determine this, given that there is
another uart hanging off of the end of a USB connection.
Doesn't serdev_device_write() return when the write is finished? I
think we need some good documentation here for all of the different
variants of how to send data, as I'm sure confused...
thanks,
greg k-h
Powered by blists - more mailing lists