디바이스 드라이버
imx6 의 PWM 관련 드라이버는 커널의 drivers/pwm/core.c, drivers/pwm/pwm-imx.c 파일을 참조하시면 됩니다.
위의 디렉토리는 커널 3.10.17 또는 이상의 버젼에서 포함되어 있으며, 3.0.35 버전에서는 arch/arm/plat-xxx/ 에 있습니다.
기본적으로 PWM을 제어하기 위한 함수는 아래와 같습니다.
1. pwm_request()
2. pwm_free()
3. pwm_config()
4. pwm_enable()
5. pwm_disable()
===========================================================
1. pwm channel 을 등록합니다.
struct pwm_device *pwm_request(int pwm, const char *label)
2. 등록한 pwm channel을 해지합니다.
void pwm_free(struct pwm_device *pwm)
3. pwm의 주파수 및 duty를 설정합니다.
/**
* pwm_config() - change a PWM device configuration
* @pwm: PWM device
* @duty_ns: "on" time (in nanoseconds)
* @period_ns: duration (in nanoseconds) of one cycle
*/
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
4. pwm 출력을 활성화합니다.
/**
* pwm_enable() - start a PWM output toggling
* @pwm: PWM device
*/
int pwm_enable(struct pwm_device *pwm)
5. pwm 출력을 비활성화합니다.
/**
* pwm_disable() - stop a PWM output toggling
* @pwm: PWM device
*/
void pwm_disable(struct pwm_device *pwm)
===========================================================
위의 함수들은 EXPORT_SYMBOL_GPL() 되어 있습니다.