Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46b018fa authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: walkera0701 - fix abs() calculations on 64 bit values



abs() function can not be used with 64 bit values, so let's switch to
abs64(). From include/linux/kernel.h:

/*
 * abs() handles unsigned and signed longs, ints, shorts and chars.
 * For all input types abs() returns a signed long.
 * abs() should not be used for 64-bit types (s64, u64, long long)
 * - use abs64() for those.
 */

Reported-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 86a39bff
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@ static void walkera0701_irq_handler(void *handler_data)
		if (w->counter == 24) {	/* full frame */
			walkera0701_parse_frame(w);
			w->counter = NO_SYNC;
			if (abs(pulse_time - SYNC_PULSE) < RESERVE)	/* new frame sync */
			if (abs64(pulse_time - SYNC_PULSE) < RESERVE)	/* new frame sync */
				w->counter = 0;
		} else {
			if ((pulse_time > (ANALOG_MIN_PULSE - RESERVE)
@@ -161,7 +161,7 @@ static void walkera0701_irq_handler(void *handler_data)
			} else
				w->counter = NO_SYNC;
		}
	} else if (abs(pulse_time - SYNC_PULSE - BIN0_PULSE) <
	} else if (abs64(pulse_time - SYNC_PULSE - BIN0_PULSE) <
				RESERVE + BIN1_PULSE - BIN0_PULSE)	/* frame sync .. */
		w->counter = 0;