diff options
author | Eyal Harari <Eyal.Harari@freescale.com> | 2014-02-27 16:11:13 (GMT) |
---|---|---|
committer | Jose Rivera <German.Rivera@freescale.com> | 2014-03-07 17:35:28 (GMT) |
commit | 300ea25660a7b039aeafd24931307d120e1ec620 (patch) | |
tree | 9880085fc3e4ac598a59c14615e70646e12875df /drivers/net/ethernet/freescale/fman/Peripherals/FM/Port | |
parent | 8e33ce9cf3fffa49287c34d0d5a7e15ccf880c8f (diff) | |
download | linux-fsl-qoriq-300ea25660a7b039aeafd24931307d120e1ec620.tar.xz |
FMD: DSAR: added accumulate mode when entering deep sleep
Change-Id: Iad7a7c608e738661c1a9205fa2da45681ab2bc84
Signed-off-by: Eyal Harari <Eyal.Harari@freescale.com>
Reviewed-on: http://git.am.freescale.net:8181/9305
Reviewed-by: Mandy Lavi <Mandy.Lavi@freescale.com>
Reviewed-by: Sunil Kumar Kori <Sunil.Kori@freescale.com>
Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
Tested-by: Jose Rivera <German.Rivera@freescale.com>
Reviewed-on: http://git.am.freescale.net:8181/9446
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/Peripherals/FM/Port')
-rw-r--r-- | drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c | 15 | ||||
-rw-r--r-- | drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c index 9924d3b..d4a3c9b 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c @@ -5482,6 +5482,10 @@ t_Error FM_PORT_EnterDsar(t_Handle h_FmPortRx, t_FmPortDsarParams *params) struct arOffsets* of; uint8_t tmp = 0; t_Handle *h_FmPcd; + t_FmGetSetParams fmGetSetParams; + memset(&fmGetSetParams, 0, sizeof (t_FmGetSetParams)); + fmGetSetParams.setParams.type = UPDATE_FPM_BRKC_SLP; + fmGetSetParams.setParams.sleep = 1; err = DsarCheckParams(params, p_FmPort->deepSleepVars.autoResMaxSizes); if (err != E_OK) @@ -5778,7 +5782,10 @@ t_Error FM_PORT_EnterDsar(t_Handle h_FmPortRx, t_FmPortDsarParams *params) WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfpne, 0x2E); // Stage 8: We don't support magic packet for now. // Stage 9: Accumulate mode -// WRITE_UINT32(p_FmPort->port.bmi_regs->rx.fmbm_rcfg, GET_UINT32(p_FmPort->port.bmi_regs->rx.fmbm_rcfg) | BMI_PORT_CFG_AM); + p_FmPort->deepSleepVars.fmbm_rcfg = GET_UINT32(p_FmPort->port.bmi_regs->rx.fmbm_rcfg); + WRITE_UINT32(p_FmPort->port.bmi_regs->rx.fmbm_rcfg, p_FmPort->deepSleepVars.fmbm_rcfg | BMI_PORT_CFG_AM); + FmGetSetParams(p_FmPort->h_Fm, &fmGetSetParams); + ARDesc = UINT_TO_PTR(XX_VirtToPhys(ArCommonDescPtr)); return E_OK; } @@ -5793,6 +5800,10 @@ void FM_PORT_ExitDsar(t_Handle h_FmPortRx, t_Handle h_FmPortTx) { t_FmPort *p_FmPort = (t_FmPort *)h_FmPortRx; t_FmPort *p_FmPortTx = (t_FmPort *)h_FmPortTx; + t_FmGetSetParams fmGetSetParams; + memset(&fmGetSetParams, 0, sizeof (t_FmGetSetParams)); + fmGetSetParams.setParams.type = UPDATE_FPM_BRKC_SLP; + fmGetSetParams.setParams.sleep = 0; if (p_FmPort->deepSleepVars.autoResOffsets) { XX_Free(p_FmPort->deepSleepVars.autoResOffsets); @@ -5808,6 +5819,8 @@ void FM_PORT_ExitDsar(t_Handle h_FmPortRx, t_Handle h_FmPortTx) PrsDisable(FmGetPcd(p_FmPort->h_Fm)); WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfpne, p_FmPort->deepSleepVars.fmbm_rfpne); WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne, p_FmPort->deepSleepVars.fmbm_rfne); + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcfg, p_FmPort->deepSleepVars.fmbm_rcfg); + FmGetSetParams(p_FmPort->h_Fm, &fmGetSetParams); WRITE_UINT32(p_FmPortTx->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tcmne, p_FmPort->deepSleepVars.fmbm_tcmne); WRITE_UINT32(p_FmPortTx->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tcfg, p_FmPort->deepSleepVars.fmbm_tcfg); } diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h index 58369a8..75f117f 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h @@ -495,6 +495,7 @@ typedef _Packed struct #define BMI_PORT_CFG_EN_MACSEC 0x00800000 #define BMI_PORT_CFG_FDOVR 0x02000000 #define BMI_PORT_CFG_IM 0x01000000 +#define BMI_PORT_CFG_AM 0x00000040 #define BMI_PORT_STATUS_BSY 0x80000000 #define BMI_COUNTERS_EN 0x80000000 @@ -861,6 +862,7 @@ typedef struct t_FmPortDsarVars { uint32_t fmbm_tcmne; uint32_t fmbm_rfne; uint32_t fmbm_rfpne; + uint32_t fmbm_rcfg; bool dsarEnabledParser; } t_FmPortDsarVars; typedef struct { |