Commit d587cdb2 authored by Sean Young's avatar Sean Young Committed by Mauro Carvalho Chehab
Browse files

media: imon_raw: simplify loop



The code for pulse and space is the same so remove duplication.

Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 14494583
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -57,32 +57,18 @@ static void imon_ir_data(struct imon *imon)
		 * fls will tell us the highest bit set plus 1 (or 0 if no
		 * bits are set).
		 */
		rawir.pulse = !rawir.pulse;
		bit = fls64(data & (BIT_ULL(offset) - 1));
		if (bit < offset) {
			dev_dbg(imon->dev, "pulse: %d bits", offset - bit);
			rawir.pulse = true;
			dev_dbg(imon->dev, "%s: %d bits",
				rawir.pulse ? "pulse" : "space", offset - bit);
			rawir.duration = (offset - bit) * BIT_DURATION;
			ir_raw_event_store_with_filter(imon->rcdev, &rawir);

			if (bit == 0)
				break;

			offset = bit;
		}

		/*
		 * Find highest clear bit which is less than offset.
		 *
		 * Just invert the data and use same trick as above.
		 */
		bit = fls64(~data & (BIT_ULL(offset) - 1));
		dev_dbg(imon->dev, "space: %d bits", offset - bit);

		rawir.pulse = false;
		rawir.duration = (offset - bit) * BIT_DURATION;
		ir_raw_event_store_with_filter(imon->rcdev, &rawir);

		offset = bit;
		data = ~data;
	} while (offset > 0);

	if (packet_no == 0x0a && !imon->rcdev->idle) {