diff options
author | Mandy Lavi <mandy.lavi@freescale.com> | 2014-02-24 14:32:47 (GMT) |
---|---|---|
committer | Jose Rivera <German.Rivera@freescale.com> | 2014-03-05 13:53:11 (GMT) |
commit | 71fec8f799d4c5e5f5b4d96bb7e0ef6ffe912aae (patch) | |
tree | 3c210018f308d92f17f59b5e386ce25cbfe79fb6 /drivers/net/ethernet/freescale/fman/inc | |
parent | a9f6a725ff63688481c9394ae5ef55ba55439e17 (diff) | |
download | linux-fsl-qoriq-71fec8f799d4c5e5f5b4d96bb7e0ef6ffe912aae.tar.xz |
fmd: add wake-on-lan support
Change-Id: I1898186679983caccc4e51a8674ee7909955e346
Signed-off-by: Mandy Lavi <mandy.lavi@freescale.com>
Reviewed-on: http://git.am.freescale.net:8181/9076
Reviewed-by: Igal Liberman <Igal.Liberman@freescale.com>
Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
Tested-by: Jose Rivera <German.Rivera@freescale.com>
(cherry picked from commit 19640982a1c57f9f81508f9fa15dcc6ec1841cb4)
Change-Id: I1898186679983caccc4e51a8674ee7909955e346
Reviewed-on: http://git.am.freescale.net:8181/9385
Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
Tested-by: Jose Rivera <German.Rivera@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/inc')
3 files changed, 33 insertions, 1 deletions
diff --git a/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_mac_ext.h b/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_mac_ext.h index 0411ec1..f90f2a7 100644 --- a/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_mac_ext.h +++ b/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_mac_ext.h @@ -103,6 +103,8 @@ typedef enum e_FmMacExceptions { ,e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL /**< dTSEC MIB counter overflow */ ,e_FM_MAC_EX_TS_FIFO_ECC_ERR /**< mEMAC Time-stamp FIFO ECC error interrupt; not supported on T4240/B4860 rev1 chips */ + ,e_FM_MAC_EX_MAGIC_PACKET_INDICATION = e_FM_MAC_EX_1G_MAG_PCKT + /**< mEMAC Magic Packet Indication Interrupt */ } e_FmMacExceptions; /**************************************************************************//** @@ -560,6 +562,21 @@ t_Error FM_MAC_SetTxPauseFrames(t_Handle h_FmMac, t_Error FM_MAC_SetRxIgnorePauseFrames(t_Handle h_FmMac, bool en); /**************************************************************************//** + @Function FM_MAC_SetWakeOnLan + + @Description Enable/Disable Wake On Lan support + + @Param[in] h_FmMac - A handle to a FM MAC Module. + @Param[in] en - boolean indicates whether to enable Wake On Lan + support or not. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetWakeOnLan(t_Handle h_FmMac, bool en); + +/**************************************************************************//** @Function FM_MAC_ResetCounters @Description reset all statistics counters diff --git a/drivers/net/ethernet/freescale/fman/inc/flib/fsl_fman_dtsec.h b/drivers/net/ethernet/freescale/fman/inc/flib/fsl_fman_dtsec.h index 0419d74..6004e47 100644 --- a/drivers/net/ethernet/freescale/fman/inc/flib/fsl_fman_dtsec.h +++ b/drivers/net/ethernet/freescale/fman/inc/flib/fsl_fman_dtsec.h @@ -245,6 +245,7 @@ #define DEFAULT_BACK_TO_BACK_IPG 0x60 #define DEFAULT_MAXIMUM_FRAME 0x600 #define DEFAULT_TBI_PHY_ADDR 5 +#define DEFAULT_WAKE_ON_LAN FALSE /* register related defines (bits, field offsets..) */ #define DTSEC_ID1_ID 0xffff0000 @@ -730,6 +731,7 @@ struct dtsec_cfg { uint32_t non_back_to_back_ipg2; uint32_t min_ifg_enforcement; uint32_t back_to_back_ipg; + bool wake_on_lan; }; @@ -833,6 +835,15 @@ void fman_dtsec_get_mac_address(struct dtsec_regs *regs, uint8_t *macaddr); void fman_dtsec_set_uc_promisc(struct dtsec_regs *regs, bool enable); /** + * fman_dtsec_set_wol() - Enable/Disable wake on lan + * (magic packet support) + * @regs: Pointer to dTSEC register block + * @en: Enable Wake On Lan support in dTSEC + * + */ +void fman_dtsec_set_wol(struct dtsec_regs *regs, bool en); + +/** * fman_dtsec_adjust_link() - Adjust dTSEC speed/duplex settings * @regs: Pointer to dTSEC register block * @iface_mode: dTSEC interface mode diff --git a/drivers/net/ethernet/freescale/fman/inc/flib/fsl_fman_memac.h b/drivers/net/ethernet/freescale/fman/inc/flib/fsl_fman_memac.h index b83390c..69cb22a 100644 --- a/drivers/net/ethernet/freescale/fman/inc/flib/fsl_fman_memac.h +++ b/drivers/net/ethernet/freescale/fman/inc/flib/fsl_fman_memac.h @@ -100,7 +100,8 @@ #define MEMAC_ALL_ERRS_IMASK \ ((uint32_t)(MEMAC_IMASK_TSECC_ER | \ MEMAC_IMASK_TECC_ER | \ - MEMAC_IMASK_RECC_ER)) + MEMAC_IMASK_RECC_ER | \ + MEMAC_IMASK_MGI)) #define MEMAC_IEVNT_PCS 0x80000000 /* PCS (XG). Link sync (G) */ #define MEMAC_IEVNT_AN 0x40000000 /* Auto-negotiation */ @@ -325,6 +326,7 @@ struct memac_cfg { bool rx_pbl_fwd; bool tx_pbl_fwd; bool debug_mode; + bool wake_on_lan; uint16_t max_frame_length; uint16_t pause_quanta; uint32_t tx_ipg_length; @@ -384,6 +386,8 @@ void fman_memac_set_hash_table(struct memac_regs *regs, uint32_t val); void fman_memac_set_rx_ignore_pause_frames(struct memac_regs *regs, bool enable); +void fman_memac_set_wol(struct memac_regs *regs, bool enable); + uint32_t fman_memac_get_event(struct memac_regs *regs, uint32_t ev_mask); void fman_memac_ack_event(struct memac_regs *regs, uint32_t ev_mask); |