21 Sep, 2019

1 commit

  • It is surprising for a PWM consumer when the variable holding the
    requested state is modified by pwm_apply_state(). Consider for example a
    driver doing:

    #define PERIOD 5000000
    #define DUTY_LITTLE 10
    ...
    struct pwm_state state = {
    .period = PERIOD,
    .duty_cycle = DUTY_LITTLE,
    .polarity = PWM_POLARITY_NORMAL,
    .enabled = true,
    };

    pwm_apply_state(mypwm, &state);
    ...
    state.duty_cycle = PERIOD / 2;
    pwm_apply_state(mypwm, &state);

    For sure the second call to pwm_apply_state() should still have
    state.period = PERIOD and not something the hardware driver chose for a
    reason that doesn't necessarily apply to the second call.

    So declare the state argument as a pointer to a const type and adapt all
    drivers' .apply callbacks.

    Signed-off-by: Uwe Kleine-König
    Signed-off-by: Thierry Reding

    Uwe Kleine-König
     

09 May, 2019

1 commit

  • i.MX7ULP has TPM(Low Power Timer/Pulse Width Modulation Module) inside,
    it can support multiple PWM channels, all the channels share same
    counter and period setting, but each channel can configure its duty and
    polarity independently.

    There are several TPM modules in i.MX7ULP, the number of channels in TPM
    modules are different, it can be read from each TPM module's PARAM
    register.

    Signed-off-by: Anson Huang
    Reviewed-by: Uwe Kleine-König
    Signed-off-by: Thierry Reding

    Anson Huang