Commit 99076cd1 authored by Maíra Canal's avatar Maíra Canal Committed by Mauro Carvalho Chehab
Browse files

media: ir-rx51: Switch to atomic PWM API



Remove legacy PWM interface (pwm_config, pwm_enable, pwm_disable) and
replace it for the atomic PWM API.

Signed-off-by: default avatarMaíra Canal <maira.canal@usp.br>
Reviewed-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 8985696a
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
struct ir_rx51 {
	struct rc_dev *rcdev;
	struct pwm_device *pwm;
	struct pwm_state state;
	struct hrtimer timer;
	struct device	     *dev;
	wait_queue_head_t     wqueue;
@@ -32,22 +33,20 @@ struct ir_rx51 {

static inline void ir_rx51_on(struct ir_rx51 *ir_rx51)
{
	pwm_enable(ir_rx51->pwm);
	ir_rx51->state.enabled = true;
	pwm_apply_state(ir_rx51->pwm, &ir_rx51->state);
}

static inline void ir_rx51_off(struct ir_rx51 *ir_rx51)
{
	pwm_disable(ir_rx51->pwm);
	ir_rx51->state.enabled = false;
	pwm_apply_state(ir_rx51->pwm, &ir_rx51->state);
}

static int init_timing_params(struct ir_rx51 *ir_rx51)
{
	struct pwm_device *pwm = ir_rx51->pwm;
	int duty, period = DIV_ROUND_CLOSEST(NSEC_PER_SEC, ir_rx51->freq);

	duty = DIV_ROUND_CLOSEST(ir_rx51->duty_cycle * period, 100);

	pwm_config(pwm, duty, period);
	ir_rx51->state.period = DIV_ROUND_CLOSEST(NSEC_PER_SEC, ir_rx51->freq);
	pwm_set_relative_duty_cycle(&ir_rx51->state, ir_rx51->duty_cycle, 100);

	return 0;
}
@@ -242,6 +241,7 @@ static int ir_rx51_probe(struct platform_device *dev)

	/* Use default, in case userspace does not set the carrier */
	ir_rx51.freq = DIV_ROUND_CLOSEST_ULL(pwm_get_period(pwm), NSEC_PER_SEC);
	pwm_init_state(pwm, &ir_rx51.state);
	pwm_put(pwm);

	hrtimer_init(&ir_rx51.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);