The question about M.2 Interface

Hi WayneWWW,

I have refered to this datasheet.
We used this card on TX2 before, and I am sure it can be detected through “lspci” and “lsusb”, and WLAN interface is PCIe, BT interface is USB.
Thus, I think PCIe configuration is 010.
Unless the configuration may change when this card connect different devices, I think it is impossible.

Please help us, it is urgent.
Thanks.

We may not help anything unless you get the information from the vendors.

If the config pins are driven by Tegra GPIOs and default values matches with PCIe config on TX2, then it works on TX2. However, maybe these gpios are mismatched on nano and thus config is changed.

Please note that i8265 working fine on your board indicates the pcie signal and usb signal from nano should work fine.

Hi WayneWWW,

We decide to find new wifi/bt card.
Does Nano support Intel Wireless 9260 and 9560 card?

Thanks.

Hi WayneWWW,

The attachment is the card(CM276MA) photo we used. It has the standard M.2 interface.
Vendor said the card(CM276MA) we used has been done GPIO configuration(pcie for wifi, usb for bt).
And vendor provide us 2 new cards(CM276MA), we get same result on Nano both.

That datasheet(#20) is for CM276NF solder down version. And it need to configure GPIO.

Thanks.

Thanks for reply. I’ve filed internal ticket for your topic.

Could you also try rel-32.3 and see if this issue get resolved?

We have trid both Jetpack 4.2.1(rev.2) and 4.2.3, got the same result.

Thanks.

I meant the Jetpack4.3.

Sorry, i am careless, we have tried R32.3.1, got the same result.
Thanks.

Hi,

I am summarizing the observations so far,

  1. CM276NF PCIe card enumerates on Jetson-TX2, but not on Jetson-Nano.
  2. Intel 8265 card works on same Jetson-Nano.
  3. Toggling W_DISABLE1 didn’t helped CM276NF.

Intel 8265 card is working, so I don’t suspect any PCIe signal issue.
It can be either CM276NF is expecting some control signals, or we have some issue PCIe protocol issue during link up process.
We don’t have any major changes in PCIe IP between T210(Nano) and T186(TX2), so chances of PCIe protocol issue is less.
Please try following experiments,

  1. Could you check with vendor for power sequence? I have seen vendors using control signals(like W_DISABLE1) in power up sequence.
  2. Probe M.2 Key E signals on both Nano & TX2 and compare them.
  3. Please capture protocol analyzer dump. This will tell at what state of LTSSM link up failed.

Thanks,

Hi Manikanta,

Vendor said W_DISABLE#1 is used by host to force wlan to be shut down. The inside is normally pull-high and no control is required when starting up, so this pin has nothing to do with the power up sequence.
The following is about the power sequence, meanwhile, you can refer to “2-5” in attachment’s datasheet “AW-CM276MA-DS-Rev0 2_(PCIE-USB).pdf”

Thanks.

AW-CM276MA-DS-Rev0 2_(PCIE-USB).pdf (1.3 MB)

Hi,

WiFi chip is expecting W_DISABLE2(PDn in power up sequence) to be output high.
Please try below patch. Dump tegra_gpio and gpio to confirm that gpio settings are applied.

diff --git a/kernel-dts/tegra210-porg-p3448-common.dtsi b/kernel-dts/tegra210-porg-p3448-common.dtsi
index a73561e..242ae92 100644
--- a/kernel-dts/tegra210-porg-p3448-common.dtsi
+++ b/kernel-dts/tegra210-porg-p3448-common.dtsi
@@ -816,6 +816,13 @@
 				TEGRA_GPIO(A, 6) 0
 				>;
 		};
+		w-disable1-gpio {
+			gpio-hog;
+			output-low;
+			gpios = <TEGRA_GPIO(H, 7) 0>;
+			label = "w_disable1_gpio";
+			status = "okay";
+		};
+		w-disable2-gpio {
+			gpio-hog;
+			output-low;
+			gpios = <TEGRA_GPIO(I, 2) 0>;
+			label = "w_disable2_gpio";
+			status = "okay";
+		};
 	};
 
 	leds {

Thanks

Hi,

Did the patch in comment #31 helped?

Thanks,
Manikanta

Hi Manikanta,

Sorry, that card was sent back to vendor, they said it is fine.
We let them send to us, so now the card is in the posting.
I will give you feedback first time after I test.

Thanks.

Hi Manikanta,

Sorry for late reply.
I try this patch, and get the same result, can not detect this card.

The following is the output of tegra_gpio and gpio:

isbu@isbu-desktop:~$ sudo cat /sys/kernel/debug/tegra_gpio
[sudo] password for isbu: 
Name:Bank:Port CNF OE OUT IN INT_STA INT_ENB INT_LVL
 A: 0:0 64 40 40 24 00 00 000000
 B: 0:1 00 00 00 00 00 00 000000
 C: 0:2 00 00 00 00 00 00 000000
 D: 0:3 00 00 00 00 00 00 000000
 E: 1:0 00 00 00 00 00 00 000000
 F: 1:1 00 00 00 00 00 00 000000
 G: 1:2 00 00 00 00 00 00 000000
 H: 1:3 fd 99 00 60 00 00 000000
 I: 2:0 07 05 00 02 00 00 000000
 J: 2:1 00 00 00 00 00 00 000000
 K: 2:2 00 00 00 00 00 00 000000
 L: 2:3 00 00 00 00 00 00 000000
 M: 3:0 00 00 00 00 00 00 000000
 N: 3:1 00 00 00 00 00 00 000000
 O: 3:2 00 00 00 00 00 00 000000
 P: 3:3 00 00 00 00 00 00 000000
 Q: 4:0 00 00 00 00 00 00 000000
 R: 4:1 00 00 00 00 00 00 000000
 S: 4:2 80 80 00 00 00 00 000000
 T: 4:3 01 01 00 00 00 00 000000
 U: 5:0 00 00 00 00 00 00 000000
 V: 5:1 02 00 00 02 00 00 000000
 W: 5:2 00 00 00 00 00 00 000000
 X: 5:3 78 08 08 70 00 60 606000
 Y: 6:0 02 00 00 02 00 00 000000
 Z: 6:1 0e 08 08 04 00 06 020600
AA: 6:2 00 00 00 00 00 00 000000
BB: 6:3 00 00 00 00 00 00 000000
CC: 7:0 12 00 00 00 00 12 121200
DD: 7:1 00 00 00 00 00 00 000000
EE: 7:2 00 00 00 00 00 00 000000
FF: 7:3 00 00 00 00 00 00 000000
isbu@isbu-desktop:~$ sudo cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-255, parent: platform/6000d000.gpio, tegra-gpio:
 gpio-0   (                    )
 gpio-1   (                    )
 gpio-2   (                    |pcie_wake           ) in  hi    
 gpio-3   (                    )
 gpio-4   (                    )
 gpio-5   (                    )
 gpio-6   (                    |vdd-usb-hub-en      ) out hi    
 gpio-7   (                    )
 gpio-8   (                    )
 gpio-9   (                    )
 gpio-10  (                    )
 gpio-11  (                    )
 gpio-12  (SPI1_MOSI           )
 gpio-13  (SPI1_MISO           )
 gpio-14  (SPI1_SCK            )
 gpio-15  (SPI1_CS0            )
 gpio-16  (SPI0_MOSI           )
 gpio-17  (SPI0_MISO           )
 gpio-18  (SPI0_SCK            )
 gpio-19  (SPI0_CS0            )
 gpio-20  (SPI0_CS1            )
 gpio-21  (                    )
 gpio-22  (                    )
 gpio-23  (                    )
 gpio-24  (                    )
 gpio-25  (                    )
 gpio-26  (                    )
 gpio-27  (                    )
 gpio-28  (                    )
 gpio-29  (                    )
 gpio-30  (                    )
 gpio-31  (                    )
 gpio-32  (                    )
 gpio-33  (                    )
 gpio-34  (                    )
 gpio-35  (                    )
 gpio-36  (                    )
 gpio-37  (                    )
 gpio-38  (GPIO13              )
 gpio-39  (                    )
 gpio-40  (                    )
 gpio-41  (                    )
 gpio-42  (                    )
 gpio-43  (                    )
 gpio-44  (                    )
 gpio-45  (                    )
 gpio-46  (                    )
 gpio-47  (                    )
 gpio-48  (                    )
 gpio-49  (                    )
 gpio-50  (UART1_RTS           )
 gpio-51  (UART1_CTS           )
 gpio-52  (                    )
 gpio-53  (                    )
 gpio-54  (                    )
 gpio-55  (                    )
 gpio-56  (                    )
 gpio-57  (                    )
 gpio-58  (                    )
 gpio-59  (                    )
 gpio-60  (                    )
 gpio-61  (                    )
 gpio-62  (                    )
 gpio-63  (                    |w-disable1-gpio     ) out lo    
 gpio-64  (                    )
 gpio-65  (                    )
 gpio-66  (                    |w-disable2-gpio     ) out lo    
 gpio-67  (                    )
 gpio-68  (                    )
 gpio-69  (                    )
 gpio-70  (                    )
 gpio-71  (                    )
 gpio-72  (                    )
 gpio-73  (                    )
 gpio-74  (                    )
 gpio-75  (                    )
 gpio-76  (I2S0_FS             )
 gpio-77  (I2S0_DIN            )
 gpio-78  (I2S0_DOUT           )
 gpio-79  (I2S0_SCLK           )
 gpio-80  (                    )
 gpio-81  (                    )
 gpio-82  (                    )
 gpio-83  (                    )
 gpio-84  (                    )
 gpio-85  (                    )
 gpio-86  (                    )
 gpio-87  (                    )
 gpio-88  (                    )
 gpio-89  (                    )
 gpio-90  (                    )
 gpio-91  (                    )
 gpio-92  (                    )
 gpio-93  (                    )
 gpio-94  (                    )
 gpio-95  (                    )
 gpio-96  (                    )
 gpio-97  (                    )
 gpio-98  (                    )
 gpio-99  (                    )
 gpio-100 (                    )
 gpio-101 (                    )
 gpio-102 (                    )
 gpio-103 (                    )
 gpio-104 (                    )
 gpio-105 (                    )
 gpio-106 (                    )
 gpio-107 (                    )
 gpio-108 (                    )
 gpio-109 (                    )
 gpio-110 (                    )
 gpio-111 (                    )
 gpio-112 (                    )
 gpio-113 (                    )
 gpio-114 (                    )
 gpio-115 (                    )
 gpio-116 (                    )
 gpio-117 (                    )
 gpio-118 (                    )
 gpio-119 (                    )
 gpio-120 (                    )
 gpio-121 (                    )
 gpio-122 (                    )
 gpio-123 (                    )
 gpio-124 (                    )
 gpio-125 (                    )
 gpio-126 (                    )
 gpio-127 (                    )
 gpio-128 (                    )
 gpio-129 (                    )
 gpio-130 (                    )
 gpio-131 (                    )
 gpio-132 (                    )
 gpio-133 (                    )
 gpio-134 (                    )
 gpio-135 (                    )
 gpio-136 (                    )
 gpio-137 (                    )
 gpio-138 (                    )
 gpio-139 (                    )
 gpio-140 (                    )
 gpio-141 (                    )
 gpio-142 (                    )
 gpio-143 (                    )
 gpio-144 (                    )
 gpio-145 (                    )
 gpio-146 (                    )
 gpio-147 (                    )
 gpio-148 (                    )
 gpio-149 (GPIO01              )
 gpio-150 (                    )
 gpio-151 (                    |cam_reset_gpio      ) out lo    
 gpio-152 (                    |camera-control-outpu) out lo    
 gpio-153 (                    )
 gpio-154 (                    )
 gpio-155 (                    )
 gpio-156 (                    )
 gpio-157 (                    )
 gpio-158 (                    )
 gpio-159 (                    )
 gpio-160 (                    )
 gpio-161 (                    )
 gpio-162 (                    )
 gpio-163 (                    )
 gpio-164 (                    )
 gpio-165 (                    )
 gpio-166 (                    )
 gpio-167 (                    )
 gpio-168 (GPIO07              )
 gpio-169 (                    )
 gpio-170 (                    )
 gpio-171 (                    )
 gpio-172 (                    )
 gpio-173 (                    )
 gpio-174 (                    )
 gpio-175 (                    )
 gpio-176 (                    )
 gpio-177 (                    )
 gpio-178 (                    )
 gpio-179 (                    )
 gpio-180 (                    )
 gpio-181 (                    )
 gpio-182 (                    )
 gpio-183 (                    )
 gpio-184 (                    )
 gpio-185 (                    )
 gpio-186 (                    )
 gpio-187 (                    |?                   ) out hi    
 gpio-188 (                    )
 gpio-189 (                    |Power               ) in  hi IRQ
 gpio-190 (                    |Forcerecovery       ) in  hi IRQ
 gpio-191 (                    )
 gpio-192 (                    )
 gpio-193 (                    )
 gpio-194 (GPIO12              )
 gpio-195 (                    )
 gpio-196 (                    )
 gpio-197 (                    )
 gpio-198 (                    )
 gpio-199 (                    )
 gpio-200 (GPIO11              )
 gpio-201 (                    |cd                  ) in  lo IRQ
 gpio-202 (                    |pwm-fan-tach        ) in  hi IRQ
 gpio-203 (                    |vdd-3v3-sd          ) out hi    
 gpio-204 (                    )
 gpio-205 (                    )
 gpio-206 (                    )
 gpio-207 (                    )
 gpio-208 (                    )
 gpio-209 (                    )
 gpio-210 (                    )
 gpio-211 (                    )
 gpio-212 (                    )
 gpio-213 (                    )
 gpio-214 (                    )
 gpio-215 (                    )
 gpio-216 (GPIO09              )
 gpio-217 (                    )
 gpio-218 (                    )
 gpio-219 (                    )
 gpio-220 (                    )
 gpio-221 (                    )
 gpio-222 (                    )
 gpio-223 (                    )
 gpio-224 (                    )
 gpio-225 (                    |hdmi2.0_hpd         ) in  lo IRQ
 gpio-226 (                    )
 gpio-227 (                    )
 gpio-228 (                    |extcon:extcon@1     ) in  lo IRQ
 gpio-229 (                    )
 gpio-230 (                    )
 gpio-231 (                    )
 gpio-232 (SPI1_CS1            )
 gpio-233 (                    )
 gpio-234 (                    )
 gpio-235 (                    )
 gpio-236 (                    )
 gpio-237 (                    )
 gpio-238 (                    )
 gpio-239 (                    )

gpiochip1: GPIOs 504-511, parent: platform/max77620-gpio, max77620-gpio, can sleep:
 gpio-505 (                    |spmic-default-output) out hi    
 gpio-507 (                    |vdd-3v3-sys         ) out hi    
 gpio-510 (                    |enable              ) out hi    
 gpio-511 (                    |avdd-io-edp-1v05    ) out lo

Thanks

Hi,

Please probe M.2 pins on both TX2(working) and Nano(not working) and lets compare the differences.
For the pin details, please refer to “SDIO Based Module Solution Pinout (Module Key E)” table in PCIe_M.2_Electromechanical_Spec.

Pins which we should probe and what to expect,

  • 2, 4, 72, 74 → 3.3V
  • 35, 37 → PCIe TX lanes, need to see data traffic from Tegra, need to use GHz scope
  • 41, 43 → PCIe RX lanes, need to see data traffic from WiFi, need to use GHz scope
  • 47, 49 → PCIe refclk, need to see 100 MHz clock
  • 53 → PCIe clkreq, need to pulled low
  • 38, 40, 42 → Vendor defined, need to be same as on TX2
  • 50 → 32 KHz clock
  • 52 → Need to be asserted high
  • 54, 56 → Need to be high, same as TX2

BTW, could you check with vendor if there is any amplitude requirement for PCIe REFCLK. I have seen some cards needs more amplitude than others. I am wondering if TX2 able to provide the required REFCLK but nano not.

Thanks,
Manikanta

Hi arknights,

Are you able to gather the data requested in comment #35?

I can provide a patch to get the max REFCLK voltage, if you want to try it out.

Thanks,
Manikanta

Hi Manikanta,

Sorry, I don’t know clearly how to gather the data requested in comment #35. If can, please teach me.
If you can provide a patch to get the max REFCLK voltage, I want to try it.

Thanks.

Hi,

I am attaching two patches,

  • 0001-Change-REFCLK-settings.patch → This patch will increase PEX_CLK amplitude for the C0 controller where WiFi chip is connected.
  • 0001-Change-REFCLK-settings-more-aggresive-settings.patch → This patch is more aggressive, this will impact both C0 and C1.

If the first patch doesn’t work then try second one. These patches are only for debug, once experiment is done, you have to revert to release binary(i.e release code without these settings).
Let me know if this works.

Note: You should use W_DISABLE1 and W_DISABLE2 patches along with these patches.

Thanks,
Manikanta
REFCLK_settings.7z (817 Bytes)

Hi,

I forgot to attach patches in comment #38, I did it now. Please give it a try.

Thanks,
Manikanta

Hi arknights,

Does the patch attached in comment #38 helped?

Thanks,
Manikanta