|
@@ -146,6 +146,8 @@ struct pwm_ops {
|
|
|
* @base: number of first PWM controlled by this chip
|
|
|
* @npwm: number of PWMs controlled by this chip
|
|
|
* @pwms: array of PWM devices allocated by the framework
|
|
|
+ * @can_sleep: must be true if the .config(), .enable() or .disable()
|
|
|
+ * operations may sleep
|
|
|
*/
|
|
|
struct pwm_chip {
|
|
|
struct device *dev;
|
|
@@ -159,6 +161,7 @@ struct pwm_chip {
|
|
|
struct pwm_device * (*of_xlate)(struct pwm_chip *pc,
|
|
|
const struct of_phandle_args *args);
|
|
|
unsigned int of_pwm_n_cells;
|
|
|
+ bool can_sleep;
|
|
|
};
|
|
|
|
|
|
#if IS_ENABLED(CONFIG_PWM)
|
|
@@ -179,6 +182,8 @@ void pwm_put(struct pwm_device *pwm);
|
|
|
|
|
|
struct pwm_device *devm_pwm_get(struct device *dev, const char *consumer);
|
|
|
void devm_pwm_put(struct device *dev, struct pwm_device *pwm);
|
|
|
+
|
|
|
+bool pwm_can_sleep(struct pwm_device *pwm);
|
|
|
#else
|
|
|
static inline int pwm_set_chip_data(struct pwm_device *pwm, void *data)
|
|
|
{
|
|
@@ -226,6 +231,11 @@ static inline struct pwm_device *devm_pwm_get(struct device *dev,
|
|
|
static inline void devm_pwm_put(struct device *dev, struct pwm_device *pwm)
|
|
|
{
|
|
|
}
|
|
|
+
|
|
|
+static inline bool pwm_can_sleep(struct pwm_device *pwm)
|
|
|
+{
|
|
|
+ return false;
|
|
|
+}
|
|
|
#endif
|
|
|
|
|
|
struct pwm_lookup {
|