#include #include#include#include#include#include#include#include#include#include#include#include#include#include
#define PWM_LASER_SET_PERIOD _IOW('A', 0x11, unsigned int)
#define PWM_LASER_GET_PERIOD _IOR('A', 0x12, unsigned int)
#define PWM_LASER_SET_DUTY _IOW('A', 0x13, unsigned int)
#define PWM_LASER_GET_DUTY _IOR('A', 0x14, unsigned int)
#define PWM_LASER_ENABLE _IO('A', 0x15)
#define PWM_LASER_DISABLE _IO('A', 0x16)
structpwm_para {intpwm_id;
unsignedintperiod;
unsignedintlevel;
unsignedintduty;struct pwm_device *pwm;
};structpwm_para laser;static void pwm_laser_update(void)
{
laser.duty= laser.level * laser.period / 100;
pwm_config(laser.pwm, laser.duty, laser.period);
}static void pwm_laser_enable(void)
{
pwm_enable(laser.pwm);
}static void pwm_laser_disable(void)
{//关闭pwm之前将占空比设置为0
laser.level = 0;
pwm_laser_update();
pwm_disable(laser.pwm);
}static void pwm_laser_set_period(unsigned intperiod)
{
laser.period= period * 1000000;
pwm_set_period(laser.pwm, laser.period);
}static unsigned int pwm_laser_get_period(void)
{return (laser.period / 1000000);
}static int pwm_laser_open(struct inode *ino