]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/media/IR/ir-raw-event.c
V4L/DVB: IR: let all protocol decoders have a go at raw data
[mv-sheeva.git] / drivers / media / IR / ir-raw-event.c
index ea68a3f2effa1a973926e873f86e24ee48a7f4ab..d3bd3f98e0080979983b03414d0a122aa963f2a9 100644 (file)
@@ -31,8 +31,9 @@ static DEFINE_SPINLOCK(ir_raw_handler_lock);
  *
  * Calls ir_raw_handler::ops for all registered IR handlers. It prevents
  * new decode addition/removal while running, by locking ir_raw_handler_lock
- * mutex. If an error occurs, it stops the ops. Otherwise, it returns a sum
- * of the return codes.
+ * mutex. If an error occurs, we keep going, as in the decode case, each
+ * decoder must have a crack at decoding the data. We return a sum of the
+ * return codes, which will be either 0 or negative for current callers.
  */
 #define RUN_DECODER(ops, ...) ({                                           \
        struct ir_raw_handler           *_ir_raw_handler;                   \
@@ -41,8 +42,6 @@ static DEFINE_SPINLOCK(ir_raw_handler_lock);
        list_for_each_entry(_ir_raw_handler, &ir_raw_handler_list, list) {  \
                if (_ir_raw_handler->ops) {                                 \
                        _rc = _ir_raw_handler->ops(__VA_ARGS__);            \
-                       if (_rc < 0)                                        \
-                               break;                                      \
                        _sumrc += _rc;                                      \
                }                                                           \
        }                                                                   \