serial: tegra: Define correct port type
Laxman Dewangan [Fri, 9 Mar 2012 11:41:06 +0000 (16:41 +0530)]
When doing the cat /proc/tty/driver/tegra_uart, the serial
core display the message as
0: uart:unknown port:00000000 irq:68 tx:0 rx:0 CTS|DSR|CD|RI
4: uart:unknown port:00000000 irq:123 tx:0 rx:0 CTS|DSR|CD|RI

This is because the correct port type and iotype are not getting
set in tegra serial driver.

Setting these parameter to proper to display the information as
1: uart:TEGRA_UART mmio:0x70006040 irq:69 tx:0 rx:0 CTS|DSR|CD|RI
2: uart:TEGRA_UART mmio:0x70006200 irq:78 tx:477 rx:1603 RTS|CTS|DTR|DSR|CD|RI
3: uart:TEGRA_UART mmio:0x70006300 irq:122 tx:0 rx:0 CTS|DSR|CD|RI
4: uart:TEGRA_UART mmio:0x70006400 irq:123 tx:0 rx:0 CTS|DSR|CD|RI

bug 889724

Change-Id: Ia095623c53d1a3840c4d3759141cdf23cc2d4547
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/89122
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>

drivers/tty/serial/tegra_hsuart.c

index fd68004..4169cbc 100644 (file)
@@ -43,6 +43,8 @@
 #include <mach/dma.h>
 #include <mach/clk.h>
 
+#define TEGRA_UART_TYPE "TEGRA_UART"
+
 #define TX_EMPTY_STATUS (UART_LSR_TEMT | UART_LSR_THRE)
 
 #define BYTES_TO_ALIGN(x) ((unsigned long)(ALIGN((x), sizeof(u32))) - \
@@ -1368,7 +1370,7 @@ static void tegra_pm(struct uart_port *u, unsigned int state,
 
 static const char *tegra_type(struct uart_port *u)
 {
-       return 0;
+       return TEGRA_UART_TYPE;
 }
 
 static struct uart_ops tegra_uart_ops = {
@@ -1421,7 +1423,7 @@ static int __init tegra_uart_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, u);
        u->line = pdev->id;
        u->ops = &tegra_uart_ops;
-       u->type = ~PORT_UNKNOWN;
+       u->type = PORT_TEGRA;
        u->fifosize = 32;
 
        resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -1436,6 +1438,7 @@ static int __init tegra_uart_probe(struct platform_device *pdev)
                ret = -ENOMEM;
                goto fail;
        }
+       u->iotype = UPIO_MEM32;
 
        u->irq = platform_get_irq(pdev, 0);
        if (unlikely(u->irq < 0)) {