Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11f1ad3a authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Greg Kroah-Hartman
Browse files

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: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 574de559
Loading
Loading
Loading
Loading
+10 −7
Original line number Original line Diff line number Diff line
@@ -698,6 +698,7 @@ static int efm32_uart_probe(struct platform_device *pdev)
{
{
	struct efm32_uart_port *efm_port;
	struct efm32_uart_port *efm_port;
	struct resource *res;
	struct resource *res;
	unsigned int line;
	int ret;
	int ret;


	efm_port = kzalloc(sizeof(*efm_port), GFP_KERNEL);
	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 &&
	line = efm_port->port.line;
			efm_port->port.line < ARRAY_SIZE(efm32_uart_ports))

		efm32_uart_ports[efm_port->port.line] = efm_port;
	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);
	ret = uart_add_one_port(&efm32_uart_reg, &efm_port->port);
	if (ret) {
	if (ret) {
		dev_dbg(&pdev->dev, "failed to add port: %d\n", ret);
		dev_dbg(&pdev->dev, "failed to add port: %d\n", ret);


		if (pdev->id >= 0 && pdev->id < ARRAY_SIZE(efm32_uart_ports))
		if (line >= 0 && line < ARRAY_SIZE(efm32_uart_ports))
			efm32_uart_ports[pdev->id] = NULL;
			efm32_uart_ports[line] = NULL;
err_get_rxirq:
err_get_rxirq:
err_too_small:
err_too_small:
err_get_base:
err_get_base:
@@ -777,11 +779,12 @@ static int efm32_uart_probe(struct platform_device *pdev)
static int efm32_uart_remove(struct platform_device *pdev)
static int efm32_uart_remove(struct platform_device *pdev)
{
{
	struct efm32_uart_port *efm_port = platform_get_drvdata(pdev);
	struct efm32_uart_port *efm_port = platform_get_drvdata(pdev);
	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))
	if (line >= 0 && line < ARRAY_SIZE(efm32_uart_ports))
		efm32_uart_ports[pdev->id] = NULL;
		efm32_uart_ports[line] = NULL;


	kfree(efm_port);
	kfree(efm_port);