From: Sebastian Reichel <sre@kernel.org>
To: Sebastian Reichel <sre@kernel.org>,
Marcel Holtmann <marcel@holtmann.org>,
Gustavo Padovan <gustavo@padovan.org>,
Johan Hedberg <johan.hedberg@gmail.com>,
Rob Herring <robh+dt@kernel.org>
Cc: Tony Lindgren <tony@atomide.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jslaby@suse.com>, Mark Rutland <mark.rutland@arm.com>,
linux-bluetooth@vger.kernel.org, linux-serial@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 08/10] serdev: add serdev_device_get_cts
Date: Sat, 4 Mar 2017 12:58:31 +0100 [thread overview]
Message-ID: <20170304115833.3538-9-sre@kernel.org> (raw)
In-Reply-To: <20170304115833.3538-1-sre@kernel.org>
Add method to get current CTS line state.
Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
drivers/tty/serdev/core.c | 11 +++++++++++
drivers/tty/serdev/serdev-ttyport.c | 15 +++++++++++++++
include/linux/serdev.h | 6 ++++++
3 files changed, 32 insertions(+)
diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
index a63b74031e22..36eb3dfb1477 100644
--- a/drivers/tty/serdev/core.c
+++ b/drivers/tty/serdev/core.c
@@ -184,6 +184,17 @@ void serdev_device_wait_until_sent(struct serdev_device *serdev, long timeout)
}
EXPORT_SYMBOL_GPL(serdev_device_wait_until_sent);
+bool serdev_device_get_cts(struct serdev_device *serdev)
+{
+ struct serdev_controller *ctrl = serdev->ctrl;
+
+ if (!ctrl || !ctrl->ops->get_cts)
+ return false;
+
+ return ctrl->ops->get_cts(ctrl);
+}
+EXPORT_SYMBOL_GPL(serdev_device_get_cts);
+
static int serdev_drv_probe(struct device *dev)
{
const struct serdev_device_driver *sdrv = to_serdev_device_driver(dev->driver);
diff --git a/drivers/tty/serdev/serdev-ttyport.c b/drivers/tty/serdev/serdev-ttyport.c
index db2bc601e554..3eaca7560e2e 100644
--- a/drivers/tty/serdev/serdev-ttyport.c
+++ b/drivers/tty/serdev/serdev-ttyport.c
@@ -179,6 +179,20 @@ static void ttyport_wait_until_sent(struct serdev_controller *ctrl, long timeout
tty_wait_until_sent(tty, timeout);
}
+static bool ttyport_get_cts(struct serdev_controller *ctrl)
+{
+ struct serport *serport = serdev_controller_get_drvdata(ctrl);
+ struct tty_struct *tty = serport->tty;
+ int status;
+
+ if (!tty->ops->tiocmget)
+ return false;
+
+ status = tty->ops->tiocmget(tty);
+
+ return !!(status & TIOCM_CTS);
+}
+
static const struct serdev_controller_ops ctrl_ops = {
.write_buf = ttyport_write_buf,
.write_flush = ttyport_write_flush,
@@ -188,6 +202,7 @@ static const struct serdev_controller_ops ctrl_ops = {
.set_flow_control = ttyport_set_flow_control,
.set_baudrate = ttyport_set_baudrate,
.wait_until_sent = ttyport_wait_until_sent,
+ .get_cts = ttyport_get_cts,
};
struct device *serdev_tty_port_register(struct tty_port *port,
diff --git a/include/linux/serdev.h b/include/linux/serdev.h
index a308b206d204..b0c47402d84a 100644
--- a/include/linux/serdev.h
+++ b/include/linux/serdev.h
@@ -82,6 +82,7 @@ struct serdev_controller_ops {
void (*set_flow_control)(struct serdev_controller *, bool);
unsigned int (*set_baudrate)(struct serdev_controller *, unsigned int);
void (*wait_until_sent)(struct serdev_controller *, long);
+ bool (*get_cts)(struct serdev_controller *);
};
/**
@@ -188,6 +189,7 @@ void serdev_device_close(struct serdev_device *);
unsigned int serdev_device_set_baudrate(struct serdev_device *, unsigned int);
void serdev_device_set_flow_control(struct serdev_device *, bool);
void serdev_device_wait_until_sent(struct serdev_device *, long);
+bool serdev_device_get_cts(struct serdev_device *);
int serdev_device_write_buf(struct serdev_device *, const unsigned char *, size_t);
void serdev_device_write_flush(struct serdev_device *);
int serdev_device_write_room(struct serdev_device *);
@@ -226,6 +228,10 @@ static inline unsigned int serdev_device_set_baudrate(struct serdev_device *sdev
}
static inline void serdev_device_set_flow_control(struct serdev_device *sdev, bool enable) {}
static inline void serdev_device_wait_until_sent(struct serdev_device *sdev, long timeout) {}
+static inline bool serdev_device_get_cts(struct serdev_device *serdev)
+{
+ return false;
+}
static inline int serdev_device_write_buf(struct serdev_device *sdev, const unsigned char *buf, size_t count)
{
return -ENODEV;
--
2.11.0
next prev parent reply other threads:[~2017-03-04 11:58 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-04 11:58 [PATCH 00/10] Nokia H4+ support Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-04 11:58 ` [PATCH 01/10] ARM: dts: N9/N950: add bluetooth Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-06 16:08 ` Tony Lindgren
2017-03-06 16:08 ` Tony Lindgren
2017-03-17 15:25 ` Pavel Machek
2017-03-18 0:58 ` Sebastian Reichel
2017-03-04 11:58 ` [PATCH 02/10] ARM: dts: N900: Add bluetooth Sebastian Reichel
2017-03-06 16:08 ` Tony Lindgren
2017-03-06 16:08 ` Tony Lindgren
2017-03-07 16:31 ` Rob Herring
2017-03-07 16:31 ` Rob Herring
2017-03-07 16:37 ` Tony Lindgren
2017-03-07 16:37 ` Tony Lindgren
2017-03-17 15:25 ` Pavel Machek
2017-03-17 15:25 ` Pavel Machek
2017-03-04 11:58 ` [PATCH 03/10] Bluetooth: hci_uart: add support for word alignment Sebastian Reichel
2017-03-17 15:25 ` Pavel Machek
2017-03-17 15:25 ` Pavel Machek
2017-03-04 11:58 ` [PATCH 04/10] Bluetooth: hci_uart: add serdev driver support library Sebastian Reichel
2017-03-17 15:26 ` Pavel Machek
2017-03-04 11:58 ` [PATCH 05/10] Bluetooth: hci_serdev: do not open device in hci open Sebastian Reichel
2017-03-17 15:26 ` Pavel Machek
2017-03-04 11:58 ` [PATCH 06/10] tty: serial: omap: add UPF_BOOT_AUTOCONF flag for DT init Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-04 11:58 ` [PATCH 07/10] serdev: add serdev_device_wait_until_sent Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-07 15:34 ` Rob Herring
2017-03-07 15:55 ` Sebastian Reichel
2017-03-07 15:55 ` Sebastian Reichel
2017-03-07 16:46 ` Rob Herring
2017-03-07 16:46 ` Rob Herring
2017-03-04 11:58 ` Sebastian Reichel [this message]
2017-03-07 16:03 ` [PATCH 08/10] serdev: add serdev_device_get_cts Rob Herring
2017-03-07 16:03 ` Rob Herring
2017-03-07 21:12 ` Sebastian Reichel
2017-03-07 21:12 ` Sebastian Reichel
2017-03-08 15:13 ` Rob Herring
2017-03-04 11:58 ` [PATCH 09/10] serdev: add serdev_device_set_rts Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-07 16:07 ` Rob Herring
2017-03-07 16:07 ` Rob Herring
2017-03-07 21:18 ` Sebastian Reichel
2017-03-07 21:18 ` Sebastian Reichel
2017-03-04 11:58 ` [PATCH 10/10] Bluetooth: add nokia driver Sebastian Reichel
2017-03-07 16:30 ` Rob Herring
2017-03-07 16:30 ` Rob Herring
2017-03-07 21:08 ` Sebastian Reichel
2017-03-07 21:08 ` Sebastian Reichel
2017-03-07 21:20 ` Marcel Holtmann
2017-03-07 21:20 ` Marcel Holtmann
2017-03-07 23:06 ` Sebastian Reichel
2017-03-07 23:06 ` Sebastian Reichel
2017-03-08 14:26 ` Rob Herring
2017-03-17 15:26 ` Pavel Machek
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=20170304115833.3538-9-sre@kernel.org \
--to=sre@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=gustavo@padovan.org \
--cc=johan.hedberg@gmail.com \
--cc=jslaby@suse.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=marcel@holtmann.org \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=tony@atomide.com \
/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.