Skip to content

Commit 6429d40

Browse files
dos1Shawn Guo
authored andcommitted
arm64: dts: imx8mq-librem5: Enable I2C recovery
i2c-imx can perform bus recovery by temporarily switching I2C pins into GPIO mode. To do so, it needs GPIO and pinctrl handles to be provided in the device tree. Suggested-by: Denis Sergeevich <galilley@gmail.com> Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm> Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
1 parent fc61fdf commit 6429d40

1 file changed

Lines changed: 44 additions & 4 deletions

File tree

arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -512,27 +512,55 @@
512512
>;
513513
};
514514

515+
pinctrl_i2c1_gpio: i2c1-gpiogrp {
516+
fsl,pins = <
517+
MX8MQ_IOMUXC_I2C1_SCL_GPIO5_IO14 0x26
518+
MX8MQ_IOMUXC_I2C1_SDA_GPIO5_IO15 0x26
519+
>;
520+
};
521+
515522
pinctrl_i2c2: i2c2grp {
516523
fsl,pins = <
517524
MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x40000026
518525
MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x40000026
519526
>;
520527
};
521528

529+
pinctrl_i2c2_gpio: i2c2-gpiogrp {
530+
fsl,pins = <
531+
MX8MQ_IOMUXC_I2C2_SCL_GPIO5_IO16 0x26
532+
MX8MQ_IOMUXC_I2C2_SDA_GPIO5_IO17 0x26
533+
>;
534+
};
535+
522536
pinctrl_i2c3: i2c3grp {
523537
fsl,pins = <
524538
MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL 0x40000026
525539
MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA 0x40000026
526540
>;
527541
};
528542

543+
pinctrl_i2c3_gpio: i2c3-gpiogrp {
544+
fsl,pins = <
545+
MX8MQ_IOMUXC_I2C3_SCL_GPIO5_IO18 0x26
546+
MX8MQ_IOMUXC_I2C3_SDA_GPIO5_IO19 0x26
547+
>;
548+
};
549+
529550
pinctrl_i2c4: i2c4grp {
530551
fsl,pins = <
531552
MX8MQ_IOMUXC_I2C4_SCL_I2C4_SCL 0x40000026
532553
MX8MQ_IOMUXC_I2C4_SDA_I2C4_SDA 0x40000026
533554
>;
534555
};
535556

557+
pinctrl_i2c4_gpio: i2c4-gpiogrp {
558+
fsl,pins = <
559+
MX8MQ_IOMUXC_I2C4_SCL_GPIO5_IO20 0x26
560+
MX8MQ_IOMUXC_I2C4_SDA_GPIO5_IO21 0x26
561+
>;
562+
};
563+
536564
pinctrl_keys: keysgrp {
537565
fsl,pins = <
538566
/* VOL- */
@@ -782,8 +810,11 @@
782810

783811
&i2c1 {
784812
clock-frequency = <384000>;
785-
pinctrl-names = "default";
813+
pinctrl-names = "default", "gpio";
786814
pinctrl-0 = <&pinctrl_i2c1>;
815+
pinctrl-1 = <&pinctrl_i2c1_gpio>;
816+
scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
817+
sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
787818
status = "okay";
788819

789820
typec_pd: usb-pd@3f {
@@ -982,8 +1013,11 @@
9821013

9831014
&i2c2 {
9841015
clock-frequency = <384000>;
985-
pinctrl-names = "default";
1016+
pinctrl-names = "default", "gpio";
9861017
pinctrl-0 = <&pinctrl_i2c2>;
1018+
pinctrl-1 = <&pinctrl_i2c2_gpio>;
1019+
scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1020+
sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
9871021
status = "okay";
9881022

9891023
magnetometer: magnetometer@1e {
@@ -1031,8 +1065,11 @@
10311065

10321066
&i2c3 {
10331067
clock-frequency = <384000>;
1034-
pinctrl-names = "default";
1068+
pinctrl-names = "default", "gpio";
10351069
pinctrl-0 = <&pinctrl_i2c3>;
1070+
pinctrl-1 = <&pinctrl_i2c3_gpio>;
1071+
scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1072+
sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
10361073
status = "okay";
10371074

10381075
codec: audio-codec@1a {
@@ -1121,8 +1158,11 @@
11211158

11221159
&i2c4 {
11231160
clock-frequency = <384000>;
1124-
pinctrl-names = "default";
1161+
pinctrl-names = "default", "gpio";
11251162
pinctrl-0 = <&pinctrl_i2c4>;
1163+
pinctrl-1 = <&pinctrl_i2c4_gpio>;
1164+
scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1165+
sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
11261166
status = "okay";
11271167

11281168
vcm@c {

0 commit comments

Comments
 (0)