锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

(2)Xavier USB type c 接口分析

时间:2023-06-18 07:07:03 接头usb连接器

xavier用于开发套件PD controller CYPD4226-40LQXIT
CYPRESS的 PD controller USB控制芯片

电路图如下:

设备树文件配置在设备树文件中PD Controller的信息

lkernel-4.9/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-p2888-0001-p2822-0000-common.dtsi

1.kernel/kernel-4.9/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-p2822-disp.dtsi

中定义了typec显示:

显示的绑定文件:

1.kernel/kernel-5.10/kernel/nvidia/Documentation/devicetree/bindings/video/nvidia,tegra-display-hub.txt

设备树文件:

1.kernel/kernel-4.9/hardware/nvidia/soc/t19x/kernel-dts/tegra194-soc/tegra194-soc-base.dtsi

中型设备显示配置:

head0: nvdisplay@15200000

compatible = "nvidia,tegra194-dc";

  head0: nvdisplay@15200000 {    status = "disabled";    compatible = "nvidia,tegra194-dc";    reg = <0x0 0x15200000 0x0 0x10000>;    interrupts = <0 153 4>;     iommus = <&smmu TEGRA_SID_NVDISPLAY>;    iso-smmu;    non-coherent;     nvidia,dc-ctrlnum = <0>;    nvidia,cmu-enable = <0x1>;     clock-names = "nvdisplay_disp",           "nvdisplayhub", "nvdisplay_p0",           "nvdisplay_p1", "nvdisplay_p2",           "nvdisplay_p3", "pllp_display",           "pll_d", "plld2",           "plld3", "plld4",           "emc";    clocks = <&bpmp_clks TEGRA194_CLK_NVDISPLAY_DISP>,      <&bpmp_clks TEGRA194_CLK_NVDISPLAYHUB>,      <&bpmp_clks TEGRA194_CLK_NVDISPLAY_P0>,      <&bpmp_clks TEGRA194_CLK_NVDISPLAY_P1>,      <&bpmp_clks TEGRA194_CLK_NVDISPLAY_P2>,      <&bpmp_clks TEGRA194_CLK_NVDISPLAY_P3>,      <&bpmp_clks TEGRA194_CLK_PLLP_OUT0>,      <&bpmp_clks TEGRA194_CLK_PLLD>,      <&bpmp_clks TEGRA194_CLK_PLLD2>,      <&bpmp_clks TEGRA194_CLK_PLLD3>,      <&bpmp_clks TEGRA194_CLK_PLLD4>,      <&bpmp_clks TEGRA194_CLK_EMC>;    reset-names = "misc", "wgrp0", "wgrp1", "wgrp2",           "wgrp3", "wgrp4", "wgrp5", "head0";    resets = <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_MISC>,      <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP0>,      <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP1>,      <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP2>,      <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP3>,      <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP4>,      <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP5>,      <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_HEAD0>;    fb_reserved = <&fb0_reserved>;    iommu-direct-regions = <&fb0_reserved &fb1_reserved       &fb2_reserved &fb3_reserved>;     pinctrl-names = "hdmi-dp0-dpd-disable", "hdmi-dp0-dpd-enable",      "hdmi-dp1-dpd-disable", "hdmi-dp1-dpd-enable",      "hdmi-dp2-dpd-disable", "hdmi-dp2-dpd-enable",      "hdmi-dp3-dpd-disable", "hdmi-dp3-dpd-enable";    pinctrl-0 = <&hdmi_dp0_dpd_disable>;    pinctrl-1 = <&hdmi_dp0_dpd_enable>;    pinctrl-2 = <&hdmi_dp1_dpd_disable>;    pinctrl-3 = <&hdmi_dp1_dpd_enable>;    pinctrl-4 = <&hdmi_dp2_dpd_disable>;    pinctrl-5 = <&hdmi_dp2_dpd_enable>;    pinctrl-6 = <&hdmi_dp3_dpd_disable>;    pinctrl-7 = <&hdmi_dp3_dpd_enable>;   };
&head0 {  status = "okay";  nvidia,fb-bpp = <32>;  nvidia,fbmem-size = <265420800>; /* 8K (7680*4320) 32bpp double buffered */  nvidia,fb-flags = ;  win-mask = <0x3>;  nvidia,fb-win = <0>;  nvidia,dc-connector = <&sor2>;  nvidia,dc-flags = ;  avdd_hdmi-supply = <&p2888_spmic_sd0>; /* 1v0 */  avdd_hdmi_pll-supply = <&p2888_spmic_sd1>; /* 1v8 */  vdd_hdmi_5v0-supply = <&p2822_vdd_hdmi_5v0>; /* 5v0 */ };  &head1 {  status = "okay";  nvidia,fb-bpp = <32>;  nvidia,fbmem-size = <265420800>; /* 8K (7680*4320) 32bpp double buffered */  nvidia,fb-flags = ;  win-mask = <0xC>;  nvidia,fb-win = <2>;  nvidia,dc-connector = <&sor0>;  nvidia,dc-flags = ;  vdd-dp-pwr-supply = <&p2888_spmic_sd0>;  avdd-dp-pll-supply = <&p2888_spmic_sd1>;  vdd-edp-sec-mode-supply = <&battery_reg>;  vdd-dp-pad-supply = <&battery_reg>;  vdd_hdmi_5v0-supply = <&p2822_vdd_hdmi_5v0>; }; 

1.kernel/kernel-4.9/kernel/nvidia/drivers/video/tegra/dc/of_dc.c

tegra_dc_probe

分析设备树中的数据,然后驱动配置

of_dc_parse_platform_data

tgra_dc_register_typec_edev

dc 接口具体分析就不贴了,代码挺多!

USB VBUS 的设备树配置如下:

	external-connection {
		vbus_id_extcon: extcon@1 {
			compatible = "extcon-gpio-states";
			reg = <0x1>;
			extcon-gpio,name = "VBUS";
			extcon-gpio,cable-states = <
						0x0 0x1
						0x1 0x0>;
			gpios = <&tegra_main_gpio TEGRA194_MAIN_GPIO(Z, 1) 0>;
			extcon-gpio,out-cable-names = ;
			wakeup-source;
			#extcon-cells = <1>;
		};
	};

extcon:External Connector framework
从名字看主要表征外部连接器的,通过gpio状态去识别外部连接器的类型,并通知关心外部连接器状态的驱动。
主要驱动代码路径:
kernel/msm-4.19/include/linux/extcon.h
kernel/msm-4.19/drivers/extcon

Jetson AGX Xavier支持4路加强型的USB接口,但不全是能用的,因为PCIE, SATA, UFS, and XUSB公用了UPHY.

USB TYPEC 接出的引脚图:

 D+/D- 连接到了UTMI,SSTX/SSRX 连接到了UPHY.

直接去掉TYPE C的PD controller及功能

Jetson/FAQ/BSP/Remove TypeC - eLinux.org

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章