set DCFG_XCVRDLY when using external ULPI highspeed phy
This commit is contained in:
parent
6f59a2ce6e
commit
12e96ce571
|
@ -444,6 +444,10 @@ static void phy_hs_init(dwc2_regs_t * dwc2)
|
||||||
|
|
||||||
// Set max speed
|
// Set max speed
|
||||||
dwc2->dcfg = (dwc2->dcfg & ~DCFG_DSPD_Msk) | (DCFG_DSPD_HS << DCFG_DSPD_Pos);
|
dwc2->dcfg = (dwc2->dcfg & ~DCFG_DSPD_Msk) | (DCFG_DSPD_HS << DCFG_DSPD_Pos);
|
||||||
|
|
||||||
|
// XCVRDLY: transceiver delay between xcvr_sel and txvalid during device chirp is required
|
||||||
|
// when using with some PHYs such as USB334x (USB3341, USB3343, USB3346, USB3347)
|
||||||
|
if (dwc2->ghwcfg2_bm.hs_phy_type == HS_PHY_TYPE_ULPI) dwc2->dcfg |= DCFG_XCVRDLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool check_dwc2(dwc2_regs_t * dwc2)
|
static bool check_dwc2(dwc2_regs_t * dwc2)
|
||||||
|
|
|
@ -416,6 +416,10 @@ TU_VERIFY_STATIC(offsetof(dwc2_regs_t, fifo ) == 0x1000, "incorrect size");
|
||||||
#define DCFG_PFIVL_0 (0x1UL << DCFG_PFIVL_Pos) // 0x00000800 */
|
#define DCFG_PFIVL_0 (0x1UL << DCFG_PFIVL_Pos) // 0x00000800 */
|
||||||
#define DCFG_PFIVL_1 (0x2UL << DCFG_PFIVL_Pos) // 0x00001000 */
|
#define DCFG_PFIVL_1 (0x2UL << DCFG_PFIVL_Pos) // 0x00001000 */
|
||||||
|
|
||||||
|
#define DCFG_XCVRDLY_Pos (14U)
|
||||||
|
#define DCFG_XCVRDLY_Msk (0x1UL << DCFG_XCVRDLY_Pos) /*!< 0x00004000 */
|
||||||
|
#define DCFG_XCVRDLY DCFG_XCVRDLY_Msk // Enables delay between xcvr_sel and txvalid during device chirp
|
||||||
|
|
||||||
#define DCFG_PERSCHIVL_Pos (24U)
|
#define DCFG_PERSCHIVL_Pos (24U)
|
||||||
#define DCFG_PERSCHIVL_Msk (0x3UL << DCFG_PERSCHIVL_Pos) // 0x03000000 */
|
#define DCFG_PERSCHIVL_Msk (0x3UL << DCFG_PERSCHIVL_Pos) // 0x03000000 */
|
||||||
#define DCFG_PERSCHIVL DCFG_PERSCHIVL_Msk // Periodic scheduling interval */
|
#define DCFG_PERSCHIVL DCFG_PERSCHIVL_Msk // Periodic scheduling interval */
|
||||||
|
|
Loading…
Reference in New Issue