* [PATCH v5 1/8] dt-bindings: stmpe: reformatting parameter list and use tabs only
2018-12-21 13:46 [PATCH v5 0/8] Adding support for STMPE811 ADC Philippe Schenker
@ 2018-12-21 13:46 ` Philippe Schenker
2018-12-21 18:23 ` Rob Herring
2018-12-21 13:46 ` [PATCH v5 2/8] mfd: stmpe: Move ADC related defines to header of mfd Philippe Schenker
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Philippe Schenker @ 2018-12-21 13:46 UTC (permalink / raw)
To: jic23, marcel.ziswiler, stefan
Cc: robh, alexandre.torgue, shawnguo, dmitry.torokhov, thierry.reding,
digetx, lee.jones, coquelin.stm32, Philippe Schenker, devicetree,
Max Krummenacher, Jonathan Cameron, linux-input, linux-kernel,
Rob Herring, Maxime Coquelin, Mark Rutland, linux-stm32,
linux-arm-kernel
From: Philippe Schenker <philippe.schenker@toradex.com>
This patch reformats the parameter list for stmpe device in a
table-style so it is more clear to read.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
---
Changes in v5:
- Made a one column list
- Added lee's Acked-for-MFD
- Changed author of commit to use correct email.
Changes in v4:
- New separate precursor patch for holding reformatting
Changes in v3: None
Changes in v2: None
.../bindings/input/touchscreen/stmpe.txt | 64 +++++++++++++------
.../devicetree/bindings/mfd/stmpe.txt | 14 ++--
2 files changed, 53 insertions(+), 25 deletions(-)
diff --git a/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt b/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt
index 127baa31a77a..bf66a55a7de5 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt
@@ -5,24 +5,52 @@ Required properties:
- compatible: "st,stmpe-ts"
Optional properties:
-- st,sample-time: ADC converstion time in number of clock. (0 -> 36 clocks, 1 ->
- 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks, 4 -> 80 clocks, 5 -> 96 clocks, 6
- -> 144 clocks), recommended is 4.
-- st,mod-12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
-- st,ref-sel: ADC reference source (0 -> internal reference, 1 -> external
- reference)
-- st,adc-freq: ADC Clock speed (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
-- st,ave-ctrl: Sample average control (0 -> 1 sample, 1 -> 2 samples, 2 -> 4
- samples, 3 -> 8 samples)
-- st,touch-det-delay: Touch detect interrupt delay (0 -> 10 us, 1 -> 50 us, 2 ->
- 100 us, 3 -> 500 us, 4-> 1 ms, 5 -> 5 ms, 6 -> 10 ms, 7 -> 50 ms) recommended
- is 3
-- st,settling: Panel driver settling time (0 -> 10 us, 1 -> 100 us, 2 -> 500 us, 3
- -> 1 ms, 4 -> 5 ms, 5 -> 10 ms, 6 for 50 ms, 7 -> 100 ms) recommended is 2
-- st,fraction-z: Length of the fractional part in z (fraction-z ([0..7]) = Count of
- the fractional part) recommended is 7
-- st,i-drive: current limit value of the touchscreen drivers (0 -> 20 mA typical 35
- mA max, 1 -> 50 mA typical 80 mA max)
+- st,sample-time : ADC conversion time in number of clock.
+ 0 -> 36 clocks
+ 1 -> 44 clocks
+ 2 -> 56 clocks
+ 3 -> 64 clocks
+ 4 -> 80 clocks (recommended)
+ 5 -> 96 clocks
+ 6 -> 144 clocks
+- st,mod-12b : ADC Bit mode
+ 0 -> 10bit ADC
+ 1 -> 12bit ADC
+- st,ref-sel : ADC reference source
+ 0 -> internal
+ 1 -> external
+- st,adc-freq : ADC Clock speed
+ 0 -> 1.625 MHz
+ 1 -> 3.25 MHz
+ 2 || 3 -> 6.5 MHz
+- st,ave-ctrl : Sample average control
+ 0 -> 1 sample
+ 1 -> 2 samples
+ 2 -> 4 samples
+ 3 -> 8 samples
+- st,touch-det-delay : Touch detect interrupt delay (recommended is 3)
+ 0 -> 10 us
+ 1 -> 50 us
+ 2 -> 100 us
+ 3 -> 500 us
+ 4 -> 1 ms
+ 5 -> 5 ms
+ 6 -> 10 ms
+ 7 -> 50 ms
+- st,settling : Panel driver settling time (recommended is 2)
+ 0 -> 10 us
+ 1 -> 100 us
+ 2 -> 500 us
+ 3 -> 1 ms
+ 4 -> 5 ms
+ 5 -> 10 ms
+ 6 -> 50 ms
+ 7 -> 100 ms
+- st,fraction-z : Length of the fractional part in z (recommended is 7)
+ (fraction-z ([0..7]) = Count of the fractional part)
+- st,i-drive : current limit value of the touchscreen drivers
+ 0 -> 20 mA (typical 35mA max)
+ 1 -> 50 mA (typical 80 mA max)
Node name must be stmpe_touchscreen and should be child node of stmpe node to
which it belongs.
diff --git a/Documentation/devicetree/bindings/mfd/stmpe.txt b/Documentation/devicetree/bindings/mfd/stmpe.txt
index c797c05cd3c2..a46e7177195d 100644
--- a/Documentation/devicetree/bindings/mfd/stmpe.txt
+++ b/Documentation/devicetree/bindings/mfd/stmpe.txt
@@ -4,15 +4,15 @@ STMPE is an MFD device which may expose the following inbuilt devices: gpio,
keypad, touchscreen, adc, pwm, rotator.
Required properties:
- - compatible : "st,stmpe[610|801|811|1600|1601|2401|2403]"
- - reg : I2C/SPI address of the device
+ - compatible : "st,stmpe[610|801|811|1600|1601|2401|2403]"
+ - reg : I2C/SPI address of the device
Optional properties:
- - interrupts : The interrupt outputs from the controller
- - interrupt-controller : Marks the device node as an interrupt controller
- - wakeup-source : Marks the input device as wakable
- - st,autosleep-timeout : Valid entries (ms); 4, 16, 32, 64, 128, 256, 512 and 1024
- - irq-gpio : If present, which GPIO to use for event IRQ
+ - interrupts : The interrupt outputs from the controller
+ - interrupt-controller : Marks the device node as an interrupt controller
+ - wakeup-source : Marks the input device as wakable
+ - st,autosleep-timeout : Valid entries (ms); 4, 16, 32, 64, 128, 256, 512 and 1024
+ - irq-gpio : If present, which GPIO to use for event IRQ
Example:
--
2.19.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v5 1/8] dt-bindings: stmpe: reformatting parameter list and use tabs only
2018-12-21 13:46 ` [PATCH v5 1/8] dt-bindings: stmpe: reformatting parameter list and use tabs only Philippe Schenker
@ 2018-12-21 18:23 ` Rob Herring
0 siblings, 0 replies; 9+ messages in thread
From: Rob Herring @ 2018-12-21 18:23 UTC (permalink / raw)
To: Philippe Schenker
Cc: jic23, marcel.ziswiler, stefan, robh, alexandre.torgue, shawnguo,
dmitry.torokhov, thierry.reding, digetx, lee.jones,
coquelin.stm32, Philippe Schenker, devicetree, Max Krummenacher,
Jonathan Cameron, linux-input, linux-kernel, Maxime Coquelin,
Mark Rutland, linux-stm32, linux-arm-kernel
On Fri, 21 Dec 2018 14:46:30 +0100, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker@toradex.com>
>
> This patch reformats the parameter list for stmpe device in a
> table-style so it is more clear to read.
>
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
>
> ---
>
> Changes in v5:
> - Made a one column list
> - Added lee's Acked-for-MFD
> - Changed author of commit to use correct email.
>
> Changes in v4:
> - New separate precursor patch for holding reformatting
>
> Changes in v3: None
> Changes in v2: None
>
> .../bindings/input/touchscreen/stmpe.txt | 64 +++++++++++++------
> .../devicetree/bindings/mfd/stmpe.txt | 14 ++--
> 2 files changed, 53 insertions(+), 25 deletions(-)
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v5 2/8] mfd: stmpe: Move ADC related defines to header of mfd
2018-12-21 13:46 [PATCH v5 0/8] Adding support for STMPE811 ADC Philippe Schenker
2018-12-21 13:46 ` [PATCH v5 1/8] dt-bindings: stmpe: reformatting parameter list and use tabs only Philippe Schenker
@ 2018-12-21 13:46 ` Philippe Schenker
2018-12-21 13:46 ` [PATCH v5 4/8] Input: stmpe-ts: preparations for STMPE ADC driver Philippe Schenker
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Philippe Schenker @ 2018-12-21 13:46 UTC (permalink / raw)
To: jic23, marcel.ziswiler, stefan
Cc: robh, alexandre.torgue, shawnguo, dmitry.torokhov, thierry.reding,
digetx, lee.jones, coquelin.stm32, Philippe Schenker,
linux-kernel, linux-input, Maxime Coquelin, linux-stm32,
linux-arm-kernel
From: Philippe Schenker <philippe.schenker@toradex.com>
Move defines that are ADC related to the header of the overlying mfd,
so they can be used from multiple sub-devices.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
Changes in v5:
- Changed author of commit to use correct email
Changes in v4:
- Added Lee Jone's Ack
- Added Dmitry Torokhov's Ack
Changes in v3: None
Changes in v2:
- This is a new added commit. Separate commit for moving the defines
out of drivers/input/touchscreen/stmpe-ts.c to overlying mfd-device
drivers/mfd/stmpe.c
- Pre-fix defines with STMPE_
drivers/input/touchscreen/stmpe-ts.c | 34 +++++++++++-----------------
include/linux/mfd/stmpe.h | 11 +++++++++
2 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/drivers/input/touchscreen/stmpe-ts.c b/drivers/input/touchscreen/stmpe-ts.c
index 2a78e27b4495..c5d9006588a2 100644
--- a/drivers/input/touchscreen/stmpe-ts.c
+++ b/drivers/input/touchscreen/stmpe-ts.c
@@ -49,17 +49,6 @@
#define STMPE_IRQ_TOUCH_DET 0
-#define SAMPLE_TIME(x) ((x & 0xf) << 4)
-#define MOD_12B(x) ((x & 0x1) << 3)
-#define REF_SEL(x) ((x & 0x1) << 1)
-#define ADC_FREQ(x) (x & 0x3)
-#define AVE_CTRL(x) ((x & 0x3) << 6)
-#define DET_DELAY(x) ((x & 0x7) << 3)
-#define SETTLING(x) (x & 0x7)
-#define FRACTION_Z(x) (x & 0x7)
-#define I_DRIVE(x) (x & 0x1)
-#define OP_MODE(x) ((x & 0x7) << 1)
-
#define STMPE_TS_NAME "stmpe-ts"
#define XY_MASK 0xfff
@@ -213,9 +202,10 @@ static int stmpe_init_hw(struct stmpe_touch *ts)
return ret;
}
- adc_ctrl1 = SAMPLE_TIME(ts->sample_time) | MOD_12B(ts->mod_12b) |
- REF_SEL(ts->ref_sel);
- adc_ctrl1_mask = SAMPLE_TIME(0xff) | MOD_12B(0xff) | REF_SEL(0xff);
+ adc_ctrl1 = STMPE_SAMPLE_TIME(ts->sample_time) |
+ STMPE_MOD_12B(ts->mod_12b) | STMPE_REF_SEL(ts->ref_sel);
+ adc_ctrl1_mask = STMPE_SAMPLE_TIME(0xff) | STMPE_MOD_12B(0xff) |
+ STMPE_REF_SEL(0xff);
ret = stmpe_set_bits(stmpe, STMPE_REG_ADC_CTRL1,
adc_ctrl1_mask, adc_ctrl1);
@@ -225,15 +215,17 @@ static int stmpe_init_hw(struct stmpe_touch *ts)
}
ret = stmpe_set_bits(stmpe, STMPE_REG_ADC_CTRL2,
- ADC_FREQ(0xff), ADC_FREQ(ts->adc_freq));
+ STMPE_ADC_FREQ(0xff), STMPE_ADC_FREQ(ts->adc_freq));
if (ret) {
dev_err(dev, "Could not setup ADC\n");
return ret;
}
- tsc_cfg = AVE_CTRL(ts->ave_ctrl) | DET_DELAY(ts->touch_det_delay) |
- SETTLING(ts->settling);
- tsc_cfg_mask = AVE_CTRL(0xff) | DET_DELAY(0xff) | SETTLING(0xff);
+ tsc_cfg = STMPE_AVE_CTRL(ts->ave_ctrl) |
+ STMPE_DET_DELAY(ts->touch_det_delay) |
+ STMPE_SETTLING(ts->settling);
+ tsc_cfg_mask = STMPE_AVE_CTRL(0xff) | STMPE_DET_DELAY(0xff) |
+ STMPE_SETTLING(0xff);
ret = stmpe_set_bits(stmpe, STMPE_REG_TSC_CFG, tsc_cfg_mask, tsc_cfg);
if (ret) {
@@ -242,14 +234,14 @@ static int stmpe_init_hw(struct stmpe_touch *ts)
}
ret = stmpe_set_bits(stmpe, STMPE_REG_TSC_FRACTION_Z,
- FRACTION_Z(0xff), FRACTION_Z(ts->fraction_z));
+ STMPE_FRACTION_Z(0xff), STMPE_FRACTION_Z(ts->fraction_z));
if (ret) {
dev_err(dev, "Could not config touch\n");
return ret;
}
ret = stmpe_set_bits(stmpe, STMPE_REG_TSC_I_DRIVE,
- I_DRIVE(0xff), I_DRIVE(ts->i_drive));
+ STMPE_I_DRIVE(0xff), STMPE_I_DRIVE(ts->i_drive));
if (ret) {
dev_err(dev, "Could not config touch\n");
return ret;
@@ -263,7 +255,7 @@ static int stmpe_init_hw(struct stmpe_touch *ts)
}
ret = stmpe_set_bits(stmpe, STMPE_REG_TSC_CTRL,
- OP_MODE(0xff), OP_MODE(OP_MOD_XYZ));
+ STMPE_OP_MODE(0xff), STMPE_OP_MODE(OP_MOD_XYZ));
if (ret) {
dev_err(dev, "Could not set mode\n");
return ret;
diff --git a/include/linux/mfd/stmpe.h b/include/linux/mfd/stmpe.h
index 4a827af17e59..c0353f6431f9 100644
--- a/include/linux/mfd/stmpe.h
+++ b/include/linux/mfd/stmpe.h
@@ -10,6 +10,17 @@
#include <linux/mutex.h>
+#define STMPE_SAMPLE_TIME(x) ((x & 0xf) << 4)
+#define STMPE_MOD_12B(x) ((x & 0x1) << 3)
+#define STMPE_REF_SEL(x) ((x & 0x1) << 1)
+#define STMPE_ADC_FREQ(x) (x & 0x3)
+#define STMPE_AVE_CTRL(x) ((x & 0x3) << 6)
+#define STMPE_DET_DELAY(x) ((x & 0x7) << 3)
+#define STMPE_SETTLING(x) (x & 0x7)
+#define STMPE_FRACTION_Z(x) (x & 0x7)
+#define STMPE_I_DRIVE(x) (x & 0x1)
+#define STMPE_OP_MODE(x) ((x & 0x7) << 1)
+
struct device;
struct regulator;
--
2.19.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v5 4/8] Input: stmpe-ts: preparations for STMPE ADC driver
2018-12-21 13:46 [PATCH v5 0/8] Adding support for STMPE811 ADC Philippe Schenker
2018-12-21 13:46 ` [PATCH v5 1/8] dt-bindings: stmpe: reformatting parameter list and use tabs only Philippe Schenker
2018-12-21 13:46 ` [PATCH v5 2/8] mfd: stmpe: Move ADC related defines to header of mfd Philippe Schenker
@ 2018-12-21 13:46 ` Philippe Schenker
2019-01-07 23:03 ` Dmitry Torokhov
2018-12-21 13:46 ` [PATCH v5 6/8] iio: adc: add STMPE ADC devicetree bindings Philippe Schenker
2019-01-16 12:44 ` [GIT PULL] Immutable branch between MFD, IIO and Input due for the v5.1 merge window Lee Jones
4 siblings, 1 reply; 9+ messages in thread
From: Philippe Schenker @ 2018-12-21 13:46 UTC (permalink / raw)
To: jic23, marcel.ziswiler, stefan
Cc: robh, alexandre.torgue, lee.jones, dmitry.torokhov, linux-kernel,
Philippe Schenker, thierry.reding, linux-arm-kernel,
Maxime Coquelin, linux-input, digetx, shawnguo, linux-stm32
From: Philippe Schenker <philippe.schenker@toradex.com>
This patch removes common ADC settings in favor to use
stmpe811_adc_common_init that is present in MFD. This is necessary in
preparation for the stmpe-adc driver, because those two drivers have
common settings for the ADC.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
---
Changes in v5:
- Changed author of commit to use correct email.
Changes in v4:
- New patch: Split changes in stmpe-ts.c to a separate commit
- Remove common adc settings from init and call the
stmpe811_adc_common_init function
Changes in v3:
- Undo ADC-settings related code-deletions in stmpe-ts.c that the code
is backwards-compatible to older devicetrees.
Changes in v2: None
drivers/input/touchscreen/stmpe-ts.c | 42 +++++-----------------------
1 file changed, 7 insertions(+), 35 deletions(-)
diff --git a/drivers/input/touchscreen/stmpe-ts.c b/drivers/input/touchscreen/stmpe-ts.c
index c5d9006588a2..cf9c9aa39f6e 100644
--- a/drivers/input/touchscreen/stmpe-ts.c
+++ b/drivers/input/touchscreen/stmpe-ts.c
@@ -30,8 +30,6 @@
* with touchscreen controller
*/
#define STMPE_REG_INT_STA 0x0B
-#define STMPE_REG_ADC_CTRL1 0x20
-#define STMPE_REG_ADC_CTRL2 0x21
#define STMPE_REG_TSC_CTRL 0x40
#define STMPE_REG_TSC_CFG 0x41
#define STMPE_REG_FIFO_TH 0x4A
@@ -58,15 +56,6 @@
* @idev: registered input device
* @work: a work item used to scan the device
* @dev: a pointer back to the MFD cell struct device*
- * @sample_time: ADC converstion time in number of clock.
- * (0 -> 36 clocks, 1 -> 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks,
- * 4 -> 80 clocks, 5 -> 96 clocks, 6 -> 144 clocks),
- * recommended is 4.
- * @mod_12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
- * @ref_sel: ADC reference source
- * (0 -> internal reference, 1 -> external reference)
- * @adc_freq: ADC Clock speed
- * (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
* @ave_ctrl: Sample average control
* (0 -> 1 sample, 1 -> 2 samples, 2 -> 4 samples, 3 -> 8 samples)
* @touch_det_delay: Touch detect interrupt delay
@@ -88,10 +77,6 @@ struct stmpe_touch {
struct input_dev *idev;
struct delayed_work work;
struct device *dev;
- u8 sample_time;
- u8 mod_12b;
- u8 ref_sel;
- u8 adc_freq;
u8 ave_ctrl;
u8 touch_det_delay;
u8 settling;
@@ -192,7 +177,7 @@ static irqreturn_t stmpe_ts_handler(int irq, void *data)
static int stmpe_init_hw(struct stmpe_touch *ts)
{
int ret;
- u8 adc_ctrl1, adc_ctrl1_mask, tsc_cfg, tsc_cfg_mask;
+ u8 tsc_cfg, tsc_cfg_mask;
struct stmpe *stmpe = ts->stmpe;
struct device *dev = ts->dev;
@@ -202,22 +187,9 @@ static int stmpe_init_hw(struct stmpe_touch *ts)
return ret;
}
- adc_ctrl1 = STMPE_SAMPLE_TIME(ts->sample_time) |
- STMPE_MOD_12B(ts->mod_12b) | STMPE_REF_SEL(ts->ref_sel);
- adc_ctrl1_mask = STMPE_SAMPLE_TIME(0xff) | STMPE_MOD_12B(0xff) |
- STMPE_REF_SEL(0xff);
-
- ret = stmpe_set_bits(stmpe, STMPE_REG_ADC_CTRL1,
- adc_ctrl1_mask, adc_ctrl1);
- if (ret) {
- dev_err(dev, "Could not setup ADC\n");
- return ret;
- }
-
- ret = stmpe_set_bits(stmpe, STMPE_REG_ADC_CTRL2,
- STMPE_ADC_FREQ(0xff), STMPE_ADC_FREQ(ts->adc_freq));
+ ret = stmpe811_adc_common_init(stmpe);
if (ret) {
- dev_err(dev, "Could not setup ADC\n");
+ stmpe_disable(stmpe, STMPE_BLOCK_TOUCHSCREEN | STMPE_BLOCK_ADC);
return ret;
}
@@ -295,13 +267,13 @@ static void stmpe_ts_get_platform_info(struct platform_device *pdev,
if (np) {
if (!of_property_read_u32(np, "st,sample-time", &val))
- ts->sample_time = val;
+ ts->stmpe->sample_time = val;
if (!of_property_read_u32(np, "st,mod-12b", &val))
- ts->mod_12b = val;
+ ts->stmpe->mod_12b = val;
if (!of_property_read_u32(np, "st,ref-sel", &val))
- ts->ref_sel = val;
+ ts->stmpe->ref_sel = val;
if (!of_property_read_u32(np, "st,adc-freq", &val))
- ts->adc_freq = val;
+ ts->stmpe->adc_freq = val;
if (!of_property_read_u32(np, "st,ave-ctrl", &val))
ts->ave_ctrl = val;
if (!of_property_read_u32(np, "st,touch-det-delay", &val))
--
2.19.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v5 4/8] Input: stmpe-ts: preparations for STMPE ADC driver
2018-12-21 13:46 ` [PATCH v5 4/8] Input: stmpe-ts: preparations for STMPE ADC driver Philippe Schenker
@ 2019-01-07 23:03 ` Dmitry Torokhov
0 siblings, 0 replies; 9+ messages in thread
From: Dmitry Torokhov @ 2019-01-07 23:03 UTC (permalink / raw)
To: Philippe Schenker
Cc: jic23, marcel.ziswiler, stefan, robh, alexandre.torgue, shawnguo,
thierry.reding, digetx, lee.jones, coquelin.stm32,
Philippe Schenker, linux-kernel, linux-input, Maxime Coquelin,
linux-stm32, linux-arm-kernel
On Fri, Dec 21, 2018 at 02:46:33PM +0100, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker@toradex.com>
>
> This patch removes common ADC settings in favor to use
> stmpe811_adc_common_init that is present in MFD. This is necessary in
> preparation for the stmpe-adc driver, because those two drivers have
> common settings for the ADC.
>
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>
> ---
>
> Changes in v5:
> - Changed author of commit to use correct email.
>
> Changes in v4:
> - New patch: Split changes in stmpe-ts.c to a separate commit
> - Remove common adc settings from init and call the
> stmpe811_adc_common_init function
>
> Changes in v3:
> - Undo ADC-settings related code-deletions in stmpe-ts.c that the code
> is backwards-compatible to older devicetrees.
>
> Changes in v2: None
>
> drivers/input/touchscreen/stmpe-ts.c | 42 +++++-----------------------
> 1 file changed, 7 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/input/touchscreen/stmpe-ts.c b/drivers/input/touchscreen/stmpe-ts.c
> index c5d9006588a2..cf9c9aa39f6e 100644
> --- a/drivers/input/touchscreen/stmpe-ts.c
> +++ b/drivers/input/touchscreen/stmpe-ts.c
> @@ -30,8 +30,6 @@
> * with touchscreen controller
> */
> #define STMPE_REG_INT_STA 0x0B
> -#define STMPE_REG_ADC_CTRL1 0x20
> -#define STMPE_REG_ADC_CTRL2 0x21
> #define STMPE_REG_TSC_CTRL 0x40
> #define STMPE_REG_TSC_CFG 0x41
> #define STMPE_REG_FIFO_TH 0x4A
> @@ -58,15 +56,6 @@
> * @idev: registered input device
> * @work: a work item used to scan the device
> * @dev: a pointer back to the MFD cell struct device*
> - * @sample_time: ADC converstion time in number of clock.
> - * (0 -> 36 clocks, 1 -> 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks,
> - * 4 -> 80 clocks, 5 -> 96 clocks, 6 -> 144 clocks),
> - * recommended is 4.
> - * @mod_12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
> - * @ref_sel: ADC reference source
> - * (0 -> internal reference, 1 -> external reference)
> - * @adc_freq: ADC Clock speed
> - * (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
> * @ave_ctrl: Sample average control
> * (0 -> 1 sample, 1 -> 2 samples, 2 -> 4 samples, 3 -> 8 samples)
> * @touch_det_delay: Touch detect interrupt delay
> @@ -88,10 +77,6 @@ struct stmpe_touch {
> struct input_dev *idev;
> struct delayed_work work;
> struct device *dev;
> - u8 sample_time;
> - u8 mod_12b;
> - u8 ref_sel;
> - u8 adc_freq;
> u8 ave_ctrl;
> u8 touch_det_delay;
> u8 settling;
> @@ -192,7 +177,7 @@ static irqreturn_t stmpe_ts_handler(int irq, void *data)
> static int stmpe_init_hw(struct stmpe_touch *ts)
> {
> int ret;
> - u8 adc_ctrl1, adc_ctrl1_mask, tsc_cfg, tsc_cfg_mask;
> + u8 tsc_cfg, tsc_cfg_mask;
> struct stmpe *stmpe = ts->stmpe;
> struct device *dev = ts->dev;
>
> @@ -202,22 +187,9 @@ static int stmpe_init_hw(struct stmpe_touch *ts)
> return ret;
> }
>
> - adc_ctrl1 = STMPE_SAMPLE_TIME(ts->sample_time) |
> - STMPE_MOD_12B(ts->mod_12b) | STMPE_REF_SEL(ts->ref_sel);
> - adc_ctrl1_mask = STMPE_SAMPLE_TIME(0xff) | STMPE_MOD_12B(0xff) |
> - STMPE_REF_SEL(0xff);
> -
> - ret = stmpe_set_bits(stmpe, STMPE_REG_ADC_CTRL1,
> - adc_ctrl1_mask, adc_ctrl1);
> - if (ret) {
> - dev_err(dev, "Could not setup ADC\n");
> - return ret;
> - }
> -
> - ret = stmpe_set_bits(stmpe, STMPE_REG_ADC_CTRL2,
> - STMPE_ADC_FREQ(0xff), STMPE_ADC_FREQ(ts->adc_freq));
> + ret = stmpe811_adc_common_init(stmpe);
> if (ret) {
> - dev_err(dev, "Could not setup ADC\n");
> + stmpe_disable(stmpe, STMPE_BLOCK_TOUCHSCREEN | STMPE_BLOCK_ADC);
> return ret;
> }
>
> @@ -295,13 +267,13 @@ static void stmpe_ts_get_platform_info(struct platform_device *pdev,
>
> if (np) {
> if (!of_property_read_u32(np, "st,sample-time", &val))
> - ts->sample_time = val;
> + ts->stmpe->sample_time = val;
> if (!of_property_read_u32(np, "st,mod-12b", &val))
> - ts->mod_12b = val;
> + ts->stmpe->mod_12b = val;
> if (!of_property_read_u32(np, "st,ref-sel", &val))
> - ts->ref_sel = val;
> + ts->stmpe->ref_sel = val;
> if (!of_property_read_u32(np, "st,adc-freq", &val))
> - ts->adc_freq = val;
> + ts->stmpe->adc_freq = val;
> if (!of_property_read_u32(np, "st,ave-ctrl", &val))
> ts->ave_ctrl = val;
> if (!of_property_read_u32(np, "st,touch-det-delay", &val))
> --
> 2.19.2
>
--
Dmitry
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v5 6/8] iio: adc: add STMPE ADC devicetree bindings
2018-12-21 13:46 [PATCH v5 0/8] Adding support for STMPE811 ADC Philippe Schenker
` (2 preceding siblings ...)
2018-12-21 13:46 ` [PATCH v5 4/8] Input: stmpe-ts: preparations for STMPE ADC driver Philippe Schenker
@ 2018-12-21 13:46 ` Philippe Schenker
2018-12-21 18:25 ` Rob Herring
2019-01-16 12:44 ` [GIT PULL] Immutable branch between MFD, IIO and Input due for the v5.1 merge window Lee Jones
4 siblings, 1 reply; 9+ messages in thread
From: Philippe Schenker @ 2018-12-21 13:46 UTC (permalink / raw)
To: jic23, marcel.ziswiler, stefan
Cc: robh, alexandre.torgue, shawnguo, dmitry.torokhov, thierry.reding,
digetx, lee.jones, coquelin.stm32, Max Krummenacher,
Philippe Schenker, devicetree, linux-iio, Hartmut Knaack,
linux-input, linux-kernel, Rob Herring, Maxime Coquelin,
Mark Rutland, Peter Meerwald-Stadler, linux-stm32,
linux-arm-kernel, Lars-Peter Clausen
From: Stefan Agner <stefan@agner.ch>
This adds the devicetree bindings for the STMPE ADC. This also corrects
a typo in st,sample-time it is rather "6 -> 124 clocks" according
to the datasheet and not 144.
We need to use the naming stmpe_adc in devicetree because this is given
by the mfd device.
Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
Changes in v5:
- Made a one column list
- Cleared note about precedence
- Changed example to a full STMPE811 device with MFD, touchscreen, and the new
stmpe_adc driver.
- Added Jonathan Cameron's Reviewed-by
Changes in v4:
- Put reformatting in a separate precursor patch.
Changes in v3:
- Reformatted documentation for touchscreen to use tabs and have a better
overview of the settings.
- Added note which adc-settings will take precedence.
- changed typo in sample-time setting from 144 clocks to 124 clocks, as stated
in the datasheet.
Changes in v2:
- Moved the bindings for ADC to the overlying mfd.
- Reformatted for better readability
.../devicetree/bindings/iio/adc/stmpe-adc.txt | 21 +++++
.../bindings/input/touchscreen/stmpe.txt | 88 +++++++++++++------
.../devicetree/bindings/mfd/stmpe.txt | 14 +++
3 files changed, 98 insertions(+), 25 deletions(-)
create mode 100644 Documentation/devicetree/bindings/iio/adc/stmpe-adc.txt
diff --git a/Documentation/devicetree/bindings/iio/adc/stmpe-adc.txt b/Documentation/devicetree/bindings/iio/adc/stmpe-adc.txt
new file mode 100644
index 000000000000..480e66422625
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/stmpe-adc.txt
@@ -0,0 +1,21 @@
+STMPE ADC driver
+----------------
+
+Required properties:
+ - compatible: "st,stmpe-adc"
+
+Optional properties:
+Note that the ADC is shared with the STMPE touchscreen. ADC related settings
+have to be done in the mfd.
+- st,norequest-mask: bitmask specifying which ADC channels should _not_ be
+ requestable due to different usage (e.g. touch)
+
+Node name must be stmpe_adc and should be child node of stmpe node to
+which it belongs.
+
+Example:
+
+ stmpe_adc {
+ compatible = "st,stmpe-adc";
+ st,norequest-mask = <0x0F>; /* dont use ADC CH3-0 */
+ };
diff --git a/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt b/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt
index bf66a55a7de5..c549924603d2 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt
@@ -5,24 +5,6 @@ Required properties:
- compatible: "st,stmpe-ts"
Optional properties:
-- st,sample-time : ADC conversion time in number of clock.
- 0 -> 36 clocks
- 1 -> 44 clocks
- 2 -> 56 clocks
- 3 -> 64 clocks
- 4 -> 80 clocks (recommended)
- 5 -> 96 clocks
- 6 -> 144 clocks
-- st,mod-12b : ADC Bit mode
- 0 -> 10bit ADC
- 1 -> 12bit ADC
-- st,ref-sel : ADC reference source
- 0 -> internal
- 1 -> external
-- st,adc-freq : ADC Clock speed
- 0 -> 1.625 MHz
- 1 -> 3.25 MHz
- 2 || 3 -> 6.5 MHz
- st,ave-ctrl : Sample average control
0 -> 1 sample
1 -> 2 samples
@@ -52,20 +34,76 @@ Optional properties:
0 -> 20 mA (typical 35mA max)
1 -> 50 mA (typical 80 mA max)
+Optional properties common with MFD (deprecated):
+ - st,sample-time : ADC conversion time in number of clock.
+ 0 -> 36 clocks
+ 1 -> 44 clocks
+ 2 -> 56 clocks
+ 3 -> 64 clocks
+ 4 -> 80 clocks (recommended)
+ 5 -> 96 clocks
+ 6 -> 124 clocks
+ - st,mod-12b : ADC Bit mode
+ 0 -> 10bit ADC
+ 1 -> 12bit ADC
+ - st,ref-sel : ADC reference source
+ 0 -> internal
+ 1 -> external
+ - st,adc-freq : ADC Clock speed
+ 0 -> 1.625 MHz
+ 1 -> 3.25 MHz
+ 2 || 3 -> 6.5 MHz
+
Node name must be stmpe_touchscreen and should be child node of stmpe node to
which it belongs.
+Note that common ADC settings of stmpe_touchscreen (child) will take precedence
+over the settings done in MFD.
+
Example:
+stmpe811@41 {
+ compatible = "st,stmpe811";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_touch_int>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x41>;
+ interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-parent = <&gpio4>;
+ interrupt-controller;
+ id = <0>;
+ blocks = <0x5>;
+ irq-trigger = <0x1>;
+ /* Common ADC settings */
+ /* 3.25 MHz ADC clock speed */
+ st,adc-freq = <1>;
+ /* 12-bit ADC */
+ st,mod-12b = <1>;
+ /* internal ADC reference */
+ st,ref-sel = <0>;
+ /* ADC converstion time: 80 clocks */
+ st,sample-time = <4>;
+
stmpe_touchscreen {
compatible = "st,stmpe-ts";
- st,sample-time = <4>;
- st,mod-12b = <1>;
- st,ref-sel = <0>;
- st,adc-freq = <1>;
- st,ave-ctrl = <1>;
- st,touch-det-delay = <2>;
- st,settling = <2>;
+ reg = <0>;
+ /* 8 sample average control */
+ st,ave-ctrl = <3>;
+ /* 5 ms touch detect interrupt delay */
+ st,touch-det-delay = <5>;
+ /* 1 ms panel driver settling time */
+ st,settling = <3>;
+ /* 7 length fractional part in z */
st,fraction-z = <7>;
+ /*
+ * 50 mA typical 80 mA max touchscreen drivers
+ * current limit value
+ */
st,i-drive = <1>;
};
+ stmpe_adc {
+ compatible = "st,stmpe-adc";
+ st,norequest-mask = <0x0F>;
+ };
+};
diff --git a/Documentation/devicetree/bindings/mfd/stmpe.txt b/Documentation/devicetree/bindings/mfd/stmpe.txt
index a46e7177195d..d4408a417193 100644
--- a/Documentation/devicetree/bindings/mfd/stmpe.txt
+++ b/Documentation/devicetree/bindings/mfd/stmpe.txt
@@ -14,6 +14,20 @@ Optional properties:
- st,autosleep-timeout : Valid entries (ms); 4, 16, 32, 64, 128, 256, 512 and 1024
- irq-gpio : If present, which GPIO to use for event IRQ
+Optional properties for devices with touch and ADC (STMPE811|STMPE610):
+ - st,sample-time : ADC conversion time in number of clock.
+ 0 -> 36 clocks 4 -> 80 clocks (recommended)
+ 1 -> 44 clocks 5 -> 96 clocks
+ 2 -> 56 clocks 6 -> 124 clocks
+ 3 -> 64 clocks
+ - st,mod-12b : ADC Bit mode
+ 0 -> 10bit ADC 1 -> 12bit ADC
+ - st,ref-sel : ADC reference source
+ 0 -> internal 1 -> external
+ - st,adc-freq : ADC Clock speed
+ 0 -> 1.625 MHz 2 || 3 -> 6.5 MHz
+ 1 -> 3.25 MHz
+
Example:
stmpe1601: stmpe1601@40 {
--
2.19.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v5 6/8] iio: adc: add STMPE ADC devicetree bindings
2018-12-21 13:46 ` [PATCH v5 6/8] iio: adc: add STMPE ADC devicetree bindings Philippe Schenker
@ 2018-12-21 18:25 ` Rob Herring
0 siblings, 0 replies; 9+ messages in thread
From: Rob Herring @ 2018-12-21 18:25 UTC (permalink / raw)
To: Philippe Schenker
Cc: jic23, marcel.ziswiler, stefan, robh, alexandre.torgue, shawnguo,
dmitry.torokhov, thierry.reding, digetx, lee.jones,
coquelin.stm32, Max Krummenacher, Philippe Schenker, devicetree,
linux-iio, Hartmut Knaack, linux-input, linux-kernel,
Maxime Coquelin, Mark Rutland, Peter Meerwald-Stadler,
linux-stm32, linux-arm-kernel, Lars-Peter Clausen
On Fri, 21 Dec 2018 14:46:35 +0100, Philippe Schenker wrote:
> From: Stefan Agner <stefan@agner.ch>
>
> This adds the devicetree bindings for the STMPE ADC. This also corrects
> a typo in st,sample-time it is rather "6 -> 124 clocks" according
> to the datasheet and not 144.
> We need to use the naming stmpe_adc in devicetree because this is given
> by the mfd device.
>
> Signed-off-by: Stefan Agner <stefan@agner.ch>
> Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>
> ---
>
> Changes in v5:
> - Made a one column list
> - Cleared note about precedence
> - Changed example to a full STMPE811 device with MFD, touchscreen, and the new
> stmpe_adc driver.
> - Added Jonathan Cameron's Reviewed-by
>
> Changes in v4:
> - Put reformatting in a separate precursor patch.
>
> Changes in v3:
> - Reformatted documentation for touchscreen to use tabs and have a better
> overview of the settings.
> - Added note which adc-settings will take precedence.
> - changed typo in sample-time setting from 144 clocks to 124 clocks, as stated
> in the datasheet.
>
> Changes in v2:
> - Moved the bindings for ADC to the overlying mfd.
> - Reformatted for better readability
>
> .../devicetree/bindings/iio/adc/stmpe-adc.txt | 21 +++++
> .../bindings/input/touchscreen/stmpe.txt | 88 +++++++++++++------
> .../devicetree/bindings/mfd/stmpe.txt | 14 +++
> 3 files changed, 98 insertions(+), 25 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/iio/adc/stmpe-adc.txt
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [GIT PULL] Immutable branch between MFD, IIO and Input due for the v5.1 merge window
2018-12-21 13:46 [PATCH v5 0/8] Adding support for STMPE811 ADC Philippe Schenker
` (3 preceding siblings ...)
2018-12-21 13:46 ` [PATCH v5 6/8] iio: adc: add STMPE ADC devicetree bindings Philippe Schenker
@ 2019-01-16 12:44 ` Lee Jones
4 siblings, 0 replies; 9+ messages in thread
From: Lee Jones @ 2019-01-16 12:44 UTC (permalink / raw)
To: Philippe Schenker
Cc: jic23, marcel.ziswiler, stefan, robh, alexandre.torgue, shawnguo,
dmitry.torokhov, thierry.reding, digetx, coquelin.stm32,
Philippe Schenker, Arnd Bergmann, Arnaud Pouliquen, linux-iio,
Mark Brown, Pengutronix Kernel Team, Rob Herring,
Geert Uytterhoeven, William Breathitt Gray, linux-stm32,
Fabio Estevam, Randy Dunlap, Jonathan Cameron,
Freeman Liu <fre>
Taken all but the ARM patches.
These need to be reviewed and go in via ARM-SoC.
The following changes since commit bfeffd155283772bbe78c6a05dec7c0128ee500c:
Linux 5.0-rc1 (2019-01-06 17:08:20 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git ib-mfd-iio-input-v5.1
for you to fetch changes up to 81cdab79818988d27d8aeb162b7988c9e6dde936:
iio: adc: add STMPE ADC devicetree bindings (2019-01-16 12:37:36 +0000)
----------------------------------------------------------------
Immutable branch between MFD, IIO and Input due for the v5.1 merge window
----------------------------------------------------------------
Philippe Schenker (3):
dt-bindings: stmpe: Reformatting parameter list and use tabs only
mfd: stmpe: Move ADC related defines to MFD header
Input: stmpe-ts: preparations for STMPE ADC driver
Stefan Agner (3):
mfd: stmpe: Preparations for STMPE ADC driver
iio: adc: add STMPE ADC driver using IIO framework
iio: adc: add STMPE ADC devicetree bindings
.../devicetree/bindings/iio/adc/stmpe-adc.txt | 21 ++
.../bindings/input/touchscreen/stmpe.txt | 116 +++++--
Documentation/devicetree/bindings/mfd/stmpe.txt | 28 +-
drivers/iio/adc/Kconfig | 7 +
drivers/iio/adc/Makefile | 1 +
drivers/iio/adc/stmpe-adc.c | 363 +++++++++++++++++++++
drivers/input/touchscreen/stmpe-ts.c | 66 +---
drivers/mfd/Kconfig | 3 +-
drivers/mfd/stmpe.c | 68 ++++
include/linux/mfd/stmpe.h | 21 ++
10 files changed, 610 insertions(+), 84 deletions(-)
create mode 100644 Documentation/devicetree/bindings/iio/adc/stmpe-adc.txt
create mode 100644 drivers/iio/adc/stmpe-adc.c
--
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 9+ messages in thread