From: AngeloGioacchino Del Regno <hidden> Date: 2021-01-14 17:50:46
This patch series converts the i2c-qup bindings to YAML and then
adds support for noise rejection, which is needed for some noisy
hardware, like the touchscreen on the F(x)Tec Pro1.
After adding noise rejection, the touchscreen stopped showing
ghost touch issues and lockups.
Tested on F(x)Tec Pro1 (MSM8998).
Changes in v2:
- Fixed ARM (32) build error (added bitfield.h inclusion)
AngeloGioacchino Del Regno (3):
dt-bindings: i2c: qcom,i2c-qup: Convert txt to YAML schema
i2c: qup: Introduce SCL/SDA noise rejection
dt-bindings: i2c: qcom,i2c-qup: Document noise rejection properties
.../devicetree/bindings/i2c/qcom,i2c-qup.txt | 40 -------
.../devicetree/bindings/i2c/qcom,i2c-qup.yaml | 101 ++++++++++++++++++
drivers/i2c/busses/i2c-qup.c | 17 +++
3 files changed, 118 insertions(+), 40 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/i2c/qcom,i2c-qup.txt
create mode 100644 Documentation/devicetree/bindings/i2c/qcom,i2c-qup.yaml
--
2.29.2
From: AngeloGioacchino Del Regno <hidden> Date: 2021-01-14 17:50:10
Some I2C devices may be glitchy due to electrical noise coming
from the device itself or because of possible board design issues.
To overcome this issue, the QUP's I2C in Qualcomm SoCs supports
a noise rejection setting for both SCL and SDA lines.
Introduce a setting for noise rejection through device properties,
"qcom,noise-reject-sda" and "qcom,noise-reject-scl", which will
be used to set the level of noise rejection sensitivity.
If the properties are not specified, noise rejection will not be
enabled.
Signed-off-by: AngeloGioacchino Del Regno <redacted>
---
drivers/i2c/busses/i2c-qup.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
From: AngeloGioacchino Del Regno <hidden> Date: 2021-01-14 17:50:11
Document the new noise rejection properties "qcom,noise-reject-sda"
and "qcom,noise-reject-scl".
Signed-off-by: AngeloGioacchino Del Regno <redacted>
---
.../devicetree/bindings/i2c/qcom,i2c-qup.yaml | 14 ++++++++++++++
1 file changed, 14 insertions(+)
@@ -58,6 +58,20 @@ properties:'#size-cells':const:0+qcom,noise-reject-sda:+$ref:/schemas/types.yaml#/definitions/uint32+description:Noise rejection level for the SDA line.+minimum:0+maximum:3+default:0++qcom,noise-reject-scl:+$ref:/schemas/types.yaml#/definitions/uint32+description:Noise rejection level for the SCL line.+minimum:0+maximum:3+default:0+required:-compatible-clocks
@@ -1,40 +0,0 @@-Qualcomm Universal Peripheral (QUP) I2C controller--Required properties:- - compatible: Should be:- * "qcom,i2c-qup-v1.1.1" for 8660, 8960 and 8064.- * "qcom,i2c-qup-v2.1.1" for 8974 v1.- * "qcom,i2c-qup-v2.2.1" for 8974 v2 and later.- - reg: Should contain QUP register address and length.- - interrupts: Should contain I2C interrupt.-- - clocks: A list of phandles + clock-specifiers, one for each entry in- clock-names.- - clock-names: Should contain:- * "core" for the core clock- * "iface" for the AHB clock-- - #address-cells: Should be <1> Address cells for i2c device address- - #size-cells: Should be <0> as i2c addresses have no size component--Optional properties:- - clock-frequency: Should specify the desired i2c bus clock frequency in Hz,- defaults to 100kHz if omitted.--Child nodes should conform to i2c bus binding.--Example:-- i2c@f9924000 {- compatible = "qcom,i2c-qup-v2.2.1";- reg = <0xf9924000 0x1000>;- interrupts = <0 96 0>;-- clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;- clock-names = "core", "iface";-- clock-frequency = <355000>;-- #address-cells = <1>;- #size-cells = <0>;- };
On Thu 14 Jan 11:49 CST 2021, AngeloGioacchino Del Regno wrote:
Some I2C devices may be glitchy due to electrical noise coming
from the device itself or because of possible board design issues.
To overcome this issue, the QUP's I2C in Qualcomm SoCs supports
a noise rejection setting for both SCL and SDA lines.
Introduce a setting for noise rejection through device properties,
"qcom,noise-reject-sda" and "qcom,noise-reject-scl", which will
be used to set the level of noise rejection sensitivity.
If the properties are not specified, noise rejection will not be
enabled.
This looks reasonable, just some small nits below.
quoted hunk
Signed-off-by: AngeloGioacchino Del Regno <redacted>
---
drivers/i2c/busses/i2c-qup.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
@@ -58,6 +58,20 @@ properties:'#size-cells':const:0+qcom,noise-reject-sda:+$ref:/schemas/types.yaml#/definitions/uint32+description:Noise rejection level for the SDA line.+minimum:0+maximum:3+default:0++qcom,noise-reject-scl:+$ref:/schemas/types.yaml#/definitions/uint32+description:Noise rejection level for the SCL line.+minimum:0+maximum:3+default:0+required:-compatible-clocks
@@ -58,6 +58,20 @@ properties:'#size-cells':const:0+qcom,noise-reject-sda:+$ref:/schemas/types.yaml#/definitions/uint32+description:Noise rejection level for the SDA line.+minimum:0+maximum:3+default:0++qcom,noise-reject-scl:+$ref:/schemas/types.yaml#/definitions/uint32+description:Noise rejection level for the SCL line.+minimum:0+maximum:3+default:0+required:-compatible-clocks