int toggle;
        static int prev_toggle = -1;
        static u32 ir_key;
+       static int state = 0;
        u32 command = ttpci_budget_debiread(&budget_ci->budget, DEBINOSWAP, DEBIADDR_IR, 2, 1, 0) >> 8;
 
        /*
         * type1: X1CCCCCC, C = command bits (0 - 63)
         * type2: X0TDDDDD, D = device bits (0 - 31), T = RC5 toggle bit
         *
-        * More than one command byte may be generated before the device byte
-        * Only when we have both, a correct keypress is generated
+        * Each signal from the remote control can generate one or more command
+        * bytes and one or more device bytes. For the repeated bytes, the
+        * highest bit (X) is set. The first command byte is always generated
+        * before the first device byte. Other than that, no specific order
+        * seems to apply.
+        *
+        * Only when we have a command and device byte, a keypress is
+        * generated.
         */
 
+       if (ir_debug)
+               printk("budget_ci: received byte 0x%02x\n", command);
+
+       /* Is this a repeated byte? */
+       if (command & 0x80)
+               return;
+
        /* Is this a RC5 command byte? */
        if (command & 0x40) {
-               if (ir_debug)
-                       printk("budget_ci: received command byte 0x%02x\n", command);
+               state = 1;
                ir_key = command & 0x3f;
                return;
        }
 
        /* It's a RC5 device byte */
-       if (ir_debug)
-               printk("budget_ci: received device byte 0x%02x\n", command);
+       if (!state)
+               return;
+       state = 0;
        device = command & 0x1f;
        toggle = command & 0x20;