|
@@ -18,6 +18,7 @@
|
|
#include <linux/gpio.h>
|
|
#include <linux/gpio.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
|
|
+#include <linux/of_device.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/pwm.h>
|
|
#include <linux/pwm.h>
|
|
|
|
|
|
@@ -174,6 +175,8 @@ static int jz4740_pwm_probe(struct platform_device *pdev)
|
|
jz4740->chip.ops = &jz4740_pwm_ops;
|
|
jz4740->chip.ops = &jz4740_pwm_ops;
|
|
jz4740->chip.npwm = NUM_PWM;
|
|
jz4740->chip.npwm = NUM_PWM;
|
|
jz4740->chip.base = -1;
|
|
jz4740->chip.base = -1;
|
|
|
|
+ jz4740->chip.of_xlate = of_pwm_xlate_with_flags;
|
|
|
|
+ jz4740->chip.of_pwm_n_cells = 3;
|
|
|
|
|
|
platform_set_drvdata(pdev, jz4740);
|
|
platform_set_drvdata(pdev, jz4740);
|
|
|
|
|
|
@@ -187,9 +190,20 @@ static int jz4740_pwm_remove(struct platform_device *pdev)
|
|
return pwmchip_remove(&jz4740->chip);
|
|
return pwmchip_remove(&jz4740->chip);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#ifdef CONFIG_OF
|
|
|
|
+static const struct of_device_id jz4740_pwm_dt_ids[] = {
|
|
|
|
+ { .compatible = "ingenic,jz4740-pwm", },
|
|
|
|
+ { .compatible = "ingenic,jz4770-pwm", },
|
|
|
|
+ { .compatible = "ingenic,jz4780-pwm", },
|
|
|
|
+ {},
|
|
|
|
+};
|
|
|
|
+MODULE_DEVICE_TABLE(of, jz4740_pwm_dt_ids);
|
|
|
|
+#endif
|
|
|
|
+
|
|
static struct platform_driver jz4740_pwm_driver = {
|
|
static struct platform_driver jz4740_pwm_driver = {
|
|
.driver = {
|
|
.driver = {
|
|
.name = "jz4740-pwm",
|
|
.name = "jz4740-pwm",
|
|
|
|
+ .of_match_table = of_match_ptr(jz4740_pwm_dt_ids),
|
|
},
|
|
},
|
|
.probe = jz4740_pwm_probe,
|
|
.probe = jz4740_pwm_probe,
|
|
.remove = jz4740_pwm_remove,
|
|
.remove = jz4740_pwm_remove,
|