1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
--- a/vizzini.c 2013-03-28 16:37:49.863760786 -0500
+++ b/vizzini.c 2013-03-28 16:38:57.353205784 -0500
@@ -95,6 +95,9 @@
#define READ_URB_RUNNING 0
#define READ_URB_STOPPED 1
+#define UART_PIN_RTS 0x020
+#define UART_GPIO_DIR 0x01b
+
static int debug;
@@ -559,6 +562,17 @@
vizzini_set_reg(port, block, UART_FLOW, flow);
vizzini_set_reg(port, block, UART_GPIO_MODE, gpio_mode);
+ /* if flow control hasn't been turned on, enable RTS for modem-like functionality */
+ if (flow == UART_FLOW_MODE_NONE) {
+ char value;
+ vizzini_get_reg(port, block, UART_GPIO_DIR, &value);
+ value |= UART_PIN_RTS;
+ vizzini_set_reg(port, block, UART_GPIO_DIR, value);
+ vizzini_get_reg(port, block, UART_GPIO_CLR, &value);
+ value |= UART_PIN_RTS;
+ vizzini_set_reg(port, block, UART_GPIO_CLR, value);
+ }
+
if (portdata->trans9) {
/* Turn on wide mode if we're 9-bit transparent. */
|