kernel: update 3.14 to 3.14.18
[openwrt/staging/luka.git] / target / linux / ipq806x / patches / 0087-tty-serial-msm-Remove-direct-access-to-GSBI.patch
1 From 025909cbf933cc20c2ff5ea9f87de8e17a739a08 Mon Sep 17 00:00:00 2001
2 From: Andy Gross <agross@codeaurora.org>
3 Date: Thu, 24 Apr 2014 11:31:22 -0500
4 Subject: [PATCH 087/182] tty: serial: msm: Remove direct access to GSBI
5
6 This patch removes direct access of the GSBI registers. GSBI configuration
7 should be done through the GSBI driver directly.
8
9 Signed-off-by: Andy Gross <agross@codeaurora.org>
10 Signed-off-by: Kumar Gala <galak@codeaurora.org>
11 ---
12 drivers/tty/serial/msm_serial.c | 48 ++-------------------------------------
13 drivers/tty/serial/msm_serial.h | 5 ----
14 2 files changed, 2 insertions(+), 51 deletions(-)
15
16 --- a/drivers/tty/serial/msm_serial.c
17 +++ b/drivers/tty/serial/msm_serial.c
18 @@ -52,7 +52,6 @@ struct msm_port {
19 struct clk *clk;
20 struct clk *pclk;
21 unsigned int imr;
22 - void __iomem *gsbi_base;
23 int is_uartdm;
24 unsigned int old_snap_state;
25 };
26 @@ -599,9 +598,7 @@ static const char *msm_type(struct uart_
27 static void msm_release_port(struct uart_port *port)
28 {
29 struct platform_device *pdev = to_platform_device(port->dev);
30 - struct msm_port *msm_port = UART_TO_MSM(port);
31 struct resource *uart_resource;
32 - struct resource *gsbi_resource;
33 resource_size_t size;
34
35 uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
36 @@ -612,28 +609,12 @@ static void msm_release_port(struct uart
37 release_mem_region(port->mapbase, size);
38 iounmap(port->membase);
39 port->membase = NULL;
40 -
41 - if (msm_port->gsbi_base) {
42 - writel_relaxed(GSBI_PROTOCOL_IDLE,
43 - msm_port->gsbi_base + GSBI_CONTROL);
44 -
45 - gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
46 - if (unlikely(!gsbi_resource))
47 - return;
48 -
49 - size = resource_size(gsbi_resource);
50 - release_mem_region(gsbi_resource->start, size);
51 - iounmap(msm_port->gsbi_base);
52 - msm_port->gsbi_base = NULL;
53 - }
54 }
55
56 static int msm_request_port(struct uart_port *port)
57 {
58 - struct msm_port *msm_port = UART_TO_MSM(port);
59 struct platform_device *pdev = to_platform_device(port->dev);
60 struct resource *uart_resource;
61 - struct resource *gsbi_resource;
62 resource_size_t size;
63 int ret;
64
65 @@ -652,30 +633,8 @@ static int msm_request_port(struct uart_
66 goto fail_release_port;
67 }
68
69 - gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
70 - /* Is this a GSBI-based port? */
71 - if (gsbi_resource) {
72 - size = resource_size(gsbi_resource);
73 -
74 - if (!request_mem_region(gsbi_resource->start, size,
75 - "msm_serial")) {
76 - ret = -EBUSY;
77 - goto fail_release_port_membase;
78 - }
79 -
80 - msm_port->gsbi_base = ioremap(gsbi_resource->start, size);
81 - if (!msm_port->gsbi_base) {
82 - ret = -EBUSY;
83 - goto fail_release_gsbi;
84 - }
85 - }
86 -
87 return 0;
88
89 -fail_release_gsbi:
90 - release_mem_region(gsbi_resource->start, size);
91 -fail_release_port_membase:
92 - iounmap(port->membase);
93 fail_release_port:
94 release_mem_region(port->mapbase, size);
95 return ret;
96 @@ -683,7 +642,6 @@ fail_release_port:
97
98 static void msm_config_port(struct uart_port *port, int flags)
99 {
100 - struct msm_port *msm_port = UART_TO_MSM(port);
101 int ret;
102 if (flags & UART_CONFIG_TYPE) {
103 port->type = PORT_MSM;
104 @@ -691,9 +649,6 @@ static void msm_config_port(struct uart_
105 if (ret)
106 return;
107 }
108 - if (msm_port->gsbi_base)
109 - writel_relaxed(GSBI_PROTOCOL_UART,
110 - msm_port->gsbi_base + GSBI_CONTROL);
111 }
112
113 static int msm_verify_port(struct uart_port *port, struct serial_struct *ser)
114 @@ -1110,6 +1065,7 @@ static struct of_device_id msm_match_tab
115
116 static struct platform_driver msm_platform_driver = {
117 .remove = msm_serial_remove,
118 + .probe = msm_serial_probe,
119 .driver = {
120 .name = "msm_serial",
121 .owner = THIS_MODULE,
122 @@ -1125,7 +1081,7 @@ static int __init msm_serial_init(void)
123 if (unlikely(ret))
124 return ret;
125
126 - ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe);
127 + ret = platform_driver_register(&msm_platform_driver);
128 if (unlikely(ret))
129 uart_unregister_driver(&msm_uart_driver);
130
131 --- a/drivers/tty/serial/msm_serial.h
132 +++ b/drivers/tty/serial/msm_serial.h
133 @@ -109,11 +109,6 @@
134 #define UART_ISR 0x0014
135 #define UART_ISR_TX_READY (1 << 7)
136
137 -#define GSBI_CONTROL 0x0
138 -#define GSBI_PROTOCOL_CODE 0x30
139 -#define GSBI_PROTOCOL_UART 0x40
140 -#define GSBI_PROTOCOL_IDLE 0x0
141 -
142 #define UARTDM_RXFS 0x50
143 #define UARTDM_RXFS_BUF_SHIFT 0x7
144 #define UARTDM_RXFS_BUF_MASK 0x7