Ignore:
Timestamp:
Apr 21, 2017, 4:28:29 AM (3 months ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.9/drivers/pwm/pwm-rockchip.c

    r31574 r31885  
    192192}
    193193
     194static int rockchip_pwm_enable(struct pwm_chip *chip,
     195                         struct pwm_device *pwm,
     196                         bool enable,
     197                         enum pwm_polarity polarity)
     198{
     199        struct rockchip_pwm_chip *pc = to_rockchip_pwm_chip(chip);
     200        int ret;
     201
     202        if (enable) {
     203                ret = clk_enable(pc->clk);
     204                if (ret)
     205                        return ret;
     206        }
     207
     208        pc->data->set_enable(chip, pwm, enable, polarity);
     209
     210        if (!enable)
     211                clk_disable(pc->clk);
     212
     213        return 0;
     214}
     215
    194216static int rockchip_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
    195217                              struct pwm_state *state)
     
    208230
    209231        if (state->polarity != curstate.polarity && enabled) {
    210                 pc->data->set_enable(chip, pwm, false, state->polarity);
     232                ret = rockchip_pwm_enable(chip, pwm, false, state->polarity);
     233                if (ret)
     234                        goto out;
    211235                enabled = false;
    212236        }
     
    215239        if (ret) {
    216240                if (enabled != curstate.enabled)
    217                         pc->data->set_enable(chip, pwm, !enabled,
    218                                              state->polarity);
    219 
     241                        rockchip_pwm_enable(chip, pwm, !enabled,
     242                                      state->polarity);
    220243                goto out;
    221244        }
    222245
    223         if (state->enabled != enabled)
    224                 pc->data->set_enable(chip, pwm, state->enabled,
    225                                      state->polarity);
     246        if (state->enabled != enabled) {
     247                ret = rockchip_pwm_enable(chip, pwm, state->enabled,
     248                                    state->polarity);
     249                if (ret)
     250                        goto out;
     251        }
    226252
    227253        /*
Note: See TracChangeset for help on using the changeset viewer.