This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/DRA744:如何在 USB4端口配置 TUSB1210的器件树

Guru**** 2939420 points

Other Parts Discussed in Thread: TUSB1210

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/670747/linux-dra744-how-to-configure-device-tree-of-tusb1210-at-usb4-port

器件型号:DRA744
主题中讨论的其他器件:TUSB1210

工具/软件:Linux

您好!

我正在使用 DRA74x 芯片和 Linux 版本3.14.57、我在此配置 TUSB1210芯片、它可以正常工作、但进入鼠标系统的 USB1端口将死机、USB4端口不会挂起。我想问您如何在器件树中配置 TUSB1210。 这是我的配置。GPIO5_17是 tusb1210的复位引脚、timer5 nod 是时钟源、为 TUSB1210提供19.2MHz 的频率。

&OMA_dwc3_4{
状态="正常";
extcon =<扩展 con_USB4>;
};

和 timer5{
时钟=<&timer5_gfclk_mux>;
时钟名称="timer_ext_ck";
};

和 USB4{
DR_MODE ="OTG";
SNP、hsphy_interface ="ULPI";
RESET-GPIO =<&GPIO5 17 GPIO_ACTIVE_LOW>;
计时器=<&timer5>;
时钟=<&DPLL_PCIe_ref_ck>、<&DPLL_PCIe_ref_m2_ck>、<&PCIe2_dclk_dclk_ddiv>、<&clkoutmux0_clk_mux>、<&timer5_gfclk_mux>;
时钟名称="PCIe_ref"、"PCIe_ref_m2"、"PCIe2"、"clkout0"、"timer5";
};

以下 是 core.c 中的备选代码:

静态 int dwc3_phy_setup (struct dwc3 * DWC)

      u32 reg;
      int ret = 0;
      reg = dwc3_readl (DWC->regs、DWC3_GUSB3PIPECTL (0));

 /*
 *高于1.94a 时、建议设置 DWC3_GUSB3PIPECTL_SUSPHY
 在 coreConsultant 配置期间将*更改为"0"。 因此是默认值
 内核复位时*将为'0'。 应用程序需要设置它
 内核初始化完成后将*更改为"1"。
 *

      if (DWC->REVISION > DWC3_REVISION_194A)
           reg |= DWC3_GUSB3PIPECTL_SUSPHY;

      if (DWC->u2ss_inp3_quirk)
          reg |= DWC3_GUSB3PIPECTL_U2SSINP3OK;

     if (DWC->req_p1p2p3_quik)
          reg |= DWC3_GUSB3PIPECTL_REQP1P2P3;

     if (DWC->DEL_p1p2p3_quirik)
         reg |= DWC3_GUSB3PIPECTL_DEP1P2P3_EN;

     if (DWC->DEL_phy_power_chg_quirik)
         reg |= DWC3_GUSB3PIPECTL_DEPOCHANGE;

     if (DWC->LFPs_filter_quirk)
        reg |= DWC3_GUSB3PIPECTL_LFPSFILT;

     if (DWC->Rx_detect_poll_quirk)
        reg |= DWC3_GUSB3PIPECTL_RX_DETOPOLL;

     if (DWC->TX_DE_Emphasis_quirk)
       reg |= DWC3_GUSB3PIPECTL_TX_DEEPH (DWC->TX_DE_Emphasis>);

     if (DWC->ds_u3_suspuhy_quirik)
       REG &=~DWC3_GUSB3PIPECTL_SUSPHY;

    dwc3_writel (DWC->regs、DWC3_GUSB3PIPECTL (0)、reg);

    reg = dwc3_readl (DWC->regs、DWC3_GUSB2PHYCFG (0));
 
   /*选择 HS PHY 接口*/
    switch (DWC3_GHWPARAMS3_HSPHY_IFC (DWC->hwparams.hwparams3)){
           案例 DWC3_GHWPARAMS3_HSPHY_IFC_UTMI_ULPI:
           if (DWC->hsphy_interface &&)
           !strncmp(DwC->hsphy_interface,"utmi",4)){
                 REG &=~DWC3_GUSB2PHYCFG_ULPI_UTMI;
          中断;
          }如果(DWC->hsphy_interface &&),则为其他
           !strncmp(DwC->hsphy_interface,"ULPI",4)){
               reg |= DWC3_GUSB2PHYCFG_ULPI_UTMI;
             dwc3_writel (DWC->regs、DWC3_GUSB2PHYCFG (0)、reg);
         }否则{
        /*依赖于默认值。 *
        IF (!(reg & DWC3_GUSB2PHYCFG_ULPI_UTMI))
           中断;
       }
     /* FALLTHROUGH */
   案例 DWC3_GHWPARAMS3_HSPHY_IFC_ULPI:
   /*确保接口和 PHY 正常运行*/
   RET = dwc3_SOFT_RESET (DWC);
   IF (RET)
    回程;
   tusb1210_clk_init (DWC);
    udelay (1);
   tusb1210_reset_f (DWC);
   RET = dwc3_ULPI_init (DWC);
   IF (RET)
      回程;

  /* FALLTHROUGH */
 默认值:
  中断;
 }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    让我总结一下我的理解:

    USB 鼠标仅在连接到 USB4端口时工作。 如果连接到 USB1、则会看到内核崩溃。 因此、我们怀疑通过器件树完成的 USB4PHY 配置(通过 TUSB1210)会导致一些冲突。

    您能否与我们分享用于 USB1的器件树配置?

    将任何其他 USB 设备(USB 鼠标除外)连接到 USB1时、您是否看到崩溃?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    插入手机时、USB1端口也重新启动、这里是我的设备树、带 USB1端口、USB1是 OTG 端口、用于连接 CarPlay 或其他 USB 设备。

    /*USB*/
    &OMA_dwc3_1{
    extcon =<&extcon_USB1>;
    };
    &OMA_dwc3_2{
    /*
    extcon =<&extcon_USB2>;
    *
    };

    &OMA_dwc3_4{
    状态="ok";
    extcon =<扩展 con_USB4>;
    };

    USB1{(&S)
    DR_MODE ="OTG";
    };

    USB2{
    DR_MODE ="主机";
    };
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     什么是内核版本? 另外、请 告诉我们正在使用哪个 TI SDK 版本?

    此外、请务必在 重现问题之前共享所执行的完整内核转储。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     http://e2e.ti.com/support/arm/automotive_processors/f/1020/p/657919/2475986#2475986中也讨论了同样的问题 

    此问题已确定、原因是 USB4也需要挂起 PHY 位缺少 DT 条目。

     请参阅 http://git.omapzoom.org/?p=kernel/omap.git;a=commit;h=8690528a68379be5d15e490b2c3d965354a58055 

    只要在 DRA7x 器件上设置了 Suspend PHY 位、USB 将无法工作、因为设置 EP 配置命令始终失败。
    这只有在最近提交2164a47 (USB:dwc3:为所有内核设置 SUSPHY 位、该位将为 v3.19合并)后才会发现。在 dwc3初始化中添加了缺失的*必需*步骤。 Synopsys Databook 要求我们在初始化后启用 Suspend PHY 位、但不幸的是、这会中断 DRA7x。