diff options
| author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2013-07-30 10:35:20 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-07-31 21:05:39 -0400 |
| commit | 11f1ad3ab4c2b2f208f7ef5b0360903bdf00df61 (patch) | |
| tree | 75e5141b118890ba818286e36fe9feab53e815f5 | |
| parent | 574de559c1797618fd8ed03576837eb3113c5d26 (diff) | |
serial/efm32-uart: don't use pdev->id to determine the port's line
pdev->id is not a valid choice for device-tree probed devices. So use
the (properly determined) line from efm32_uart_probe consistenly
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/tty/serial/efm32-uart.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/tty/serial/efm32-uart.c b/drivers/tty/serial/efm32-uart.c index 868dbfb9f893..ce1ebbb0fe0d 100644 --- a/drivers/tty/serial/efm32-uart.c +++ b/drivers/tty/serial/efm32-uart.c | |||
| @@ -698,6 +698,7 @@ static int efm32_uart_probe(struct platform_device *pdev) | |||
| 698 | { | 698 | { |
| 699 | struct efm32_uart_port *efm_port; | 699 | struct efm32_uart_port *efm_port; |
| 700 | struct resource *res; | 700 | struct resource *res; |
| 701 | unsigned int line; | ||
| 701 | int ret; | 702 | int ret; |
| 702 | 703 | ||
| 703 | efm_port = kzalloc(sizeof(*efm_port), GFP_KERNEL); | 704 | efm_port = kzalloc(sizeof(*efm_port), GFP_KERNEL); |
| @@ -752,16 +753,17 @@ static int efm32_uart_probe(struct platform_device *pdev) | |||
| 752 | efm_port->pdata = *pdata; | 753 | efm_port->pdata = *pdata; |
| 753 | } | 754 | } |
| 754 | 755 | ||
| 755 | if (efm_port->port.line >= 0 && | 756 | line = efm_port->port.line; |
| 756 | efm_port->port.line < ARRAY_SIZE(efm32_uart_ports)) | 757 | |
| 757 | efm32_uart_ports[efm_port->port.line] = efm_port; | 758 | if (line >= 0 && line < ARRAY_SIZE(efm32_uart_ports)) |
| 759 | efm32_uart_ports[line] = efm_port; | ||
| 758 | 760 | ||
| 759 | ret = uart_add_one_port(&efm32_uart_reg, &efm_port->port); | 761 | ret = uart_add_one_port(&efm32_uart_reg, &efm_port->port); |
| 760 | if (ret) { | 762 | if (ret) { |
| 761 | dev_dbg(&pdev->dev, "failed to add port: %d\n", ret); | 763 | dev_dbg(&pdev->dev, "failed to add port: %d\n", ret); |
| 762 | 764 | ||
| 763 | if (pdev->id >= 0 && pdev->id < ARRAY_SIZE(efm32_uart_ports)) | 765 | if (line >= 0 && line < ARRAY_SIZE(efm32_uart_ports)) |
| 764 | efm32_uart_ports[pdev->id] = NULL; | 766 | efm32_uart_ports[line] = NULL; |
| 765 | err_get_rxirq: | 767 | err_get_rxirq: |
| 766 | err_too_small: | 768 | err_too_small: |
| 767 | err_get_base: | 769 | err_get_base: |
| @@ -777,11 +779,12 @@ err_get_base: | |||
| 777 | static int efm32_uart_remove(struct platform_device *pdev) | 779 | static int efm32_uart_remove(struct platform_device *pdev) |
| 778 | { | 780 | { |
| 779 | struct efm32_uart_port *efm_port = platform_get_drvdata(pdev); | 781 | struct efm32_uart_port *efm_port = platform_get_drvdata(pdev); |
| 782 | unsigned int line = efm_port->port.line; | ||
| 780 | 783 | ||
| 781 | uart_remove_one_port(&efm32_uart_reg, &efm_port->port); | 784 | uart_remove_one_port(&efm32_uart_reg, &efm_port->port); |
| 782 | 785 | ||
| 783 | if (pdev->id >= 0 && pdev->id < ARRAY_SIZE(efm32_uart_ports)) | 786 | if (line >= 0 && line < ARRAY_SIZE(efm32_uart_ports)) |
| 784 | efm32_uart_ports[pdev->id] = NULL; | 787 | efm32_uart_ports[line] = NULL; |
| 785 | 788 | ||
| 786 | kfree(efm_port); | 789 | kfree(efm_port); |
| 787 | 790 | ||
