-/* arch/arm/plat-s3c/pwm.c
+/* drivers/pwm/pwm-samsung.c
*
* Copyright (c) 2007 Ben Dooks
* Copyright (c) 2008 Simtec Electronics
* the Free Software Foundation; either version 2 of the License.
*/
+#define pr_fmt(fmt) "pwm-samsung: " fmt
+
#include <linux/export.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>
return -ENXIO;
}
- s3c = kzalloc(sizeof(*s3c), GFP_KERNEL);
+ s3c = devm_kzalloc(&pdev->dev, sizeof(*s3c), GFP_KERNEL);
if (s3c == NULL) {
dev_err(dev, "failed to allocate pwm_device\n");
return -ENOMEM;
s3c->chip.base = -1;
s3c->chip.npwm = 1;
- s3c->clk = clk_get(dev, "pwm-tin");
+ s3c->clk = devm_clk_get(dev, "pwm-tin");
if (IS_ERR(s3c->clk)) {
dev_err(dev, "failed to get pwm tin clk\n");
- ret = PTR_ERR(s3c->clk);
- goto err_alloc;
+ return PTR_ERR(s3c->clk);
}
- s3c->clk_div = clk_get(dev, "pwm-tdiv");
+ s3c->clk_div = devm_clk_get(dev, "pwm-tdiv");
if (IS_ERR(s3c->clk_div)) {
dev_err(dev, "failed to get pwm tdiv clk\n");
- ret = PTR_ERR(s3c->clk_div);
- goto err_clk_tin;
+ return PTR_ERR(s3c->clk_div);
}
clk_enable(s3c->clk);
err_clk_tdiv:
clk_disable(s3c->clk_div);
clk_disable(s3c->clk);
- clk_put(s3c->clk_div);
-
- err_clk_tin:
- clk_put(s3c->clk);
-
- err_alloc:
- kfree(s3c);
return ret;
}
clk_disable(s3c->clk_div);
clk_disable(s3c->clk);
- clk_put(s3c->clk_div);
- clk_put(s3c->clk);
- kfree(s3c);
return 0;
}
clk_scaler[1] = clk_get(NULL, "pwm-scaler1");
if (IS_ERR(clk_scaler[0]) || IS_ERR(clk_scaler[1])) {
- printk(KERN_ERR "%s: failed to get scaler clocks\n", __func__);
+ pr_err("failed to get scaler clocks\n");
return -EINVAL;
}
ret = platform_driver_register(&s3c_pwm_driver);
if (ret)
- printk(KERN_ERR "%s: failed to add pwm driver\n", __func__);
+ pr_err("failed to add pwm driver\n");
return ret;
}