Loading drivers/pwm/pwm-imx.c +10 −47 Original line number Original line Diff line number Diff line Loading @@ -159,18 +159,16 @@ static int __devinit imx_pwm_probe(struct platform_device *pdev) struct resource *r; struct resource *r; int ret = 0; int ret = 0; imx = kzalloc(sizeof(*imx), GFP_KERNEL); imx = devm_kzalloc(&pdev->dev, sizeof(*imx), GFP_KERNEL); if (imx == NULL) { if (imx == NULL) { dev_err(&pdev->dev, "failed to allocate memory\n"); dev_err(&pdev->dev, "failed to allocate memory\n"); return -ENOMEM; return -ENOMEM; } } imx->clk = clk_get(&pdev->dev, "pwm"); imx->clk = devm_clk_get(&pdev->dev, "pwm"); if (IS_ERR(imx->clk)) { if (IS_ERR(imx->clk)) ret = PTR_ERR(imx->clk); return PTR_ERR(imx->clk); goto err_free; } imx->chip.ops = &imx_pwm_ops; imx->chip.ops = &imx_pwm_ops; imx->chip.dev = &pdev->dev; imx->chip.dev = &pdev->dev; Loading @@ -182,65 +180,30 @@ static int __devinit imx_pwm_probe(struct platform_device *pdev) r = platform_get_resource(pdev, IORESOURCE_MEM, 0); r = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (r == NULL) { if (r == NULL) { dev_err(&pdev->dev, "no memory resource defined\n"); dev_err(&pdev->dev, "no memory resource defined\n"); ret = -ENODEV; return -ENODEV; goto err_free_clk; } } r = request_mem_region(r->start, resource_size(r), pdev->name); imx->mmio_base = devm_request_and_ioremap(&pdev->dev, r); if (r == NULL) { if (imx->mmio_base == NULL) dev_err(&pdev->dev, "failed to request memory resource\n"); return -EADDRNOTAVAIL; ret = -EBUSY; goto err_free_clk; } imx->mmio_base = ioremap(r->start, resource_size(r)); if (imx->mmio_base == NULL) { dev_err(&pdev->dev, "failed to ioremap() registers\n"); ret = -ENODEV; goto err_free_mem; } ret = pwmchip_add(&imx->chip); ret = pwmchip_add(&imx->chip); if (ret < 0) if (ret < 0) goto err_iounmap; return ret; platform_set_drvdata(pdev, imx); platform_set_drvdata(pdev, imx); return 0; return 0; err_iounmap: iounmap(imx->mmio_base); err_free_mem: release_mem_region(r->start, resource_size(r)); err_free_clk: clk_put(imx->clk); err_free: kfree(imx); return ret; } } static int __devexit imx_pwm_remove(struct platform_device *pdev) static int __devexit imx_pwm_remove(struct platform_device *pdev) { { struct imx_chip *imx; struct imx_chip *imx; struct resource *r; int ret; imx = platform_get_drvdata(pdev); imx = platform_get_drvdata(pdev); if (imx == NULL) if (imx == NULL) return -ENODEV; return -ENODEV; ret = pwmchip_remove(&imx->chip); return pwmchip_remove(&imx->chip); if (ret) return ret; iounmap(imx->mmio_base); r = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(r->start, resource_size(r)); clk_put(imx->clk); kfree(imx); return 0; } } static struct platform_driver imx_pwm_driver = { static struct platform_driver imx_pwm_driver = { Loading Loading
drivers/pwm/pwm-imx.c +10 −47 Original line number Original line Diff line number Diff line Loading @@ -159,18 +159,16 @@ static int __devinit imx_pwm_probe(struct platform_device *pdev) struct resource *r; struct resource *r; int ret = 0; int ret = 0; imx = kzalloc(sizeof(*imx), GFP_KERNEL); imx = devm_kzalloc(&pdev->dev, sizeof(*imx), GFP_KERNEL); if (imx == NULL) { if (imx == NULL) { dev_err(&pdev->dev, "failed to allocate memory\n"); dev_err(&pdev->dev, "failed to allocate memory\n"); return -ENOMEM; return -ENOMEM; } } imx->clk = clk_get(&pdev->dev, "pwm"); imx->clk = devm_clk_get(&pdev->dev, "pwm"); if (IS_ERR(imx->clk)) { if (IS_ERR(imx->clk)) ret = PTR_ERR(imx->clk); return PTR_ERR(imx->clk); goto err_free; } imx->chip.ops = &imx_pwm_ops; imx->chip.ops = &imx_pwm_ops; imx->chip.dev = &pdev->dev; imx->chip.dev = &pdev->dev; Loading @@ -182,65 +180,30 @@ static int __devinit imx_pwm_probe(struct platform_device *pdev) r = platform_get_resource(pdev, IORESOURCE_MEM, 0); r = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (r == NULL) { if (r == NULL) { dev_err(&pdev->dev, "no memory resource defined\n"); dev_err(&pdev->dev, "no memory resource defined\n"); ret = -ENODEV; return -ENODEV; goto err_free_clk; } } r = request_mem_region(r->start, resource_size(r), pdev->name); imx->mmio_base = devm_request_and_ioremap(&pdev->dev, r); if (r == NULL) { if (imx->mmio_base == NULL) dev_err(&pdev->dev, "failed to request memory resource\n"); return -EADDRNOTAVAIL; ret = -EBUSY; goto err_free_clk; } imx->mmio_base = ioremap(r->start, resource_size(r)); if (imx->mmio_base == NULL) { dev_err(&pdev->dev, "failed to ioremap() registers\n"); ret = -ENODEV; goto err_free_mem; } ret = pwmchip_add(&imx->chip); ret = pwmchip_add(&imx->chip); if (ret < 0) if (ret < 0) goto err_iounmap; return ret; platform_set_drvdata(pdev, imx); platform_set_drvdata(pdev, imx); return 0; return 0; err_iounmap: iounmap(imx->mmio_base); err_free_mem: release_mem_region(r->start, resource_size(r)); err_free_clk: clk_put(imx->clk); err_free: kfree(imx); return ret; } } static int __devexit imx_pwm_remove(struct platform_device *pdev) static int __devexit imx_pwm_remove(struct platform_device *pdev) { { struct imx_chip *imx; struct imx_chip *imx; struct resource *r; int ret; imx = platform_get_drvdata(pdev); imx = platform_get_drvdata(pdev); if (imx == NULL) if (imx == NULL) return -ENODEV; return -ENODEV; ret = pwmchip_remove(&imx->chip); return pwmchip_remove(&imx->chip); if (ret) return ret; iounmap(imx->mmio_base); r = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(r->start, resource_size(r)); clk_put(imx->clk); kfree(imx); return 0; } } static struct platform_driver imx_pwm_driver = { static struct platform_driver imx_pwm_driver = { Loading