git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
serial/efm32-uart: don't use pdev->id to determine the port's line
[pandora-kernel.git]
/
drivers
/
tty
/
serial
/
efm32-uart.c
diff --git
a/drivers/tty/serial/efm32-uart.c
b/drivers/tty/serial/efm32-uart.c
index
7d199c8
..
ce1ebbb
100644
(file)
--- 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)
{
struct efm32_uart_port *efm_port;
struct resource *res;
{
struct efm32_uart_port *efm_port;
struct resource *res;
+ unsigned int line;
int ret;
efm_port = kzalloc(sizeof(*efm_port), GFP_KERNEL);
int ret;
efm_port = kzalloc(sizeof(*efm_port), GFP_KERNEL);
@@
-752,16
+753,17
@@
static int efm32_uart_probe(struct platform_device *pdev)
efm_port->pdata = *pdata;
}
efm_port->pdata = *pdata;
}
- if (efm_port->port.line >= 0 &&
- efm_port->port.line < ARRAY_SIZE(efm32_uart_ports))
- efm32_uart_ports[efm_port->port.line] = efm_port;
+ line = efm_port->port.line;
+
+ if (line >= 0 && line < ARRAY_SIZE(efm32_uart_ports))
+ efm32_uart_ports[line] = efm_port;
ret = uart_add_one_port(&efm32_uart_reg, &efm_port->port);
if (ret) {
dev_dbg(&pdev->dev, "failed to add port: %d\n", ret);
ret = uart_add_one_port(&efm32_uart_reg, &efm_port->port);
if (ret) {
dev_dbg(&pdev->dev, "failed to add port: %d\n", ret);
- if (
pdev->id >= 0 && pdev->id
< ARRAY_SIZE(efm32_uart_ports))
- efm32_uart_ports[
pdev->id
] = NULL;
+ if (
line >= 0 && line
< ARRAY_SIZE(efm32_uart_ports))
+ efm32_uart_ports[
line
] = NULL;
err_get_rxirq:
err_too_small:
err_get_base:
err_get_rxirq:
err_too_small:
err_get_base:
@@
-777,20
+779,19
@@
err_get_base:
static int efm32_uart_remove(struct platform_device *pdev)
{
struct efm32_uart_port *efm_port = platform_get_drvdata(pdev);
static int efm32_uart_remove(struct platform_device *pdev)
{
struct efm32_uart_port *efm_port = platform_get_drvdata(pdev);
-
- platform_set_drvdata(pdev, NULL);
+ unsigned int line = efm_port->port.line;
uart_remove_one_port(&efm32_uart_reg, &efm_port->port);
uart_remove_one_port(&efm32_uart_reg, &efm_port->port);
- if (
pdev->id >= 0 && pdev->id
< ARRAY_SIZE(efm32_uart_ports))
- efm32_uart_ports[
pdev->id
] = NULL;
+ if (
line >= 0 && line
< ARRAY_SIZE(efm32_uart_ports))
+ efm32_uart_ports[
line
] = NULL;
kfree(efm_port);
return 0;
}
kfree(efm_port);
return 0;
}
-static struct of_device_id efm32_uart_dt_ids[] = {
+static
const
struct of_device_id efm32_uart_dt_ids[] = {
{
.compatible = "efm32,uart",
}, {
{
.compatible = "efm32,uart",
}, {