-背景
i.MX8MQおよびi.MX8M Miniのリリース以来、一部のお客様から、これら2つのプロセッサのUSB2.0の設計に関する質問が寄せられています。プロジェクトのニーズにより、USB3.0およびUSB TYPE-Cを使用する必要はありません。したがって、これらのアプリケーションでは、i.MX6Qと同様に従来のUSB2.0インターフェース設計を使用する必要があります。同様のニーズを持つお客様がスムーズに設計を完了できるように、このドキュメントでは、過去の顧客に対する回答をまとめ、2つのUSB2.0設計回路図を描いています。同時に、i.MX専門ハードウェア・チームのメンバーが2つの図面のレビューを手伝い、i.MX専門ソフトウェア・チームがソフトウェアの調整に関する提案を行いました。
-始める
i.MX8MQはUSB3.0をサポートし、USB2.0と互換性があります。i.MX8M MiniはUSB2.0のみをサポートし、USB3.0はサポートしていません。どちらの開発ボードでも、USB TYPE-C設計方式が使用されています。USB TYPE-C、PDチップ、ロジック・チップを取り外す必要があります。同時に、コネクタをMicroUSBとUSB TYPE-A-Fに変更します。
1 ハードウェア設計
1. IOMUX リスト
2 、USB 回路設計
(1) USB 電源&OC 制御
I.MX8MM
i.MX8MQ
i.MX8MQ
i.MX8MQ
[コメント] i.MX8MQに関して
-USB1はデュアル・ロール・モードとして構成され、USB1 OTG IDが検出に使用されます
-USB2は固定ホスト・モードに設定され、USB2 OTG IDが検出に使用されます
-i.MX8M Mini USB2.0
i.MX8M Mini
i.MX8M Mini
[コメント] i.MX8M Miniに関して
-USB1はデュアル・ロール・モードとして構成され、USB1 OTG IDが検出に使用されます
-USB2は固定ホスト・モードに設定され、USB2 OTG IDが検出に使用されます
(3) 付加的な説明
--i.MX8M MiniのUSB1_VBUS & USB2_VBUSに関して
i.MX8M Miniのデータシートによると、USB1_VBUSとUSB2_VBUSは0~3.9Vの入力を許可します。以下をご覧ください。
そのため、I.MX8M Mini-EVKのUSB1_VBUSについて疑問を持っているお客様がおられます。図面によると、外部入力電圧がこの範囲を超えています。
実際、お客様はこの問題について心配する必要はありません。USB1_VBUSピンとUSB2_VBUSピンには内部の分圧抵抗があります。お客様がI.MX8M Mini-EVKの設計方法を参照している限り、これら2つのピンの入力電圧は内部で保証されます。
USBx OTG IDおよびUSBx_IDについて
(1) USBx_OTG_ID
USBx OTG IDはGPIO IDとも呼ばれ、i.MX6Qのものと同じです。作業プロセス中、ソフトウェアはIDピンのレベルが高から低、または低から高に変わると、デバイスとホストの役割を切り替えます。
(2)USBx_ID
USBx_IDはUSB PHY IDと呼ばれ、USBx OTG IDと同様の機能を果たすことができます。
(3) USBx_OTG_IDまたはUSBx_IDを使用する
USBx_OTG_IDをお勧めします。しかし、i.MX8MQにUSBx_IDを使用したい場合は、それも可能です
USB_CTL0_ADDR[utmiotg_iddig_sel]レジスタを設定します。
I.MX8M Miniの場合、USBNC_n_CTRL2[DIG_ID_SEL]レジスタを設定します。
[コメント]
この構成は、これら2つのプロセッサのリファレンスマニュアルから取得されていますが、適切なボードがないため、ボード上での検証は行われていません。お客様はそれをお試しいただけます。
(4) ボードのストレージへのイメージのフラッシュについて
空のボードまたは更新イメージが必要なボードの場合、USBインターフェースを使用してイメージをプログラムする必要があります。このとき、USBインターフェースはデバイスモードで動作する必要があります。このため、CPU内のROMコードがUSBをデバイスモードで動作させることを保証します。
2 チューニング・ソフトウェア
1.IOMUX
実際のアプリケーションに応じて、使用される信号はdtsファイル内で多重化されます。このステップは比較的簡単であるため、ここでは説明しません。
2. u-boot / デバイスツリーにおけるUSB設定の調整
i.MX8M Miniおよびi.MX8MQの場合、i.MX専門ソフトウェア・チームは次の提案をしています。ここでその提案を引用します。
imx8mm_evk_defconfiのCONFIG_USB_TCPCを削除し、fsl-imx8mm-evk.dtsのtypec_ptn5110_1/2 依存関係を削除することで、これを試すことができます。ubootはタイプCのICの状態をチェックし、ICが取り外されるとクラッシュしたり停止したりします。
--i.MX8M Mini
U-BOOT:CONFIG_USB_TCPC=n
デバイス・ツリー:
&usbotg1 {
status = "okay";
};
&usbotg2 {
status = "okay";
---------------------------------------------------------
--i.MX8MQ
--u-boot
CONFIG_USB_TCPC=n
--Node of Device tree
&usb_dwc3_0 {
status = "okay";
/*extcon = <&typec_ptn5100>;*/
dr_mode = "otg";
hnp-disable;
srp-disable;
adp-disable;
maximum-speed = "high-speed";
};
----------------------------------------------
-END
[コメント]
このドキュメントの使用中に問題が発生した場合は、チケットを提出してください。チケットを提出する手順は以下のとおりです。
1. 次のサポート・サイトを開き、中央の青い[Go to Tickets(チケットへ移動)]をクリックします。
http://www.nxp.com/support/support:SUPPORTHOME
2. 次にログインを求められます。アカウントがない場合は、まずビジネス用メールで登録してください。
3. ログイン後、中央の[Create New Cases(新しいケースを作成)]ボタンをクリックすると、質問を送信できます。
NXP TICチーム
Weidong Sun
2020/3/30
Hi Weidong Sun,
このメッセージがお役に立てば幸いです。
CORAL SOM (NXP i.MX8MQ) カスタム・キャリア・ボードで、特にUSBカメラ・モジュールが認識されないという問題が発生しています。
USB1にUSBホストType-Aを実装したいと考えています。USB1_OTG_ID が Google によって実装されていないことを考えると、USB1_IDをDGNDにプルダウンするだけで十分ですか?それともUSB2だけではできないのでしょうか?さらに、MIC2026 IC なしでこの実装を進めることはできますか?それとも必須ですか?
ご協力に感謝いたします。ご返答をお待ちしております。
よろしくお願いいたします。
Tibor Gajdar
Hi,
私はImx8mmのUSB1でタイプBを使用しており、ボードのu-bootデバイスツリーで同じ変更を行っています。しかし、ボードの起動時に以下のメッセージが表示されます。
Log :
In: serial
Out: serial
Err: serial
extcon_ptn5150_init: Can't find device id=0x3d
extcon_ptn5150_setup: port init failed, err=-19
「extcon_ptn5150_init:」が無効になっているにもかかわらず表示される理由がわかりません。以下は私のデバイス・ツリーの詳細です。
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c2>;
pinctrl-1 = <&pinctrl_i2c2_gpio>;
scl-gpios = <&gpio5 16 GPIO_ACTIVE_HIGH>;
sda-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
status = "okay";
ptn5150: ptn5150@3d {
compatible = "nxp,ptn5150";
pinctrl-names = "default";
reg = <0x3d>;
i2c-bus = <0x1>;
status = "disabled";
};
};
および
&usbotg1 {
dr_mode = "peripheral";
/*extcon = <&ptn5150>;*/
status = "okay";
};
&usbotg2 {
dr_mode = "host";
/* Regulator requires jumper J3.12 to J3.18 */
vbus-supply = <®_usb_otg2_vbus>;
status = "okay";
};
ホストはUSBデバイスを感知できますが、ボードが起動すると、ホストはデバイスを検出できません。問題を理解できるよう助けていただけますか。
IMX8M MiniでUSBx_OTG_IDの代わりに USBx_IDを使用する場合の注意点:
IMX8MMRMのUSBNC_n_CTRL2[DIG_ID_SEL]はIOMUXC_USB_OTG1_ID_SELECT_INPUTを使用しますが、これはimx7用のiomuxです。
解決策:
IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO10とIOMUXC_SW_MUX_CTL_PAD_GPIO1_IO11を使用します
2020年6月12日時点の8MMEVKで確認済み。USBx_IDはOTGピンとして使用できます。
Snipaste_2026-04-08_12-18-26.png
Snipaste_2026-04-08_12-18-06.png
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index a11846b86fb2..186e5a8a233a 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -130,7 +130,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mm-evk.dtb imx8mm-evk-rpmsg.dtb imx8mm-evk-rm67191
imx8mm-evk-qca-wifi.dtb \
imx8mm-evk-dpdk.dtb \
imx8mm-evk-rm67199.dtb imx8mm-evk-rm67191-cmd-ram.dtb imx8mm-evk-rm67199-cmd-ram.dtb \
- imx8mm-evk-lk.dtb imx8mm-evk-rpmsg-wm8524-lpv.dtb
+ imx8mm-evk-lk.dtb imx8mm-evk-rpmsg-wm8524-lpv.dtb imx8mm-evk-usb1id.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mm-evk-rpmsg-wm8524.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mm-evk-ak4497.dtb imx8mm-evk-ak5558.dtb imx8mm-evk-audio-tdm.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mm-evk-8mic-revE.dtb imx8mm-evk-8mic-swpdm.dtb \
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk-usb1id.dts b/arch/arm64/boot/dts/freescale/imx8mm-evk-usb1id.dts
new file mode 100644
index 000000000000..eae648c764d7
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mm-evk-usb1id.dts
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2019-2020 NXP
+ */
+
+/dts-v1/;
+
+#include
+#include "imx8mm-evk.dts"
+
+/delete-node/ &ptn5110;
+
+&usbotg1 {
+ /delete-property/ usb-role-switch;
+ /delete-node/ port;
+};
\ No newline at end of file
diff --git a/arch/arm64/configs/imx_v8_defconfig b/arch/arm64/configs/imx_v8_defconfig
index 31eabe2708ea..3fe1ea66c0da 100644
--- a/arch/arm64/configs/imx_v8_defconfig
+++ b/arch/arm64/configs/imx_v8_defconfig
@@ -843,13 +843,6 @@ CONFIG_USB_AUDIO=m
CONFIG_USB_ETH=m
CONFIG_USB_MASS_STORAGE=m
CONFIG_USB_G_SERIAL=m
-CONFIG_TYPEC=y
-CONFIG_TYPEC_TCPM=y
-CONFIG_TYPEC_TCPCI=y
-CONFIG_TYPEC_FUSB302=m
-CONFIG_TYPEC_TPS6598X=m
-CONFIG_TYPEC_HD3SS3220=m
-CONFIG_TYPEC_SWITCH_GPIO=y
CONFIG_MMC=y
CONFIG_MMC_BLOCK_MINORS=32
CONFIG_MMC_ARMMMCI=y