Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

serial: imx: Use devm_* APIs

devm_* APIs are device managed and make cleanup and exit code simpler
and easier.

Cc: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Sachin Kamat and committed by
Greg Kroah-Hartman
42d34191 50bbdba3

+10 -22
+10 -22
drivers/tty/serial/imx.c
··· 1461 1461 struct resource *res; 1462 1462 struct pinctrl *pinctrl; 1463 1463 1464 - sport = kzalloc(sizeof(*sport), GFP_KERNEL); 1464 + sport = devm_kzalloc(&pdev->dev, sizeof(*sport), GFP_KERNEL); 1465 1465 if (!sport) 1466 1466 return -ENOMEM; 1467 1467 ··· 1469 1469 if (ret > 0) 1470 1470 serial_imx_probe_pdata(sport, pdev); 1471 1471 else if (ret < 0) 1472 - goto free; 1472 + return ret; 1473 1473 1474 1474 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1475 - if (!res) { 1476 - ret = -ENODEV; 1477 - goto free; 1478 - } 1475 + if (!res) 1476 + return -ENODEV; 1479 1477 1480 - base = ioremap(res->start, PAGE_SIZE); 1481 - if (!base) { 1482 - ret = -ENOMEM; 1483 - goto free; 1484 - } 1478 + base = devm_ioremap(&pdev->dev, res->start, PAGE_SIZE); 1479 + if (!base) 1480 + return -ENOMEM; 1485 1481 1486 1482 sport->port.dev = &pdev->dev; 1487 1483 sport->port.mapbase = res->start; ··· 1499 1503 if (IS_ERR(pinctrl)) { 1500 1504 ret = PTR_ERR(pinctrl); 1501 1505 dev_err(&pdev->dev, "failed to get default pinctrl: %d\n", ret); 1502 - goto unmap; 1506 + return ret; 1503 1507 } 1504 1508 1505 1509 sport->clk_ipg = devm_clk_get(&pdev->dev, "ipg"); 1506 1510 if (IS_ERR(sport->clk_ipg)) { 1507 1511 ret = PTR_ERR(sport->clk_ipg); 1508 1512 dev_err(&pdev->dev, "failed to get ipg clk: %d\n", ret); 1509 - goto unmap; 1513 + return ret; 1510 1514 } 1511 1515 1512 1516 sport->clk_per = devm_clk_get(&pdev->dev, "per"); 1513 1517 if (IS_ERR(sport->clk_per)) { 1514 1518 ret = PTR_ERR(sport->clk_per); 1515 1519 dev_err(&pdev->dev, "failed to get per clk: %d\n", ret); 1516 - goto unmap; 1520 + return ret; 1517 1521 } 1518 1522 1519 1523 clk_prepare_enable(sport->clk_per); ··· 1542 1546 clkput: 1543 1547 clk_disable_unprepare(sport->clk_per); 1544 1548 clk_disable_unprepare(sport->clk_ipg); 1545 - unmap: 1546 - iounmap(sport->port.membase); 1547 - free: 1548 - kfree(sport); 1549 - 1550 1549 return ret; 1551 1550 } 1552 1551 ··· 1561 1570 1562 1571 if (pdata && pdata->exit) 1563 1572 pdata->exit(pdev); 1564 - 1565 - iounmap(sport->port.membase); 1566 - kfree(sport); 1567 1573 1568 1574 return 0; 1569 1575 }