From: H Hartley Sweeten Date: Tue, 11 Sep 2012 17:48:10 +0000 (-0700) Subject: staging: comedi: comedi_fc: introduce cfc_check_trigger_is_unique X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=6c39eed00cb28d4997ddf3a7aa96a1aff48c8828;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git staging: comedi: comedi_fc: introduce cfc_check_trigger_is_unique "Step 2" of each do_cmdtest checks that the trigger sources are unique by doing something like this for each trigger: if (cmd->start_src != TRIG_TIMER && cmd->start_src != TRIG_FOLLOW && cmd->start_src != TRIG_EXT) err++; /* Test the remaining triggers similarly */ if (err) return 2; Introduce a helper function in comedi_fc to handle this boilerplate. The drivers can then just do: err |= cfc_check_trigger_is_unique(cmd->start_src); /* Test the remaining triggers similarly */ if (err) return 2; Signed-off-by: H Hartley Sweeten Cc: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/comedi_fc.h b/drivers/staging/comedi/drivers/comedi_fc.h index 1f0839171887..94481c637a0a 100644 --- a/drivers/staging/comedi/drivers/comedi_fc.h +++ b/drivers/staging/comedi/drivers/comedi_fc.h @@ -93,4 +93,16 @@ static inline int cfc_check_trigger_src(unsigned int *src, unsigned int flags) return 0; } +/** + * cfc_check_trigger_is_unique() - make sure a trigger source is unique + * @src: the trigger source to check + */ +static inline int cfc_check_trigger_is_unique(unsigned int src) +{ + /* this test is true if more than one _src bit is set */ + if ((src & (src - 1)) != 0) + return -EINVAL; + return 0; +} + #endif /* _COMEDI_FC_H */