summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/fman/src/wrapper
diff options
context:
space:
mode:
authorEyal Harari <Eyal.Harari@freesacle.com>2014-05-23 07:57:56 (GMT)
committerJose Rivera <German.Rivera@freescale.com>2014-05-27 14:05:57 (GMT)
commit49a1bd52cb9a328460ee793967249223e379b809 (patch)
tree76da20971b5022834d33a007ad2d4f72955cdc0c /drivers/net/ethernet/freescale/fman/src/wrapper
parent8596def61c88a5dad865f82e0067b0a2dbe003f2 (diff)
downloadlinux-fsl-qoriq-49a1bd52cb9a328460ee793967249223e379b809.tar.xz
FMD: DSAR: workaround patch which enables AR in DS
Signed-off-by: Eyal Harari <Eyal.Harari@freesacle.com> Change-Id: I90e7e97c9ff8a149893c8244cb0e8376c66eb2ad Reviewed-on: http://git.am.freescale.net:8181/12925 Reviewed-by: Cristian-Constantin Sovaiala <Cristian.Sovaiala@freescale.com> Tested-by: Richard Schmitt <richard.schmitt@freescale.com> Reviewed-by: Jose Rivera <German.Rivera@freescale.com> Tested-by: Jose Rivera <German.Rivera@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/src/wrapper')
-rwxr-xr-xdrivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.c30
-rw-r--r--drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c6
2 files changed, 25 insertions, 11 deletions
diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.c
index cdffe7a..646a90c 100755
--- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.c
+++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.c
@@ -60,6 +60,7 @@
#include <asm/errno.h>
#include <asm/qe.h> /* For struct qe_firmware */
#include <sysdev/fsl_soc.h>
+#include <asm/fsl_pm.h>
#include <linux/stat.h> /* For file access mask */
#include <linux/skbuff.h>
#include <linux/proc_fs.h>
@@ -1102,20 +1103,30 @@ MODULE_DEVICE_TABLE(of, fm_match);
#define SCFG_FMCLKDPSLPCR_ADDR 0xFFE0FC00C
#define SCFG_FMCLKDPSLPCR_DS_VAL 0x48402000
#define SCFG_FMCLKDPSLPCR_NORMAL_VAL 0x00402000
-
+void FM_PORT_Dsar_enter_final(void);
+static bool started_ar_enter = false;
static int fm_soc_suspend(struct device *dev)
{
- uint32_t *fmclk;
- fmclk = ioremap(SCFG_FMCLKDPSLPCR_ADDR, 4);
- WRITE_UINT32(*fmclk, SCFG_FMCLKDPSLPCR_DS_VAL);
+ if (started_ar_enter)
+ {
+ uint32_t *fmclk;
+ fsl_set_power_except(dev,1);
+ FM_PORT_Dsar_enter_final();
+ fmclk = ioremap(SCFG_FMCLKDPSLPCR_ADDR, 4);
+ WRITE_UINT32(*fmclk, SCFG_FMCLKDPSLPCR_DS_VAL);
+ }
return 0;
}
static int fm_soc_resume(struct device *dev)
{
- uint32_t *fmclk;
- fmclk = ioremap(SCFG_FMCLKDPSLPCR_ADDR, 4);
- WRITE_UINT32(*fmclk, SCFG_FMCLKDPSLPCR_NORMAL_VAL);
+ if (started_ar_enter)
+ {
+ uint32_t *fmclk;
+ fmclk = ioremap(SCFG_FMCLKDPSLPCR_ADDR, 4);
+ WRITE_UINT32(*fmclk, SCFG_FMCLKDPSLPCR_NORMAL_VAL);
+ started_ar_enter = false;
+ }
return 0;
}
@@ -1360,6 +1371,7 @@ int fm_port_enter_autores_for_deepsleep(struct fm_port *port,
return -EFAULT;
FM_PORT_EnterDsar(p_LnxWrpFmPortDev->h_Dev, (t_FmPortDsarParams*)params);
+ started_ar_enter = true;
return 0;
}
EXPORT_SYMBOL(fm_port_enter_autores_for_deepsleep);
@@ -1367,7 +1379,9 @@ EXPORT_SYMBOL(fm_port_enter_autores_for_deepsleep);
void fm_port_exit_auto_res_for_deep_sleep(struct fm_port *port_rx,
struct fm_port *port_tx)
{
- FM_PORT_ExitDsar(port_rx, port_tx);
+ t_LnxWrpFmPortDev *p_LnxWrpFmPortDevRx = (t_LnxWrpFmPortDev *)port_rx;
+ t_LnxWrpFmPortDev *p_LnxWrpFmPortDevTx = (t_LnxWrpFmPortDev *)port_tx;
+ FM_PORT_ExitDsar(p_LnxWrpFmPortDevRx->h_Dev, p_LnxWrpFmPortDevTx->h_Dev);
}
EXPORT_SYMBOL(fm_port_exit_auto_res_for_deep_sleep);
diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c
index ead8c7a..ebed557 100644
--- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c
+++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c
@@ -302,10 +302,10 @@ static int fm_port_dsar_dump_mem(void *h_dev, char *buf, int nn)
/* do I need request_mem_region here? */
param_page = ioremap(p_FmPort->fmMuramPhysBaseAddr + ioread32be(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rgpr), 4);
- ArCommonDescPtr = (t_ArCommonDesc*)(ioremap(p_FmPort->fmMuramPhysBaseAddr + ioread32be(param_page), sizeof(t_ArCommonDesc))); /* this should be changed*/
+ ArCommonDescPtr = (t_ArCommonDesc*)(ioremap(p_FmPort->fmMuramPhysBaseAddr + ioread32be(param_page), 300*4)); /* this should be changed*/
mem = (uint32_t*)ArCommonDescPtr;
- for (i = 0; i < 100; i+=4)
- FM_DMP_LN(buf, n, "%08x %08x %08x %08x\n", mem[i], mem[i + 1], mem[i + 2], mem[i + 3]);
+ for (i = 0; i < 300; i+=4)
+ FM_DMP_LN(buf, n, "%08x: %08x %08x %08x %08x\n", i*4, mem[i], mem[i + 1], mem[i + 2], mem[i + 3]);
iounmap(ArCommonDescPtr);
iounmap(param_page);
return n;