* \author Daniele Basile <asterix@develer.com>
*/
-#include <cpu/types.h>
-#include <cpu/irq.h>
-
-#include <drv/pwm.h>
-#include <drv/pwm_at91.h>
+#include "cfg/cfg_pwm.h"
#include <cfg/macros.h>
+#include <cfg/module.h>
+
+// Define logging setting (for cfg/log.h module).
+#define LOG_LEVEL PWM_LOG_LEVEL
+#define LOG_VERBOSITY PWM_LOG_FORMAT
+
+#include <cfg/log.h>
#include <cfg/debug.h>
+#include <drv/pwm.h>
+
+#include CPU_HEADER(pwm)
+
+#include <cpu/types.h>
+#include <cpu/irq.h>
+
/**
* Set duty of pwm channel \p dev.
pwm_period_t period = 0;
pwm_duty_t real_duty = 0;
- duty = MIN(duty, (pwm_duty_t)PWM_MAX_DUTY);
+ duty = MIN(duty, PWM_MAX_DUTY);
period = pwm_hw_getPeriod(dev);
real_duty = (uint64_t)(duty * period) >> (uint64_t)PWM_MAX_PERIOD_LOG2;
-// kprintf("real_duty[%d] duty[%d], period[%d]\n", real_duty, duty, period);
+ LOG_INFO("real_duty[%d] duty[%d], period[%d]", real_duty, duty, period);
pwm_hw_setDutyUnlock(dev, real_duty);
}
pwm_hw_disable(dev);
}
+MOD_DEFINE(pwm);
+
/**
* Initialize PWM hw.
*/
void pwm_init(void)
{
- cpuflags_t flags;
+ cpu_flags_t flags;
PwmDev dev;
IRQ_SAVE_DISABLE(flags);
+ pwm_hw_init();
+
/* set all pwm to 0 */
for (dev = 0; dev < PWM_CNT; dev++)
pwm_setDuty(dev, 0);
- pwm_hw_init();
-
IRQ_RESTORE(flags);
+ MOD_INIT(pwm);
}