From: Jonathan Richardson <jonathar@broadcom.com>
To: Dmitry Torokhov <dtor@google.com>,
Anatol Pomazau <anatol@google.com>,
Jonathan Richardson <jonathar@broadcom.com>,
Scott Branden <sbranden@broadcom.com>,
Rob Herring <robh+dt@kernel.org>, Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Kumar Gala <galak@codeaurora.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jslaby@suse.cz>
Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-serial@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
Desmond Liu <desmondl@broadcom.com>
Subject: [PATCH v2 1/1] serial: 8250_dw: Fix get_mctrl behaviour
Date: Thu, 26 Feb 2015 16:35:57 -0800 [thread overview]
Message-ID: <1424997357-31487-2-git-send-email-jonathar@broadcom.com> (raw)
In-Reply-To: <1424997357-31487-1-git-send-email-jonathar@broadcom.com>
From: Desmond Liu <desmondl@broadcom.com>
Fixed behaviour of get_mctrl() serial driver function as documented in:
https://www.kernel.org/doc/Documentation/serial/driver
Added device-tree properties 'dcd-override', 'dsr-override',
'cts-override', and 'ri-override' specific to the Synopsis 8250
DesignWare UART driver. Allows one to force Data Carrier Detect,
Clear To Send, and Data Set Ready signals to permanently be reported as
active. The Ring indicator can be forced to be reported as inactive.
It is possible that if modem control signalling is enabled on a port
that doesn't have these pins (e.g. - a simple two wire Tx/Rx port), the
driver can hang indefinitely waiting for the state to change. The new
DT properties allow the driver to ignore the state of these pins on
serial ports that don't support them, as recommended in the kernel
documentation.
Reviewed-by: JD (Jiandong) Zheng <jdzheng@broadcom.com>
Signed-off-by: Jonathan Richardson <jonathar@broadcom.com>
---
.../bindings/serial/snps-dw-apb-uart.txt | 16 ++++++++++
drivers/tty/serial/8250/8250_dw.c | 32 ++++++++++++++++++++
2 files changed, 48 insertions(+)
diff --git a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt
index 7f76214..289c40e 100644
--- a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt
+++ b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt
@@ -21,6 +21,18 @@ Optional properties:
- reg-io-width : the size (in bytes) of the IO accesses that should be
performed on the device. If this property is not present then single byte
accesses are used.
+- dcd-override : Override the DCD modem status signal. This signal will always
+ be reported as active instead of being obtained from the modem status
+ register. Define this if your serial port does not use this pin.
+- dsr-override : Override the DTS modem status signal. This signal will always
+ be reported as active instead of being obtained from the modem status
+ register. Define this if your serial port does not use this pin.
+- cts-override : Override the CTS modem status signal. This signal will always
+ be reported as active instead of being obtained from the modem status
+ register. Define this if your serial port does not use this pin.
+- ri-override : Override the RI modem status signal. This signal will always be
+ reported as inactive instead of being obtained from the modem status register.
+ Define this if your serial port does not use this pin.
Example:
@@ -31,6 +43,10 @@ Example:
interrupts = <10>;
reg-shift = <2>;
reg-io-width = <4>;
+ dcd-override;
+ dsr-override;
+ cts-override;
+ ri-override;
};
Example with one clock:
diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
index 555de07..1f1d2e6 100644
--- a/drivers/tty/serial/8250/8250_dw.c
+++ b/drivers/tty/serial/8250/8250_dw.c
@@ -59,6 +59,8 @@ struct dw8250_data {
u8 usr_reg;
int last_mcr;
int line;
+ int msr_mask_on;
+ int msr_mask_off;
struct clk *clk;
struct clk *pclk;
struct reset_control *rst;
@@ -81,6 +83,12 @@ static inline int dw8250_modify_msr(struct uart_port *p, int offset, int value)
value &= ~UART_MSR_DCTS;
}
+ /* Override any modem control signals if needed */
+ if (offset == UART_MSR) {
+ value |= d->msr_mask_on;
+ value &= ~d->msr_mask_off;
+ }
+
return value;
}
@@ -334,6 +342,30 @@ static int dw8250_probe_of(struct uart_port *p,
if (id >= 0)
p->line = id;
+ if (of_property_read_bool(np, "dcd-override")) {
+ /* Always report DCD as active */
+ data->msr_mask_on |= UART_MSR_DCD;
+ data->msr_mask_off |= UART_MSR_DDCD;
+ }
+
+ if (of_property_read_bool(np, "dsr-override")) {
+ /* Always report DSR as active */
+ data->msr_mask_on |= UART_MSR_DSR;
+ data->msr_mask_off |= UART_MSR_DDSR;
+ }
+
+ if (of_property_read_bool(np, "cts-override")) {
+ /* Always report DSR as active */
+ data->msr_mask_on |= UART_MSR_DSR;
+ data->msr_mask_off |= UART_MSR_DDSR;
+ }
+
+ if (of_property_read_bool(np, "ri-override")) {
+ /* Always report Ring indicator as inactive */
+ data->msr_mask_off |= UART_MSR_RI;
+ data->msr_mask_off |= UART_MSR_TERI;
+ }
+
/* clock got configured through clk api, all done */
if (p->uartclk)
return 0;
--
1.7.9.5
next prev parent reply other threads:[~2015-02-27 0:35 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Jonathan Richardson <jonathar@broadcom.com>
2014-09-23 21:17 ` [PATCH v2 0/6] Add initial support for Broadcom Cygnus SoC Jonathan Richardson
2014-09-23 21:17 ` [PATCH v2 1/6] ARM: cygnus: Initial " Jonathan Richardson
2014-09-23 21:17 ` [PATCH v2 2/6] clk: Clock driver " Jonathan Richardson
2014-09-23 21:17 ` [PATCH v2 3/6] dt-bindings: Document Broadcom Cygnus SoC and clock driver Jonathan Richardson
2014-09-23 21:17 ` [PATCH v2 5/6] ARM: cygnus defconfig : Initial defconfig for Broadcom Cygnus SoC Jonathan Richardson
2014-09-23 21:17 ` [PATCH v2 6/6] MAINTAINERS: Entry for Cygnus/iproc arm architecture and clock drivers Jonathan Richardson
[not found] ` <1411507057-14771-1-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-09-23 21:17 ` [PATCH v2 4/6] ARM: dts: Enable Broadcom Cygnus SoC Jonathan Richardson
2014-09-25 21:04 ` [PATCH v2 0/6] Add initial support for " Scott Branden
[not found] ` <54248344.5030308-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-09-25 21:22 ` Florian Fainelli
[not found] ` <54248791.9060805-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-09-26 0:14 ` Florian Fainelli
[not found] ` <5424AFD2.2070406-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-09-26 0:28 ` Jonathan Richardson
[not found] ` <5424B335.6000602-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-09-26 0:34 ` Florian Fainelli
2014-12-18 1:59 ` [PATCH 0/2] Add support for Broadcom iProc touchscreen Jonathan Richardson
[not found] ` <1418867992-3550-1-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-12-18 1:59 ` [PATCH 1/2] Input: touchscreen-iproc: Add Broadcom iProc touchscreen driver Jonathan Richardson
2014-12-18 2:14 ` Joe Perches
2014-12-19 19:51 ` Jonathan Richardson
2014-12-19 19:56 ` Dmitry Torokhov
2014-12-18 1:59 ` [PATCH 2/2] Input: touchscreen-iproc: add device tree bindings Jonathan Richardson
2014-12-19 22:17 ` [PATCH v2 0/2] Add support for Broadcom iProc touchscreen Jonathan Richardson
2014-12-19 22:17 ` [PATCH v2 1/2] Input: touchscreen-iproc: Add Broadcom iProc touchscreen driver Jonathan Richardson
2015-01-15 1:02 ` Dmitry Torokhov
2015-01-15 5:44 ` Scott Branden
2015-01-15 6:07 ` Dmitry Torokhov
2015-01-15 19:51 ` Jonathan Richardson
2015-02-11 18:45 ` Jonathan Richardson
[not found] ` <54DBA34E.8090400-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2015-02-24 23:18 ` Dmitry Torokhov
2015-02-27 1:02 ` Jonathan Richardson
[not found] ` <1419027470-7969-2-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-12-19 22:26 ` Joe Perches
2014-12-19 23:03 ` Jonathan Richardson
2015-01-01 0:55 ` Jonathan Richardson
2015-01-15 1:08 ` Florian Fainelli
2015-01-15 19:19 ` Jonathan Richardson
2015-02-24 23:29 ` Dmitry Torokhov
2015-03-02 19:13 ` Jonathan Richardson
2014-12-19 22:17 ` [PATCH v2 2/2] Input: touchscreen-iproc: add device tree bindings Jonathan Richardson
[not found] ` <Jonathan Richardson <jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-09-16 19:58 ` [PATCH 0/6] Add initial support for Broadcom Cygnus SoC Jonathan Richardson
2014-09-16 19:58 ` [PATCH 1/6] ARM: cygnus: Initial " Jonathan Richardson
2014-09-17 0:00 ` Mark Rutland
2014-09-18 23:33 ` Jonathan Richardson
[not found] ` <1410897497-27527-1-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-09-16 19:58 ` [PATCH 2/6] clk: Clock driver " Jonathan Richardson
[not found] ` <1410897497-27527-3-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2014-09-17 0:47 ` Mark Rutland
2014-09-18 23:43 ` Jonathan Richardson
2014-09-18 22:31 ` [PATCH 0/6] Add initial " Hauke Mehrtens
2014-09-18 22:39 ` Florian Fainelli
[not found] ` <541B5F16.6030005-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2014-09-18 22:54 ` Hauke Mehrtens
2014-09-19 0:58 ` Scott Branden
2014-09-16 19:58 ` [PATCH 3/6] dt-bindings: Document Broadcom Cygnus SoC and clock driver Jonathan Richardson
2014-09-16 19:58 ` [PATCH 4/6] ARM: dts: Enable Broadcom Cygnus SoC Jonathan Richardson
2014-09-16 19:58 ` [PATCH 5/6] ARM: cygnus defconfig : Initial defconfig for " Jonathan Richardson
2014-09-16 19:58 ` [PATCH 6/6] MAINTAINERS: Entry for Cygnus/iproc arm architecture and clock drivers Jonathan Richardson
2015-02-24 19:13 ` [PATCH 0/1] Enable Broadcom Cygnus BCM958305K Jonathan Richardson
[not found] ` <1424805191-10675-1-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2015-02-24 19:13 ` [PATCH 1/1] ARM: dts: " Jonathan Richardson
2015-02-25 19:04 ` [PATCH 0/1] Synopsis 8250 serial port driver fix Jonathan Richardson
2015-02-25 19:04 ` [PATCH 1/1] serial: 8250_dw: Fix get_mctrl behaviour Jonathan Richardson
2015-02-25 19:21 ` Arnd Bergmann
2015-02-25 20:00 ` Jonathan Richardson
2015-02-25 20:07 ` Arnd Bergmann
2015-03-02 22:41 ` [PATCH RESEND 0/1] Enable Broadcom Cygnus BCM958305K Jonathan Richardson
2015-03-02 22:41 ` [PATCH RESEND 1/1] ARM: dts: " Jonathan Richardson
[not found] ` <1425336070-3414-2-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2015-03-02 23:45 ` Florian Fainelli
2015-03-12 17:45 ` [PATCH v4 0/2] Add support for Broadcom iProc touchscreen Jonathan Richardson
2015-03-12 17:45 ` [PATCH v4 1/2] Input: touchscreen-iproc: Add Broadcom iProc touchscreen driver Jonathan Richardson
2015-03-12 17:59 ` Joe Perches
[not found] ` <1426183169.2742.10.camel-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
2015-03-12 22:44 ` Jonathan Richardson
2015-03-12 17:45 ` [PATCH v4 2/2] Input: touchscreen-iproc: add device tree bindings Jonathan Richardson
2015-02-27 0:35 ` [PATCH v2 0/1] Synopsis 8250 serial port driver fix Jonathan Richardson
2015-02-27 0:35 ` Jonathan Richardson [this message]
2015-03-09 18:40 ` [PATCH v2 1/1] serial: 8250_dw: Fix get_mctrl behaviour Dmitry Torokhov
[not found] ` <CAE_wzQ-43+oGAmyJ_cgso1XfnCYFGVczPvePG++x=povcAPOdA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-09 18:51 ` Jonathan Richardson
2015-03-11 1:17 ` [PATCH v3 0/2] Add support for Broadcom iProc touchscreen Jonathan Richardson
[not found] ` <1426036669-21659-1-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2015-03-11 1:17 ` [PATCH v3 1/2] Input: touchscreen-iproc: Add Broadcom iProc touchscreen driver Jonathan Richardson
2015-03-11 9:46 ` Paul Bolle
2015-03-11 17:05 ` Jonathan Richardson
2015-03-11 1:17 ` [PATCH v3 2/2] Input: touchscreen-iproc: add device tree bindings Jonathan Richardson
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=1424997357-31487-2-git-send-email-jonathar@broadcom.com \
--to=jonathar@broadcom.com \
--cc=anatol@google.com \
--cc=arnd@arndb.de \
--cc=desmondl@broadcom.com \
--cc=devicetree@vger.kernel.org \
--cc=dtor@google.com \
--cc=galak@codeaurora.org \
--cc=gregkh@linuxfoundation.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=sbranden@broadcom.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).