* [PATCH v2] serdev: add method to set parity
@ 2018-01-22 17:56 Ulrich Hecht
[not found] ` <1516643792-22840-1-git-send-email-ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Ulrich Hecht @ 2018-01-22 17:56 UTC (permalink / raw)
To: marcel
Cc: linux-renesas-soc, linux-serial, johan, sre, linux-bluetooth,
robh, martin.blumenstingl, gregkh, magnus.damm, laurent.pinchart,
wsa, geert, Ulrich Hecht
Adds serdev_device_set_parity() and an implementation for ttyport.
The interface uses an enum with the values SERIAL_PARITY_NONE,
SERIAL_PARITY_EVEN and SERIAL_PARITY_ODD.
Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Hi!
This revision addresses Johan's comments (see below for details) and adds
Sebastian's Reviewed-by tag. Thank you for your reviews!
CU
Uli
Changes since v1:
- added Reviewed-by tag
- expanded commit message
- shuffled stuff around to keep line-setting bits together
- clear CMSPAR
- (hopefully) detect errors correctly by checking tty->termios after call
to tty_set_termios().
drivers/tty/serdev/core.c | 12 ++++++++++++
drivers/tty/serdev/serdev-ttyport.c | 24 ++++++++++++++++++++++++
include/linux/serdev.h | 10 ++++++++++
3 files changed, 46 insertions(+)
diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
index 5dc88f6..ceee0ca 100644
--- a/drivers/tty/serdev/core.c
+++ b/drivers/tty/serdev/core.c
@@ -257,6 +257,18 @@ void serdev_device_set_flow_control(struct serdev_device *serdev, bool enable)
}
EXPORT_SYMBOL_GPL(serdev_device_set_flow_control);
+int serdev_device_set_parity(struct serdev_device *serdev,
+ enum serdev_parity parity)
+{
+ struct serdev_controller *ctrl = serdev->ctrl;
+
+ if (!ctrl || !ctrl->ops->set_parity)
+ return -ENOTSUPP;
+
+ return ctrl->ops->set_parity(ctrl, parity);
+}
+EXPORT_SYMBOL_GPL(serdev_device_set_parity);
+
void serdev_device_wait_until_sent(struct serdev_device *serdev, long timeout)
{
struct serdev_controller *ctrl = serdev->ctrl;
diff --git a/drivers/tty/serdev/serdev-ttyport.c b/drivers/tty/serdev/serdev-ttyport.c
index a5abb05..fa16729 100644
--- a/drivers/tty/serdev/serdev-ttyport.c
+++ b/drivers/tty/serdev/serdev-ttyport.c
@@ -194,6 +194,29 @@ static void ttyport_set_flow_control(struct serdev_controller *ctrl, bool enable
tty_set_termios(tty, &ktermios);
}
+static int ttyport_set_parity(struct serdev_controller *ctrl,
+ enum serdev_parity parity)
+{
+ struct serport *serport = serdev_controller_get_drvdata(ctrl);
+ struct tty_struct *tty = serport->tty;
+ struct ktermios ktermios = tty->termios;
+
+ ktermios.c_cflag &= ~(PARENB | PARODD | CMSPAR);
+ if (parity != SERDEV_PARITY_NONE) {
+ ktermios.c_cflag |= PARENB;
+ if (parity == SERDEV_PARITY_ODD)
+ ktermios.c_cflag |= PARODD;
+ }
+
+ tty_set_termios(tty, &ktermios);
+
+ if ((tty->termios.c_cflag & (PARENB | PARODD | CMSPAR)) !=
+ (ktermios.c_cflag & (PARENB | PARODD | CMSPAR)))
+ return -EINVAL;
+
+ return 0;
+}
+
static void ttyport_wait_until_sent(struct serdev_controller *ctrl, long timeout)
{
struct serport *serport = serdev_controller_get_drvdata(ctrl);
@@ -231,6 +254,7 @@ static const struct serdev_controller_ops ctrl_ops = {
.open = ttyport_open,
.close = ttyport_close,
.set_flow_control = ttyport_set_flow_control,
+ .set_parity = ttyport_set_parity,
.set_baudrate = ttyport_set_baudrate,
.wait_until_sent = ttyport_wait_until_sent,
.get_tiocm = ttyport_get_tiocm,
diff --git a/include/linux/serdev.h b/include/linux/serdev.h
index 48d8ce2..f153b2c 100644
--- a/include/linux/serdev.h
+++ b/include/linux/serdev.h
@@ -78,6 +78,12 @@ static inline struct serdev_device_driver *to_serdev_device_driver(struct device
return container_of(d, struct serdev_device_driver, driver);
}
+enum serdev_parity {
+ SERDEV_PARITY_NONE,
+ SERDEV_PARITY_EVEN,
+ SERDEV_PARITY_ODD,
+};
+
/*
* serdev controller structures
*/
@@ -88,6 +94,7 @@ struct serdev_controller_ops {
int (*open)(struct serdev_controller *);
void (*close)(struct serdev_controller *);
void (*set_flow_control)(struct serdev_controller *, bool);
+ int (*set_parity)(struct serdev_controller *, enum serdev_parity);
unsigned int (*set_baudrate)(struct serdev_controller *, unsigned int);
void (*wait_until_sent)(struct serdev_controller *, long);
int (*get_tiocm)(struct serdev_controller *);
@@ -301,6 +308,9 @@ static inline int serdev_device_set_rts(struct serdev_device *serdev, bool enabl
return serdev_device_set_tiocm(serdev, 0, TIOCM_RTS);
}
+int serdev_device_set_parity(struct serdev_device *serdev,
+ enum serdev_parity parity);
+
/*
* serdev hooks into TTY core
*/
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread[parent not found: <1516643792-22840-1-git-send-email-ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH v2] serdev: add method to set parity [not found] ` <1516643792-22840-1-git-send-email-ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2018-01-22 18:23 ` Marcel Holtmann 2018-01-23 7:00 ` Greg Kroah-Hartman 2018-01-23 1:34 ` Johan Hovold 2018-01-23 8:16 ` Marcel Holtmann 2 siblings, 1 reply; 5+ messages in thread From: Marcel Holtmann @ 2018-01-22 18:23 UTC (permalink / raw) To: Ulrich Hecht, Rob Herring, Greg Kroah-Hartman Cc: linux-renesas-soc-u79uwXL29TY76Z2rM5mHXA, linux-serial-u79uwXL29TY76Z2rM5mHXA, Johan Hovold, Sebastian Reichel, Bluez mailing list, Martin Blumenstingl, magnus.damm-Re5JQEeQqe8AvxtiuMwx3w, laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw, wsa-z923LK4zBo2bacvFa/9K2g, geert-Td1EMuHUCqxL1ZNQvxDV9g Hi Rob, > Adds serdev_device_set_parity() and an implementation for ttyport. > The interface uses an enum with the values SERIAL_PARITY_NONE, > SERIAL_PARITY_EVEN and SERIAL_PARITY_ODD. > > Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > Reviewed-by: Sebastian Reichel <sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org> > --- > > Hi! > > This revision addresses Johan's comments (see below for details) and adds > Sebastian's Reviewed-by tag. Thank you for your reviews! > > CU > Uli > > > Changes since v1: > - added Reviewed-by tag > - expanded commit message > - shuffled stuff around to keep line-setting bits together > - clear CMSPAR > - (hopefully) detect errors correctly by checking tty->termios after call > to tty_set_termios(). > > > drivers/tty/serdev/core.c | 12 ++++++++++++ > drivers/tty/serdev/serdev-ttyport.c | 24 ++++++++++++++++++++++++ > include/linux/serdev.h | 10 ++++++++++ > 3 files changed, 46 insertions(+) if there are no objections, I would like to just take this through bluetooth-next tree. Regards Marcel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] serdev: add method to set parity 2018-01-22 18:23 ` Marcel Holtmann @ 2018-01-23 7:00 ` Greg Kroah-Hartman 0 siblings, 0 replies; 5+ messages in thread From: Greg Kroah-Hartman @ 2018-01-23 7:00 UTC (permalink / raw) To: Marcel Holtmann Cc: Ulrich Hecht, Rob Herring, linux-renesas-soc, linux-serial, Johan Hovold, Sebastian Reichel, Bluez mailing list, Martin Blumenstingl, magnus.damm, laurent.pinchart, wsa, geert On Mon, Jan 22, 2018 at 07:23:00PM +0100, Marcel Holtmann wrote: > Hi Rob, > > > Adds serdev_device_set_parity() and an implementation for ttyport. > > The interface uses an enum with the values SERIAL_PARITY_NONE, > > SERIAL_PARITY_EVEN and SERIAL_PARITY_ODD. > > > > Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com> > > Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> > > --- > > > > Hi! > > > > This revision addresses Johan's comments (see below for details) and adds > > Sebastian's Reviewed-by tag. Thank you for your reviews! > > > > CU > > Uli > > > > > > Changes since v1: > > - added Reviewed-by tag > > - expanded commit message > > - shuffled stuff around to keep line-setting bits together > > - clear CMSPAR > > - (hopefully) detect errors correctly by checking tty->termios after call > > to tty_set_termios(). > > > > > > drivers/tty/serdev/core.c | 12 ++++++++++++ > > drivers/tty/serdev/serdev-ttyport.c | 24 ++++++++++++++++++++++++ > > include/linux/serdev.h | 10 ++++++++++ > > 3 files changed, 46 insertions(+) > > if there are no objections, I would like to just take this through bluetooth-next tree. Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] serdev: add method to set parity [not found] ` <1516643792-22840-1-git-send-email-ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2018-01-22 18:23 ` Marcel Holtmann @ 2018-01-23 1:34 ` Johan Hovold 2018-01-23 8:16 ` Marcel Holtmann 2 siblings, 0 replies; 5+ messages in thread From: Johan Hovold @ 2018-01-23 1:34 UTC (permalink / raw) To: Ulrich Hecht Cc: marcel-kz+m5ild9QBg9hUCZPvPmw, linux-renesas-soc-u79uwXL29TY76Z2rM5mHXA, linux-serial-u79uwXL29TY76Z2rM5mHXA, johan-DgEjT+Ai2ygdnm+yROfE0A, sre-DgEjT+Ai2ygdnm+yROfE0A, linux-bluetooth-u79uwXL29TY76Z2rM5mHXA, robh-DgEjT+Ai2ygdnm+yROfE0A, martin.blumenstingl-gM/Ye1E23mwN+BqQ9rBEUg, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r, magnus.damm-Re5JQEeQqe8AvxtiuMwx3w, laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw, wsa-z923LK4zBo2bacvFa/9K2g, geert-Td1EMuHUCqxL1ZNQvxDV9g On Mon, Jan 22, 2018 at 06:56:32PM +0100, Ulrich Hecht wrote: > Adds serdev_device_set_parity() and an implementation for ttyport. > The interface uses an enum with the values SERIAL_PARITY_NONE, > SERIAL_PARITY_EVEN and SERIAL_PARITY_ODD. > > Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > Reviewed-by: Sebastian Reichel <sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org> > --- > > Hi! > > This revision addresses Johan's comments (see below for details) and adds > Sebastian's Reviewed-by tag. Thank you for your reviews! > > CU > Uli > > > Changes since v1: > - added Reviewed-by tag > - expanded commit message > - shuffled stuff around to keep line-setting bits together > - clear CMSPAR > - (hopefully) detect errors correctly by checking tty->termios after call > to tty_set_termios(). Thanks for the v2. Looks good to me now. Reviewed-by: Johan Hovold <johan-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Johan ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] serdev: add method to set parity [not found] ` <1516643792-22840-1-git-send-email-ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2018-01-22 18:23 ` Marcel Holtmann 2018-01-23 1:34 ` Johan Hovold @ 2018-01-23 8:16 ` Marcel Holtmann 2 siblings, 0 replies; 5+ messages in thread From: Marcel Holtmann @ 2018-01-23 8:16 UTC (permalink / raw) To: Ulrich Hecht Cc: linux-renesas-soc-u79uwXL29TY76Z2rM5mHXA, linux-serial-u79uwXL29TY76Z2rM5mHXA, Johan Hovold, Sebastian Reichel, Bluez mailing list, Rob Herring, Martin Blumenstingl, Greg Kroah-Hartman, magnus.damm-Re5JQEeQqe8AvxtiuMwx3w, laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw, wsa-z923LK4zBo2bacvFa/9K2g, geert-Td1EMuHUCqxL1ZNQvxDV9g Hi Ulrich, > Adds serdev_device_set_parity() and an implementation for ttyport. > The interface uses an enum with the values SERIAL_PARITY_NONE, > SERIAL_PARITY_EVEN and SERIAL_PARITY_ODD. > > Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > Reviewed-by: Sebastian Reichel <sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org> > --- > > Hi! > > This revision addresses Johan's comments (see below for details) and adds > Sebastian's Reviewed-by tag. Thank you for your reviews! > > CU > Uli > > > Changes since v1: > - added Reviewed-by tag > - expanded commit message > - shuffled stuff around to keep line-setting bits together > - clear CMSPAR > - (hopefully) detect errors correctly by checking tty->termios after call > to tty_set_termios(). > > > drivers/tty/serdev/core.c | 12 ++++++++++++ > drivers/tty/serdev/serdev-ttyport.c | 24 ++++++++++++++++++++++++ > include/linux/serdev.h | 10 ++++++++++ > 3 files changed, 46 insertions(+) patch has been applied to bluetooth-next tree. Regards Marcel ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-01-23 8:16 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-22 17:56 [PATCH v2] serdev: add method to set parity Ulrich Hecht
[not found] ` <1516643792-22840-1-git-send-email-ulrich.hecht+renesas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-01-22 18:23 ` Marcel Holtmann
2018-01-23 7:00 ` Greg Kroah-Hartman
2018-01-23 1:34 ` Johan Hovold
2018-01-23 8:16 ` Marcel Holtmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox