Revert "FROMLIST: pwm: Convert period and duty cycle to u64"

This reverts commit d2ee0ef1e0

Causes build errors on 5.8-rc1, hopefully a new version will be
submitted upstream, no need to keep this around at the moment.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I9d13a5b727ebc9dd4aaa591bb64d28adef8cb38c
This commit is contained in:
Greg Kroah-Hartman
2020-06-25 15:48:52 +02:00
parent 3be0477f5a
commit fd0cd97281
15 changed files with 34 additions and 33 deletions

View File

@@ -89,7 +89,7 @@ static int clk_pwm_probe(struct platform_device *pdev)
} }
if (of_property_read_u32(node, "clock-frequency", &clk_pwm->fixed_rate)) if (of_property_read_u32(node, "clock-frequency", &clk_pwm->fixed_rate))
clk_pwm->fixed_rate = div64_u64(NSEC_PER_SEC, pargs.period); clk_pwm->fixed_rate = NSEC_PER_SEC / pargs.period;
if (pargs.period != NSEC_PER_SEC / clk_pwm->fixed_rate && if (pargs.period != NSEC_PER_SEC / clk_pwm->fixed_rate &&
pargs.period != DIV_ROUND_UP(NSEC_PER_SEC, clk_pwm->fixed_rate)) { pargs.period != DIV_ROUND_UP(NSEC_PER_SEC, clk_pwm->fixed_rate)) {

View File

@@ -1929,10 +1929,11 @@ static int pwm_setup_backlight(struct intel_connector *connector,
return retval; return retval;
} }
level = DIV64_U64_ROUND_UP(pwm_get_duty_cycle(panel->backlight.pwm) * 100, panel->backlight.min = 0; /* 0% */
CRC_PMIC_PWM_PERIOD_NS); panel->backlight.max = 100; /* 100% */
panel->backlight.level = panel->backlight.level = DIV_ROUND_UP(
intel_panel_compute_brightness(connector, level); pwm_get_duty_cycle(panel->backlight.pwm) * 100,
CRC_PMIC_PWM_PERIOD_NS);
panel->backlight.enabled = panel->backlight.level != 0; panel->backlight.enabled = panel->backlight.level != 0;
drm_info(&dev_priv->drm, "Using %s PWM for LCD backlight control\n", drm_info(&dev_priv->drm, "Using %s PWM for LCD backlight control\n",

View File

@@ -447,7 +447,7 @@ static int pwm_fan_resume(struct device *dev)
return 0; return 0;
pwm_get_args(ctx->pwm, &pargs); pwm_get_args(ctx->pwm, &pargs);
duty = DIV_ROUND_UP_ULL(ctx->pwm_value * (pargs.period - 1), MAX_PWM); duty = DIV_ROUND_UP(ctx->pwm_value * (pargs.period - 1), MAX_PWM);
ret = pwm_config(ctx->pwm, duty, pargs.period); ret = pwm_config(ctx->pwm, duty, pargs.period);
if (ret) if (ret)
return ret; return ret;

View File

@@ -241,7 +241,7 @@ static int ir_rx51_probe(struct platform_device *dev)
} }
/* Use default, in case userspace does not set the carrier */ /* Use default, in case userspace does not set the carrier */
ir_rx51.freq = DIV_ROUND_CLOSEST_ULL(pwm_get_period(pwm), NSEC_PER_SEC); ir_rx51.freq = DIV_ROUND_CLOSEST(pwm_get_period(pwm), NSEC_PER_SEC);
pwm_put(pwm); pwm_put(pwm);
hrtimer_init(&ir_rx51.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); hrtimer_init(&ir_rx51.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);

View File

@@ -1285,8 +1285,8 @@ static void pwm_dbg_show(struct pwm_chip *chip, struct seq_file *s)
if (state.enabled) if (state.enabled)
seq_puts(s, " enabled"); seq_puts(s, " enabled");
seq_printf(s, " period: %llu ns", state.period); seq_printf(s, " period: %u ns", state.period);
seq_printf(s, " duty: %llu ns", state.duty_cycle); seq_printf(s, " duty: %u ns", state.duty_cycle);
seq_printf(s, " polarity: %s", seq_printf(s, " polarity: %s",
state.polarity ? "inverse" : "normal"); state.polarity ? "inverse" : "normal");

View File

@@ -43,7 +43,7 @@ static void clps711x_pwm_update_val(struct clps711x_chip *priv, u32 n, u32 v)
static unsigned int clps711x_get_duty(struct pwm_device *pwm, unsigned int v) static unsigned int clps711x_get_duty(struct pwm_device *pwm, unsigned int v)
{ {
/* Duty cycle 0..15 max */ /* Duty cycle 0..15 max */
return DIV64_U64_ROUND_CLOSEST(v * 0xf, pwm->args.period); return DIV_ROUND_CLOSEST(v * 0xf, pwm->args.period);
} }
static int clps711x_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm) static int clps711x_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)

View File

@@ -124,7 +124,7 @@ static int pwm_imx_tpm_round_state(struct pwm_chip *chip,
real_state->duty_cycle = state->duty_cycle; real_state->duty_cycle = state->duty_cycle;
tmp = (u64)p->mod * real_state->duty_cycle; tmp = (u64)p->mod * real_state->duty_cycle;
p->val = DIV64_U64_ROUND_CLOSEST(tmp, real_state->period); p->val = DIV_ROUND_CLOSEST_ULL(tmp, real_state->period);
real_state->polarity = state->polarity; real_state->polarity = state->polarity;
real_state->enabled = state->enabled; real_state->enabled = state->enabled;

View File

@@ -202,7 +202,7 @@ static void pwm_imx27_wait_fifo_slot(struct pwm_chip *chip,
sr = readl(imx->mmio_base + MX3_PWMSR); sr = readl(imx->mmio_base + MX3_PWMSR);
fifoav = FIELD_GET(MX3_PWMSR_FIFOAV, sr); fifoav = FIELD_GET(MX3_PWMSR_FIFOAV, sr);
if (fifoav == MX3_PWMSR_FIFOAV_4WORDS) { if (fifoav == MX3_PWMSR_FIFOAV_4WORDS) {
period_ms = DIV_ROUND_UP_ULL(pwm_get_period(pwm), period_ms = DIV_ROUND_UP(pwm_get_period(pwm),
NSEC_PER_MSEC); NSEC_PER_MSEC);
msleep(period_ms); msleep(period_ms);
@@ -235,7 +235,8 @@ static int pwm_imx27_apply(struct pwm_chip *chip, struct pwm_device *pwm,
period_cycles /= prescale; period_cycles /= prescale;
c = clkrate * state->duty_cycle; c = clkrate * state->duty_cycle;
duty_cycles = div64_u64(c, NSEC_PER_SEC * prescale); do_div(c, NSEC_PER_SEC * prescale);
duty_cycles = c;
/* /*
* according to imx pwm RM, the real period value should be PERIOD * according to imx pwm RM, the real period value should be PERIOD

View File

@@ -181,7 +181,7 @@ static int pwm_sifive_apply(struct pwm_chip *chip, struct pwm_device *pwm,
* consecutively * consecutively
*/ */
num = (u64)duty_cycle * (1U << PWM_SIFIVE_CMPWIDTH); num = (u64)duty_cycle * (1U << PWM_SIFIVE_CMPWIDTH);
frac = DIV64_U64_ROUND_CLOSEST(num, state->period); frac = DIV_ROUND_CLOSEST_ULL(num, state->period);
/* The hardware cannot generate a 100% duty cycle */ /* The hardware cannot generate a 100% duty cycle */
frac = min(frac, (1U << PWM_SIFIVE_CMPWIDTH) - 1); frac = min(frac, (1U << PWM_SIFIVE_CMPWIDTH) - 1);

View File

@@ -371,10 +371,10 @@ static int sti_pwm_capture(struct pwm_chip *chip, struct pwm_device *pwm,
effective_ticks = clk_get_rate(pc->cpt_clk); effective_ticks = clk_get_rate(pc->cpt_clk);
result->period = (high + low) * NSEC_PER_SEC; result->period = (high + low) * NSEC_PER_SEC;
do_div(result->period, effective_ticks); result->period /= effective_ticks;
result->duty_cycle = high * NSEC_PER_SEC; result->duty_cycle = high * NSEC_PER_SEC;
do_div(result->duty_cycle, effective_ticks); result->duty_cycle /= effective_ticks;
break; break;

View File

@@ -61,7 +61,7 @@ static int stm32_pwm_lp_apply(struct pwm_chip *chip, struct pwm_device *pwm,
do_div(div, NSEC_PER_SEC); do_div(div, NSEC_PER_SEC);
if (!div) { if (!div) {
/* Clock is too slow to achieve requested period. */ /* Clock is too slow to achieve requested period. */
dev_dbg(priv->chip.dev, "Can't reach %llu ns\n", state->period); dev_dbg(priv->chip.dev, "Can't reach %u ns\n", state->period);
return -EINVAL; return -EINVAL;
} }

View File

@@ -285,7 +285,7 @@ static int sun4i_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
val = (duty & PWM_DTY_MASK) | PWM_PRD(period); val = (duty & PWM_DTY_MASK) | PWM_PRD(period);
sun4i_pwm_writel(sun4i_pwm, val, PWM_CH_PRD(pwm->hwpwm)); sun4i_pwm_writel(sun4i_pwm, val, PWM_CH_PRD(pwm->hwpwm));
sun4i_pwm->next_period[pwm->hwpwm] = jiffies + sun4i_pwm->next_period[pwm->hwpwm] = jiffies +
usecs_to_jiffies(div_u64(cstate.period, 1000) + 1); usecs_to_jiffies(cstate.period / 1000 + 1);
if (state->polarity != PWM_POLARITY_NORMAL) if (state->polarity != PWM_POLARITY_NORMAL)
ctrl &= ~BIT_CH(PWM_ACT_STATE, pwm->hwpwm); ctrl &= ~BIT_CH(PWM_ACT_STATE, pwm->hwpwm);

View File

@@ -42,7 +42,7 @@ static ssize_t period_show(struct device *child,
pwm_get_state(pwm, &state); pwm_get_state(pwm, &state);
return sprintf(buf, "%llu\n", state.period); return sprintf(buf, "%u\n", state.period);
} }
static ssize_t period_store(struct device *child, static ssize_t period_store(struct device *child,
@@ -52,10 +52,10 @@ static ssize_t period_store(struct device *child,
struct pwm_export *export = child_to_pwm_export(child); struct pwm_export *export = child_to_pwm_export(child);
struct pwm_device *pwm = export->pwm; struct pwm_device *pwm = export->pwm;
struct pwm_state state; struct pwm_state state;
u64 val; unsigned int val;
int ret; int ret;
ret = kstrtou64(buf, 0, &val); ret = kstrtouint(buf, 0, &val);
if (ret) if (ret)
return ret; return ret;
@@ -77,7 +77,7 @@ static ssize_t duty_cycle_show(struct device *child,
pwm_get_state(pwm, &state); pwm_get_state(pwm, &state);
return sprintf(buf, "%llu\n", state.duty_cycle); return sprintf(buf, "%u\n", state.duty_cycle);
} }
static ssize_t duty_cycle_store(struct device *child, static ssize_t duty_cycle_store(struct device *child,
@@ -212,7 +212,7 @@ static ssize_t capture_show(struct device *child,
if (ret) if (ret)
return ret; return ret;
return sprintf(buf, "%llu %llu\n", result.period, result.duty_cycle); return sprintf(buf, "%u %u\n", result.period, result.duty_cycle);
} }
static ssize_t output_type_show(struct device *child, static ssize_t output_type_show(struct device *child,

View File

@@ -606,8 +606,7 @@ static int pwm_backlight_probe(struct platform_device *pdev)
pb->scale = data->max_brightness; pb->scale = data->max_brightness;
} }
pb->lth_brightness = data->lth_brightness * (div_u64(state.period, pb->lth_brightness = data->lth_brightness * (state.period / pb->scale);
pb->scale));
props.type = BACKLIGHT_RAW; props.type = BACKLIGHT_RAW;
props.max_brightness = data->max_brightness; props.max_brightness = data->max_brightness;

View File

@@ -39,7 +39,7 @@ enum pwm_polarity {
* current PWM hardware state. * current PWM hardware state.
*/ */
struct pwm_args { struct pwm_args {
u64 period; unsigned int period;
enum pwm_polarity polarity; enum pwm_polarity polarity;
}; };
@@ -67,8 +67,8 @@ enum pwm_output_type {
* @enabled: PWM enabled status * @enabled: PWM enabled status
*/ */
struct pwm_state { struct pwm_state {
u64 period; unsigned int period;
u64 duty_cycle; unsigned int duty_cycle;
enum pwm_polarity polarity; enum pwm_polarity polarity;
enum pwm_output_type output_type; enum pwm_output_type output_type;
bool enabled; bool enabled;
@@ -119,13 +119,13 @@ static inline bool pwm_is_enabled(const struct pwm_device *pwm)
return state.enabled; return state.enabled;
} }
static inline void pwm_set_period(struct pwm_device *pwm, u64 period) static inline void pwm_set_period(struct pwm_device *pwm, unsigned int period)
{ {
if (pwm) if (pwm)
pwm->state.period = period; pwm->state.period = period;
} }
static inline u64 pwm_get_period(const struct pwm_device *pwm) static inline unsigned int pwm_get_period(const struct pwm_device *pwm)
{ {
struct pwm_state state; struct pwm_state state;
@@ -140,7 +140,7 @@ static inline void pwm_set_duty_cycle(struct pwm_device *pwm, unsigned int duty)
pwm->state.duty_cycle = duty; pwm->state.duty_cycle = duty;
} }
static inline u64 pwm_get_duty_cycle(const struct pwm_device *pwm) static inline unsigned int pwm_get_duty_cycle(const struct pwm_device *pwm)
{ {
struct pwm_state state; struct pwm_state state;
@@ -332,8 +332,8 @@ struct pwm_chip {
* @duty_cycle: duty cycle of the PWM signal (in nanoseconds) * @duty_cycle: duty cycle of the PWM signal (in nanoseconds)
*/ */
struct pwm_capture { struct pwm_capture {
u64 period; unsigned int period;
u64 duty_cycle; unsigned int duty_cycle;
}; };
#if IS_ENABLED(CONFIG_PWM) #if IS_ENABLED(CONFIG_PWM)