summaryrefslogtreecommitdiff
path: root/drivers/serial/tegra_hsuart.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial/tegra_hsuart.c')
-rw-r--r--drivers/serial/tegra_hsuart.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/serial/tegra_hsuart.c b/drivers/serial/tegra_hsuart.c
index 292863ccaaa0..09f5f454683c 100644
--- a/drivers/serial/tegra_hsuart.c
+++ b/drivers/serial/tegra_hsuart.c
@@ -1221,8 +1221,8 @@ static int __devexit tegra_uart_remove(struct platform_device *pdev)
static int tegra_uart_probe(struct platform_device *pdev)
{
struct tegra_uart_port *t;
- struct plat_serial8250_port *pdata = pdev->dev.platform_data;
struct uart_port *u;
+ struct resource *resource;
int ret;
char name[64];
if (pdev->id < 0 || pdev->id > tegra_uart_driver.nr) {
@@ -1242,9 +1242,20 @@ static int tegra_uart_probe(struct platform_device *pdev)
u->ops = &tegra_uart_ops;
u->type = ~PORT_UNKNOWN;
u->fifosize = 32;
- u->mapbase = pdata->mapbase;
- u->membase = pdata->membase;
- u->irq = pdata->irq;
+
+ resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (unlikely(!resource))
+ return -ENXIO;
+
+ u->mapbase = resource->start;
+ u->membase = IO_ADDRESS(u->mapbase);
+ if (unlikely(!u->membase))
+ return -ENOMEM;
+
+ u->irq = platform_get_irq(pdev, 0);
+ if (unlikely(u->irq < 0))
+ return -ENXIO;
+
u->regshift = 2;
t->clk = clk_get(&pdev->dev, NULL);