Merge tag 'v5.13' into next
[linux-2.6-microblaze.git] / drivers / pwm / core.c
index a8eff4b..c4d5c06 100644 (file)
@@ -37,23 +37,13 @@ static struct pwm_device *pwm_to_device(unsigned int pwm)
        return radix_tree_lookup(&pwm_tree, pwm);
 }
 
-static int alloc_pwms(int pwm, unsigned int count)
+static int alloc_pwms(unsigned int count)
 {
-       unsigned int from = 0;
        unsigned int start;
 
-       if (pwm >= MAX_PWMS)
-               return -EINVAL;
-
-       if (pwm >= 0)
-               from = pwm;
-
-       start = bitmap_find_next_zero_area(allocated_pwms, MAX_PWMS, from,
+       start = bitmap_find_next_zero_area(allocated_pwms, MAX_PWMS, 0,
                                           count, 0);
 
-       if (pwm >= 0 && start != pwm)
-               return -EEXIST;
-
        if (start + count > MAX_PWMS)
                return -ENOSPC;
 
@@ -260,18 +250,14 @@ static bool pwm_ops_check(const struct pwm_chip *chip)
 }
 
 /**
- * pwmchip_add_with_polarity() - register a new PWM chip
+ * pwmchip_add() - register a new PWM chip
  * @chip: the PWM chip to add
- * @polarity: initial polarity of PWM channels
  *
- * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
- * will be used. The initial polarity for all channels is specified by the
- * @polarity parameter.
+ * Register a new PWM chip.
  *
  * Returns: 0 on success or a negative error code on failure.
  */
-int pwmchip_add_with_polarity(struct pwm_chip *chip,
-                             enum pwm_polarity polarity)
+int pwmchip_add(struct pwm_chip *chip)
 {
        struct pwm_device *pwm;
        unsigned int i;
@@ -285,25 +271,24 @@ int pwmchip_add_with_polarity(struct pwm_chip *chip,
 
        mutex_lock(&pwm_lock);
 
-       ret = alloc_pwms(chip->base, chip->npwm);
+       ret = alloc_pwms(chip->npwm);
        if (ret < 0)
                goto out;
 
+       chip->base = ret;
+
        chip->pwms = kcalloc(chip->npwm, sizeof(*pwm), GFP_KERNEL);
        if (!chip->pwms) {
                ret = -ENOMEM;
                goto out;
        }
 
-       chip->base = ret;
-
        for (i = 0; i < chip->npwm; i++) {
                pwm = &chip->pwms[i];
 
                pwm->chip = chip;
                pwm->pwm = chip->base + i;
                pwm->hwpwm = i;
-               pwm->state.polarity = polarity;
 
                radix_tree_insert(&pwm_tree, pwm->pwm, pwm);
        }
@@ -326,21 +311,6 @@ out:
 
        return ret;
 }
-EXPORT_SYMBOL_GPL(pwmchip_add_with_polarity);
-
-/**
- * pwmchip_add() - register a new PWM chip
- * @chip: the PWM chip to add
- *
- * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
- * will be used. The initial polarity for all channels is normal.
- *
- * Returns: 0 on success or a negative error code on failure.
- */
-int pwmchip_add(struct pwm_chip *chip)
-{
-       return pwmchip_add_with_polarity(chip, PWM_POLARITY_NORMAL);
-}
 EXPORT_SYMBOL_GPL(pwmchip_add);
 
 /**
@@ -607,7 +577,7 @@ int pwm_apply_state(struct pwm_device *pwm, const struct pwm_state *state)
                 */
                if (state->polarity != pwm->state.polarity) {
                        if (!chip->ops->set_polarity)
-                               return -ENOTSUPP;
+                               return -EINVAL;
 
                        /*
                         * Changing the polarity of a running PWM is