pwm.h 1.5 KB
Newer Older
R
Russell King 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#ifndef __LINUX_PWM_H
#define __LINUX_PWM_H

struct pwm_device;

/*
 * pwm_request - request a PWM device
 */
struct pwm_device *pwm_request(int pwm_id, const char *label);

/*
 * pwm_free - free a PWM device
 */
void pwm_free(struct pwm_device *pwm);

/*
 * pwm_config - change a PWM device configuration
 */
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);

/*
 * pwm_enable - start a PWM output toggling
 */
int pwm_enable(struct pwm_device *pwm);

/*
 * pwm_disable - stop a PWM output toggling
 */
void pwm_disable(struct pwm_device *pwm);

S
Sascha Hauer 已提交
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
#ifdef CONFIG_PWM
struct pwm_chip;

/**
 * struct pwm_ops - PWM controller operations
 * @request: optional hook for requesting a PWM
 * @free: optional hook for freeing a PWM
 * @config: configure duty cycles and period length for this PWM
 * @enable: enable PWM output toggling
 * @disable: disable PWM output toggling
 * @owner: helps prevent removal of modules exporting active PWMs
 */
struct pwm_ops {
	int			(*request)(struct pwm_chip *chip);
	void			(*free)(struct pwm_chip *chip);
	int			(*config)(struct pwm_chip *chip, int duty_ns,
						int period_ns);
	int			(*enable)(struct pwm_chip *chip);
	void			(*disable)(struct pwm_chip *chip);
	struct module		*owner;
};

/**
 * struct pwm_chip - abstract a PWM
 * @pwm_id: global PWM device index
 * @label: PWM device label
 * @ops: controller operations
 */
struct pwm_chip {
	int			pwm_id;
	const char		*label;
	struct pwm_ops		*ops;
};

int pwmchip_add(struct pwm_chip *chip);
int pwmchip_remove(struct pwm_chip *chip);
#endif

M
Mark Vels 已提交
69
#endif /* __LINUX_PWM_H */