From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
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 <stefan.eichenberger@toradex.com>
---
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
index 5fa3959141911..95d5d2333ca1e 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
@@ -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";
--
2.43.0
On Fri, Oct 25, 2024 at 11:58:02AM +0200, Stefan Eichenberger wrote:
> From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
>
> 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 <stefan.eichenberger@toradex.com>
> ---
> arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> index 5fa3959141911..95d5d2333ca1e 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> @@ -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
> 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";
> --
> 2.43.0
>
Hi Shawn,
On Sat, Nov 02, 2024 at 12:52:08PM +0800, Shawn Guo wrote:
> On Fri, Oct 25, 2024 at 11:58:02AM +0200, Stefan Eichenberger wrote:
> > From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
> >
> > 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 <stefan.eichenberger@toradex.com>
> > ---
> > arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> > index 5fa3959141911..95d5d2333ca1e 100644
> > --- a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> > @@ -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/bcdd6cae28edd9dd05a71118f9979e7460688775.camel@pengutronix.de/
Let me know if I have missed anything or misunderstood.
Regards,
Stefan
On Sat, Nov 02, 2024 at 03:31:56PM +0100, Stefan Eichenberger wrote:
> Hi Shawn,
>
> On Sat, Nov 02, 2024 at 12:52:08PM +0800, Shawn Guo wrote:
> > On Fri, Oct 25, 2024 at 11:58:02AM +0200, Stefan Eichenberger wrote:
> > > From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
> > >
> > > 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 <stefan.eichenberger@toradex.com>
> > > ---
> > > arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 4 ++++
> > > 1 file changed, 4 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> > > index 5fa3959141911..95d5d2333ca1e 100644
> > > --- a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> > > +++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
> > > @@ -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
Ah, thanks for the info!
Shawn
© 2016 - 2026 Red Hat, Inc.