Skip to contentSkip to conversation

Documentation: sample averaging for imx6ul_tsc

PATCH New Guy Shapiro 4 participants 8 messages Nov 27, 2016 – Dec 8, 2016

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 Documentation: sample averaging for imx6ul_tsc

The i.MX6UL internal touchscreen controller contains an option to average upon samples. This feature reduces noise from the produced touch locations.

This patch introduces a new device tree optional property for this feature. It provides control over the amount of averaged samples per touch event.

The property was inspired by a similar property on the "brcm,iproc-touchscreen" binding.

---
 .../devicetree/bindings/input/touchscreen/imx6ul_tsc.txt          | 8 ++++++++
 1 file changed, 8 insertions(+)
Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt +8 -0
index 853dff9..a66069f 100644
@@ -17,6 +17,13 @@ Optional properties:
   This value depends on the touch screen.
 - pre-charge-time: the touch screen need some time to precharge.
   This value depends on the touch screen.
+- average-samples: Number of data samples which are averaged for each read.
+	Valid values 0-4
+	0 =  1 sample
+	1 =  4 samples
+	2 =  8 samples
+	3 = 16 samples
+	4 = 32 samples
 
 Example:
 	tsc: tsc at 02040000 {
@@ -32,5 +39,6 @@ Example:
 		xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
 		measure-delay-time = <0xfff>;
 		pre-charge-time = <0xffff>;
+		average-samples = <4>;
 		status = "okay";
 	};
Signature · 1 line
2.1.4
#1 lore raw

PATCH 2/2 input: touchscreen: sample averaging for imx6ul_tsc

The i.MX6UL internal touchscreen controller contains an option to average upon samples. This feature reduces noise from the produced touch locations.

This patch adds sample averaging support to the imx6ul_tsc device driver.

---
 drivers/input/touchscreen/imx6ul_tsc.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
drivers/input/touchscreen/imx6ul_tsc.c +17 -0
index 8275267..31724d9 100644
@@ -25,6 +25,7 @@
 /* ADC configuration registers field define */
 #define ADC_AIEN		(0x1 << 7)
 #define ADC_CONV_DISABLE	0x1F
+#define ADC_AVGE		(0x1 << 5)
 #define ADC_CAL			(0x1 << 7)
 #define ADC_CALF		0x2
 #define ADC_12BIT_MODE		(0x2 << 2)
@@ -32,6 +33,7 @@
 #define ADC_CLK_DIV_8		(0x03 << 5)
 #define ADC_SHORT_SAMPLE_MODE	(0x0 << 4)
 #define ADC_HARDWARE_TRIGGER	(0x1 << 13)
+#define ADC_AVGS_SHIFT		14
 #define SELECT_CHANNEL_4	0x04
 #define SELECT_CHANNEL_1	0x01
 #define DISABLE_CONVERSION_INT	(0x0 << 7)
@@ -86,6 +88,7 @@ struct imx6ul_tsc {
 
 	int measure_delay_time;
 	int pre_charge_time;
+	int average_samples;
 
 	struct completion completion;
 };
@@ -107,6 +110,8 @@ static int imx6ul_adc_init(struct imx6ul_tsc *tsc)
 	adc_cfg = readl(tsc->adc_regs + REG_ADC_CFG);
 	adc_cfg |= ADC_12BIT_MODE | ADC_IPG_CLK;
 	adc_cfg |= ADC_CLK_DIV_8 | ADC_SHORT_SAMPLE_MODE;
+	if (tsc->average_samples)
+		adc_cfg |= (tsc->average_samples - 1) << ADC_AVGS_SHIFT;
 	adc_cfg &= ~ADC_HARDWARE_TRIGGER;
 	writel(adc_cfg, tsc->adc_regs + REG_ADC_CFG);
 
@@ -118,6 +123,8 @@ static int imx6ul_adc_init(struct imx6ul_tsc *tsc)
 	/* start ADC calibration */
 	adc_gc = readl(tsc->adc_regs + REG_ADC_GC);
 	adc_gc |= ADC_CAL;
+	if (tsc->average_samples)
+		adc_gc |= ADC_AVGE;
 	writel(adc_gc, tsc->adc_regs + REG_ADC_GC);
 
 	timeout = wait_for_completion_timeout
@@ -450,6 +457,16 @@ static int imx6ul_tsc_probe(struct platform_device *pdev)
 	if (err)
 		tsc->pre_charge_time = 0xfff;
 
+	err = of_property_read_u32(np, "average-samples",
+				   &tsc->average_samples);
+	if (err)
+		tsc->average_samples = 0;
+	if (tsc->average_samples > 4) {
+		dev_err(&pdev->dev, "average-samples (%u) must be [0-4]\n",
+			tsc->average_samples);
+		return -EINVAL;
+	}
+
 	err = input_register_device(tsc->input);
 	if (err) {
 		dev_err(&pdev->dev,
Signature · 1 line
2.1.4
reviewer
#2 lore raw

PATCH 2/2 input: touchscreen: sample averaging for imx6ul_tsc

Quoted 8 lines · Guy Shapiro

The i.MX6UL internal touchscreen controller contains an option to average upon samples. This feature reduces noise from the produced touch locations.

This patch adds sample averaging support to the imx6ul_tsc device driver.

maintainer
#3 lore raw

PATCH 2/2 input: touchscreen: sample averaging for imx6ul_tsc

Quoted 11 lines · Fabio Estevam
Quoted 8 lines · Guy Shapiro

The i.MX6UL internal touchscreen controller contains an option to average upon samples. This feature reduces noise from the produced touch locations.

This patch adds sample averaging support to the imx6ul_tsc device driver.

Folded the binding patch into this one and applied, thank you.

Signature · 1 line
Dmitry
reviewer
#4 lore raw

PATCH 1/2 Documentation: sample averaging for imx6ul_tsc

In reply to Guy Shapiro
Quoted 4 lines · Guy Shapiro

The i.MX6UL internal touchscreen controller contains an option to average upon samples. This feature reduces noise from the produced touch locations.

Quoted 8 lines

This patch introduces a new device tree optional property for this feature. It provides control over the amount of averaged samples per touch event.

The property was inspired by a similar property on the "brcm,iproc-touchscreen" binding.

maintainer
#5 lore raw

PATCH 1/2 Documentation: sample averaging for imx6ul_tsc

In reply to Guy Shapiro
Quoted 21 lines · Guy Shapiro

The i.MX6UL internal touchscreen controller contains an option to average upon samples. This feature reduces noise from the produced touch locations.

This patch introduces a new device tree optional property for this feature. It provides control over the amount of averaged samples per touch event.

The property was inspired by a similar property on the "brcm,iproc-touchscreen" binding.

---
 .../devicetree/bindings/input/touchscreen/imx6ul_tsc.txt          | 8 ++++++++
 1 file changed, 8 insertions(+)
Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt +0 -0
index 853dff9..a66069f 100644

Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt Optional properties: · line 26

Quoted 10 lines
Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt +7 -0
@@ -17,6 +17,13 @@ Optional properties:
   This value depends on the touch screen.
 - pre-charge-time: the touch screen need some time to precharge.
   This value depends on the touch screen.
+- average-samples: Number of data samples which are averaged for each read.
+	Valid values 0-4
+	0 =  1 sample
+	1 =  4 samples
+	2 =  8 samples
+	3 = 16 samples
+	4 = 32 samples

Either this needs a vendor prefix or should be documented as a generic property. In the latter case, you should use actual number of samples (1-32) for the values.

Quoted 18 lines
Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt +1 -0
 Example:
 	tsc: tsc at 02040000 {
@@ -32,5 +39,6 @@ Example:
 		xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
 		measure-delay-time = <0xfff>;
 		pre-charge-time = <0xffff>;
+		average-samples = <4>;
 		status = "okay";
 	};
Signature · 7 lines
2.1.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
#6 lore raw

PATCH 1/2 Documentation: sample averaging for imx6ul_tsc

Quoted 30 lines · Rob Herring
Quoted 8 lines · Guy Shapiro

The i.MX6UL internal touchscreen controller contains an option to average upon samples. This feature reduces noise from the produced touch locations.

This patch introduces a new device tree optional property for this feature. It provides control over the amount of averaged samples per touch event.

Quoted 6 lines

The property was inspired by a similar property on the "brcm,iproc-touchscreen" binding.

---
  .../devicetree/bindings/input/touchscreen/imx6ul_tsc.txt          | 8

++++++++

Quoted 3 lines
  1 file changed, 8 insertions(+)

diff --git

a/Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt b/Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt

Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt Optional properties: · line 20

Quoted 8 lines

index 853dff9..a66069f 100644

Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt +1 -0
@@ -17,6 +17,13 @@ Optional properties:
    This value depends on the touch screen.
  - pre-charge-time: the touch screen need some time to precharge.
    This value depends on the touch screen.
+- average-samples: Number of data samples which are averaged for each

read.

Quoted 9 lines

Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt Optional properties: · line 26

Quoted 6 lines
Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt +6 -0
+	Valid values 0-4
+	0 =  1 sample
+	1 =  4 samples
+	2 =  8 samples
+	3 = 16 samples
+	4 = 32 samples

Either this needs a vendor prefix or should be documented as a generic property. In the latter case, you should use actual number of samples (1-32) for the values.

In the term "generic property", do you mean to document it on bindings/input/touchscreen/touchscreen.txt ?
If so, should I add the "touchscreen-" prefix like all the other properties in that file?

Grepping bindings/input/touchscreen/, I found two other device drivers that implement a
similar property - "ti-tsc-adc" and "brcm,iproc-touchscreen" (The latter, BTW, uses a non
vendor prefixed property name).

Do we want to move from per-vendor properties to a generic one? If we do, should we deprecate the existing vendor specific properties?

maintainer
#7 lore raw

PATCH 1/2 Documentation: sample averaging for imx6ul_tsc

Quoted 46 lines · Guy Shapiro
Quoted 45 lines · Rob Herring
Quoted 9 lines · Guy Shapiro

The i.MX6UL internal touchscreen controller contains an option to average upon samples. This feature reduces noise from the produced touch locations.

This patch introduces a new device tree optional property for this feature. It provides control over the amount of averaged samples per touch event.

Quoted 6 lines

The property was inspired by a similar property on the "brcm,iproc-touchscreen" binding.

---
  .../devicetree/bindings/input/touchscreen/imx6ul_tsc.txt          | 8

++++++++

Quoted 4 lines
  1 file changed, 8 insertions(+)

diff --git

a/Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt b/Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt

Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt Optional properties: · line 20

Quoted 9 lines

index 853dff9..a66069f 100644

Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt +1 -0
@@ -17,6 +17,13 @@ Optional properties:
    This value depends on the touch screen.
  - pre-charge-time: the touch screen need some time to precharge.
    This value depends on the touch screen.
+- average-samples: Number of data samples which are averaged for each

read.

Quoted 7 lines
Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt +6 -0
+       Valid values 0-4
+       0 =  1 sample
+       1 =  4 samples
+       2 =  8 samples
+       3 = 16 samples
+       4 = 32 samples
Quoted 6 lines
Quoted 3 lines

Either this needs a vendor prefix or should be documented as a generic property. In the latter case, you should use actual number of samples (1-32) for the values.

In the term "generic property", do you mean to document it on bindings/input/touchscreen/touchscreen.txt ?

Yes.

Quoted 2 lines

If so, should I add the "touchscreen-" prefix like all the other properties in that file?

Yes.

Quoted 5 lines

Grepping bindings/input/touchscreen/, I found two other device drivers that implement a
similar property - "ti-tsc-adc" and "brcm,iproc-touchscreen" (The latter, BTW, uses a non
vendor prefixed property name).

Unfortunately, the brcm one doesn't look directly usable.

Quoted 1 line

Do we want to move from per-vendor properties to a generic one?

No. Those are set already. I just don't want to get more vendor properties.

Rob