Hi Jonathan, On 04/11/2011 11:34, Jonathan Cameron wrote: > On 11/03/2011 10:11 AM, Maxime Ripard wrote: >> +/* ADC */ >> +#define AT91_ADC_MAX_CHANNELS 16 >> + >> +struct at91_adc_data { >> + /* ADC Clock as specified by the datasheet, in Hz. */ >> + unsigned int adc_clock; >> + /* >> + * Global number of channels available (to specify which channels are >> + * indeed used on the board, see the channels_used array). >> + */ >> + u8 num_channels; >> + /* Channels in use on the board */ > put it in a unsigned long and use the bitmap functions. >> + u8 channels_used[AT91_ADC_MAX_CHANNELS]; >> + /* Number of channels in use */ > just use bitmap_weight with the long above and > length set to num_channels. >> + u8 num_channels_used; I didn't know bitmap functions before you mentioned it, but if I read it correctly, while I agree with your point, I will lose the ability to define a combination of enabled and disabled channel in a board specific manner. In the third patch, I defined channels_used as an array of one. But let's say that instead I want all channels except the second one. With what's in the driver for now, I initialise it to {1, 0, 1, 1}. I don't think it's possible to do so with bitmap functions, or am I missing something ? Or put the calls to bitmap_set in the board_init function ? -- Maxime Ripard, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html