* [PATCH v11] AT91: Add a driver for the ADC
@ 2011-11-30 9:14 Maxime Ripard
2011-11-30 9:15 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
` (2 more replies)
0 siblings, 3 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-11-30 9:14 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
As suggested by Arnd, I moved the platform data from the board.h additions in
the first patch to a new include/linux/platform_data/at91_adc.h file for this
version.
Maxime
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-30 9:14 [PATCH v11] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-30 9:15 ` Maxime Ripard
2011-11-30 9:45 ` Nicolas Ferre
2011-11-30 9:15 ` [PATCH 2/3] ARM: AT91: IIO: Add AT91 ADC driver Maxime Ripard
2011-11-30 9:15 ` [PATCH 3/3] ARM: AT91: Add the ADC to the sam9g20ek board Maxime Ripard
2 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-30 9:15 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
include/linux/platform_data/at91_adc.h | 36 ++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
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..1e1813d
--- /dev/null
+++ b/include/linux/platform_data/at91_adc.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2011 Free Electrons
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef _AT91_ADC_H_
+#define _AT91_ADC_H_
+
+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 bitmask).
+ */
+ u8 num_channels;
+ /* Channels in use on the board as a bitmask */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
+#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-30 9:15 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
@ 2011-11-30 9:45 ` Nicolas Ferre
0 siblings, 0 replies; 33+ messages in thread
From: Nicolas Ferre @ 2011-11-30 9:45 UTC (permalink / raw)
To: linux-arm-kernel
Hi Maxime,
On 11/30/2011 10:15 AM, Maxime Ripard :
> Cc: Patrice Vilchez<patrice.vilchez@atmel.com>
> Cc: Thomas Petazzoni<thomas.petazzoni@free-electrons.com>
"CC:" lines should not be located here: place them just *after*
"Signed-off-by:" and "Acked-by:" lines.
> Signed-off-by: Maxime Ripard<maxime.ripard@free-electrons.com>
> Acked-by: Jonathan Cameron<jic23@cam.ac.uk>
> Signed-off-by: Nicolas Ferre<nicolas.ferre@atmel.com>
> Acked-by: Jean-Christophe PLAGNIOL-VILLARD<plagnioj@jcrosoft.com>
> ---
> include/linux/platform_data/at91_adc.h | 36 ++++++++++++++++++++++++++++++++
> 1 files changed, 36 insertions(+), 0 deletions(-)
> 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..1e1813d
> --- /dev/null
> +++ b/include/linux/platform_data/at91_adc.h
> @@ -0,0 +1,36 @@
> +/*
> + * Copyright (C) 2011 Free Electrons
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
Can be shorten in:
"Licensed under GPLv2."
"Licensed under the GPL v2."
"License terms: GNU General Public License (GPL) version 2."
> + *
> + */
> +
> +#ifndef _AT91_ADC_H_
> +#define _AT91_ADC_H_
> +
> +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 bitmask).
> + */
> + u8 num_channels;
> + /* Channels in use on the board as a bitmask */
> + unsigned long channels_used;
> + /* Startup time of the ADC, in microseconds. */
> + u8 startup_time;
> + /* Reference voltage for the ADC in millivolts */
> + unsigned short vref;
> +};
> +
> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
> +
> +#endif
I think that now it is located at this generic directory, it can easily
go mainline through IIO subsystem (patches 1 and 2/3): Jonathan, do you
agree with this?
Best regards,
--
Nicolas Ferre
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 2/3] ARM: AT91: IIO: Add AT91 ADC driver.
2011-11-30 9:14 [PATCH v11] AT91: Add a driver for the ADC Maxime Ripard
2011-11-30 9:15 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
@ 2011-11-30 9:15 ` Maxime Ripard
2011-11-30 17:40 ` Arnd Bergmann
2011-11-30 9:15 ` [PATCH 3/3] ARM: AT91: Add the ADC to the sam9g20ek board Maxime Ripard
2 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-30 9:15 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Reviewed-by: Marek Vasut <marek.vasut@gmail.com>
---
drivers/iio/adc/Kconfig | 6 +
drivers/iio/adc/Makefile | 4 +-
drivers/iio/adc/at91_adc.c | 333 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 342 insertions(+), 1 deletions(-)
create mode 100644 drivers/iio/adc/at91_adc.c
diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index 3d97b21..02ed274 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -14,6 +14,12 @@ config IIO_AD799X
i2c analog to digital convertors (ADC). Provides direct access
via sysfs.
+config IIO_AT91_ADC
+ tristate "Atmel AT91 ADC"
+ depends on SYSFS && ARCH_AT91
+ help
+ Say yes here to build support for Atmel AT91 ADC.
+
config IIO_MAX1363
tristate "Maxim max1363 ADC driver"
depends on I2C
diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile
index c197334..50ceaab7 100644
--- a/drivers/iio/adc/Makefile
+++ b/drivers/iio/adc/Makefile
@@ -6,4 +6,6 @@ iio_ad799x-y := ad799x_core.o
obj-$(CONFIG_IIO_AD799X) += iio_ad799x.o
iio_max1363-y := max1363_core.o
-obj-$(CONFIG_IIO_MAX1363) += iio_max1363.o
\ No newline at end of file
+obj-$(CONFIG_IIO_MAX1363) += iio_max1363.o
+
+obj-$(CONFIG_IIO_AT91_ADC) += at91_adc.o
diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
new file mode 100644
index 0000000..d4cbc06
--- /dev/null
+++ b/drivers/iio/adc/at91_adc.c
@@ -0,0 +1,333 @@
+/*
+ * Driver for the ADC present in the Atmel AT91 evaluation boards.
+ *
+ * Copyright 2011 Free Electrons
+ *
+ * Licensed under the GPLv2 or later.
+ */
+
+#include <linux/bitmap.h>
+#include <linux/bitops.h>
+#include <linux/clk.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/interrupt.h>
+#include <linux/jiffies.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/wait.h>
+
+#include <linux/iio/iio.h>
+#include <linux/platform_data/at91_adc.h>
+
+#include <mach/board.h>
+#include <mach/at91_adc.h>
+
+struct at91_adc_state {
+ struct clk *clk;
+ bool done;
+ struct mutex lock;
+ int irq;
+ wait_queue_head_t wq_data_avail;
+ u16 last_value;
+ void __iomem *reg_base;
+ unsigned int vref_mv;
+ unsigned long channels_mask;
+};
+
+static inline u32 at91_adc_reg_read(struct at91_adc_state *st,
+ u8 reg)
+{
+ return readl_relaxed(st->reg_base + reg);
+}
+
+static inline void at91_adc_reg_write(struct at91_adc_state *st,
+ u8 reg,
+ u32 val)
+{
+ writel_relaxed(val, st->reg_base + reg);
+}
+
+static irqreturn_t at91_adc_eoc_trigger(int irq, void *private)
+{
+ struct iio_dev *idev = private;
+ struct at91_adc_state *st = iio_priv(idev);
+ unsigned int status = at91_adc_reg_read(st, AT91_ADC_SR);
+
+ if (!(status & AT91_ADC_DRDY))
+ return IRQ_HANDLED;
+
+ if (status & st->channels_mask) {
+ st->done = true;
+ st->last_value = at91_adc_reg_read(st, AT91_ADC_LCDR);
+ }
+
+ wake_up_interruptible(&st->wq_data_avail);
+
+ return IRQ_HANDLED;
+}
+
+static int at91_adc_channel_init(struct iio_dev *idev,
+ struct at91_adc_data *pdata)
+{
+ struct iio_chan_spec *chan_array;
+ int bit, idx = 0;
+
+ idev->num_channels = bitmap_weight(&pdata->channels_used,
+ pdata->num_channels);
+ chan_array = kcalloc(idev->num_channels, sizeof(struct iio_chan_spec),
+ GFP_KERNEL);
+
+ if (chan_array == NULL)
+ return -ENOMEM;
+
+ for_each_set_bit(bit, &pdata->channels_used, pdata->num_channels) {
+ struct iio_chan_spec *chan = chan_array + idx;
+ chan->type = IIO_VOLTAGE;
+ chan->indexed = 1;
+ chan->channel = bit;
+ chan->scan_type.sign = 'u';
+ chan->scan_type.realbits = 10;
+ chan->info_mask = IIO_CHAN_INFO_SCALE_SHARED_BIT;
+ idx++;
+ }
+
+ idev->channels = chan_array;
+ return idev->num_channels;
+}
+
+static void at91_adc_channel_remove(struct iio_dev *idev)
+{
+ kfree(idev->channels);
+}
+
+static int at91_adc_read_raw(struct iio_dev *idev,
+ struct iio_chan_spec const *chan,
+ int *val, int *val2, long mask)
+{
+ struct at91_adc_state *st = iio_priv(idev);
+ int ret;
+
+ switch (mask) {
+ case 0:
+ mutex_lock(&st->lock);
+
+ at91_adc_reg_write(st, AT91_ADC_CHER,
+ AT91_ADC_CH(chan->channel));
+ at91_adc_reg_write(st, AT91_ADC_IER,
+ AT91_ADC_EOC(chan->channel));
+ at91_adc_reg_write(st, AT91_ADC_CR, AT91_ADC_START);
+
+ ret = wait_event_interruptible_timeout(st->wq_data_avail,
+ st->done,
+ msecs_to_jiffies(1000));
+ if (ret == 0)
+ return -ETIMEDOUT;
+ else if (ret < 0)
+ return ret;
+
+ *val = st->last_value;
+
+ at91_adc_reg_write(st, AT91_ADC_CHDR,
+ AT91_ADC_CH(chan->channel));
+ at91_adc_reg_write(st, AT91_ADC_IDR,
+ AT91_ADC_EOC(chan->channel));
+
+ st->last_value = 0;
+ st->done = false;
+ mutex_unlock(&st->lock);
+ return IIO_VAL_INT;
+
+ case IIO_CHAN_INFO_SCALE:
+ *val = (st->vref_mv * 1000) >> chan->scan_type.realbits;
+ *val2 = 0;
+ return IIO_VAL_INT_PLUS_MICRO;
+ default:
+ break;
+ }
+ return -EINVAL;
+}
+
+static const struct iio_info at91_adc_info = {
+ .driver_module = THIS_MODULE,
+ .read_raw = &at91_adc_read_raw,
+};
+
+static int __devinit at91_adc_probe(struct platform_device *pdev)
+{
+ unsigned int prsc, mstrclk, ticks;
+ int ret;
+ struct iio_dev *idev;
+ struct at91_adc_state *st;
+ struct resource *res;
+ struct at91_adc_data *pdata = pdev->dev.platform_data;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res) {
+ dev_err(&pdev->dev, "No resource defined\n");
+ ret = -ENXIO;
+ goto error_ret;
+ }
+
+ idev = iio_device_allocate(sizeof(struct at91_adc_state));
+ if (idev == NULL) {
+ ret = -ENOMEM;
+ goto error_ret;
+ }
+
+ platform_set_drvdata(pdev, idev);
+
+ idev->dev.parent = &pdev->dev;
+ idev->name = dev_name(&pdev->dev);
+ idev->info = &at91_adc_info;
+
+ st = iio_priv(idev);
+ st->irq = platform_get_irq(pdev, 0);
+ if (st->irq < 0) {
+ dev_err(&pdev->dev, "No IRQ ID is designated\n");
+ ret = -ENODEV;
+ goto error_free_device;
+ }
+
+ if (!request_mem_region(res->start, resource_size(res),
+ "AT91 adc registers")) {
+ dev_err(&pdev->dev, "Resources are unavailable.\n");
+ ret = -EBUSY;
+ goto error_free_device;
+ }
+
+ st->reg_base = ioremap(res->start, resource_size(res));
+ if (!st->reg_base) {
+ dev_err(&pdev->dev, "Failed to map registers.\n");
+ ret = -ENOMEM;
+ goto error_release_mem;
+ }
+
+ /*
+ * Disable all IRQs before setting up the handler
+ */
+ at91_adc_reg_write(st, AT91_ADC_CR, AT91_ADC_SWRST);
+ at91_adc_reg_write(st, AT91_ADC_IDR, 0xFFFFFFFF);
+ ret = request_irq(st->irq,
+ at91_adc_eoc_trigger,
+ 0,
+ pdev->dev.driver->name,
+ idev);
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to allocate IRQ.\n");
+ goto error_unmap_reg;
+ }
+
+ st->clk = clk_get(&pdev->dev, "adc_clk");
+ if (IS_ERR(st->clk)) {
+ dev_err(&pdev->dev, "Failed to get the clock.\n");
+ ret = PTR_ERR(st->clk);
+ goto error_free_irq;
+ }
+
+ clk_enable(st->clk);
+ mstrclk = clk_get_rate(st->clk);
+
+ if (!pdata) {
+ dev_err(&pdev->dev, "No platform data available.\n");
+ ret = -EINVAL;
+ goto error_free_clk;
+ }
+
+ if (!pdata->adc_clock) {
+ dev_err(&pdev->dev, "No ADCClock available.\n");
+ ret = -EINVAL;
+ goto error_free_clk;
+ }
+
+ /*
+ * Prescaler rate computation using the formula from the Atmel's
+ * datasheet : ADC Clock = MCK / ((Prescaler + 1) * 2), ADC Clock being
+ * specified by the electrical characteristics of the board.
+ */
+ prsc = (mstrclk / (2 * pdata->adc_clock)) - 1;
+
+ if (!pdata->startup_time) {
+ dev_err(&pdev->dev, "No startup time available.\n");
+ ret = -EINVAL;
+ goto error_free_clk;
+ }
+
+ /*
+ * Number of ticks needed to cover the startup time of the ADC as
+ * defined in the electrical characteristics of the board, divided by 8.
+ * The formula thus is : Startup Time = (ticks + 1) * 8 / ADC Clock
+ */
+ ticks = round_up((pdata->startup_time * pdata->adc_clock /
+ 1000000) - 1, 8) / 8;
+ at91_adc_reg_write(st, AT91_ADC_MR,
+ (AT91_ADC_PRESCAL_(prsc) & AT91_ADC_PRESCAL) |
+ (AT91_ADC_STARTUP_(ticks) & AT91_ADC_STARTUP));
+
+ /* Setup the ADC channels available on the board */
+ ret = at91_adc_channel_init(idev, pdata);
+ if (ret < 0)
+ goto error_free_clk;
+
+ init_waitqueue_head(&st->wq_data_avail);
+ mutex_init(&st->lock);
+
+ st->vref_mv = pdata->vref;
+ st->channels_mask = pdata->channels_used;
+
+ ret = iio_device_register(idev);
+ if (ret < 0)
+ goto error_free_channels;
+
+ return 0;
+
+error_free_channels:
+ at91_adc_channel_remove(idev);
+error_free_clk:
+ clk_disable(st->clk);
+ clk_put(st->clk);
+error_free_irq:
+ free_irq(st->irq, idev);
+error_unmap_reg:
+ iounmap(st->reg_base);
+error_release_mem:
+ release_mem_region(res->start, resource_size(res));
+error_free_device:
+ iio_device_free(idev);
+error_ret:
+ return ret;
+}
+
+static int __devexit at91_adc_remove(struct platform_device *pdev)
+{
+ struct iio_dev *idev = platform_get_drvdata(pdev);
+ struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ struct at91_adc_state *st = iio_priv(idev);
+
+ iio_device_unregister(idev);
+ at91_adc_channel_remove(idev);
+ clk_disable(st->clk);
+ clk_put(st->clk);
+ free_irq(st->irq, idev);
+ iounmap(st->reg_base);
+ release_mem_region(res->start, resource_size(res));
+ iio_device_free(idev);
+
+ return 0;
+}
+
+static struct platform_driver at91_adc_driver = {
+ .probe = at91_adc_probe,
+ .remove = __devexit_p(at91_adc_remove),
+ .driver = {
+ .name = "at91_adc",
+ },
+};
+
+module_platform_driver(at91_adc_driver);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Atmel AT91 ADC Driver");
+MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com>");
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 3/3] ARM: AT91: Add the ADC to the sam9g20ek board
2011-11-30 9:14 [PATCH v11] AT91: Add a driver for the ADC Maxime Ripard
2011-11-30 9:15 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-30 9:15 ` [PATCH 2/3] ARM: AT91: IIO: Add AT91 ADC driver Maxime Ripard
@ 2011-11-30 9:15 ` Maxime Ripard
2 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-11-30 9:15 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
arch/arm/mach-at91/at91sam9260_devices.c | 62 ++++++++++++++++++++++++++++++
arch/arm/mach-at91/board-sam9g20ek.c | 13 ++++++
2 files changed, 75 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
index 39f81f4..012992b 100644
--- a/arch/arm/mach-at91/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/at91sam9260_devices.c
@@ -16,6 +16,8 @@
#include <linux/platform_device.h>
#include <linux/i2c-gpio.h>
+#include <linux/platform_data/at91_adc.h>
+
#include <mach/board.h>
#include <mach/gpio.h>
#include <mach/cpu.h>
@@ -1312,6 +1314,66 @@ void __init at91_add_device_cf(struct at91_cf_data *data)
void __init at91_add_device_cf(struct at91_cf_data * data) {}
#endif
+/* --------------------------------------------------------------------
+ * ADCs
+ * -------------------------------------------------------------------- */
+
+#if defined(CONFIG_IIO_AT91_ADC) || defined(CONFIG_IIO_AT91_ADC_MODULE)
+static struct at91_adc_data adc_data;
+
+static struct resource adc_resources[] = {
+ [0] = {
+ .start = AT91SAM9260_BASE_ADC,
+ .end = AT91SAM9260_BASE_ADC + SZ_16K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = AT91SAM9260_ID_ADC,
+ .end = AT91SAM9260_ID_ADC,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device at91_adc_device = {
+ .name = "at91_adc",
+ .id = -1,
+ .dev = {
+ .platform_data = &adc_data,
+ },
+ .resource = adc_resources,
+ .num_resources = ARRAY_SIZE(adc_resources),
+};
+
+void __init at91_add_device_adc(struct at91_adc_data *data)
+{
+ if (!data)
+ return;
+
+ if (test_bit(0, &data->channels_used))
+ at91_set_A_periph(AT91_PIN_PC0, 0);
+ if (test_bit(1, &data->channels_used))
+ at91_set_A_periph(AT91_PIN_PC1, 0);
+ if (test_bit(2, &data->channels_used))
+ at91_set_A_periph(AT91_PIN_PC2, 0);
+ if (test_bit(3, &data->channels_used))
+ at91_set_A_periph(AT91_PIN_PC3, 0);
+
+ /*
+ * The electrical characteristics part of the AT91SAM9G20 datasheet
+ * sets the ADC clock to 5MHz.
+ */
+ data->adc_clock = 5000000;
+
+ data->num_channels = 4;
+ data->startup_time = 10;
+
+ adc_data = *data;
+ platform_device_register(&at91_adc_device);
+}
+#else
+void __init at91_add_device_adc(struct at91_adc_data *data) {}
+#endif
+
/* -------------------------------------------------------------------- */
/*
* These devices are always present and don't need any board-specific
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c
index 817f59d..29dae9f 100644
--- a/arch/arm/mach-at91/board-sam9g20ek.c
+++ b/arch/arm/mach-at91/board-sam9g20ek.c
@@ -31,6 +31,8 @@
#include <linux/regulator/fixed.h>
#include <linux/regulator/consumer.h>
+#include <linux/platform_data/at91_adc.h>
+
#include <mach/hardware.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
@@ -314,6 +316,15 @@ static void __init ek_add_device_buttons(void)
static void __init ek_add_device_buttons(void) {}
#endif
+/*
+ * ADCs
+ */
+
+static struct at91_adc_data ek_adc_data = {
+ .channels_used = BIT(0) | BIT(1) | BIT(2) | BIT(3),
+ .vref = 3300,
+};
+
#if defined(CONFIG_REGULATOR_FIXED_VOLTAGE) || defined(CONFIG_REGULATOR_FIXED_VOLTAGE_MODULE)
static struct regulator_consumer_supply ek_audio_consumer_supplies[] = {
REGULATOR_SUPPLY("AVDD", "0-001b"),
@@ -389,6 +400,8 @@ static void __init ek_board_init(void)
ek_add_device_gpio_leds();
/* Push Buttons */
ek_add_device_buttons();
+ /* ADCs */
+ at91_add_device_adc(&ek_adc_data);
/* PCK0 provides MCLK to the WM8731 */
at91_set_B_periph(AT91_PIN_PC1, 0);
/* SSC (for WM8731) */
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH RESEND v13] AT91: Add a driver for the ADC
@ 2012-01-16 21:36 Maxime Ripard
2012-01-16 21:36 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2012-01-16 21:36 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
Working on supporting the hardware triggers for these drivers, I made some
patches that Jonathan suggested I merge with this patchset.
So, basically, what changed from v12:
* Indentation fixes, added some comments
* Rework of the platform data. Now the SoC-specific data are directly in the
driver, as it was kind of odd to declare all the triggers for the driver in the
SoC files. So the driver handles all of this now. It has nice side effects, as
it will also ease the transition to DT.
As it introduce heavy changes, I dropped the Acked-by and Signed-off-by from
the two last patches.
Maxime
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2012-01-16 21:36 [PATCH RESEND v13] AT91: Add a driver for the ADC Maxime Ripard
@ 2012-01-16 21:36 ` Maxime Ripard
0 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2012-01-16 21:36 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
include/linux/platform_data/at91_adc.h | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
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..c27b502
--- /dev/null
+++ b/include/linux/platform_data/at91_adc.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2011 Free Electrons
+ *
+ * Licensed under the GPLv2 or later.
+ *
+ */
+
+#ifndef _AT91_ADC_H_
+#define _AT91_ADC_H_
+
+/**
+ * struct at91_adc_data - platform data for ADC driver
+ * @channels_use: channels in use on the board as a bitmask
+ * @vref: Reference voltage for the ADC in millivolts
+ */
+struct at91_adc_data {
+ unsigned long channels_used;
+ u16 vref;
+};
+
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
+#endif
--
1.7.5.4
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v13] AT91: Add a driver for the ADC
@ 2011-12-14 10:01 Maxime Ripard
2011-12-14 10:01 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-12-14 10:01 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
Working on supporting the hardware triggers for these drivers, I made some
patches that Jonathan suggested I merge with this patchset.
So, basically, what changed from v12:
* Indentation fixes, added some comments
* Rework of the platform data. Now the SoC-specific data are directly in the
driver, as it was kind of odd to declare all the triggers for the driver in the
SoC files. So the driver handles all of this now. It has nice side effects, as
it will also ease the transition to DT.
As it introduce heavy changes, I dropped the Acked-by and Signed-off-by from
the two last patches.
Maxime
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-12-14 10:01 [PATCH v13] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-12-14 10:01 ` Maxime Ripard
2011-12-14 10:27 ` Alexander Stein
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-12-14 10:01 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
include/linux/platform_data/at91_adc.h | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
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..bad80b7
--- /dev/null
+++ b/include/linux/platform_data/at91_adc.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2011 Free Electrons
+ *
+ * Licensed under the GPLv2 or later.
+ *
+ */
+
+#ifndef _AT91_ADC_H_
+#define _AT91_ADC_H_
+
+/**
+ * struct at91_adc_data - platform data for ADC driver
+ * @channels_use: channels in use on the board as a bitmask
+ * @vref: Reference voltage for the ADC in millvolts
+ */
+struct at91_adc_data {
+ unsigned long channels_used;
+ u16 vref;
+};
+
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
+#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-12-14 10:01 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
@ 2011-12-14 10:27 ` Alexander Stein
2011-12-15 19:37 ` Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Alexander Stein @ 2011-12-14 10:27 UTC (permalink / raw)
To: linux-arm-kernel
On Wednesday 14 December 2011 11:01:15 Maxime Ripard wrote:
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
>
> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
> include/linux/platform_data/at91_adc.h | 23 +++++++++++++++++++++++
> 1 files changed, 23 insertions(+), 0 deletions(-)
> 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..bad80b7
> --- /dev/null
> +++ b/include/linux/platform_data/at91_adc.h
> @@ -0,0 +1,23 @@
> +/*
> + * Copyright (C) 2011 Free Electrons
> + *
> + * Licensed under the GPLv2 or later.
> + *
> + */
> +
> +#ifndef _AT91_ADC_H_
> +#define _AT91_ADC_H_
> +
> +/**
> + * struct at91_adc_data - platform data for ADC driver
> + * @channels_use: channels in use on the board as a bitmask
> + * @vref: Reference voltage for the ADC in millvolts
Nitpick, this should write millivolts, no?
> + */
> +struct at91_adc_data {
> + unsigned long channels_used;
> + u16 vref;
> +};
> +
> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
> +
> +#endif
Regards,
Alexander
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-12-14 10:27 ` Alexander Stein
@ 2011-12-15 19:37 ` Maxime Ripard
0 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-12-15 19:37 UTC (permalink / raw)
To: linux-arm-kernel
On 14/12/2011 11:27, Alexander Stein wrote:
> On Wednesday 14 December 2011 11:01:15 Maxime Ripard wrote:
>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>> Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
>> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
>> Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
>>
>> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
>> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>> ---
>> include/linux/platform_data/at91_adc.h | 23 +++++++++++++++++++++++
>> 1 files changed, 23 insertions(+), 0 deletions(-)
>> 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..bad80b7
>> --- /dev/null
>> +++ b/include/linux/platform_data/at91_adc.h
>> @@ -0,0 +1,23 @@
>> +/*
>> + * Copyright (C) 2011 Free Electrons
>> + *
>> + * Licensed under the GPLv2 or later.
>> + *
>> + */
>> +
>> +#ifndef _AT91_ADC_H_
>> +#define _AT91_ADC_H_
>> +
>> +/**
>> + * struct at91_adc_data - platform data for ADC driver
>> + * @channels_use: channels in use on the board as a bitmask
>> + * @vref: Reference voltage for the ADC in millvolts
>
> Nitpick, this should write millivolts, no?
Yes, of course :)
>
>> + */
>> +struct at91_adc_data {
>> + unsigned long channels_used;
>> + u16 vref;
>> +};
>> +
>> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
>> +
>> +#endif
>
> Regards,
> Alexander
--
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v12] AT91: Add a driver for the ADC
@ 2011-12-02 13:17 Maxime Ripard
2011-12-02 13:17 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-12-02 13:17 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
Since everyone seemed to be ok with the v11 of this patchset, it seems that it
is now near inclusion.
Maxime
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-12-02 13:17 [PATCH v12] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-12-02 13:17 ` Maxime Ripard
0 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-12-02 13:17 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
include/linux/platform_data/at91_adc.h | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
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..1212c78
--- /dev/null
+++ b/include/linux/platform_data/at91_adc.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2011 Free Electrons
+ *
+ * Licensed under the GPLv2 or later.
+ *
+ */
+
+#ifndef _AT91_ADC_H_
+#define _AT91_ADC_H_
+
+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 bitmask).
+ */
+ u8 num_channels;
+ /* Channels in use on the board as a bitmask */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
+#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v9] AT91: Add a driver for the ADC
@ 2011-11-24 11:27 Maxime Ripard
2011-11-24 11:27 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-24 11:27 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
The last version had a bug in the error handling of the probe function
of the adc driver, the free_irq call having the wrong dev_id. This
version corrects it.
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-24 11:27 [PATCH v9] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-24 11:27 ` Maxime Ripard
2011-11-24 14:29 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-24 11:27 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..4f27797 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* ADC */
+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 bitmask).
+ */
+ u8 num_channels;
+ /* Channels in use on the board as a bitmask */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v8] AT91: Add a driver for the ADC
@ 2011-11-18 10:12 Maxime Ripard
2011-11-18 10:12 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-18 10:12 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patchset adds the driver for the ADC in the AT91 SoC. It has been tested on
the at91sam9g20ek and should work on sam9g45 as well.
For now, it only reads values when asked for by sysfs, but eventually will
support hardware triggers and more boards.
This patchset is based on the "[PATCH 0/6 V2] IIO: Out of staging step 1: The
core" patchset from Jonathan Cameron, applied on top of 3.1
Improvements from v7:
- Fix the channels mask bug
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-18 10:12 [PATCH v8] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-18 10:12 ` Maxime Ripard
0 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-11-18 10:12 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..4f27797 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* ADC */
+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 bitmask).
+ */
+ u8 num_channels;
+ /* Channels in use on the board as a bitmask */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v7] AT91: Add a driver for the ADC
@ 2011-11-15 10:54 Maxime Ripard
2011-11-15 10:54 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-15 10:54 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patchset adds the driver for the ADC in the AT91 SoC. It has been tested on
the at91sam9g20ek and should work on sam9g45 as well.
For now, it only reads values when asked for by sysfs, but eventually will
support hardware triggers and more boards.
This patchset is based on the "[PATCH 0/6 V2] IIO: Out of staging step 1: The
core" patchset from Jonathan Cameron, applied on top of 3.1
Improvements from v6:
- Fix the unit in the scale read
- Minor type fix
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-15 10:54 [PATCH v7] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-15 10:54 ` Maxime Ripard
0 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-11-15 10:54 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..4f27797 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* ADC */
+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 bitmask).
+ */
+ u8 num_channels;
+ /* Channels in use on the board as a bitmask */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6] AT91: Add a driver for the ADC
@ 2011-11-14 17:30 Maxime Ripard
2011-11-14 17:30 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-14 17:30 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patchset adds the driver for the ADC in the AT91 SoC. It has been tested on
the at91sam9g20ek and should work on sam9g45 as well.
For now, it only reads values when asked for by sysfs, but eventually will
support hardware triggers and more boards.
This patchset is based on the "[PATCH 0/6 V2] IIO: Out of staging step 1: The
core" patchset from Jonathan Cameron, applied on top of 3.1
Improvements from v5:
- Don't run the SoC specific code if the driver is not selected in the
configuration
- Fix the waitqueue timeout error handling to have a more sensible behaviour
- Minor cosmetic improvements
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-14 17:30 [PATCH v6] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-14 17:30 ` Maxime Ripard
0 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-11-14 17:30 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..4f27797 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* ADC */
+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 bitmask).
+ */
+ u8 num_channels;
+ /* Channels in use on the board as a bitmask */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCHv5] AT91: Add a driver for the ADC
@ 2011-11-14 10:06 Maxime Ripard
2011-11-14 10:06 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-14 10:06 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patchset adds the driver for the ADC in the AT91 SoC. It has been tested on
the at91sam9g20ek and should work on sam9g45 as well.
For now, it only reads values when asked for by sysfs, but eventually will
support hardware triggers and more boards.
This patchset is based on the "[PATCH 0/6 V2] IIO: Out of staging step 1: The
core" patchset from Jonathan Cameron, applied on top of 3.1
Improvements for v5:
- Don't loop through the channels in the irq handler anymore but use the last
converted data register instead.
Improvements for v4:
- Various fixes (Remove the clock at drivers's remove, change the registers
access functions prototypes,... )
Improvements for v3:
- Move the driver out of staging
- Slightly modify the definition of channels to use bitmaps
- The driver no longer leaks the channels array
- Various minor fixes and codestyle improvements
Improvements for v2:
- Rebase on top of commit 85d8ff8
- Initialise scan_types
- Added scale informations in the driver
- Allow to use only a subset of adc channels available on the SoC
- Various fix according to reviews
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-14 10:06 [PATCHv5] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-14 10:06 ` Maxime Ripard
2011-11-14 11:29 ` Nicolas Ferre
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-14 10:06 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
---
arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..4f27797 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* ADC */
+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 bitmask).
+ */
+ u8 num_channels;
+ /* Channels in use on the board as a bitmask */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-14 10:06 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
@ 2011-11-14 11:29 ` Nicolas Ferre
0 siblings, 0 replies; 33+ messages in thread
From: Nicolas Ferre @ 2011-11-14 11:29 UTC (permalink / raw)
To: linux-arm-kernel
On 11/14/2011 11:06 AM, Maxime Ripard :
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> ---
> arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
> 1 files changed, 18 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
> index ed544a0..4f27797 100644
> --- a/arch/arm/mach-at91/include/mach/board.h
> +++ b/arch/arm/mach-at91/include/mach/board.h
> @@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
> /* FIXME: this needs a better location, but gets stuff building again */
> extern int at91_suspend_entering_slow_clock(void);
>
> +/* ADC */
> +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 bitmask).
> + */
> + u8 num_channels;
> + /* Channels in use on the board as a bitmask */
> + unsigned long channels_used;
> + /* Startup time of the ADC, in microseconds. */
> + u8 startup_time;
> + /* Reference voltage for the ADC in millivolts */
> + unsigned short vref;
> +};
> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
> +
> #endif
--
Nicolas Ferre
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] AT91: Add a driver for the ADC
@ 2011-10-19 16:18 Maxime Ripard
2011-10-19 16:18 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
` (3 more replies)
0 siblings, 4 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-10-19 16:18 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patchset adds the driver for the ADC in the AT91 SoC. It has been tested on
the at91sam9g20ek and should work on sam9g45 as well.
For now, it only reads values when asked for by sysfs, but eventually will
support hardware triggers and more boards.
This patchset is based on the branch master of Jonathan Cameron present at :
https://github.com/jic23/linux-iio/
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-10-19 16:18 [PATCH] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-10-19 16:18 ` Maxime Ripard
2011-11-03 10:11 ` [PATCHv2] AT91: Add a driver for the ADC Maxime Ripard
` (2 subsequent siblings)
3 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-10-19 16:18 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
arch/arm/mach-at91/include/mach/board.h | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..adbc431 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,12 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* ADC */
+struct at91_adc_data {
+ unsigned int adc_clock;
+ u8 channels;
+ u8 startup_time;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCHv2] AT91: Add a driver for the ADC
2011-10-19 16:18 [PATCH] AT91: Add a driver for the ADC Maxime Ripard
2011-10-19 16:18 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
@ 2011-11-03 10:11 ` Maxime Ripard
2011-11-03 10:11 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-07 16:08 ` [PATCHv3] AT91: Add a driver for the ADC Maxime Ripard
2011-11-09 10:19 ` [PATCHv4] AT91: Add a driver for the ADC Maxime Ripard
3 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-03 10:11 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patchset adds the driver for the ADC in the AT91 SoC. It has been tested on
the at91sam9g20ek and should work on sam9g45 as well.
For now, it only reads values when asked for by sysfs, but eventually will
support hardware triggers and more boards.
This patchset is based on the branch master of Jonathan Cameron present at :
https://github.com/jic23/linux-iio/, commit 85d8ff8
Improvements since v1:
- Rebase on top of commit 85d8ff8
- Initialise scan_types
- Added scale informations in the driver
- Allow to use only a subset of adc channels available on the SoC
- Various fix according to reviews
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-03 10:11 ` [PATCHv2] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-03 10:11 ` Maxime Ripard
2011-11-03 11:27 ` Linus Walleij
` (2 more replies)
0 siblings, 3 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-11-03 10:11 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
arch/arm/mach-at91/include/mach/board.h | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..b837da8 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,26 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* 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 */
+ u8 channels_used[AT91_ADC_MAX_CHANNELS];
+ /* Number of channels in use */
+ u8 num_channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-03 10:11 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
@ 2011-11-03 11:27 ` Linus Walleij
2011-11-03 16:27 ` Maxime Ripard
2011-11-04 10:27 ` Jonathan Cameron
2011-11-04 10:34 ` Jonathan Cameron
2 siblings, 1 reply; 33+ messages in thread
From: Linus Walleij @ 2011-11-03 11:27 UTC (permalink / raw)
To: linux-arm-kernel
2011/11/3 Maxime Ripard <maxime.ripard@free-electrons.com>:
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> ?arch/arm/mach-at91/include/mach/board.h | ? 22 ++++++++++++++++++++++
> ?1 files changed, 22 insertions(+), 0 deletions(-)
We're not supposed to have platform data dependent to stuff in
staging under arch/arm or anyplace else in the main kernel tree.
Please move this to
drivers/staging/iio/adc/at91adc-board.h
or so.
As for calling the at91_add_device_adc() function (which I guess
you want to do at some point) the pattern I followed for other
drivers is to declare a dummy function in arch/arm/mach-*
with __weak and let the staging driver override that. This way
the staging driver can go away without any compilation trouble
happening.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-03 11:27 ` Linus Walleij
@ 2011-11-03 16:27 ` Maxime Ripard
2011-11-03 16:38 ` Linus Walleij
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-03 16:27 UTC (permalink / raw)
To: linux-arm-kernel
Hi Linus,
On 03/11/2011 12:27, Linus Walleij wrote:
> 2011/11/3 Maxime Ripard <maxime.ripard@free-electrons.com>:
>
>> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
>> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>> ---
>> arch/arm/mach-at91/include/mach/board.h | 22 ++++++++++++++++++++++
>> 1 files changed, 22 insertions(+), 0 deletions(-)
>
> We're not supposed to have platform data dependent to stuff in
> staging under arch/arm or anyplace else in the main kernel tree.
>
> Please move this to
> drivers/staging/iio/adc/at91adc-board.h
> or so.
Won't moving this part to staging prevent from using this structure in
board files ? If so, how will I be able to declare a new board that is
using this ADC (or add the support for the ADC to a new one) ?
> As for calling the at91_add_device_adc() function (which I guess
> you want to do at some point) the pattern I followed for other
> drivers is to declare a dummy function in arch/arm/mach-*
> with __weak and let the staging driver override that. This way
> the staging driver can go away without any compilation trouble
> happening.
I don't really see why my changes will break the compilation if the
driver is no longer present in staging. At worst, the structure will be
filled but used by no one, right ?
Regards,
--
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-03 16:27 ` Maxime Ripard
@ 2011-11-03 16:38 ` Linus Walleij
2011-11-03 18:05 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 1 reply; 33+ messages in thread
From: Linus Walleij @ 2011-11-03 16:38 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Nov 3, 2011 at 5:27 PM, Maxime Ripard
<maxime.ripard@free-electrons.com> wrote:
> [Me]
>> We're not supposed to have platform data dependent to stuff in
>> staging under arch/arm or anyplace else in the main kernel tree.
>>
>> Please move this to
>> drivers/staging/iio/adc/at91adc-board.h
>> or so.
>
> Won't moving this part to staging prevent from using this structure in
> board files ? If so, how will I be able to declare a new board that is
> using this ADC (or add the support for the ADC to a new one) ?
Put this into a separate board file living under staging/iio/adc
Compare:
drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c
>> As for calling the at91_add_device_adc() function (which I guess
>> you want to do at some point) the pattern I followed for other
>> drivers is to declare a dummy function in arch/arm/mach-*
>> with __weak and let the staging driver override that. This way
>> the staging driver can go away without any compilation trouble
>> happening.
>
> I don't really see why my changes will break the compilation if the
> driver is no longer present in staging. At worst, the structure will be
> filled but used by no one, right ?
You're right.
But still, we cannot add that header file for a driver that
is in the staging tree. Header files go into the staging dir too.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-03 16:38 ` Linus Walleij
@ 2011-11-03 18:05 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 0 replies; 33+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-11-03 18:05 UTC (permalink / raw)
To: linux-arm-kernel
On 17:38 Thu 03 Nov , Linus Walleij wrote:
> On Thu, Nov 3, 2011 at 5:27 PM, Maxime Ripard
> <maxime.ripard@free-electrons.com> wrote:
> > [Me]
> >> We're not supposed to have platform data dependent to stuff in
> >> staging under arch/arm or anyplace else in the main kernel tree.
> >>
> >> Please move this to
> >> drivers/staging/iio/adc/at91adc-board.h
> >> or so.
> >
> > Won't moving this part to staging prevent from using this structure in
> > board files ? If so, how will I be able to declare a new board that is
> > using this ADC (or add the support for the ADC to a new one) ?
>
> Put this into a separate board file living under staging/iio/adc
>
> Compare:
> drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c
>
> >> As for calling the at91_add_device_adc() function (which I guess
> >> you want to do at some point) the pattern I followed for other
> >> drivers is to declare a dummy function in arch/arm/mach-*
> >> with __weak and let the staging driver override that. This way
> >> the staging driver can go away without any compilation trouble
> >> happening.
> >
> > I don't really see why my changes will break the compilation if the
> > driver is no longer present in staging. At worst, the structure will be
> > filled but used by no one, right ?
>
> You're right.
>
> But still, we cannot add that header file for a driver that
> is in the staging tree. Header files go into the staging dir too.
agreed
Best Regards,
J.
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-03 10:11 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-03 11:27 ` Linus Walleij
@ 2011-11-04 10:27 ` Jonathan Cameron
2011-11-04 10:36 ` Jonathan Cameron
2011-11-04 10:34 ` Jonathan Cameron
2 siblings, 1 reply; 33+ messages in thread
From: Jonathan Cameron @ 2011-11-04 10:27 UTC (permalink / raw)
To: linux-arm-kernel
On 11/03/2011 10:11 AM, Maxime Ripard wrote:
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> arch/arm/mach-at91/include/mach/board.h | 22 ++++++++++++++++++++++
> 1 files changed, 22 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
> index ed544a0..b837da8 100644
> --- a/arch/arm/mach-at91/include/mach/board.h
> +++ b/arch/arm/mach-at91/include/mach/board.h
> @@ -207,4 +207,26 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
> /* FIXME: this needs a better location, but gets stuff building again */
> extern int at91_suspend_entering_slow_clock(void);
>
> +/* 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 */
> + u8 channels_used[AT91_ADC_MAX_CHANNELS];
> + /* Number of channels in use */
> + u8 num_channels_used;
> + /* Startup time of the ADC, in microseconds. */
> + u8 startup_time;
> + /* Reference voltage for the ADC in millivolts */
> + unsigned short vref;
> +};
> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
> +
> #endif
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-04 10:27 ` Jonathan Cameron
@ 2011-11-04 10:36 ` Jonathan Cameron
0 siblings, 0 replies; 33+ messages in thread
From: Jonathan Cameron @ 2011-11-04 10:36 UTC (permalink / raw)
To: linux-arm-kernel
On 11/04/2011 10:27 AM, Jonathan Cameron wrote:
> On 11/03/2011 10:11 AM, Maxime Ripard wrote:
>> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
>> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>> ---
>> arch/arm/mach-at91/include/mach/board.h | 22 ++++++++++++++++++++++
>> 1 files changed, 22 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
>> index ed544a0..b837da8 100644
>> --- a/arch/arm/mach-at91/include/mach/board.h
>> +++ b/arch/arm/mach-at91/include/mach/board.h
>> @@ -207,4 +207,26 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
>> /* FIXME: this needs a better location, but gets stuff building again */
>> extern int at91_suspend_entering_slow_clock(void);
>>
>> +/* 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 */
>> + u8 channels_used[AT91_ADC_MAX_CHANNELS];
>> + /* Number of channels in use */
>> + u8 num_channels_used;
>> + /* Startup time of the ADC, in microseconds. */
>> + u8 startup_time;
>> + /* Reference voltage for the ADC in millivolts */
>> + unsigned short vref;
>> +};
>> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
>> +
>> #endif
oops. version with actual comments should also have gone out.
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-03 10:11 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-03 11:27 ` Linus Walleij
2011-11-04 10:27 ` Jonathan Cameron
@ 2011-11-04 10:34 ` Jonathan Cameron
2011-11-04 15:22 ` Maxime Ripard
2 siblings, 1 reply; 33+ messages in thread
From: Jonathan Cameron @ 2011-11-04 10:34 UTC (permalink / raw)
To: linux-arm-kernel
On 11/03/2011 10:11 AM, Maxime Ripard wrote:
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> arch/arm/mach-at91/include/mach/board.h | 22 ++++++++++++++++++++++
> 1 files changed, 22 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
> index ed544a0..b837da8 100644
> --- a/arch/arm/mach-at91/include/mach/board.h
> +++ b/arch/arm/mach-at91/include/mach/board.h
> @@ -207,4 +207,26 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
> /* FIXME: this needs a better location, but gets stuff building again */
> extern int at91_suspend_entering_slow_clock(void);
>
> +/* 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;
> + /* Startup time of the ADC, in microseconds. */
> + u8 startup_time;
> + /* Reference voltage for the ADC in millivolts */
> + unsigned short vref;
> +};
> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
> +
> #endif
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-04 10:34 ` Jonathan Cameron
@ 2011-11-04 15:22 ` Maxime Ripard
2011-11-04 16:28 ` Jonathan Cameron
0 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-04 15:22 UTC (permalink / raw)
To: linux-arm-kernel
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
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-04 15:22 ` Maxime Ripard
@ 2011-11-04 16:28 ` Jonathan Cameron
0 siblings, 0 replies; 33+ messages in thread
From: Jonathan Cameron @ 2011-11-04 16:28 UTC (permalink / raw)
To: linux-arm-kernel
On 11/04/2011 03:22 PM, Maxime Ripard wrote:
> 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 ?
unsigned long bitmask = BIT(0) | BIT(1) | BIT(3);
Bitmaps are just arrays of unsigned longs. If you 'know' you have
less than 32 elements, you can just use a single unsigned long and
this assignment gets easier.
Most of the stuff you want comes from bitops.h anyway (maybe all come
to think of it?)
>
> Or put the calls to bitmap_set in the board_init function ?
Just edit the underlying unsigned long directly. The fact that the
bitops.h stuff is supposed to work on a bitmap as well means that
will always work.
Jonathan
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCHv3] AT91: Add a driver for the ADC
2011-10-19 16:18 [PATCH] AT91: Add a driver for the ADC Maxime Ripard
2011-10-19 16:18 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-03 10:11 ` [PATCHv2] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-07 16:08 ` Maxime Ripard
2011-11-07 16:08 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-09 10:19 ` [PATCHv4] AT91: Add a driver for the ADC Maxime Ripard
3 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-07 16:08 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patchset adds the driver for the ADC in the AT91 SoC. It has been tested on
the at91sam9g20ek and should work on sam9g45 as well.
For now, it only reads values when asked for by sysfs, but eventually will
support hardware triggers and more boards.
This patchset is based on the "[PATCH 0/6 V2] IIO: Out of staging step 1: The
core" patchset from Jonathan Cameron, applied on top of 3.1
Improvements since v2:
- Move the driver out of staging
- Slightly modify the definition of channels to use bitmaps
- The driver no longer leaks the channels array
- Various minor fixes and codestyle improvements
Improvements since v1:
- Rebase on top of commit 85d8ff8
- Initialise scan_types
- Added scale informations in the driver
- Allow to use only a subset of adc channels available on the SoC
- Various fix according to reviews
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-07 16:08 ` [PATCHv3] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-07 16:08 ` Maxime Ripard
2011-11-07 16:27 ` Jonathan Cameron
2011-11-08 13:19 ` Thomas Petazzoni
0 siblings, 2 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-11-07 16:08 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..afdcac0 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* ADC */
+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 */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-07 16:08 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
@ 2011-11-07 16:27 ` Jonathan Cameron
2011-11-08 13:19 ` Thomas Petazzoni
1 sibling, 0 replies; 33+ messages in thread
From: Jonathan Cameron @ 2011-11-07 16:27 UTC (permalink / raw)
To: linux-arm-kernel
Looks sensible to me though obviously this is bit is really for the
at91 lot to comment on.
On 11/07/2011 04:08 PM, Maxime Ripard wrote:
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
> ---
> arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
> 1 files changed, 18 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
> index ed544a0..afdcac0 100644
> --- a/arch/arm/mach-at91/include/mach/board.h
> +++ b/arch/arm/mach-at91/include/mach/board.h
> @@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
> /* FIXME: this needs a better location, but gets stuff building again */
> extern int at91_suspend_entering_slow_clock(void);
>
> +/* ADC */
> +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 */
One nitpick here. You could make it more obvious that this is a mask...
> + unsigned long channels_used;
> + /* Startup time of the ADC, in microseconds. */
> + u8 startup_time;
> + /* Reference voltage for the ADC in millivolts */
> + unsigned short vref;
> +};
> +extern void __init at91_add_device_adc(struct at91_adc_data *data);
> +
> #endif
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-07 16:08 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-07 16:27 ` Jonathan Cameron
@ 2011-11-08 13:19 ` Thomas Petazzoni
1 sibling, 0 replies; 33+ messages in thread
From: Thomas Petazzoni @ 2011-11-08 13:19 UTC (permalink / raw)
To: linux-arm-kernel
Le Mon, 7 Nov 2011 17:08:31 +0100,
Maxime Ripard <maxime.ripard@free-electrons.com> a ?crit :
> +/* ADC */
> +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).
channels_used is no longer an array, but a bitmap.
Regards,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCHv4] AT91: Add a driver for the ADC
2011-10-19 16:18 [PATCH] AT91: Add a driver for the ADC Maxime Ripard
` (2 preceding siblings ...)
2011-11-07 16:08 ` [PATCHv3] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-09 10:19 ` Maxime Ripard
2011-11-09 10:19 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
3 siblings, 1 reply; 33+ messages in thread
From: Maxime Ripard @ 2011-11-09 10:19 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patchset adds the driver for the ADC in the AT91 SoC. It has been tested on
the at91sam9g20ek and should work on sam9g45 as well.
For now, it only reads values when asked for by sysfs, but eventually will
support hardware triggers and more boards.
This patchset is based on the "[PATCH 0/6 V2] IIO: Out of staging step 1: The
core" patchset from Jonathan Cameron, applied on top of 3.1
Improvements since v3:
- Various fixes (Remove the clock at drivers's remove, change the registers
access functions prototypes,... )
Improvements since v2:
- Move the driver out of staging
- Slightly modify the definition of channels to use bitmaps
- The driver no longer leaks the channels array
- Various minor fixes and codestyle improvements
Improvements since v1:
- Rebase on top of commit 85d8ff8
- Initialise scan_types
- Added scale informations in the driver
- Allow to use only a subset of adc channels available on the SoC
- Various fix according to reviews
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 1/3] ARM: AT91: Add platform data for the ADCs
2011-11-09 10:19 ` [PATCHv4] AT91: Add a driver for the ADC Maxime Ripard
@ 2011-11-09 10:19 ` Maxime Ripard
0 siblings, 0 replies; 33+ messages in thread
From: Maxime Ripard @ 2011-11-09 10:19 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
---
arch/arm/mach-at91/include/mach/board.h | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index ed544a0..4f27797 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -207,4 +207,22 @@ extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
/* FIXME: this needs a better location, but gets stuff building again */
extern int at91_suspend_entering_slow_clock(void);
+/* ADC */
+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 bitmask).
+ */
+ u8 num_channels;
+ /* Channels in use on the board as a bitmask */
+ unsigned long channels_used;
+ /* Startup time of the ADC, in microseconds. */
+ u8 startup_time;
+ /* Reference voltage for the ADC in millivolts */
+ unsigned short vref;
+};
+extern void __init at91_add_device_adc(struct at91_adc_data *data);
+
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 33+ messages in thread
end of thread, other threads:[~2012-01-16 21:36 UTC | newest]
Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-30 9:14 [PATCH v11] AT91: Add a driver for the ADC Maxime Ripard
2011-11-30 9:15 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-30 9:45 ` Nicolas Ferre
2011-11-30 9:15 ` [PATCH 2/3] ARM: AT91: IIO: Add AT91 ADC driver Maxime Ripard
2011-11-30 17:40 ` Arnd Bergmann
2011-11-30 9:15 ` [PATCH 3/3] ARM: AT91: Add the ADC to the sam9g20ek board Maxime Ripard
-- strict thread matches above, loose matches on Subject: below --
2012-01-16 21:36 [PATCH RESEND v13] AT91: Add a driver for the ADC Maxime Ripard
2012-01-16 21:36 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-12-14 10:01 [PATCH v13] AT91: Add a driver for the ADC Maxime Ripard
2011-12-14 10:01 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-12-14 10:27 ` Alexander Stein
2011-12-15 19:37 ` Maxime Ripard
2011-12-02 13:17 [PATCH v12] AT91: Add a driver for the ADC Maxime Ripard
2011-12-02 13:17 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-24 11:27 [PATCH v9] AT91: Add a driver for the ADC Maxime Ripard
2011-11-24 11:27 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-24 14:29 ` Jean-Christophe PLAGNIOL-VILLARD
2011-11-18 10:12 [PATCH v8] AT91: Add a driver for the ADC Maxime Ripard
2011-11-18 10:12 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-15 10:54 [PATCH v7] AT91: Add a driver for the ADC Maxime Ripard
2011-11-15 10:54 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-14 17:30 [PATCH v6] AT91: Add a driver for the ADC Maxime Ripard
2011-11-14 17:30 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-14 10:06 [PATCHv5] AT91: Add a driver for the ADC Maxime Ripard
2011-11-14 10:06 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-14 11:29 ` Nicolas Ferre
2011-10-19 16:18 [PATCH] AT91: Add a driver for the ADC Maxime Ripard
2011-10-19 16:18 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-03 10:11 ` [PATCHv2] AT91: Add a driver for the ADC Maxime Ripard
2011-11-03 10:11 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-03 11:27 ` Linus Walleij
2011-11-03 16:27 ` Maxime Ripard
2011-11-03 16:38 ` Linus Walleij
2011-11-03 18:05 ` Jean-Christophe PLAGNIOL-VILLARD
2011-11-04 10:27 ` Jonathan Cameron
2011-11-04 10:36 ` Jonathan Cameron
2011-11-04 10:34 ` Jonathan Cameron
2011-11-04 15:22 ` Maxime Ripard
2011-11-04 16:28 ` Jonathan Cameron
2011-11-07 16:08 ` [PATCHv3] AT91: Add a driver for the ADC Maxime Ripard
2011-11-07 16:08 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
2011-11-07 16:27 ` Jonathan Cameron
2011-11-08 13:19 ` Thomas Petazzoni
2011-11-09 10:19 ` [PATCHv4] AT91: Add a driver for the ADC Maxime Ripard
2011-11-09 10:19 ` [PATCH 1/3] ARM: AT91: Add platform data for the ADCs Maxime Ripard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).