aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Gross <agross@codeaurora.org>2014-04-24 12:31:22 -0400
committerKumar Gala <galak@codeaurora.org>2014-05-29 12:06:20 -0400
commit31964ffebbb958c6cf289c7c12edd7530d6221b9 (patch)
tree858880fb26e44e1e5c9c168df22a8d4befca8441
parent5d144e36b7c51612922fa05d37ff3a869261cc82 (diff)
tty: serial: msm: Remove direct access to GSBI
This patch removes direct access of the GSBI registers. GSBI configuration should be done through the GSBI driver directly. Signed-off-by: Andy Gross <agross@codeaurora.org> Signed-off-by: Kumar Gala <galak@codeaurora.org>
-rw-r--r--drivers/tty/serial/msm_serial.c48
-rw-r--r--drivers/tty/serial/msm_serial.h5
2 files changed, 2 insertions, 51 deletions
diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
index 053b98eb46c8..778e376f197e 100644
--- a/drivers/tty/serial/msm_serial.c
+++ b/drivers/tty/serial/msm_serial.c
@@ -52,7 +52,6 @@ struct msm_port {
52 struct clk *clk; 52 struct clk *clk;
53 struct clk *pclk; 53 struct clk *pclk;
54 unsigned int imr; 54 unsigned int imr;
55 void __iomem *gsbi_base;
56 int is_uartdm; 55 int is_uartdm;
57 unsigned int old_snap_state; 56 unsigned int old_snap_state;
58}; 57};
@@ -599,9 +598,7 @@ static const char *msm_type(struct uart_port *port)
599static void msm_release_port(struct uart_port *port) 598static void msm_release_port(struct uart_port *port)
600{ 599{
601 struct platform_device *pdev = to_platform_device(port->dev); 600 struct platform_device *pdev = to_platform_device(port->dev);
602 struct msm_port *msm_port = UART_TO_MSM(port);
603 struct resource *uart_resource; 601 struct resource *uart_resource;
604 struct resource *gsbi_resource;
605 resource_size_t size; 602 resource_size_t size;
606 603
607 uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0); 604 uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -612,28 +609,12 @@ static void msm_release_port(struct uart_port *port)
612 release_mem_region(port->mapbase, size); 609 release_mem_region(port->mapbase, size);
613 iounmap(port->membase); 610 iounmap(port->membase);
614 port->membase = NULL; 611 port->membase = NULL;
615
616 if (msm_port->gsbi_base) {
617 writel_relaxed(GSBI_PROTOCOL_IDLE,
618 msm_port->gsbi_base + GSBI_CONTROL);
619
620 gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
621 if (unlikely(!gsbi_resource))
622 return;
623
624 size = resource_size(gsbi_resource);
625 release_mem_region(gsbi_resource->start, size);
626 iounmap(msm_port->gsbi_base);
627 msm_port->gsbi_base = NULL;
628 }
629} 612}
630 613
631static int msm_request_port(struct uart_port *port) 614static int msm_request_port(struct uart_port *port)
632{ 615{
633 struct msm_port *msm_port = UART_TO_MSM(port);
634 struct platform_device *pdev = to_platform_device(port->dev); 616 struct platform_device *pdev = to_platform_device(port->dev);
635 struct resource *uart_resource; 617 struct resource *uart_resource;
636 struct resource *gsbi_resource;
637 resource_size_t size; 618 resource_size_t size;
638 int ret; 619 int ret;
639 620
@@ -652,30 +633,8 @@ static int msm_request_port(struct uart_port *port)
652 goto fail_release_port; 633 goto fail_release_port;
653 } 634 }
654 635
655 gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
656 /* Is this a GSBI-based port? */
657 if (gsbi_resource) {
658 size = resource_size(gsbi_resource);
659
660 if (!request_mem_region(gsbi_resource->start, size,
661 "msm_serial")) {
662 ret = -EBUSY;
663 goto fail_release_port_membase;
664 }
665
666 msm_port->gsbi_base = ioremap(gsbi_resource->start, size);
667 if (!msm_port->gsbi_base) {
668 ret = -EBUSY;
669 goto fail_release_gsbi;
670 }
671 }
672
673 return 0; 636 return 0;
674 637
675fail_release_gsbi:
676 release_mem_region(gsbi_resource->start, size);
677fail_release_port_membase:
678 iounmap(port->membase);
679fail_release_port: 638fail_release_port:
680 release_mem_region(port->mapbase, size); 639 release_mem_region(port->mapbase, size);
681 return ret; 640 return ret;
@@ -683,7 +642,6 @@ fail_release_port:
683 642
684static void msm_config_port(struct uart_port *port, int flags) 643static void msm_config_port(struct uart_port *port, int flags)
685{ 644{
686 struct msm_port *msm_port = UART_TO_MSM(port);
687 int ret; 645 int ret;
688 if (flags & UART_CONFIG_TYPE) { 646 if (flags & UART_CONFIG_TYPE) {
689 port->type = PORT_MSM; 647 port->type = PORT_MSM;
@@ -691,9 +649,6 @@ static void msm_config_port(struct uart_port *port, int flags)
691 if (ret) 649 if (ret)
692 return; 650 return;
693 } 651 }
694 if (msm_port->gsbi_base)
695 writel_relaxed(GSBI_PROTOCOL_UART,
696 msm_port->gsbi_base + GSBI_CONTROL);
697} 652}
698 653
699static int msm_verify_port(struct uart_port *port, struct serial_struct *ser) 654static int msm_verify_port(struct uart_port *port, struct serial_struct *ser)
@@ -1110,6 +1065,7 @@ static struct of_device_id msm_match_table[] = {
1110 1065
1111static struct platform_driver msm_platform_driver = { 1066static struct platform_driver msm_platform_driver = {
1112 .remove = msm_serial_remove, 1067 .remove = msm_serial_remove,
1068 .probe = msm_serial_probe,
1113 .driver = { 1069 .driver = {
1114 .name = "msm_serial", 1070 .name = "msm_serial",
1115 .owner = THIS_MODULE, 1071 .owner = THIS_MODULE,
@@ -1125,7 +1081,7 @@ static int __init msm_serial_init(void)
1125 if (unlikely(ret)) 1081 if (unlikely(ret))
1126 return ret; 1082 return ret;
1127 1083
1128 ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe); 1084 ret = platform_driver_register(&msm_platform_driver);
1129 if (unlikely(ret)) 1085 if (unlikely(ret))
1130 uart_unregister_driver(&msm_uart_driver); 1086 uart_unregister_driver(&msm_uart_driver);
1131 1087
diff --git a/drivers/tty/serial/msm_serial.h b/drivers/tty/serial/msm_serial.h
index 1e9b68b6f9eb..d98d45efdf86 100644
--- a/drivers/tty/serial/msm_serial.h
+++ b/drivers/tty/serial/msm_serial.h
@@ -109,11 +109,6 @@
109#define UART_ISR 0x0014 109#define UART_ISR 0x0014
110#define UART_ISR_TX_READY (1 << 7) 110#define UART_ISR_TX_READY (1 << 7)
111 111
112#define GSBI_CONTROL 0x0
113#define GSBI_PROTOCOL_CODE 0x30
114#define GSBI_PROTOCOL_UART 0x40
115#define GSBI_PROTOCOL_IDLE 0x0
116
117#define UARTDM_RXFS 0x50 112#define UARTDM_RXFS 0x50
118#define UARTDM_RXFS_BUF_SHIFT 0x7 113#define UARTDM_RXFS_BUF_SHIFT 0x7
119#define UARTDM_RXFS_BUF_MASK 0x7 114#define UARTDM_RXFS_BUF_MASK 0x7