美文网首页NVIDIA Jetson working
AGX Xavier USB(Remove TYPE-C)

AGX Xavier USB(Remove TYPE-C)

作者: 童年雅趣 | 来源:发表于2019-04-16 14:10 被阅读3次

    由于项目需要,自己重新设计了Xavier载板(Carrier board),即与NV Xavier 官方载板(Carrier board)硬件不同,故需修改软件进行匹配(去除TYPE-C 支持),中间过程踩过的坑就不提了,下面把修改内容Po上来分享出来。

    NV Xavier Carrier board载板 :
    TYPE-C Aport --- 支持OTG(Host 和 Device)
    TYPE-C Bprot --- 仅支持Host 功能
    MicroUSB --- 仅Log print (不支持USB 功能)
    TYPE-A USB(共用E-SATA口) --- 仅支持Host 功能
    自定义Carrier board载板:
    TYPE-C Aport --- 支持OTG(Host 和 Device)
    TYPE-C Bprot --- 仅支持Host 功能
    MicroUSB --- 仅Log print (不支持USB 功能)
    TYPE-A USB(共用E-SATA口) --- 仅支持Host 功能

    Debug过程参考:Xavier Forum USB-Does-Not-Working Topic

    USB 设备插入拔出识别过程的dmesg log:

    插入Micro-USB(Xavier) --- TYPE-A(PC)
    nvidia@tw-xavier:~$ dmesg | grep "extcon"
    [    1.290319] extcon probe enter(VBUS)
    [    1.291297] extcon-gpio-states external-connection:extcon@1: Cable state:1, cable id:1
    [    4.445684] extcon-disp-state external-connection:disp-state: cable 48 state 1
    [    4.628094] extcon-disp-state external-connection:disp-state: cable 48 state 0
    [    4.715092] extcon-disp-state external-connection:disp-state: cable 48 state 1
    [    6.808447] extcon-disp-state external-connection:disp-state: cable 40 state 1
    [   10.002730] tegra-xusb 3610000.xhci: extcon 0: ffffffc3ebc49000 id
    [   21.711515] extcon-disp-state external-connection:disp-state: cable 48 state 0
    [   21.761044] extcon-disp-state external-connection:disp-state: cable 48 state 1
    
    
    插入Micro-USB(Xavier) --- TYPE-A(U盘)
    [  191.594782] extcon-gpio-states external-connection:extcon@1: Cable state:1, cable id:2
    [  205.126747] extcon-gpio-states external-connection:extcon@1: Cable state:0, cable id:0
    
    

    以验证Okay的代码Patch包如下:

    • 去除ucsi支持(TYPE-C)
    • 支持OTG,需添加DTS 节点 vbus_id_extcon: extcon
    • 修改tegra_xhci和tegra_xudc 节点下的“extcon”
    • 去除head0/1/2,extcon(即去除了 TYPE-C Display支持)
    --- a/JetPack_4.2_Linux_P2888/Linux_for_Tegra/sources/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-p2888-0001-p2822-0000-common.dtsi
    +++ b/JetPack_4.2_Linux_P2888/Linux_for_Tegra/sources/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-p2888-0001-p2822-0000-common.dtsi
    @@ -25,6 +25,10 @@
     #include "tegra194-plugin-manager-p2822-0000.dtsi"
     #include "tegra194-super-module-e2614-p2888-0000.dtsi"
     
    +#define EXTCON_NONE                            0
    +#define EXTCON_USB                     1
    +#define EXTCON_USB_Host                2
    @@ -25,6 +25,10 @@
     #include "tegra194-plugin-manager-p2822-0000.dtsi"
     #include "tegra194-super-module-e2614-p2888-0000.dtsi"
     
    +#define EXTCON_NONE                            0
    +#define EXTCON_USB                     1
    +#define EXTCON_USB_Host                2
    +
     / {
            nvidia,dtsfilename = __FILE__;
            nvidia,dtbbuildtime = __DATE__, __TIME__;
    @@ -96,7 +100,7 @@
                            status = "okay";
                    };
                    ucsi_ccg: ucsi_ccg@8 {
    -                       status = "okay";
    +                       status = "disabled";
                            typec-extcon {
                                    typec_port0: port-0 {
                                            status = "okay";
    @@ -115,7 +119,7 @@
                            };
                    };
            };
    -
    +       
     #if TEGRA_XUSB_PADCONTROL_VERSION >= DT_VERSION_2
     
            xusb_padctl: xusb_padctl@3520000 {
    @@ -161,7 +165,7 @@
                    };
     
                    ports {
    -                       usb2-0 {
    +                       usb2-0 {/* A501 USB Ports */
                                    mode = "otg";
                                    status = "okay";
                            };
    @@ -194,10 +198,30 @@
            };
     #endif
     
    +       external-connection {
    +               vbus_id_extcon: extcon@1 {
    +                       compatible = "extcon-gpio-states";
    +                       reg = <0x01>;
    +                       extcon-gpio,name = "VBUS";
    +                       extcon-gpio,wait-for-gpio-scan = <0>;
    +                       extcon-gpio,cable-states = <0x3 0x0
    +                                                   0x0 0x2
    +                                                   0x1 0x2
    +                                                   0x2 0x1>;
    +                       gpios = <&tegra_main_gpio TEGRA194_MAIN_GPIO(M, 3) 0
    +                               &tegra_main_gpio TEGRA194_MAIN_GPIO(Q, 0) 0>;
    +                       extcon-gpio,out-cable-name-strings = "USB", "USB-Host";
    +                       extcon-gpio,out-cable-names = <EXTCON_USB EXTCON_USB_HOST EXTCON_NONE>;
    +                       wakeup-source;
    +                       #extcon-cells = <1>;
    +               };
    +       };
    +       
            tegra_xudc: xudc@3550000 {
    -               extcon-cables = <&typec_port0 0>;
    +               extcon-cables = <&vbus_id_extcon 0>;
                    extcon-cable-names = "vbus";
                    #extcon-cells = <1>;
    +               
     #if TEGRA_XUSB_PADCONTROL_VERSION >= DT_VERSION_2
                    phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
                            <&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-2}>;
    @@ -209,9 +233,10 @@
            };
     
            tegra_xhci: xhci@3610000 {
    -               extcon-cables = <&typec_port0 1>;
    +               extcon-cables = <&vbus_id_extcon 1>;
                    extcon-cable-names = "id";
                    #extcon-cells = <1>;
    +               
     #if TEGRA_XUSB_PADCONTROL_VERSION >= DT_VERSION_2
                    phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
                            <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>,
    @@ -319,21 +344,27 @@
     };
     
     &head0 {
    +/*
            extcon-cables = <&typec_port0 2 &typec_port1 2>;
            extcon-cable-names = "typec0", "typec1";
            #extcon-cells = <1>;
    +*/
     };
     
     &head1 {
    +/*
            extcon-cables = <&typec_port0 2 &typec_port1 2>;
            extcon-cable-names = "typec0", "typec1";
            #extcon-cells = <1>;
    +*/
     };
     
     &head2 {
    +/*
            extcon-cables = <&typec_port0 2 &typec_port1 2>;
            extcon-cable-names = "typec0", "typec1";
            #extcon-cells = <1>;
    +*/
     };
    
    

    相关文章

      网友评论

        本文标题:AGX Xavier USB(Remove TYPE-C)

        本文链接:https://www.haomeiwen.com/subject/irswbqtx.html