Armadilloフォーラム

Armadillo-640:UART2の設定について

masahide

2018年12月18日 20時48分

お世話になっております。赤坂と申します。

以前にCON14_3,4(UART2)を有効にするために以下の割当設定を
教えていただいて設定したのですが、
これが原因でCON9_25-28にあるGPIOの入力が読めなくなってしまっている様です。
実際に下記のUART2設定箇所を削除するとCON9_25-28のGPIOは問題なく動作しました。
(GPIO4_xxのUART2が影響しているのでしょうか?)

UART2ですが、CON14_3,4を有効にして、
CON9_25-28(CON9_25,26?)を無効にすることは出来ないのでしょうか?

---- 以下変更箇所-----

- uart1,5を無効(i2cとピン排他のため)
- uart2を有効(/dev/ttymxc1)
- i2c2,3を有効 (/dev/i2c-1, i2c-2)

diff --git a/arch/arm/boot/dts/armadillo-640.dts b/arch/arm/boot/dts/armadillo-640.dts
index 0f0983cf075e..06b9fbd7b3fb 100644
--- a/arch/arm/boot/dts/armadillo-640.dts
+++ b/arch/arm/boot/dts/armadillo-640.dts
@@ -95,9 +95,9 @@
     };
 };
 
-&uart1 {
+&uart2 {
     pinctrl-names = "default";
-    pinctrl-0 = <&pinctrl_uart1>;
+    pinctrl-0 = <&pinctrl_uart2>;
     status = "okay";
 };
 
@@ -107,12 +107,6 @@
     status = "okay";
 };
 
-&uart5 {
-    pinctrl-names = "default";
-    pinctrl-0 = <&pinctrl_uart5>;
-    status = "okay";
-};
-
 &usdhc1 {
     pinctrl-names = "default";
     pinctrl-0 = <&pinctrl_usdhc1>;
@@ -145,6 +139,14 @@
             MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
         >;
     };
+
+    pinctrl_uart2: uart2grp {
+        fsl,pins = <
+            MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x00008
+            MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1
+        >;
+    };
+
     pinctrl_uart3: uart3grp {
         fsl,pins = <
             MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x00008
@@ -238,6 +240,18 @@
             MX6UL_PAD_LCD_RESET__WDOG1_WDOG_ANY    0x30b0
             >;
     };
+    pinctrl_i2c2: i2c2grp {
+        fsl,pins= <
+        MX6UL_PAD_UART5_RX_DATA__I2C2_SDA 0x40010808
+        MX6UL_PAD_UART5_TX_DATA__I2C2_SCL 0x40010808
+        >;
+    };
+    pinctrl_i2c3: i2c3grp {
+        fsl,pins= <
+        MX6UL_PAD_UART1_RX_DATA__I2C3_SDA 0x40010808
+        MX6UL_PAD_UART1_TX_DATA__I2C3_SCL 0x40010808
+        >;
+    };
 };
 
 &usbotg1 {
@@ -286,6 +300,21 @@
     status = "okay";
 };
 
+
+&i2c2 {
+    status = "okay";
+    clock-frequency = <400000>;
+    pinctrl-names = "default";
+    pinctrl-0 = <&pinctrl_i2c2>;
+};
+
+&i2c3 {
+    status = "okay";
+    clock-frequency = <400000>;
+    pinctrl-names = "default";
+    pinctrl-0 = <&pinctrl_i2c3>;
+};
+
 &wdog1 {
     pinctrl-names = "default";
     pinctrl-0 = <&pinctrl_wdog>;
コメント

> これが原因でCON9_25-28にあるGPIOの入力が読めなくなってしまっている様です。

該当するGPIOは gpio102-gpio105 になりますが、読めないというのは、
/sys/class/gpio/gpio102/valueの値が0か1で固定されているということでしょうか。

切り分けのために、標準のdtbで「uart2の設定だけ」追記したもの(下記差分)で実験して
みたのですがgpio102から105までvalueが電位によって変化することを確認できました。

diff --git a/arch/arm/boot/dts/armadillo-640.dts b/arch/arm/boot/dts/armadillo-640.dts
index e841529c0d26..eb5c8a1d0b79 100644
--- a/arch/arm/boot/dts/armadillo-640.dts
+++ b/arch/arm/boot/dts/armadillo-640.dts
@@ -154,6 +154,11 @@
     pinctrl-0 = <&pinctrl_uart1>;
     status = "okay";
 };
+&uart2 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&pinctrl_uart2>;
+    status = "okay";
+};
 
 &uart3 {
     pinctrl-names = "default";
@@ -213,6 +218,12 @@
             MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
         >;
     };
+    pinctrl_uart2: uart2grp {
+        fsl,pins = <
+        MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x00008
+        MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1
+        >;
+    };
     pinctrl_uart3: uart3grp {
         fsl,pins = <
             MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x00008

確認有難うございます。

> 該当するGPIOは gpio102-gpio105 になりますが、読めないというのは、
> /sys/class/gpio/gpio102/valueの値が0か1で固定されているということでしょうか。

はい、その通りです。が、そちらでは再現しないという事ですね。。
もう一度、事象を確認して連絡します。

大澤様

再度事象を確認してみましたが再現しませんでした。
上記の設定でgpio102-gpio105 の/sys/class/gpio/gpio102/valueの値が
問題なく変化することを確認しました。

よって何か別の原因?で発生していた様です。
しばらく様子見ますので本件は一旦クローズします。

お騒がせして申し訳ありませんでした。