[PATCH 14/46] staging: comedi: me4000: simplify analog input range programming

Ian Abbott abbotti at mev.co.uk
Wed Aug 5 12:14:18 UTC 2015


On 04/08/15 18:57, H Hartley Sweeten wrote:
> The comedi_lrange table for the analog inputs is inverted compared
> to the values that need to be written to the ME4000_AI_CHANNEL_LIST_REG
> to select the range.
>
> Create a macro, ME4000_AI_LIST_RANGE(), to handle the inversion. Remove
> the old defines and simplify the code a bit.
>
> Signed-off-by: H Hartley Sweeten <hsweeten at visionengravers.com>
> ---
>   drivers/staging/comedi/drivers/me4000.c | 41 ++++++++-------------------------
>   1 file changed, 9 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/staging/comedi/drivers/me4000.c b/drivers/staging/comedi/drivers/me4000.c
> index c3653a35..db0a18f 100644
> --- a/drivers/staging/comedi/drivers/me4000.c
> +++ b/drivers/staging/comedi/drivers/me4000.c
> @@ -111,10 +111,7 @@ broken.
>   #define ME4000_AI_CTRL_BIT_EX_TRIG_BOTH		(1 << 31)
>   #define ME4000_AI_CHANNEL_LIST_REG		0x78
>   #define ME4000_AI_LIST_INPUT_DIFFERENTIAL	(1 << 5)
> -#define ME4000_AI_LIST_RANGE_BIPOLAR_10		(0 << 6)
> -#define ME4000_AI_LIST_RANGE_BIPOLAR_2_5	(1 << 6)
> -#define ME4000_AI_LIST_RANGE_UNIPOLAR_10	(2 << 6)
> -#define ME4000_AI_LIST_RANGE_UNIPOLAR_2_5	(3 << 6)
> +#define ME4000_AI_LIST_RANGE(x)			((3 - ((x) & 3)) << 6)

You could also use '((~(x) & 3) << 6)' but yours is probably more readable!

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti at mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-


More information about the devel mailing list