Subject: [PATCH 1/3] ARM: AT91: Add platform data for the ADCs

From: [email-masked] (Maxime Ripard)
Date: Fri, 04 Nov 2011 16:22:02 +0100

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