arm64: dts: imx8mm/imx8mp-verdin: add single-master property to all i2c nodes
Subsystems (2)
cover arm64: dts: imx8mm/imx8mp-verdin: add single-master property to all i2c nodes
Add the single-master property to all i2c nodes on the iMX8MM and iMX8MP Verdin modules. This will allow us to use some single-master optimisations on the i2c driver. Together with the following series, now in the i2c-host branch of Andis tree, we get rid of a timeout problem on the i2c bus with a SMBus ADC:
https://lore.kernel.org/all/7ts577rxed4mmfkfin7kfdjfjkb6iak2y4vtgtz6merwxkzz6w@h5aefbvyx44u/
Stefan Eichenberger (2):
arm64: dts: imx8mm-verdin: add single-master property to all i2c nodes
arm64: dts: imx8mp-verdin: add single-master property to all i2c nodes
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++ arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi | 5 +++++ 2 files changed, 9 insertions(+)
Signature · 1 line
2.43.0
PATCH 1/2 arm64: dts: imx8mm-verdin: add single-master property to all i2c nodes
From: Stefan Eichenberger <[email protected]>
By default we expect all i2c nodes to be single-master, we do not have any module or carrier board that uses multi-master mode on any i2c controller. With this property set, we benefit from optimisations made exclusively for single-masters.
--- arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi +4 -0
@@ -367,6 +367,7 @@ &i2c1 { pinctrl-1 = <&pinctrl_i2c1_gpio>; scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; status = "okay"; pca9450: pmic@25 {
@@ -561,6 +562,7 @@ &i2c2 { pinctrl-1 = <&pinctrl_i2c2_gpio>; scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; status = "disabled"; };
@@ -574,6 +576,7 @@ &i2c3 { pinctrl-1 = <&pinctrl_i2c3_gpio>; scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; }; /* Verdin I2C_1 */
@@ -584,6 +587,7 @@ &i2c4 { pinctrl-1 = <&pinctrl_i2c4_gpio>; scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; gpio_expander_21: gpio-expander@21 { compatible = "nxp,pcal6416";
Signature · 1 line
2.43.0
Re: [PATCH v1 1/2] arm64: dts: imx8mm-verdin: add single-master property to all i2c nodes
Quoted 17 lines · Stefan Eichenberger
From: Stefan Eichenberger <[email protected]>
By default we expect all i2c nodes to be single-master, we do not have any module or carrier board that uses multi-master mode on any i2c controller. With this property set, we benefit from optimisations made exclusively for single-masters.
Signed-off-by Stefan Eichenberger <[email protected]>--- arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++ 1 file changed, 4 insertions(+)arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi +0
-0
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi &i2c1 { · line 370
Quoted 4 lines
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi +1
-0@@ -367,6 +367,7 @@ &i2c1 { pinctrl-1 = <&pinctrl_i2c1_gpio>; scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master;
Hmm, I do not see this property is documented in i2c-imx bindings.
Shawn
Quoted 30 lines
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi +3
-0status = "okay"; pca9450: pmic@25 {@@ -561,6 +562,7 @@ &i2c2 { pinctrl-1 = <&pinctrl_i2c2_gpio>; scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; status = "disabled"; };@@ -574,6 +576,7 @@ &i2c3 { pinctrl-1 = <&pinctrl_i2c3_gpio>; scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; }; /* Verdin I2C_1 */@@ -584,6 +587,7 @@ &i2c4 { pinctrl-1 = <&pinctrl_i2c4_gpio>; scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; gpio_expander_21: gpio-expander@21 { compatible = "nxp,pcal6416";Signature · 1 line
2.43.0
Re: [PATCH v1 1/2] arm64: dts: imx8mm-verdin: add single-master property to all i2c nodes
Hi Shawn,
Quoted 13 lines · Shawn Guo
Quoted 12 lines · Stefan Eichenberger
From: Stefan Eichenberger <[email protected]>
By default we expect all i2c nodes to be single-master, we do not have any module or carrier board that uses multi-master mode on any i2c controller. With this property set, we benefit from optimisations made exclusively for single-masters.
Signed-off-by Stefan Eichenberger <[email protected]>--- arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
Quoted 11 lines
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi &i2c1 { · line 370
Quoted 9 lines
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi +1
-0@@ -367,6 +367,7 @@ &i2c1 { pinctrl-1 = <&pinctrl_i2c1_gpio>; scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master;Hmm, I do not see this property is documented in i2c-imx bindings.
According to the discussion we had in this thread
https://lore.kernel.org/linux-i2c/2bbddaxyjkxfmlgmq3yqcbzo7dsb2pq5bvdatk2y4ig4iintkt@35btqkdv7sy3/
it is not necessary to have the property documentation in the i2c-imx binding because it is already documented in the dt-schema:
https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/i2c/i2c-controller.yaml
In the initial discussion, it was addressed for multi-master setups, but it also applies for single-master. See also this discussion:
https://lore.kernel.org/all/[email protected]/
Let me know if I have missed anything or misunderstood.
Regards,
Stefan
Re: [PATCH v1 1/2] arm64: dts: imx8mm-verdin: add single-master property to all i2c nodes
Quoted 28 lines · Stefan Eichenberger
Hi Shawn,
Quoted 13 lines · Shawn Guo
Quoted 12 lines · Stefan Eichenberger
From: Stefan Eichenberger <[email protected]>
By default we expect all i2c nodes to be single-master, we do not have any module or carrier board that uses multi-master mode on any i2c controller. With this property set, we benefit from optimisations made exclusively for single-masters.
Signed-off-by Stefan Eichenberger <[email protected]>--- arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++ 1 file changed, 4 insertions(+)Quoted 11 lines
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi &i2c1 { · line 370
Quoted 9 lines
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi +1
-0@@ -367,6 +367,7 @@ &i2c1 { pinctrl-1 = <&pinctrl_i2c1_gpio>; scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master;Hmm, I do not see this property is documented in i2c-imx bindings.
Quoted 5 lines
According to the discussion we had in this thread
https://lore.kernel.org/linux-i2c/2bbddaxyjkxfmlgmq3yqcbzo7dsb2pq5bvdatk2y4ig4iintkt@35btqkdv7sy3/
it is not necessary to have the property documentation in the i2c-imx binding because it is already documented in the dt-schema:
https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/i2c/i2c-controller.yaml
Ah, thanks for the info!
Shawn
PATCH 2/2 arm64: dts: imx8mp-verdin: add single-master property to all i2c nodes
In reply to Stefan EichenbergerFrom: Stefan Eichenberger <[email protected]>
By default we expect all i2c nodes to be single-master, we do not have any module or carrier board that uses multi-master mode on any i2c controller. With this property set, we benefit from optimisations made exclusively for single-masters.
--- arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi | 5 +++++ 1 file changed, 5 insertions(+)
arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi +5 -0
@@ -478,6 +478,7 @@ &i2c1 { pinctrl-1 = <&pinctrl_i2c1_gpio>; scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; status = "okay"; pca9450: pmic@25 {
@@ -669,6 +670,7 @@ &i2c2 { pinctrl-1 = <&pinctrl_i2c2_gpio>; scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; atmel_mxt_ts_mezzanine: touch-mezzanine@4a { compatible = "atmel,maxtouch";
@@ -690,6 +692,7 @@ &i2c3 { pinctrl-1 = <&pinctrl_i2c3_gpio>; scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; }; /* Verdin I2C_1 */
@@ -700,6 +703,7 @@ &i2c4 { pinctrl-1 = <&pinctrl_i2c4_gpio>; scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; gpio_expander_21: gpio-expander@21 { compatible = "nxp,pcal6416";
@@ -788,6 +792,7 @@ &i2c5 { pinctrl-1 = <&pinctrl_i2c5_gpio>; scl-gpios = <&gpio3 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio3 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; }; /* Verdin PCIE_1 */
Signature · 1 line
2.43.0
Shawn Guo
AppliedQuoted 10 lines · Stefan Eichenberger
Add the single-master property to all i2c nodes on the iMX8MM and iMX8MP Verdin modules. This will allow us to use some single-master optimisations on the i2c driver. Together with the following series, now in the i2c-host branch of Andis tree, we get rid of a timeout problem on the i2c bus with a SMBus ADC:
https://lore.kernel.org/all/7ts577rxed4mmfkfin7kfdjfjkb6iak2y4vtgtz6merwxkzz6w@h5aefbvyx44u/Stefan Eichenberger (2):
arm64: dts: imx8mm-verdin: add single-master property to all i2c nodes
arm64: dts: imx8mp-verdin: add single-master property to all i2c nodes
Applied both, thanks!