From: Quentin Schulz <quentin.schulz@free-electrons.com> To: jdelvare@suse.com, linux@roeck-us.net, jic23@kernel.org, knaack.h@gmx.de, lars@metafoo.de, pmeerw@pmeerw.net, maxime.ripard@free-electrons.com, wens@csie.org, lee.jones@linaro.org Cc: Quentin Schulz <quentin.schulz@free-electrons.com>, linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, linux-iio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, thomas.petazzoni@free-electrons.com, antoine.tenart@free-electrons.com Subject: [PATCH v2 0/4] add support for Allwinner SoCs ADC Date: Fri, 15 Jul 2016 11:59:10 +0200 [thread overview] Message-ID: <1468576754-3273-1-git-send-email-quentin.schulz@free-electrons.com> (raw) The Allwinner SoCs all have an ADC that can also act as a touchscreen controller and a thermal sensor. The first four channels can be used either for the ADC or the touchscreen and the fifth channel is used for the thermal sensor. We currently have a driver for the two latter functions in drivers/input/touchscreen/sun4i-ts.c but we don't have access to the ADC feature at all. It is meant to replace the current driver by using MFD and subdrivers. This adds initial support for Allwinner SoCs ADC with all features. Yet, the touchscreen is not implemented but will be added later. To switch between touchscreen and ADC modes, you need to poke a few bits in registers and (de)activate an interrupt (pen-up). An MFD is provided to let the input driver activate the pen-up interrupt through a virtual interrupt, poke a few bits via regmap and read data from the ADC driver while both (and iio_hwmon) are probed by the MFD. There are slight variations between the different SoCs ADC like the address of some registers and the scale and offset to apply to raw thermal sensor values. These variations are handled by using different platform_device_id, passed to the sub-drivers when they are probed by the MFD. This also modifies iio-hwmon to allow probe deferring when no iio channel is found. Currently when no iio channel is found, the probing of iio-hwmon fails. This is problematic when iio-hwmon probes before the iio driver could register iio channels to share. It exposes labels for channels read by iio_hwmon. Until now, there were no way to identify what the exposed channels are representing. Now, if a channel has its extend_name field set, this value will be exposed in a sysfs file suffixed by _label. If the field is empty, no file will be created. Quentin Schulz (4): hwmon: iio_hwmon: defer probe when no channel is found iio: adc: add support for Allwinner SoCs ADC mfd: add support for Allwinner SoCs ADC hwmon: iio: add label for channels read by iio_hwmon drivers/hwmon/iio_hwmon.c | 82 ++++++- drivers/iio/adc/Kconfig | 12 ++ drivers/iio/adc/Makefile | 1 + drivers/iio/adc/sunxi-gpadc-iio.c | 417 ++++++++++++++++++++++++++++++++++++ drivers/mfd/Kconfig | 14 ++ drivers/mfd/Makefile | 2 + drivers/mfd/sunxi-gpadc-mfd.c | 197 +++++++++++++++++ include/linux/mfd/sunxi-gpadc-mfd.h | 23 ++ 8 files changed, 738 insertions(+), 10 deletions(-) create mode 100644 drivers/iio/adc/sunxi-gpadc-iio.c create mode 100644 drivers/mfd/sunxi-gpadc-mfd.c create mode 100644 include/linux/mfd/sunxi-gpadc-mfd.h -- 2.5.0
WARNING: multiple messages have this Message-ID (diff)
From: quentin.schulz@free-electrons.com (Quentin Schulz) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 0/4] add support for Allwinner SoCs ADC Date: Fri, 15 Jul 2016 11:59:10 +0200 [thread overview] Message-ID: <1468576754-3273-1-git-send-email-quentin.schulz@free-electrons.com> (raw) The Allwinner SoCs all have an ADC that can also act as a touchscreen controller and a thermal sensor. The first four channels can be used either for the ADC or the touchscreen and the fifth channel is used for the thermal sensor. We currently have a driver for the two latter functions in drivers/input/touchscreen/sun4i-ts.c but we don't have access to the ADC feature at all. It is meant to replace the current driver by using MFD and subdrivers. This adds initial support for Allwinner SoCs ADC with all features. Yet, the touchscreen is not implemented but will be added later. To switch between touchscreen and ADC modes, you need to poke a few bits in registers and (de)activate an interrupt (pen-up). An MFD is provided to let the input driver activate the pen-up interrupt through a virtual interrupt, poke a few bits via regmap and read data from the ADC driver while both (and iio_hwmon) are probed by the MFD. There are slight variations between the different SoCs ADC like the address of some registers and the scale and offset to apply to raw thermal sensor values. These variations are handled by using different platform_device_id, passed to the sub-drivers when they are probed by the MFD. This also modifies iio-hwmon to allow probe deferring when no iio channel is found. Currently when no iio channel is found, the probing of iio-hwmon fails. This is problematic when iio-hwmon probes before the iio driver could register iio channels to share. It exposes labels for channels read by iio_hwmon. Until now, there were no way to identify what the exposed channels are representing. Now, if a channel has its extend_name field set, this value will be exposed in a sysfs file suffixed by _label. If the field is empty, no file will be created. Quentin Schulz (4): hwmon: iio_hwmon: defer probe when no channel is found iio: adc: add support for Allwinner SoCs ADC mfd: add support for Allwinner SoCs ADC hwmon: iio: add label for channels read by iio_hwmon drivers/hwmon/iio_hwmon.c | 82 ++++++- drivers/iio/adc/Kconfig | 12 ++ drivers/iio/adc/Makefile | 1 + drivers/iio/adc/sunxi-gpadc-iio.c | 417 ++++++++++++++++++++++++++++++++++++ drivers/mfd/Kconfig | 14 ++ drivers/mfd/Makefile | 2 + drivers/mfd/sunxi-gpadc-mfd.c | 197 +++++++++++++++++ include/linux/mfd/sunxi-gpadc-mfd.h | 23 ++ 8 files changed, 738 insertions(+), 10 deletions(-) create mode 100644 drivers/iio/adc/sunxi-gpadc-iio.c create mode 100644 drivers/mfd/sunxi-gpadc-mfd.c create mode 100644 include/linux/mfd/sunxi-gpadc-mfd.h -- 2.5.0
next reply other threads:[~2016-07-15 10:01 UTC|newest] Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-07-15 9:59 Quentin Schulz [this message] 2016-07-15 9:59 ` [PATCH v2 0/4] add support for Allwinner SoCs ADC Quentin Schulz 2016-07-15 9:59 ` [PATCH v2 1/4] hwmon: iio_hwmon: defer probe when no channel is found Quentin Schulz 2016-07-15 9:59 ` Quentin Schulz 2016-07-16 17:00 ` [v2,1/4] " Guenter Roeck 2016-07-16 17:00 ` Guenter Roeck 2016-07-18 10:02 ` Maxime Ripard 2016-07-18 10:02 ` Maxime Ripard 2016-07-18 13:29 ` Guenter Roeck 2016-07-18 13:29 ` Guenter Roeck 2016-07-15 9:59 ` [PATCH v2 2/4] iio: adc: add support for Allwinner SoCs ADC Quentin Schulz 2016-07-15 9:59 ` Quentin Schulz 2016-07-18 12:57 ` Maxime Ripard 2016-07-18 12:57 ` Maxime Ripard 2016-07-19 9:04 ` Quentin Schulz 2016-07-19 9:04 ` Quentin Schulz 2016-07-19 12:40 ` Maxime Ripard 2016-07-19 12:40 ` Maxime Ripard 2016-07-18 13:18 ` Jonathan Cameron 2016-07-18 13:18 ` Jonathan Cameron 2016-07-19 8:33 ` Quentin Schulz 2016-07-19 8:33 ` Quentin Schulz 2016-07-20 14:57 ` Jonathan Cameron 2016-07-20 14:57 ` Jonathan Cameron 2016-07-21 12:15 ` Quentin Schulz 2016-07-21 12:15 ` Quentin Schulz 2016-07-23 6:37 ` Jonathan Cameron 2016-07-23 6:37 ` Jonathan Cameron 2016-07-20 12:37 ` Quentin Schulz 2016-07-20 12:37 ` Quentin Schulz 2016-07-20 14:15 ` Crt Mori 2016-07-20 14:15 ` Crt Mori 2016-07-20 14:59 ` Jonathan Cameron 2016-07-20 14:59 ` Jonathan Cameron 2016-07-15 9:59 ` [PATCH v2 3/4] mfd: " Quentin Schulz 2016-07-15 9:59 ` Quentin Schulz 2016-07-18 13:02 ` Maxime Ripard 2016-07-18 13:02 ` Maxime Ripard 2016-07-19 12:04 ` Quentin Schulz 2016-07-19 12:04 ` Quentin Schulz 2016-07-18 13:25 ` Jonathan Cameron 2016-07-18 13:25 ` Jonathan Cameron 2016-07-19 7:31 ` Lee Jones 2016-07-19 7:31 ` Lee Jones 2016-07-20 15:01 ` Jonathan Cameron 2016-07-20 15:01 ` Jonathan Cameron 2016-07-21 12:12 ` Lee Jones 2016-07-21 12:12 ` Lee Jones 2016-07-21 20:08 ` Maxime Ripard 2016-07-21 20:08 ` Maxime Ripard 2016-07-22 13:55 ` Lee Jones 2016-07-22 13:55 ` Lee Jones 2016-07-23 6:42 ` Jonathan Cameron 2016-07-23 6:42 ` Jonathan Cameron 2016-07-25 9:55 ` Maxime Ripard 2016-07-25 9:55 ` Maxime Ripard 2016-07-19 8:35 ` Quentin Schulz 2016-07-19 8:35 ` Quentin Schulz 2016-07-15 9:59 ` [PATCH v2 4/4] hwmon: iio: add label for channels read by iio_hwmon Quentin Schulz 2016-07-15 9:59 ` Quentin Schulz 2016-07-15 14:03 ` Guenter Roeck 2016-07-15 14:03 ` Guenter Roeck 2016-07-15 14:36 ` Quentin Schulz 2016-07-15 14:36 ` Quentin Schulz 2016-07-16 2:53 ` Guenter Roeck 2016-07-16 2:53 ` Guenter Roeck 2016-07-18 12:24 ` Jonathan Cameron 2016-07-18 12:24 ` Jonathan Cameron 2016-07-19 6:55 ` Quentin Schulz 2016-07-19 6:55 ` Quentin Schulz 2016-07-20 14:49 ` Jonathan Cameron 2016-07-20 14:49 ` Jonathan Cameron
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1468576754-3273-1-git-send-email-quentin.schulz@free-electrons.com \ --to=quentin.schulz@free-electrons.com \ --cc=antoine.tenart@free-electrons.com \ --cc=jdelvare@suse.com \ --cc=jic23@kernel.org \ --cc=knaack.h@gmx.de \ --cc=lars@metafoo.de \ --cc=lee.jones@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-hwmon@vger.kernel.org \ --cc=linux-iio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@roeck-us.net \ --cc=maxime.ripard@free-electrons.com \ --cc=pmeerw@pmeerw.net \ --cc=thomas.petazzoni@free-electrons.com \ --cc=wens@csie.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.