diff options
author | Andy Gross <agross@codeaurora.org> | 2014-04-24 12:31:22 -0400 |
---|---|---|
committer | Kumar Gala <galak@codeaurora.org> | 2014-05-29 12:06:20 -0400 |
commit | 31964ffebbb958c6cf289c7c12edd7530d6221b9 (patch) | |
tree | 858880fb26e44e1e5c9c168df22a8d4befca8441 | |
parent | 5d144e36b7c51612922fa05d37ff3a869261cc82 (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.c | 48 | ||||
-rw-r--r-- | drivers/tty/serial/msm_serial.h | 5 |
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) | |||
599 | static void msm_release_port(struct uart_port *port) | 598 | static 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 | ||
631 | static int msm_request_port(struct uart_port *port) | 614 | static 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 | ||
675 | fail_release_gsbi: | ||
676 | release_mem_region(gsbi_resource->start, size); | ||
677 | fail_release_port_membase: | ||
678 | iounmap(port->membase); | ||
679 | fail_release_port: | 638 | fail_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 | ||
684 | static void msm_config_port(struct uart_port *port, int flags) | 643 | static 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 | ||
699 | static int msm_verify_port(struct uart_port *port, struct serial_struct *ser) | 654 | static 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 | ||
1111 | static struct platform_driver msm_platform_driver = { | 1066 | static 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 |