[PATCH 1/9] ARM: AT91: Add platform data for the AT91 ADCs
Jonathan Cameron
jic23 at cam.ac.uk
Wed May 9 09:04:44 EDT 2012
On 5/9/2012 10:05 AM, Maxime Ripard wrote:
> The AT91 SoCs often embeds an ADC. This patch adds the needed
> platform data to specify the informations required by the driver
> to work properly.
>
> For now, we only need the reference voltage and which channels
> are available on the board.
One utterly trivial element inline.
> Signed-off-by: Maxime Ripard<maxime.ripard at free-electrons.com>
Acked-by: Jonathan Cameron <jic23 at kernel.org>
> ---
> include/linux/platform_data/at91_adc.h | 61 ++++++++++++++++++++++++++++++++
> 1 file changed, 61 insertions(+)
> create mode 100644 include/linux/platform_data/at91_adc.h
>
> diff --git a/include/linux/platform_data/at91_adc.h b/include/linux/platform_data/at91_adc.h
> new file mode 100644
> index 0000000..f9e2f00
> --- /dev/null
> +++ b/include/linux/platform_data/at91_adc.h
> @@ -0,0 +1,61 @@
> +/*
> + * Copyright (C) 2011 Free Electrons
> + *
> + * Licensed under the GPLv2 or later.
> + */
> +
> +#ifndef _AT91_ADC_H_
> +#define _AT91_ADC_H_
> +
> +/**
> + * struct at91_adc_reg_desc - Various informations relative to registers
> + * @channel_base: Base address for the channel data registers
> + * @drdy_mask: Mask of the DRDY field in the relevant registers
> + (Interruptions registers mostly)
> + * @status_register: Address of the Interrupt Status Register
> + * @trigger_register: Address of the Trigger setup register
> + */
> +struct at91_adc_reg_desc {
> + u8 channel_base;
> + u32 drdy_mask;
> + u8 status_register;
> + u8 trigger_register;
> +};
> +
> +/**
> + * struct at91_adc_trigger - description of triggers
> + * @name: name of the trigger advertised to the user
> + * @value: value to set in the ADC's mode register to enable
> + the trigger
> + * @is_external: is the trigger relies on an external pin ?
no space before the ? (nitpick of the day ;)
> + */
> +struct at91_adc_trigger {
> + const char *name;
> + u8 value;
> + bool is_external;
> +};
> +
> +/**
> + * struct at91_adc_data - platform data for ADC driver
> + * @channels_used: channels in use on the board as a bitmask
> + * @num_channels: global number of channels available on the board
> + * @registers: Registers definition on the board
> + * @startup_time: startup time of the ADC in microseconds
> + * @trigger_list: Triggers available in the ADC
> + * @trigger_number: Number of triggers available in the ADC
> + * @use_external_triggers: does the board has external triggers availables
> + * @vref: Reference voltage for the ADC in millivolts
> + */
> +struct at91_adc_data {
> + unsigned long channels_used;
> + u8 num_channels;
> + struct at91_adc_reg_desc *registers;
> + u8 startup_time;
> + struct at91_adc_trigger *trigger_list;
> + u8 trigger_number;
> + bool use_external_triggers;
> + u16 vref;
> +};
> +
> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
> +#endif
More information about the linux-arm-kernel
mailing list