mxs-lradc: Split driver into MFD
Subsystems (5)
v6 cover mxs-lradc: Split driver into MFD
Split existing driver mxs-lradc into MFD with touchscreen and IIO part.
Tested on I.MX28.
Ksenija Stanojevic (4):
mfd: mxs-lradc: Add support for mxs-lradc MFD
iio: adc: mxs-lradc: Add support for adc driver
input: touchscreen: mxs-lradc: Add support for touchscreen
iio: adc: mxs-lradc: Remove driver
drivers/iio/adc/Kconfig | 27 +- drivers/iio/adc/Makefile | 2 +- drivers/iio/adc/mxs-lradc-adc.c | 845 ++++++++++++++ drivers/iio/adc/mxs-lradc.c | 1775 ------------------------------ drivers/input/touchscreen/Kconfig | 10 + drivers/input/touchscreen/Makefile | 1 + drivers/input/touchscreen/mxs-lradc-ts.c | 743 +++++++++++++ drivers/mfd/Kconfig | 17 + drivers/mfd/Makefile | 1 + drivers/mfd/mxs-lradc.c | 259 +++++ include/linux/mfd/mxs-lradc.h | 203 ++++ 11 files changed, 2093 insertions(+), 1790 deletions(-) create mode 100644 drivers/iio/adc/mxs-lradc-adc.c delete mode 100644 drivers/iio/adc/mxs-lradc.c create mode 100644 drivers/input/touchscreen/mxs-lradc-ts.c create mode 100644 drivers/mfd/mxs-lradc.c create mode 100644 include/linux/mfd/mxs-lradc.h
Signature · 1 line
1.9.1
PATCH v6 1/4 mfd: mxs-lradc: Add support for mxs-lradc MFD
Add core files for mxs-lradc MFD driver.
Note: this patch won't compile in iio/testing without this patch:a8f447be8056 ("mfd: Add resource managed APIs for mfd_add_devices")
---
Changes in v6:
- update copyright
- add kernel-doc header for struct mxs-lradc
- add error message
- change EINVAL to ENODEV
- use PLATFORM_DEVID_NONE instead -1
- cosmetic fixes
Changes in v5:
- use DEFINE_RES_MEM
- don't pass ioreammaped adress to platform cells
- move comment outside of struct mxs_lradc
- change type of argument in mxs_lradc_reg_set, mxs_lradc_reg_clear, mxs_lradc_reg_wrt (struct mxs_lradc * -> void __iomem *)
Changes in v4:
- update copyright
- use DEFINE_RES_IRQ_NAMED
- remove mxs_lradc_add_device function
- use struct mfd_cell in static form
- improve spacing
- remove unnecessary comment
- remove platform_get_irq
- remove touch_ret and use ret instead
- rename use_touchscreen to touchscreen_wire
- use goto statements
- remove irq[13], irq_count and irq_name from struct mxs_lradc
- remove all defines from inside the struct definition
Changes in v3:
- add note to commit message
- move switch statement into if(touch_ret == 0) branch
- add MODULE_AUTHOR
Changes in v2:
- do not change spacing in Kconfig
- make struct mfd_cell part of struct mxs_lradc
- use switch instead of if in mxs_lradc_irq_mask
- use only necessary header files in mxs_lradc.h
- use devm_mfd_add_device
- use separate function to register mfd device
- change licence to GPL
- add copyright
drivers/mfd/Kconfig | 17 +++ drivers/mfd/Makefile | 1 + drivers/mfd/mxs-lradc.c | 259 ++++++++++++++++++++++++++++++++++++++++++ include/linux/mfd/mxs-lradc.h | 203 +++++++++++++++++++++++++++++++++ 4 files changed, 480 insertions(+) create mode 100644 drivers/mfd/mxs-lradc.c create mode 100644 include/linux/mfd/mxs-lradc.h
drivers/mfd/Kconfig +17 -0
@@ -271,6 +271,23 @@ config MFD_MC13XXX_I2C help Select this if your MC13xxx is connected via an I2C bus. +config MFD_MXS_LRADC + tristate "Freescale i.MX23/i.MX28 LRADC" + depends on ARCH_MXS || COMPILE_TEST + select MFD_CORE + select STMP_DEVICE + help + Say yes here to build support for the Low Resolution + Analog-to-Digital Converter (LRADC) found on the i.MX23 and i.MX28 + processors. This driver provides common support for accessing the + device, additional drivers must be enabled in order to use the + functionality of the device: + mxs-lradc-adc for ADC readings + mxs-lradc-ts for touchscreen support + + This driver can also be built as a module. If so, the module will be + called mxs-lradc. + config MFD_HI6421_PMIC tristate "HiSilicon Hi6421 PMU/Codec IC" depends on OF
drivers/mfd/Makefile +1 -0
@@ -198,3 +198,4 @@ intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o intel-soc-pmic-$(CONFIG_INTEL_PMC_IPC) += intel_soc_pmic_bxtwc.o obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o obj-$(CONFIG_MFD_MT6397) += mt6397-core.o +obj-$(CONFIG_MFD_MXS_LRADC) += mxs-lradc.o
drivers/mfd/mxs-lradc.c new file +259 -0
259 lines not on this page · raw message
include/linux/mfd/mxs-lradc.h new file +203 -0
203 lines not on this page · raw message
Signature · 1 line
1.9.1
Re: [PATCH v6 1/4] mfd: mxs-lradc: Add support for mxs-lradc MFD
Quoted 102 lines · Ksenija Stanojevic
Add core files for mxs-lradc MFD driver.
Note: this patch won't compile in iio/testing without this patch:
a8f447be8056("mfd: Add resource managed APIs formfd_add_devices")Signed-off-by Ksenija Stanojevic <[email protected]>---
Changes in v6:
- update copyright
- add kernel-doc header for struct mxs-lradc
- add error message
- change EINVAL to ENODEV
- usePLATFORM_DEVID_NONEinstead -1
- cosmetic fixesChanges in v5:
- useDEFINE_RES_MEM
- don't pass ioreammaped adress to platform cells
- move comment outside of structmxs_lradc
- change type of argument inmxs_lradc_reg_set,mxs_lradc_reg_clear,mxs_lradc_reg_wrt(structmxs_lradc* -> void__iomem*)Changes in v4:
- update copyright
- useDEFINE_RES_IRQ_NAMED
- removemxs_lradc_add_devicefunction
- use structmfd_cellin static form
- improve spacing
- remove unnecessary comment
- removeplatform_get_irq
- removetouch_retand use ret instead
- renameuse_touchscreentotouchscreen_wire
- use goto statements
- remove irq[13],irq_countandirq_namefrom structmxs_lradc
- remove all defines from inside the struct definitionChanges in v3:
- add note to commit message
- move switch statement intoif(touch_ret == 0)branch
- addMODULE_AUTHORChanges in v2:
- do not change spacing inKconfig
- make structmfd_cellpart of structmxs_lradc
- use switch instead of if inmxs_lradc_irq_mask
- use only necessary header files inmxs_lradc.h
- usedevm_mfd_add_device
- use separate function to register mfd device
- change licence to GPL
- add copyrightdrivers/mfd/Kconfig | 17 +++ drivers/mfd/Makefile | 1 + drivers/mfd/mxs-lradc.c | 259 ++++++++++++++++++++++++++++++++++++++++++ include/linux/mfd/mxs-lradc.h | 203 +++++++++++++++++++++++++++++++++ 4 files changed, 480 insertions(+) create mode 100644 drivers/mfd/mxs-lradc.c create mode 100644 include/linux/mfd/mxs-lradc.hdrivers/mfd/Kconfig +17
-0@@ -271,6 +271,23 @@ config MFD_MC13XXX_I2C help Select this if your MC13xxx is connected via an I2C bus. +config MFD_MXS_LRADC + tristate "Freescale i.MX23/i.MX28 LRADC" + depends on ARCH_MXS || COMPILE_TEST + select MFD_CORE + select STMP_DEVICE + help + Say yes here to build support for the Low Resolution + Analog-to-Digital Converter (LRADC) found on the i.MX23 and i.MX28 + processors. This driver provides common support for accessing the + device, additional drivers must be enabled in order to use the + functionality of the device: + mxs-lradc-adc for ADC readings + mxs-lradc-ts for touchscreen support + + This driver can also be built as a module. If so, the module will be + called mxs-lradc. + config MFD_HI6421_PMIC tristate "HiSilicon Hi6421 PMU/Codec IC" depends on OFdrivers/mfd/Makefile +1
-0@@ -198,3 +198,4 @@ intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o intel-soc-pmic-$(CONFIG_INTEL_PMC_IPC) += intel_soc_pmic_bxtwc.o obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o obj-$(CONFIG_MFD_MT6397) += mt6397-core.o +obj-$(CONFIG_MFD_MXS_LRADC) += mxs-lradc.odrivers/mfd/mxs-lradc.c new file +0
-0
drivers/mfd/mxs-lradc.c line 2
Quoted 2 lines
drivers/mfd/mxs-lradc.c new file +2
-0@@ -0,0 +1,259 @@ +/* +* Freescale MXS LRADC driver
Please use the full name here. It's helpful if people are trying to figure out what LRADC actually means.
Quoted 149 lines
drivers/mfd/mxs-lradc.c new file +149
-0+* Copyright (c) 2012 DENX Software Engineering, GmbH. +* Copyright (c) 2016 Ksenija Stanojevic <[email protected]> +* +* Authors: +* Marek Vasut <[email protected]> +* Ksenija Stanojevic <[email protected]> +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* 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. +*/ + +#include <linux/clk.h> +#include <linux/device.h> +#include <linux/mfd/core.h> +#include <linux/mfd/mxs-lradc.h> +#include <linux/module.h> +#include <linux/of.h> +#include <linux/of_device.h> +#include <linux/platform_device.h> +#include <linux/slab.h> + +#define MXS_LRADC_BASE 0x80050000 + +enum mx23_lradc_irqs { +MX23_LRADC_TS_IRQ =0 , +MX23_LRADC_CH0_IRQ , +MX23_LRADC_CH1_IRQ , +MX23_LRADC_CH2_IRQ , +MX23_LRADC_CH3_IRQ , +MX23_LRADC_CH4_IRQ , +MX23_LRADC_CH5_IRQ , +MX23_LRADC_CH6_IRQ , +MX23_LRADC_CH7_IRQ , +}; + +enum mx28_lradc_irqs { +MX28_LRADC_TS_IRQ =0 , +MX28_LRADC_TRESH0_IRQ , +MX28_LRADC_TRESH1_IRQ , +MX28_LRADC_CH0_IRQ , +MX28_LRADC_CH1_IRQ , +MX28_LRADC_CH2_IRQ , +MX28_LRADC_CH3_IRQ , +MX28_LRADC_CH4_IRQ , +MX28_LRADC_CH5_IRQ , +MX28_LRADC_CH6_IRQ , +MX28_LRADC_CH7_IRQ , +MX28_LRADC_BUTTON0_IRQ , +MX28_LRADC_BUTTON1_IRQ , +}; + +static struct resource mx23_adc_resources[] = { +DEFINE_RES_MEM (MXS_LRADC_BASE ,0x1fff ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_CH0_IRQ ,"mxs-lradc-channel0" ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_CH1_IRQ ,"mxs-lradc-channel1" ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_CH2_IRQ ,"mxs-lradc-channel2" ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_CH3_IRQ ,"mxs-lradc-channel3" ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_CH4_IRQ ,"mxs-lradc-channel4" ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_CH5_IRQ ,"mxs-lradc-channel5" ), +}; + +static struct resource mx23_touchscreen_resources[] = { +DEFINE_RES_MEM (MXS_LRADC_BASE ,0x1fff ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_TS_IRQ ,"mxs-lradc-touchscreen" ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_CH6_IRQ ,"mxs-lradc-channel6" ), +DEFINE_RES_IRQ_NAMED (MX23_LRADC_CH7_IRQ ,"mxs-lradc-channel7" ), +}; + +static struct resource mx28_adc_resources[] = { +DEFINE_RES_MEM (MXS_LRADC_BASE ,0x1fff ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_TRESH0_IRQ ,"mxs-lradc-thresh0" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_TRESH1_IRQ ,"mxs-lradc-thresh1" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_CH0_IRQ ,"mxs-lradc-channel0" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_CH1_IRQ ,"mxs-lradc-channel1" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_CH2_IRQ ,"mxs-lradc-channel2" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_CH3_IRQ ,"mxs-lradc-channel3" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_CH4_IRQ ,"mxs-lradc-channel4" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_CH5_IRQ ,"mxs-lradc-channel5" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_BUTTON0_IRQ ,"mxs-lradc-button0" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_BUTTON1_IRQ ,"mxs-lradc-button1" ), +}; + +static struct resource mx28_touchscreen_resources[] = { +DEFINE_RES_MEM (MXS_LRADC_BASE ,0x1fff ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_TS_IRQ ,"mxs-lradc-touchscreen" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_CH6_IRQ ,"mxs-lradc-channel6" ), +DEFINE_RES_IRQ_NAMED (MX28_LRADC_CH7_IRQ ,"mxs-lradc-channel7" ), +}; + +static struct mfd_cell mx23_cells[] = { + { + .name ="mxs-lradc-adc" , + .resources = mx23_adc_resources, + .num_resources =ARRAY_SIZE (mx23_adc_resources), + }, + { + .name ="mxs-lradc-ts" , + .resources = mx23_touchscreen_resources, + .num_resources =ARRAY_SIZE (mx23_touchscreen_resources), + }, +}; + +static struct mfd_cell mx28_cells[] = { + { + .name ="mxs-lradc-adc" , + .resources = mx28_adc_resources, + .num_resources =ARRAY_SIZE (mx28_adc_resources), + }, + { + .name ="mxs-lradc-ts" , + .resources = mx28_touchscreen_resources, + .num_resources =ARRAY_SIZE (mx28_touchscreen_resources), + } +}; + +static const struct of_device_id mxs_lradc_dt_ids[] = { + { .compatible ="fsl,imx23-lradc" , .data = (void *)IMX23_LRADC , }, + { .compatible ="fsl,imx28-lradc" , .data = (void *)IMX28_LRADC , }, + {/* sentinel */ } +}; +MODULE_DEVICE_TABLE (of, mxs_lradc_dt_ids); + +static int mxs_lradc_probe (struct platform_device *pdev) +{ +const struct of_device_id *of_id; +struct device *dev = &pdev->dev; +struct device_node *node = dev->of_node; +struct mxs_lradc *lradc; +struct mfd_cell *cells =NULL ; +int ret =0 ; +u32 ts_wires =0 ; + + lradc =devm_kzalloc (&pdev->dev,sizeof (*lradc),GFP_KERNEL ); +if (!lradc) +return -ENOMEM ; + + of_id =of_match_device (mxs_lradc_dt_ids, &pdev->dev); + lradc->soc = (enum mxs_lradc_id )of_id->data; + + lradc->clk =devm_clk_get (&pdev->dev,NULL ); +if (IS_ERR (lradc->clk)) { +dev_err (dev,"Failed to get the delay unit clock\n" );
drivers/mfd/mxs-lradc.c line 162
Quoted 10 lines
drivers/mfd/mxs-lradc.c new file +10
-0+return PTR_ERR (lradc->clk); + } + + ret =clk_prepare_enable (lradc->clk); +if (ret) { +dev_err (dev,"Failed to enable the delay unit clock\n" ); +return ret; + } + + ret = of_property_read_u32(node, "fsl,lradc-touchscreen-wires",
Have you moved the documentation into devicetree/bindings/mfd?
Quoted 28 lines
drivers/mfd/mxs-lradc.c new file +28
-0+ &ts_wires); + +if (!ret) { + lradc->buffer_vchans =BUFFER_VCHANS_LIMITED ; + +switch (ts_wires) { +case 4 : + lradc->touchscreen_wire =MXS_LRADC_TOUCHSCREEN_4WIRE ; +break ; +case 5 : +if (lradc->soc ==IMX28_LRADC ) { + lradc->touchscreen_wire = +MXS_LRADC_TOUCHSCREEN_5WIRE ; +break ; + } +/* fall through to an error message for i.MX23 */ +default : +dev_err (&pdev->dev, +"Unsupported number of touchscreen wires (%d)\n" + , ts_wires); + ret = -EINVAL ; + goto err_clk; + } + }else { + lradc->buffer_vchans =BUFFER_VCHANS_ALL ; + } + +platform_set_drvdata (pdev, lradc);
drivers/mfd/mxs-lradc.c line 200
Quoted 10 lines
drivers/mfd/mxs-lradc.c new file +10
-0+ +switch (lradc->soc) { +case IMX23_LRADC : + cells = mx23_cells; +break ; +case IMX28_LRADC : + cells = mx28_cells; +break ; +default : +dev_err (dev,"Unsupported soc.\n" );
Nit: SoC
... and drop the '.'.
drivers/mfd/mxs-lradc.c line 206
Quoted 6 lines
drivers/mfd/mxs-lradc.c new file +6
-0+ ret = -ENODEV ; + goto err_clk; + } + + cells[0 ].platform_data = lradc; + cells[0 ].pdata_size =sizeof (*lradc);
This is fragile.
Define '0' here, in case things get moved around.
Better still. Since both cells are identical except resources, why don't you remove one of them and dynamically set them in the switch() above?
drivers/mfd/mxs-lradc.c line 216
Quoted 9 lines
drivers/mfd/mxs-lradc.c new file +9
-0+ ret =devm_mfd_add_devices (&pdev->dev,PLATFORM_DEVID_NONE , &cells[0 ], +1 ,NULL ,0 ,NULL ); +if (ret) { +dev_err (&pdev->dev,"Failed to add the ADC subdevice\n" ); + goto err_clk; + } + +if (!lradc->touchscreen_wire) +return 0 ;
This is ugly. Instead, fail in the touchscreen driver if you do not have what you need.
Quoted 251 lines
drivers/mfd/mxs-lradc.c new file +42
-0+ cells[1 ].platform_data = lradc; + cells[1 ].pdata_size =sizeof (*lradc); + + ret =devm_mfd_add_devices (&pdev->dev,PLATFORM_DEVID_NONE , &cells[1 ], +1 ,NULL ,0 ,NULL ); +if (ret) { +dev_err (&pdev->dev, +"Failed to add the touchscreen subdevice\n" ); + goto err_clk; + } + +return 0 ; + +err_clk: +clk_disable_unprepare (lradc->clk); + +return ret; +} + +static int mxs_lradc_remove (struct platform_device *pdev) +{ +struct mxs_lradc *lradc =platform_get_drvdata (pdev); + +clk_disable_unprepare (lradc->clk); + +return 0 ; +} + +static struct platform_driver mxs_lradc_driver = { + .driver = { + .name ="mxs-lradc" , + .of_match_table = mxs_lradc_dt_ids, + }, + .probe = mxs_lradc_probe, + .remove = mxs_lradc_remove, +}; +module_platform_driver (mxs_lradc_driver); + +MODULE_AUTHOR ("Ksenija Stanojevic <[email protected]>" ); +MODULE_DESCRIPTION ("Freescale i.MX23/i.MX28 LRADC driver" ); +MODULE_LICENSE ("GPL" ); +MODULE_ALIAS ("platform:mxs-lradc" );include/linux/mfd/mxs-lradc.h new file +203
-0@@ -0,0 +1,203 @@ +/* +* Freescale MXS LRADC driver +* +* Copyright (c) 2012 DENX Software Engineering, GmbH. +* Copyright (c) 2016 Ksenija Stanojevic <[email protected]> +* +* Author: Marek Vasut <[email protected]> +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* 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 __MFD_MXS_LRADC_H +#define __MFD_MXS_LRADC_H + +#include <linux/bitops.h> +#include <linux/io.h> +#include <linux/stmp_device.h> + +#define LRADC_MAX_DELAY_CHANS 4 +#define LRADC_MAX_MAPPED_CHANS 8 +#define LRADC_MAX_TOTAL_CHANS 16 + +#define LRADC_DELAY_TIMER_HZ 2000 + +#define LRADC_CTRL0 0x00 +# define LRADC_CTRL0_MX28_TOUCH_DETECT_ENABLE BIT(23) +# define LRADC_CTRL0_MX28_TOUCH_SCREEN_TYPE BIT(22) +# define LRADC_CTRL0_MX28_YNNSW /* YM */ BIT(21) +# define LRADC_CTRL0_MX28_YPNSW /* YP */ BIT(20) +# define LRADC_CTRL0_MX28_YPPSW /* YP */ BIT(19) +# define LRADC_CTRL0_MX28_XNNSW /* XM */ BIT(18) +# define LRADC_CTRL0_MX28_XNPSW /* XM */ BIT(17) +# define LRADC_CTRL0_MX28_XPPSW /* XP */ BIT(16) + +# define LRADC_CTRL0_MX23_TOUCH_DETECT_ENABLE BIT(20) +# define LRADC_CTRL0_MX23_YM BIT(19) +# define LRADC_CTRL0_MX23_XM BIT(18) +# define LRADC_CTRL0_MX23_YP BIT(17) +# define LRADC_CTRL0_MX23_XP BIT(16) + +# define LRADC_CTRL0_MX28_PLATE_MASK \ + (LRADC_CTRL0_MX28_TOUCH_DETECT_ENABLE | \ + LRADC_CTRL0_MX28_YNNSW | LRADC_CTRL0_MX28_YPNSW | \ + LRADC_CTRL0_MX28_YPPSW | LRADC_CTRL0_MX28_XNNSW | \ + LRADC_CTRL0_MX28_XNPSW | LRADC_CTRL0_MX28_XPPSW) + +# define LRADC_CTRL0_MX23_PLATE_MASK \ + (LRADC_CTRL0_MX23_TOUCH_DETECT_ENABLE | \ + LRADC_CTRL0_MX23_YM | LRADC_CTRL0_MX23_XM | \ + LRADC_CTRL0_MX23_YP | LRADC_CTRL0_MX23_XP) + +#define LRADC_CTRL1 0x10 +#define LRADC_CTRL1_TOUCH_DETECT_IRQ_EN BIT(24) +#define LRADC_CTRL1_LRADC_IRQ_EN (n) (1 << ((n) + 16)) +#define LRADC_CTRL1_MX28_LRADC_IRQ_EN_MASK (0x1fff << 16) +#define LRADC_CTRL1_MX23_LRADC_IRQ_EN_MASK (0x01ff << 16) +#define LRADC_CTRL1_LRADC_IRQ_EN_OFFSET 16 +#define LRADC_CTRL1_TOUCH_DETECT_IRQ BIT(8) +#define LRADC_CTRL1_LRADC_IRQ (n) (1 << (n)) +#define LRADC_CTRL1_MX28_LRADC_IRQ_MASK 0x1fff +#define LRADC_CTRL1_MX23_LRADC_IRQ_MASK 0x01ff +#define LRADC_CTRL1_LRADC_IRQ_OFFSET 0 + +#define LRADC_CTRL2 0x20 +#define LRADC_CTRL2_DIVIDE_BY_TWO_OFFSET 24 +#define LRADC_CTRL2_TEMPSENSE_PWD BIT(15) + +#define LRADC_STATUS 0x40 +#define LRADC_STATUS_TOUCH_DETECT_RAW BIT(0) + +#define LRADC_CH (n) (0x50 + (0x10 * (n))) +#define LRADC_CH_ACCUMULATE BIT(29) +#define LRADC_CH_NUM_SAMPLES_MASK (0x1f << 24) +#define LRADC_CH_NUM_SAMPLES_OFFSET 24 +#define LRADC_CH_NUM_SAMPLES (x) \ + ((x) << LRADC_CH_NUM_SAMPLES_OFFSET) +#define LRADC_CH_VALUE_MASK 0x3ffff +#define LRADC_CH_VALUE_OFFSET 0 + +#define LRADC_DELAY (n) (0xd0 + (0x10 * (n))) +#define LRADC_DELAY_TRIGGER_LRADCS_MASK (0xffUL << 24) +#define LRADC_DELAY_TRIGGER_LRADCS_OFFSET 24 +#define LRADC_DELAY_TRIGGER (x) \ + (((x) << LRADC_DELAY_TRIGGER_LRADCS_OFFSET) & \ + LRADC_DELAY_TRIGGER_LRADCS_MASK) +#define LRADC_DELAY_KICK BIT(20) +#define LRADC_DELAY_TRIGGER_DELAYS_MASK (0xf << 16) +#define LRADC_DELAY_TRIGGER_DELAYS_OFFSET 16 +#define LRADC_DELAY_TRIGGER_DELAYS (x) \ + (((x) << LRADC_DELAY_TRIGGER_DELAYS_OFFSET) & \ + LRADC_DELAY_TRIGGER_DELAYS_MASK) +#define LRADC_DELAY_LOOP_COUNT_MASK (0x1f << 11) +#define LRADC_DELAY_LOOP_COUNT_OFFSET 11 +#define LRADC_DELAY_LOOP (x) \ + (((x) << LRADC_DELAY_LOOP_COUNT_OFFSET) & \ + LRADC_DELAY_LOOP_COUNT_MASK) +#define LRADC_DELAY_DELAY_MASK 0x7ff +#define LRADC_DELAY_DELAY_OFFSET 0 +#define LRADC_DELAY_DELAY (x) \ + (((x) << LRADC_DELAY_DELAY_OFFSET) & \ + LRADC_DELAY_DELAY_MASK) + +#define LRADC_CTRL4 0x140 +#define LRADC_CTRL4_LRADCSELECT_MASK (n) (0xf << ((n) * 4)) +#define LRADC_CTRL4_LRADCSELECT_OFFSET (n) ((n) * 4) +#define LRADC_CTRL4_LRADCSELECT (n, x) \ + (((x) << LRADC_CTRL4_LRADCSELECT_OFFSET(n)) & \ + LRADC_CTRL4_LRADCSELECT_MASK(n)) + +#define LRADC_RESOLUTION 12 +#define LRADC_SINGLE_SAMPLE_MASK ((1 << LRADC_RESOLUTION) - 1) + +#define BUFFER_VCHANS_LIMITED 0x3f +#define BUFFER_VCHANS_ALL 0xff + +/* +* Certain LRADC channels are shared between touchscreen +* and/or touch-buttons and generic LRADC block. Therefore when using +* either of these, these channels are not available for the regular +* sampling. The shared channels are as follows: +* +* CH0 -- Touch button #0 +* CH1 -- Touch button #1 +* CH2 -- Touch screen XPUL +* CH3 -- Touch screen YPLL +* CH4 -- Touch screen XNUL +* CH5 -- Touch screen YNLR +* CH6 -- Touch screen WIPER (5-wire only) +* +* The bit fields below represents which parts of the LRADC block are +* switched into special mode of operation. These channels can not +* be sampled as regular LRADC channels. The driver will refuse any +* attempt to sample these channels. +*/ +#define CHAN_MASK_TOUCHBUTTON (BIT(1) | BIT(0)) +#define CHAN_MASK_TOUCHSCREEN_4WIRE (0xf << 2) +#define CHAN_MASK_TOUCHSCREEN_5WIRE (0x1f << 2) + +enum mxs_lradc_id { +IMX23_LRADC , +IMX28_LRADC , +}; + +enum mxs_lradc_ts_wires { +MXS_LRADC_TOUCHSCREEN_NONE =0 , +MXS_LRADC_TOUCHSCREEN_4WIRE , +MXS_LRADC_TOUCHSCREEN_5WIRE , +}; + +/** +* struct mxs_lradc +* @soc: soc type (IMX23 or IMX28) +* @clk: 2 kHz clock for delay units +* @buffer_vchans: channels that can be used during buffered capture +* @touchscreen_wire: touchscreen type (4-wire or 5-wire) +* @use_touchbutton: button state (on or off) +*/ +struct mxs_lradc { +enum mxs_lradc_id soc; +struct clk *clk; +u8 buffer_vchans; + +enum mxs_lradc_ts_wires touchscreen_wire; +bool use_touchbutton; +}; + +static inline void mxs_lradc_reg_set (void __iomem *base,u32 val,u32 reg) +{ +writel (val, base + reg +STMP_OFFSET_REG_SET ); +} + +static inline void mxs_lradc_reg_clear (void __iomem *base,u32 val, +u32 reg) +{ +writel (val, base + reg +STMP_OFFSET_REG_CLR ); +} + +static inline void mxs_lradc_reg_wrt (void __iomem *base,u32 val,u32 reg) +{ +writel (val, base + reg); +} + +static inline u32 mxs_lradc_irq_mask (struct mxs_lradc *lradc) +{ +switch (lradc->soc) { +case IMX23_LRADC : +return LRADC_CTRL1_MX23_LRADC_IRQ_MASK ; +case IMX28_LRADC : +return LRADC_CTRL1_MX28_LRADC_IRQ_MASK ; +default : +return 0 ; + } +} + +#endif /* __MXS_LRADC_H */
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH v6 1/4] mfd: mxs-lradc: Add support for mxs-lradc MFD
Hi Lee,
Quoted 32 lines
Lee Jones <[email protected]> hat am 28. September 2016 um 03:05 geschrieben:
=20
=20
On Sat, 17 Sep 2016, Ksenija Stanojevic wrote:
=20Quoted 26 lines
(quoted diff) +26
-0+ +static int mxs_lradc_probe(struct platform_device *pdev) +{ +=09const struct of_device_id *of_id; +=09struct device *dev =3D &pdev->dev; +=09struct device_node *node =3D dev->of_node; +=09struct mxs_lradc *lradc; +=09struct mfd_cell *cells =3D NULL; +=09int ret =3D 0; +=09u32 ts_wires =3D 0; + +=09lradc =3D devm_kzalloc(&pdev->dev, sizeof(*lradc), GFP_KERNEL); +=09if (!lradc) +=09=09return -ENOMEM; + +=09of_id =3D of_match_device(mxs_lradc_dt_ids, &pdev->dev); +=09lradc->soc =3D (enum mxs_lradc_id)of_id->data; + +=09lradc->clk =3D devm_clk_get(&pdev->dev, NULL); +=09if (IS_ERR(lradc->clk)) { +=09=09dev_err(dev, "Failed to get the delay unit clock\n"); +=09=09return PTR_ERR(lradc->clk); +=09} + +=09ret =3D clk_prepare_enable(lradc->clk); +=09if (ret) {
Quoted 8 lines
Quoted 5 lines
+=09=09dev_err(dev, "Failed to enable the delay unit clock\n"); +=09=09return ret; +=09}+
+=09ret =3D of_property_read_u32(node, "fsl,lradc-touchscreen-wires",=20
Have you moved the documentation into devicetree/bindings/mfd? =20
i hope it's okay if i answer. The binding has moved to devicetree/binding/iio/adc/ [1]
Should it move completely to mfd or split too?
I'm asking myself how we keep DT ABI in the latter case.
[1] -
http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/iio/=adc/mxs-lradc.txt
Quoted 6 lines
=20
--=20
Lee Jones
Linaro STMicroelectronics Landing Team Lead Linaro.org =E2=94=82 Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH v6 1/4] mfd: mxs-lradc: Add support for mxs-lradc MFD
Quoted 44 lines · Stefan Wahren
Quoted 31 lines
Lee Jones <[email protected]> hat am 28. September 2016 um 03:05 geschrieben:
Quoted 25 lines · Ksenija Stanojevic
drivers/mfd/mxs-lradc.c new file +25
-0+ +static int mxs_lradc_probe (struct platform_device *pdev) +{ +const struct of_device_id *of_id; +struct device *dev = &pdev->dev; +struct device_node *node = dev->of_node; +struct mxs_lradc *lradc; +struct mfd_cell *cells =NULL ; +int ret =0 ; +u32 ts_wires =0 ; + + lradc =devm_kzalloc (&pdev->dev,sizeof (*lradc),GFP_KERNEL ); +if (!lradc) +return -ENOMEM ; + + of_id =of_match_device (mxs_lradc_dt_ids, &pdev->dev); + lradc->soc = (enum mxs_lradc_id )of_id->data; + + lradc->clk =devm_clk_get (&pdev->dev,NULL ); +if (IS_ERR (lradc->clk)) { +dev_err (dev,"Failed to get the delay unit clock\n" ); +return PTR_ERR (lradc->clk); + } + + ret =clk_prepare_enable (lradc->clk);Quoted 9 lines
drivers/mfd/mxs-lradc.c line 162
Quoted 6 lines
drivers/mfd/mxs-lradc.c new file +6
-0+if (ret) { +dev_err (dev,"Failed to enable the delay unit clock\n" ); +return ret; + } + + ret = of_property_read_u32(node, "fsl,lradc-touchscreen-wires",Have you moved the documentation into devicetree/bindings/mfd?
i hope it's okay if i answer. The binding has moved to devicetree/binding/iio/adc/ [1]
Quoted 6 lines
Should it move completely to mfd or split too?
I'm asking myself how we keep DT ABI in the latter case.
[1] -
http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/iio/adc/mxs-lradc.txt
I haven't read into the documentation too to deeply, but it stands to reason that the bindings which are now being used in MFD should be documented in the MFD binding document, and the ones which are no longer used in the IIO driver should be removed.
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH v6 1/4] mfd: mxs-lradc: Add support for mxs-lradc MFD
Hi Lee,
[add Rob and Mark]
Quoted 53 lines
Lee Jones <[email protected]> hat am 29. September 2016 um 19:15 geschrieben:
Quoted 48 lines · Stefan Wahren
Quoted 31 lines
Lee Jones <[email protected]> hat am 28. September 2016 um 03:05 geschrieben:
Quoted 25 lines · Ksenija Stanojevic
drivers/mfd/mxs-lradc.c new file +25
-0+ +static int mxs_lradc_probe (struct platform_device *pdev) +{ +const struct of_device_id *of_id; +struct device *dev = &pdev->dev; +struct device_node *node = dev->of_node; +struct mxs_lradc *lradc; +struct mfd_cell *cells =NULL ; +int ret =0 ; +u32 ts_wires =0 ; + + lradc =devm_kzalloc (&pdev->dev,sizeof (*lradc),GFP_KERNEL ); +if (!lradc) +return -ENOMEM ; + + of_id =of_match_device (mxs_lradc_dt_ids, &pdev->dev); + lradc->soc = (enum mxs_lradc_id )of_id->data; + + lradc->clk =devm_clk_get (&pdev->dev,NULL ); +if (IS_ERR (lradc->clk)) { +dev_err (dev,"Failed to get the delay unit clock\n" ); +return PTR_ERR (lradc->clk); + } + + ret =clk_prepare_enable (lradc->clk);Quoted 9 lines
drivers/mfd/mxs-lradc.c line 162
Quoted 6 lines
drivers/mfd/mxs-lradc.c new file +6
-0+if (ret) { +dev_err (dev,"Failed to enable the delay unit clock\n" ); +return ret; + } + + ret = of_property_read_u32(node, "fsl,lradc-touchscreen-wires",Have you moved the documentation into devicetree/bindings/mfd?
i hope it's okay if i answer. The binding has moved to devicetree/binding/iio/adc/ [1]
Should it move completely to mfd or split too?
I'm asking myself how we keep DT ABI in the latter case.
Quoted 7 lines
Quoted 2 lines
[1] -
http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/iio/adc/mxs-lradc.txtI haven't read into the documentation too to deeply, but it stands to reason that the bindings which are now being used in MFD should be documented in the MFD binding document, and the ones which are no longer used in the IIO driver should be removed.
sure, that isn't a problem.
The more interesting question would be: do we need a new compatible string for the mfd driver?
In that case the ADC won't probe for the combination of old devicetree blobs and new kernel.
Regards
Stefan
Quoted 6 lines
Signature · 5 lines
-- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH v6 1/4] mfd: mxs-lradc: Add support for mxs-lradc MFD
Quoted 65 lines · Stefan Wahren
Hi Lee,
[add Rob and Mark]
Quoted 53 lines
Lee Jones <[email protected]> hat am 29. September 2016 um 19:15 geschrieben:
Quoted 48 lines · Stefan Wahren
Quoted 31 lines
Lee Jones <[email protected]> hat am 28. September 2016 um 03:05 geschrieben:
Quoted 25 lines · Ksenija Stanojevic
drivers/mfd/mxs-lradc.c new file +25
-0+ +static int mxs_lradc_probe (struct platform_device *pdev) +{ +const struct of_device_id *of_id; +struct device *dev = &pdev->dev; +struct device_node *node = dev->of_node; +struct mxs_lradc *lradc; +struct mfd_cell *cells =NULL ; +int ret =0 ; +u32 ts_wires =0 ; + + lradc =devm_kzalloc (&pdev->dev,sizeof (*lradc),GFP_KERNEL ); +if (!lradc) +return -ENOMEM ; + + of_id =of_match_device (mxs_lradc_dt_ids, &pdev->dev); + lradc->soc = (enum mxs_lradc_id )of_id->data; + + lradc->clk =devm_clk_get (&pdev->dev,NULL ); +if (IS_ERR (lradc->clk)) { +dev_err (dev,"Failed to get the delay unit clock\n" ); +return PTR_ERR (lradc->clk); + } + + ret =clk_prepare_enable (lradc->clk);Quoted 9 lines
drivers/mfd/mxs-lradc.c line 162
Quoted 6 lines
drivers/mfd/mxs-lradc.c new file +6
-0+if (ret) { +dev_err (dev,"Failed to enable the delay unit clock\n" ); +return ret; + } + + ret = of_property_read_u32(node, "fsl,lradc-touchscreen-wires",Have you moved the documentation into devicetree/bindings/mfd?
i hope it's okay if i answer. The binding has moved to devicetree/binding/iio/adc/ [1]
Should it move completely to mfd or split too?
I'm asking myself how we keep DT ABI in the latter case.
Quoted 7 lines
Quoted 2 lines
[1] -
http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/iio/adc/mxs-lradc.txtI haven't read into the documentation too to deeply, but it stands to reason that the bindings which are now being used in MFD should be documented in the MFD binding document, and the ones which are no longer used in the IIO driver should be removed.
Quoted 4 lines
sure, that isn't a problem.
The more interesting question would be: do we need a new compatible string for the mfd driver?
No, I don't think that is necessary.
Quoted 2 lines
In that case the ADC won't probe for the combination of old devicetree blobs and new kernel.
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH v6 2/4 iio: adc: mxs-lradc: Add support for adc driver
In reply to Ksenija StanojevicAdd support for sixteen-channel 12-bit resolution ADC and its functions, which include general-purpose ADC readings, battery voltage measurement, and die temperature measurement.
---
Changes in v6:
- update copyright
Changes in v5:
- add field void __iomem *base to struct mxs_lradc_adc
- change arguments in all functions for accessing I/O memory to follow the previous change.
- use devm_ioremap for mapping I/O memory
Changes in v4:
- update copyright
- use platform_get_irq_byname
- use irq_of_parse_and_map
Changes in v3:
- make buffer large enough for timestamps
- remove unnecessary blank lines
Changes in v2:
- improve commit message
- do not change spacing in Kconfig
- impove formating
- remove wrapper show_scale_avail
- use correct syntax for comments
- use devm_iio_trigger_alloc
- do not allocate buffer dynamically
- use iio_device_claim_*_mode helpers
- add spinlock in struct mxs_lradc_ts to enable locking in interrupt handler
- only grab irqs that are relevant to adc
- remove blank line at the end of the file
- change licence to GPL
- add copyright
drivers/iio/adc/Kconfig | 13 + drivers/iio/adc/Makefile | 1 + drivers/iio/adc/mxs-lradc-adc.c | 845 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 859 insertions(+) create mode 100644 drivers/iio/adc/mxs-lradc-adc.c
drivers/iio/adc/Kconfig +13 -0
@@ -194,6 +194,19 @@ config EXYNOS_ADC To compile this driver as a module, choose M here: the module will be called exynos_adc. +config MXS_LRADC_ADC + tristate "Freescale i.MX23/i.MX28 LRADC ADC" + depends on MFD_MXS_LRADC + select IIO_BUFFER + select IIO_TRIGGERED_BUFFER + help + Say yes here to build support for the ADC functions of the + i.MX23/i.MX28 LRADC. This includes general-purpose ADC readings, + battery voltage measurement, and die temperature measurement. + + This driver can also be built as a module. If so, the module will be + called mxs-lradc-adc. + config HI8435 tristate "Holt Integrated Circuits HI-8435 threshold detector" select IIO_TRIGGERED_EVENT
drivers/iio/adc/Makefile +1 -0
@@ -29,6 +29,7 @@ obj-$(CONFIG_MAX1363) += max1363.o obj-$(CONFIG_MCP320X) += mcp320x.o obj-$(CONFIG_MCP3422) += mcp3422.o obj-$(CONFIG_MEN_Z188_ADC) += men_z188_adc.o +obj-$(CONFIG_MXS_LRADC_ADC) += mxs-lradc-adc.o obj-$(CONFIG_MXS_LRADC) += mxs-lradc.o obj-$(CONFIG_NAU7802) += nau7802.o obj-$(CONFIG_PALMAS_GPADC) += palmas_gpadc.o
drivers/iio/adc/mxs-lradc-adc.c new file +845 -0
845 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v6 3/4 input: touchscreen: mxs-lradc: Add support for touchscreen
In reply to Ksenija StanojevicAdd 4-wire/5-wire touchscreen controller.
---
Changes in v6:
- update copyright
Changes in v5:
- add field void __iomem *base to struct mxs_lradc_ts
- change arguments in all functions for accessing I/O memory to follow the previous change.
- use devm_ioremap for mapping I/O memory
Changes in v4:
- update copyright
- use platform_get_irq_byname
- use irq_of_parse_and_map
Changes in v3:
- add MODULE_*(ALIAS, AUTHOR, DESCRIPTION)
Changes in v2:
- do not change spacing in Kconfig
- remove dev.parent
- rename err_ts_register to error
- combine functions hw_stop and disable_ts so that mxs_lradc_ts_remove could be deleted.
- add spinlock in struct mxs_lradc_ts to enable locking in interrupt handler.
- only grab irqs that are relevant to touchscreen
- use direct return instead assigning error to touch_ret in probe function.
- change licence to GPL
- add copyright
drivers/input/touchscreen/Kconfig | 10 + drivers/input/touchscreen/Makefile | 1 + drivers/input/touchscreen/mxs-lradc-ts.c | 743 +++++++++++++++++++++++++++++++ 3 files changed, 754 insertions(+) create mode 100644 drivers/input/touchscreen/mxs-lradc-ts.c
drivers/input/touchscreen/Kconfig +10 -0
@@ -305,6 +305,16 @@ config TOUCHSCREEN_EGALAX_SERIAL To compile this driver as a module, choose M here: the module will be called egalax_ts_serial. +config TOUCHSCREEN_MXS_LRADC + tristate "Freescale i.MX23/i.MX28 LRADC touchscreen" + depends on MFD_MXS_LRADC + help + Say Y here if you have a touchscreen connected to the low-resolution + analog-to-digital converter (LRADC) on an i.MX23 or i.MX28 processor. + + To compile this driver as a module, choose M here: the module will be + called mxs-lradc-ts. + config TOUCHSCREEN_FT6236 tristate "FT6236 I2C touchscreen" depends on I2C
drivers/input/touchscreen/Makefile +1 -0
@@ -52,6 +52,7 @@ obj-$(CONFIG_TOUCHSCREEN_MIGOR) += migor_ts.o obj-$(CONFIG_TOUCHSCREEN_MMS114) += mms114.o obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o obj-$(CONFIG_TOUCHSCREEN_MK712) += mk712.o +obj-$(CONFIG_TOUCHSCREEN_MXS_LRADC) += mxs-lradc-ts.o obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680_ts_input.o obj-$(CONFIG_TOUCHSCREEN_HP7XX) += jornada720_ts.o obj-$(CONFIG_TOUCHSCREEN_IPAQ_MICRO) += ipaq-micro-ts.o
drivers/input/touchscreen/mxs-lradc-ts.c new file +743 -0
743 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v6 4/4 iio: adc: mxs-lradc: Remove driver
In reply to Ksenija StanojevicSince the driver has been split into mfd there is no reason for it to stay, so remove it.
---
Changes in v6:
-none
Changes in v5:
- none
Changes in v4:
- none
Changes in v3:
- none
Changes in v2:
- add to the patchset
drivers/iio/adc/Kconfig | 14 - drivers/iio/adc/Makefile | 1 - drivers/iio/adc/mxs-lradc.c | 1775 ------------------------------------------- 3 files changed, 1790 deletions(-) delete mode 100644 drivers/iio/adc/mxs-lradc.c
drivers/iio/adc/Kconfig +0 -14
@@ -310,20 +310,6 @@ config MEN_Z188_ADC This driver can also be built as a module. If so, the module will be called men_z188_adc. -config MXS_LRADC - tristate "Freescale i.MX23/i.MX28 LRADC" - depends on (ARCH_MXS || COMPILE_TEST) && HAS_IOMEM - depends on INPUT - select STMP_DEVICE - select IIO_BUFFER - select IIO_TRIGGERED_BUFFER - help - Say yes here to build support for i.MX23/i.MX28 LRADC convertor - built into these chips. - - To compile this driver as a module, choose M here: the - module will be called mxs-lradc. - config NAU7802 tristate "Nuvoton NAU7802 ADC driver" depends on I2C
drivers/iio/adc/Makefile +0 -1
@@ -30,7 +30,6 @@ obj-$(CONFIG_MCP320X) += mcp320x.o obj-$(CONFIG_MCP3422) += mcp3422.o obj-$(CONFIG_MEN_Z188_ADC) += men_z188_adc.o obj-$(CONFIG_MXS_LRADC_ADC) += mxs-lradc-adc.o -obj-$(CONFIG_MXS_LRADC) += mxs-lradc.o obj-$(CONFIG_NAU7802) += nau7802.o obj-$(CONFIG_PALMAS_GPADC) += palmas_gpadc.o obj-$(CONFIG_QCOM_SPMI_IADC) += qcom-spmi-iadc.o
drivers/iio/adc/mxs-lradc.c deleted +0 -1775
1,775 lines not on this page · raw message
Signature · 1 line
1.9.1
Quoted 9 lines
Ksenija Stanojevic <[email protected]> hat am 17. September 2016 um 12:48 geschrieben:
Split existing driver mxs-lradc into MFD with touchscreen and IIO part.
Tested on I.MX28.
Tested the patch 1 and 2 successful on a i.MX23 board.