Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932658AbdCVVGC (ORCPT ); Wed, 22 Mar 2017 17:06:02 -0400 Received: from mail.kernel.org ([198.145.29.136]:38184 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932608AbdCVVFy (ORCPT ); Wed, 22 Mar 2017 17:05:54 -0400 MIME-Version: 1.0 In-Reply-To: <20170321223216.11733-8-sre@kernel.org> References: <20170321223216.11733-1-sre@kernel.org> <20170321223216.11733-8-sre@kernel.org> From: Rob Herring Date: Wed, 22 Mar 2017 16:03:14 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCHv2 07/11] serdev: add helpers for cts and rts handling To: Sebastian Reichel Cc: Marcel Holtmann , Gustavo Padovan , Johan Hedberg , Samuel Thibault , Pavel Machek , Tony Lindgren , Greg Kroah-Hartman , Jiri Slaby , Mark Rutland , "open list:BLUETOOTH DRIVERS" , "linux-serial@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2076 Lines: 71 On Tue, Mar 21, 2017 at 5:32 PM, Sebastian Reichel wrote: > Add serdev helper functions for handling of cts and rts > lines using the serdev's tiocm functions. > > Signed-off-by: Sebastian Reichel > --- > include/linux/serdev.h | 31 +++++++++++++++++++++++++++++++ > 1 file changed, 31 insertions(+) > > diff --git a/include/linux/serdev.h b/include/linux/serdev.h > index 3ad1d695f947..8cdce2ea0d51 100644 > --- a/include/linux/serdev.h > +++ b/include/linux/serdev.h > @@ -16,6 +16,7 @@ > #include > #include > #include > +#include > > struct serdev_controller; > struct serdev_device; > @@ -254,6 +255,36 @@ static inline int serdev_device_write_room(struct serdev_device *sdev) > > #endif /* CONFIG_SERIAL_DEV_BUS */ > > +static inline bool serdev_device_get_cts(struct serdev_device *serdev) > +{ > + int status = serdev_device_get_tiocm(serdev); > + return !!(status & TIOCM_CTS); > +} > + > +static inline int serdev_device_wait_for_cts(struct serdev_device *serdev, bool state, int timeout_ms) > +{ > + unsigned long timeout; > + bool signal; > + > + timeout = jiffies + msecs_to_jiffies(timeout_ms); > + while (!time_after(jiffies, timeout)) { You can use time_is_after_jiffies(timeout) instead of !time_after. > + signal = serdev_device_get_cts(serdev); > + if (signal == state) > + return 0; > + usleep_range(1000, 2000); > + } > + > + return -ETIMEDOUT; > +} > + > +static inline int serdev_device_set_rts(struct serdev_device *serdev, bool enable) > +{ > + if (enable) > + return serdev_device_set_tiocm(serdev, TIOCM_OUT2 | TIOCM_RTS, 0); Perhaps a comment why we're messing with OUT2. With those, Acked-by: Rob Herring > + else > + return serdev_device_set_tiocm(serdev, 0, TIOCM_OUT2 | TIOCM_RTS); > +} > + > /* > * serdev hooks into TTY core > */ > -- > 2.11.0 >