Armadilloフォーラム

DeviceTreeの修正方法について

richard84

2019年4月10日 8時59分

佐藤と申します。
お世話になります。

Armadillo-X1の拡張コネクタCON8を使用して、SIMスロットを接続したいと考えております。
(実際に使用するのは、NFCのセキュアアクセスモジュールでISO7816接続)

このために、i.MX 7DualのSIM2ポートを使用したいのですがDeviceTreeの修正が必要かと思います。
初歩的な質問で恐縮ですが、SIM2ポートを使用可能にするDeviceTreeの修正方法についてご教示いただけないでしょうか。

以上、よろしくお願いいたします。


コメント

at_mizo

2019年4月10日 10時03分

溝渕です。

> SIM2ポートを使用可能にするDeviceTreeの修正方法についてご教示いただけないでしょうか。

以下のDTSは参考になりますか?

linux-4.9.x-at/arch/arm/boot/dts/imx7d-sdb.dts

上記ではsim1を利用しています。

richard84

2019年4月10日 23時42分

溝渕様

佐藤です。

ご回答ありがとうございます。
ご教示頂いた内容確認させていただきます。

以上、宜しくお願いいたします。

> 溝渕です。
>
> > SIM2ポートを使用可能にするDeviceTreeの修正方法についてご教示いただけないでしょうか。
>
> 以下のDTSは参考になりますか?
>
> linux-4.9.x-at/arch/arm/boot/dts/imx7d-sdb.dts
>
> 上記ではsim1を利用しています。
>

fumihito_yamaguchi

2019年5月21日 10時38分

溝渕様

横からすみません。

山口と申します。

同じくSIM2ポートを使用したいのですが、
溝渕様にご教示頂いたソースを拝見しているのですが、
dtsの修正方法がわかりません。

詳細をご教示頂けないでしょうか。

以上、よろしくお願いいたします。

> >
> > 以下のDTSは参考になりますか?
> >
> > linux-4.9.x-at/arch/arm/boot/dts/imx7d-sdb.dts
> >
> > 上記ではsim1を利用しています。
> >

at_mizo

2019年5月21日 11時11分

溝渕です。

> 同じくSIM2ポートを使用したいのですが、
> 溝渕様にご教示頂いたソースを拝見しているのですが、
> dtsの修正方法がわかりません。
>
> 詳細をご教示頂けないでしょうか。

○ 編集対象のDTS
Armadillo-X1の場合は次のDTSを編集します。
linux-4.9.x-at/arch/arm/boot/dts/armadillo_x1.dts
このDTSに、SIM2のノードと、利用するピンを定義します。

○ 参考DTS
以下のDTSでSIM1を利用しているので、参考にできます。
linux-4.9.x-at/arch/arm/boot/dts/imx7d-sdb.dts

以下の"sim1"がSIM1のノードで、pinctrl_sim1_1がピンの定義への参照です。


&sim1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sim1_1>;
port = <0>;
sven_low_active;
status = "okay";
};

sim1の実体は、次のDTSに定義されています。
linux-4.9.x-at/arch/arm/boot/dts/imx7d.dtsi

pinctrl_sim1_1の実体は次の通りです。


pinctrl_sim1_1: sim1grp-1 {
fsl,pins = <
MX7D_PAD_EPDC_DATA10__SIM1_PORT1_RST_B 0x77
MX7D_PAD_EPDC_DATA12__SIM1_PORT1_PD 0x77
MX7D_PAD_EPDC_DATA11__SIM1_PORT1_SVEN 0x77
MX7D_PAD_EPDC_DATA09__SIM1_PORT1_CLK 0x73
MX7D_PAD_EPDC_DATA08__SIM1_PORT1_TRXD 0x73
>;
};

各ピンは、次のヘッダファイルに定義されています。
linux-4.9.x-at/arch/arm/boot/dts/imx7d-pinfunc.h

ピンのマクロの命名規則は次の通りです。
MX7D_PAD_[ピン名]__[機能名]

○ DTSの編集
sim1の実体は、次のDTSに定義されています。
linux-4.9.x-at/arch/arm/boot/dts/imx7d.dtsi

sim1の例と同様に、"&sim2"のように参照できます。ピンについても、
"imx7d-pinfunc.h"の中から(SIM2の機能を持つ)利用したいピンを利用します。

fumihito_yamaguchi

2019年5月21日 13時43分

溝渕様

早速のご回答ありがとうございました。
詳細に説明をしてくださり感謝しております。

1点教えて頂きたいです。

>
> pinctrl_sim1_1: sim1grp-1 {
> fsl,pins = <
> MX7D_PAD_EPDC_DATA10__SIM1_PORT1_RST_B 0x77
> MX7D_PAD_EPDC_DATA12__SIM1_PORT1_PD 0x77
> MX7D_PAD_EPDC_DATA11__SIM1_PORT1_SVEN 0x77
> MX7D_PAD_EPDC_DATA09__SIM1_PORT1_CLK 0x73
> MX7D_PAD_EPDC_DATA08__SIM1_PORT1_TRXD 0x73
> >;
> };
>

>

ピンマクロ名の後の 0x77 や0x73はどこを参照すると値を把握することができますでしょうか。
数値とピンマクロの関係を把握したいです。

お手数をおかけいたしますが、ご教示のほどよろしくお願いいたします。

---
山口

at_mizo

2019年5月21日 14時12分

溝渕です。

> ピンマクロ名の後の 0x77 や0x73はどこを参照すると値を把握することができますでしょうか。
> 数値とピンマクロの関係を把握したいです。

以下を例に説明します。

>> MX7D_PAD_EPDC_DATA10__SIM1_PORT1_RST_B 0x77

まず、0x77は主にパッド設定を示しています。パッド設定の意味については、
NXP社から提供されているi.MX 7Dのドキュメントを参照します。

NXP社のi.MX 7Dページ[1]から、"i.MX 7Dual Applications Processor Reference Manual"をダウンロードしてください。ユーザー登録が必要だと思います。

EPDC_DATA10ピンのパッド設定は、次の章で説明されています。
8.2.7.175 SW_PAD_CTL_PAD_EPDC_DATA10 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_EPDC_DATA10)

パッド設定のbit 31,30は、Linuxカーネルで特別な扱いがなされます。

bit 31が"1"の場合、パッド設定を実行しません。リセット値または、ブートローダー設定値がそのまま利用されます。

bit 30が"1"の場合、SIONを有効にします。SIONの説明については、次の章で説明されています。

8.2.3.2 SW Loopback through SION bit

[1]: https://www.nxp.com/products/processors-and-microcontrollers/arm-based-…

fumihito_yamaguchi

2019年5月21日 15時05分

溝渕様

解説ありがとうございました。

ご教示頂いたマニュアルを参照して理解を進めたいと思います。

サポートありがとうございました。

---
山口