8cbb52a903d08a0f442d3e535e8ed04f56c53d90
[openwrt.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 diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
17 index 053b98e..778e376 100644
18 --- a/drivers/tty/serial/msm_serial.c
19 +++ b/drivers/tty/serial/msm_serial.c
20 @@ -52,7 +52,6 @@ struct msm_port {
21         struct clk              *clk;
22         struct clk              *pclk;
23         unsigned int            imr;
24 -       void __iomem            *gsbi_base;
25         int                     is_uartdm;
26         unsigned int            old_snap_state;
27  };
28 @@ -599,9 +598,7 @@ static const char *msm_type(struct uart_port *port)
29  static void msm_release_port(struct uart_port *port)
30  {
31         struct platform_device *pdev = to_platform_device(port->dev);
32 -       struct msm_port *msm_port = UART_TO_MSM(port);
33         struct resource *uart_resource;
34 -       struct resource *gsbi_resource;
35         resource_size_t size;
36  
37         uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
38 @@ -612,28 +609,12 @@ static void msm_release_port(struct uart_port *port)
39         release_mem_region(port->mapbase, size);
40         iounmap(port->membase);
41         port->membase = NULL;
42 -
43 -       if (msm_port->gsbi_base) {
44 -               writel_relaxed(GSBI_PROTOCOL_IDLE,
45 -                               msm_port->gsbi_base + GSBI_CONTROL);
46 -
47 -               gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
48 -               if (unlikely(!gsbi_resource))
49 -                       return;
50 -
51 -               size = resource_size(gsbi_resource);
52 -               release_mem_region(gsbi_resource->start, size);
53 -               iounmap(msm_port->gsbi_base);
54 -               msm_port->gsbi_base = NULL;
55 -       }
56  }
57  
58  static int msm_request_port(struct uart_port *port)
59  {
60 -       struct msm_port *msm_port = UART_TO_MSM(port);
61         struct platform_device *pdev = to_platform_device(port->dev);
62         struct resource *uart_resource;
63 -       struct resource *gsbi_resource;
64         resource_size_t size;
65         int ret;
66  
67 @@ -652,30 +633,8 @@ static int msm_request_port(struct uart_port *port)
68                 goto fail_release_port;
69         }
70  
71 -       gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
72 -       /* Is this a GSBI-based port? */
73 -       if (gsbi_resource) {
74 -               size = resource_size(gsbi_resource);
75 -
76 -               if (!request_mem_region(gsbi_resource->start, size,
77 -                                                "msm_serial")) {
78 -                       ret = -EBUSY;
79 -                       goto fail_release_port_membase;
80 -               }
81 -
82 -               msm_port->gsbi_base = ioremap(gsbi_resource->start, size);
83 -               if (!msm_port->gsbi_base) {
84 -                       ret = -EBUSY;
85 -                       goto fail_release_gsbi;
86 -               }
87 -       }
88 -
89         return 0;
90  
91 -fail_release_gsbi:
92 -       release_mem_region(gsbi_resource->start, size);
93 -fail_release_port_membase:
94 -       iounmap(port->membase);
95  fail_release_port:
96         release_mem_region(port->mapbase, size);
97         return ret;
98 @@ -683,7 +642,6 @@ fail_release_port:
99  
100  static void msm_config_port(struct uart_port *port, int flags)
101  {
102 -       struct msm_port *msm_port = UART_TO_MSM(port);
103         int ret;
104         if (flags & UART_CONFIG_TYPE) {
105                 port->type = PORT_MSM;
106 @@ -691,9 +649,6 @@ static void msm_config_port(struct uart_port *port, int flags)
107                 if (ret)
108                         return;
109         }
110 -       if (msm_port->gsbi_base)
111 -               writel_relaxed(GSBI_PROTOCOL_UART,
112 -                               msm_port->gsbi_base + GSBI_CONTROL);
113  }
114  
115  static int msm_verify_port(struct uart_port *port, struct serial_struct *ser)
116 @@ -1110,6 +1065,7 @@ static struct of_device_id msm_match_table[] = {
117  
118  static struct platform_driver msm_platform_driver = {
119         .remove = msm_serial_remove,
120 +       .probe = msm_serial_probe,
121         .driver = {
122                 .name = "msm_serial",
123                 .owner = THIS_MODULE,
124 @@ -1125,7 +1081,7 @@ static int __init msm_serial_init(void)
125         if (unlikely(ret))
126                 return ret;
127  
128 -       ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe);
129 +       ret = platform_driver_register(&msm_platform_driver);
130         if (unlikely(ret))
131                 uart_unregister_driver(&msm_uart_driver);
132  
133 diff --git a/drivers/tty/serial/msm_serial.h b/drivers/tty/serial/msm_serial.h
134 index 1e9b68b..d98d45e 100644
135 --- a/drivers/tty/serial/msm_serial.h
136 +++ b/drivers/tty/serial/msm_serial.h
137 @@ -109,11 +109,6 @@
138  #define UART_ISR               0x0014
139  #define UART_ISR_TX_READY      (1 << 7)
140  
141 -#define GSBI_CONTROL           0x0
142 -#define GSBI_PROTOCOL_CODE     0x30
143 -#define GSBI_PROTOCOL_UART     0x40
144 -#define GSBI_PROTOCOL_IDLE     0x0
145 -
146  #define UARTDM_RXFS            0x50
147  #define UARTDM_RXFS_BUF_SHIFT  0x7
148  #define UARTDM_RXFS_BUF_MASK   0x7
149 -- 
150 1.7.10.4
151