diff options
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c')
-rw-r--r-- | drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c index d0ed2e7..e8cc70a 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c @@ -559,13 +559,17 @@ static t_Error DtsecConfigException(t_Handle h_Dtsec, e_FmMacExceptions exceptio { if (!p_Dtsec->ptpTsuEnabled) RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exception valid for 1588 only")); - - if (enable) - p_Dtsec->enTsuErrExeption = TRUE; - else - p_Dtsec->enTsuErrExeption = FALSE; + switch (exception){ + case (e_FM_MAC_EX_1G_1588_TS_RX_ERR): + if (enable) + p_Dtsec->enTsuErrExeption = TRUE; + else + p_Dtsec->enTsuErrExeption = FALSE; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + } } - return E_OK; } @@ -1086,7 +1090,7 @@ static t_Error DtsecSetWakeOnLan(t_Handle h_Dtsec, bool en) static t_Error DtsecAdjustLink(t_Handle h_Dtsec, e_EnetSpeed speed, bool fullDuplex) { t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; - int err; + t_Error err; enum enet_interface enet_interface; enum enet_speed enet_speed; @@ -1098,12 +1102,12 @@ static t_Error DtsecAdjustLink(t_Handle h_Dtsec, e_EnetSpeed speed, bool fullDup enet_speed = (enum enet_speed) ENET_SPEED_FROM_MODE(p_Dtsec->enetMode); p_Dtsec->halfDuplex = !fullDuplex; - err = fman_dtsec_adjust_link(p_Dtsec->p_MemMap, enet_interface, enet_speed, fullDuplex); + err = (t_Error)fman_dtsec_adjust_link(p_Dtsec->p_MemMap, enet_interface, enet_speed, fullDuplex); - if (err == -EINVAL) + if (err == E_CONFLICT) RETURN_ERROR(MAJOR, E_CONFLICT, ("Ethernet interface does not support Half Duplex mode")); - return (t_Error)err; + return err; } /* .............................................................................. */ @@ -1186,16 +1190,20 @@ static t_Error DtsecSetException(t_Handle h_Dtsec, e_FmMacExceptions exception, { if (!p_Dtsec->ptpTsuEnabled) RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exception valid for 1588 only")); - - if (enable) + switch (exception) { - p_Dtsec->enTsuErrExeption = TRUE; - fman_dtsec_enable_tmr_interrupt(p_Dtsec->p_MemMap); - } - else - { - p_Dtsec->enTsuErrExeption = FALSE; - fman_dtsec_disable_tmr_interrupt(p_Dtsec->p_MemMap); + case (e_FM_MAC_EX_1G_1588_TS_RX_ERR): + if (enable) + { + p_Dtsec->enTsuErrExeption = TRUE; + fman_dtsec_enable_tmr_interrupt(p_Dtsec->p_MemMap); + } else { + p_Dtsec->enTsuErrExeption = FALSE; + fman_dtsec_disable_tmr_interrupt(p_Dtsec->p_MemMap); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); } } @@ -1322,8 +1330,6 @@ static t_Error DtsecInit(t_Handle h_Dtsec) maxFrmLn = fman_dtsec_get_max_frame_len(p_Dtsec->p_MemMap); err = FmSetMacMaxFrame(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MAC_1G, p_Dtsec->fmMacControllerDriver.macId, maxFrmLn); - if (err) - RETURN_ERROR(MINOR,err, NO_MSG); p_Dtsec->p_MulticastAddrHash = AllocHashTable(EXTENDED_HASH_TABLE_SIZE); if (!p_Dtsec->p_MulticastAddrHash) { @@ -1380,17 +1386,14 @@ static t_Error DtsecFree(t_Handle h_Dtsec) SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + FreeInitResources(p_Dtsec); + if (p_Dtsec->p_DtsecDriverParam) { - /* Called after config */ XX_Free(p_Dtsec->p_DtsecDriverParam); p_Dtsec->p_DtsecDriverParam = NULL; } - else - /* Called after init */ - FreeInitResources(p_Dtsec); - - XX_Free(p_Dtsec); + XX_Free (h_Dtsec); return E_OK; } |