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() 되어 있습니다.