aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pwm.h
diff options
context:
space:
mode:
authorFlorian Vaussard <florian.vaussard@epfl.ch>2013-01-28 09:00:57 -0500
committerThierry Reding <thierry.reding@avionic-design.de>2013-01-30 03:12:18 -0500
commit6e69ab1361c44e3ee1398158b56d114b1aef8179 (patch)
tree44994b7b6cdfebaf1de44473597bb5a9adf2f912 /include/linux/pwm.h
parent0132267d659107616eb044777f1b0be55381129a (diff)
pwm: Add pwm_can_sleep() as exported API to users
Calls to some external PWM chips can sleep. To help users, add pwm_can_sleep() API. Cc: Thierry Reding <thierry.reding@avionic-design.de> Cc: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Florian Vaussard <florian.vaussard@epfl.ch> Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Diffstat (limited to 'include/linux/pwm.h')
-rw-r--r--include/linux/pwm.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/pwm.h b/include/linux/pwm.h
index 6d661f32e0e4..3fef47733ea3 100644
--- a/include/linux/pwm.h
+++ b/include/linux/pwm.h
@@ -146,6 +146,8 @@ struct pwm_ops {
146 * @base: number of first PWM controlled by this chip 146 * @base: number of first PWM controlled by this chip
147 * @npwm: number of PWMs controlled by this chip 147 * @npwm: number of PWMs controlled by this chip
148 * @pwms: array of PWM devices allocated by the framework 148 * @pwms: array of PWM devices allocated by the framework
149 * @can_sleep: must be true if the .config(), .enable() or .disable()
150 * operations may sleep
149 */ 151 */
150struct pwm_chip { 152struct pwm_chip {
151 struct device *dev; 153 struct device *dev;
@@ -159,6 +161,7 @@ struct pwm_chip {
159 struct pwm_device * (*of_xlate)(struct pwm_chip *pc, 161 struct pwm_device * (*of_xlate)(struct pwm_chip *pc,
160 const struct of_phandle_args *args); 162 const struct of_phandle_args *args);
161 unsigned int of_pwm_n_cells; 163 unsigned int of_pwm_n_cells;
164 bool can_sleep;
162}; 165};
163 166
164#if IS_ENABLED(CONFIG_PWM) 167#if IS_ENABLED(CONFIG_PWM)
@@ -179,6 +182,8 @@ void pwm_put(struct pwm_device *pwm);
179 182
180struct pwm_device *devm_pwm_get(struct device *dev, const char *consumer); 183struct pwm_device *devm_pwm_get(struct device *dev, const char *consumer);
181void devm_pwm_put(struct device *dev, struct pwm_device *pwm); 184void devm_pwm_put(struct device *dev, struct pwm_device *pwm);
185
186bool pwm_can_sleep(struct pwm_device *pwm);
182#else 187#else
183static inline int pwm_set_chip_data(struct pwm_device *pwm, void *data) 188static inline int pwm_set_chip_data(struct pwm_device *pwm, void *data)
184{ 189{
@@ -226,6 +231,11 @@ static inline struct pwm_device *devm_pwm_get(struct device *dev,
226static inline void devm_pwm_put(struct device *dev, struct pwm_device *pwm) 231static inline void devm_pwm_put(struct device *dev, struct pwm_device *pwm)
227{ 232{
228} 233}
234
235static inline bool pwm_can_sleep(struct pwm_device *pwm)
236{
237 return false;
238}
229#endif 239#endif
230 240
231struct pwm_lookup { 241struct pwm_lookup {