diff options
author | Eyal Harari <Eyal.Harari@freesacle.com> | 2014-05-14 05:30:51 (GMT) |
---|---|---|
committer | Jose Rivera <German.Rivera@freescale.com> | 2014-05-14 19:29:11 (GMT) |
commit | 701d1fa7c066a36d9520e3c0cacf788117f50eec (patch) | |
tree | ea6e4f062fa5b0ee649c86fc4f8710a745dd1e36 /drivers/net/ethernet/freescale | |
parent | 8d5cd1658cb0c97d5429124f9fb5caa88c460186 (diff) | |
download | linux-fsl-qoriq-701d1fa7c066a36d9520e3c0cacf788117f50eec.tar.xz |
FMD: Added functions for fm soc configuration during Deep Sleep
Signed-off-by: Eyal Harari <Eyal.Harari@freesacle.com>
Change-Id: I2b775e3609510a0290e751adc1cf3726cf11904f
Reviewed-on: http://git.am.freescale.net:8181/12341
Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com>
Reviewed-by: Cristian-Constantin Sovaiala <Cristian.Sovaiala@freescale.com>
Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale')
-rwxr-xr-x | drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.c | 36 |
1 files changed, 36 insertions, 0 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 0ffb014..9815278 100755 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.c +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.c @@ -1094,11 +1094,47 @@ static const struct of_device_id fm_match[] = { MODULE_DEVICE_TABLE(of, fm_match); #endif /* !MODULE */ +#ifdef CONFIG_PM + +#define SCFG_FMCLKDPSLPCR_ADDR 0xFFE0FC00C +#define SCFG_FMCLKDPSLPCR_DS_VAL 0x48402000 +#define SCFG_FMCLKDPSLPCR_NORMAL_VAL 0x00402000 + +static int fm_soc_suspend(struct device *dev) +{ + uint32_t *fmclk; + 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); + return 0; +} + +static const struct dev_pm_ops fm_pm_ops = { + .suspend_noirq = fm_soc_suspend, + .resume_noirq = fm_soc_resume, +}; + +#define FM_PM_OPS (&fm_pm_ops) + +#else /* CONFIG_PM */ + +#define FM_PM_OPS NULL + +#endif /* CONFIG_PM */ + static struct platform_driver fm_driver = { .driver = { .name = "fsl-fman", .of_match_table = fm_match, .owner = THIS_MODULE, + .pm = FM_PM_OPS, }, .probe = fm_probe, .remove = fm_remove |