diff --git a/patch/kernel/archive/meson-6.1/generic-Revert-pwm-meson-modify-and-simplify-calculation-in-.patch b/patch/kernel/archive/meson-6.1/generic-Revert-pwm-meson-modify-and-simplify-calculation-in-.patch new file mode 100644 index 000000000000..510ab8d73bbb --- /dev/null +++ b/patch/kernel/archive/meson-6.1/generic-Revert-pwm-meson-modify-and-simplify-calculation-in-.patch @@ -0,0 +1,35 @@ +Revert "pwm: meson: modify and simplify calculation in meson_pwm_get_state" + +This reverts commit 6b9352f3f8a1a35faf0efc1ad1807ee303467796. +--- + drivers/pwm/pwm-meson.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/drivers/pwm/pwm-meson.c b/drivers/pwm/pwm-meson.c +index 33107204a951..1d0b69d08cdd 100644 +--- a/drivers/pwm/pwm-meson.c ++++ b/drivers/pwm/pwm-meson.c +@@ -351,8 +351,18 @@ static int meson_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm, + channel->lo = FIELD_GET(PWM_LOW_MASK, value); + channel->hi = FIELD_GET(PWM_HIGH_MASK, value); + +- state->period = meson_pwm_cnt_to_ns(chip, pwm, channel->lo + channel->hi); +- state->duty_cycle = meson_pwm_cnt_to_ns(chip, pwm, channel->hi); ++ if (channel->lo == 0) { ++ state->period = meson_pwm_cnt_to_ns(chip, pwm, channel->hi); ++ state->duty_cycle = state->period; ++ } else if (channel->lo >= channel->hi) { ++ state->period = meson_pwm_cnt_to_ns(chip, pwm, ++ channel->lo + channel->hi); ++ state->duty_cycle = meson_pwm_cnt_to_ns(chip, pwm, ++ channel->hi); ++ } else { ++ state->period = 0; ++ state->duty_cycle = 0; ++ } + + state->polarity = PWM_POLARITY_NORMAL; + +-- +2.34.1 + diff --git a/patch/kernel/archive/meson-6.4/generic-Revert-pwm-meson-modify-and-simplify-calculation-in-.patch b/patch/kernel/archive/meson-6.4/generic-Revert-pwm-meson-modify-and-simplify-calculation-in-.patch new file mode 100644 index 000000000000..510ab8d73bbb --- /dev/null +++ b/patch/kernel/archive/meson-6.4/generic-Revert-pwm-meson-modify-and-simplify-calculation-in-.patch @@ -0,0 +1,35 @@ +Revert "pwm: meson: modify and simplify calculation in meson_pwm_get_state" + +This reverts commit 6b9352f3f8a1a35faf0efc1ad1807ee303467796. +--- + drivers/pwm/pwm-meson.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/drivers/pwm/pwm-meson.c b/drivers/pwm/pwm-meson.c +index 33107204a951..1d0b69d08cdd 100644 +--- a/drivers/pwm/pwm-meson.c ++++ b/drivers/pwm/pwm-meson.c +@@ -351,8 +351,18 @@ static int meson_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm, + channel->lo = FIELD_GET(PWM_LOW_MASK, value); + channel->hi = FIELD_GET(PWM_HIGH_MASK, value); + +- state->period = meson_pwm_cnt_to_ns(chip, pwm, channel->lo + channel->hi); +- state->duty_cycle = meson_pwm_cnt_to_ns(chip, pwm, channel->hi); ++ if (channel->lo == 0) { ++ state->period = meson_pwm_cnt_to_ns(chip, pwm, channel->hi); ++ state->duty_cycle = state->period; ++ } else if (channel->lo >= channel->hi) { ++ state->period = meson_pwm_cnt_to_ns(chip, pwm, ++ channel->lo + channel->hi); ++ state->duty_cycle = meson_pwm_cnt_to_ns(chip, pwm, ++ channel->hi); ++ } else { ++ state->period = 0; ++ state->duty_cycle = 0; ++ } + + state->polarity = PWM_POLARITY_NORMAL; + +-- +2.34.1 +