svn commit: r365394 - stable/12/sys/arm/allwinner
Andriy Gapon
avg at FreeBSD.org
Mon Sep 7 06:22:31 UTC 2020
Author: avg
Date: Mon Sep 7 06:22:30 2020
New Revision: 365394
URL: https://svnweb.freebsd.org/changeset/base/365394
Log:
MFC r364149: aw_cir: in pulse encoding actual length is one greater than value
Modified:
stable/12/sys/arm/allwinner/aw_cir.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/arm/allwinner/aw_cir.c
==============================================================================
--- stable/12/sys/arm/allwinner/aw_cir.c Mon Sep 7 06:21:01 2020 (r365393)
+++ stable/12/sys/arm/allwinner/aw_cir.c Mon Sep 7 06:22:30 2020 (r365394)
@@ -202,9 +202,9 @@ aw_ir_read_data(struct aw_ir_softc *sc)
static unsigned long
aw_ir_decode_packets(struct aw_ir_softc *sc)
{
- unsigned long len, code;
- unsigned char val, last;
+ unsigned int len, code;
unsigned int active_delay;
+ unsigned char val, last;
int i, bitcount;
if (bootverbose)
@@ -215,11 +215,11 @@ aw_ir_decode_packets(struct aw_ir_softc *sc)
(AW_IR_ACTIVE_T_C_VAL != 0 ? 128 : 1);
len = active_delay;
if (bootverbose)
- device_printf(sc->dev, "Initial len: %ld\n", len);
+ device_printf(sc->dev, "Initial len: %d\n", len);
for (i = 0; i < sc->dcnt; i++) {
val = sc->buf[i];
if (val & VAL_MASK)
- len += val & PERIOD_MASK;
+ len += (val & PERIOD_MASK) + 1;
else {
if (len > AW_IR_L1_MIN)
break;
@@ -227,7 +227,7 @@ aw_ir_decode_packets(struct aw_ir_softc *sc)
}
}
if (bootverbose)
- device_printf(sc->dev, "len = %ld\n", len);
+ device_printf(sc->dev, "len = %d\n", len);
if ((val & VAL_MASK) || (len <= AW_IR_L1_MIN)) {
if (bootverbose)
device_printf(sc->dev, "Bit separator error\n");
@@ -243,7 +243,7 @@ aw_ir_decode_packets(struct aw_ir_softc *sc)
break;
len = 0;
} else
- len += val & PERIOD_MASK;
+ len += (val & PERIOD_MASK) + 1;
}
if ((!(val & VAL_MASK)) || (len <= AW_IR_L0_MIN)) {
if (bootverbose)
@@ -260,23 +260,25 @@ aw_ir_decode_packets(struct aw_ir_softc *sc)
val = sc->buf[i];
if (last) {
if (val & VAL_MASK)
- len += val & PERIOD_MASK;
+ len += (val & PERIOD_MASK) + 1;
else {
if (len > AW_IR_PMAX) {
if (bootverbose)
device_printf(sc->dev,
- "Pulse error\n");
+ "Pulse error, len=%d\n",
+ len);
goto error_code;
}
last = 0;
- len = val & PERIOD_MASK;
+ len = (val & PERIOD_MASK) + 1;
}
} else {
if (val & VAL_MASK) {
if (len > AW_IR_DMAX) {
if (bootverbose)
device_printf(sc->dev,
- "Distant error\n");
+ "Distance error, len=%d\n",
+ len);
goto error_code;
} else {
if (len > AW_IR_DMID) {
@@ -288,9 +290,9 @@ aw_ir_decode_packets(struct aw_ir_softc *sc)
break; /* Finish decoding */
}
last = 1;
- len = val & PERIOD_MASK;
+ len = (val & PERIOD_MASK) + 1;
} else
- len += val & PERIOD_MASK;
+ len += (val & PERIOD_MASK) + 1;
}
}
return (code);
More information about the svn-src-all
mailing list