diff options
author | Juan Gutierrez <juan.gutierrez@nxp.com> | 2017-01-31 10:32:19 -0600 |
---|---|---|
committer | Jason Liu <jason.hui.liu@nxp.com> | 2019-02-12 10:25:47 +0800 |
commit | 39564133ecb45392f00a7c4849aa81f2f0261095 (patch) | |
tree | cd79c6a5806bd24038da1ebc88e6f7315ce79944 /arch/arm/mach-imx | |
parent | dda4f222934be33807b84b0f4db7897f231cb7a6 (diff) |
MXSCM-243-1 arm: imx: get the mmdc 2ch-mode api for lpddr2
To configure the suspend settings for lpddr2 systems is necessary
to know if mmdc is operating on 1ch-mode or 2ch-mode.
Here, the imx_get_lpddr2_2ch_mode api is introduced to get this info
when needed and decide accordingly.
Signed-off-by: Juan Gutierrez <juan.gutierrez@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r-- | arch/arm/mach-imx/common.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/mmdc.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-imx/mxc.h | 3 |
3 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index 224273315fda..154cd0b286e8 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h @@ -169,8 +169,10 @@ void imx6_enet_mac_init(const char *enet_compat, const char *ocotp_compat); int imx7ulp_set_lpm(enum imx7ulp_cpu_pwr_mode mode); #ifdef CONFIG_HAVE_IMX_MMDC int imx_mmdc_get_ddr_type(void); +int imx_mmdc_get_lpddr2_2ch_mode(void); #else static inline int imx_mmdc_get_ddr_type(void) { return 0; } +static inline int imx_mmdc_get_lpddr2_2ch_mode(void) { return 0; } #endif #ifdef CONFIG_HAVE_IMX_DDRC int imx_ddrc_get_ddr_type(void); diff --git a/arch/arm/mach-imx/mmdc.c b/arch/arm/mach-imx/mmdc.c index 78262899a590..e73a6d56758d 100644 --- a/arch/arm/mach-imx/mmdc.c +++ b/arch/arm/mach-imx/mmdc.c @@ -31,6 +31,8 @@ #define MMDC_MDMISC 0x18 #define BM_MMDC_MDMISC_DDR_TYPE 0x18 #define BP_MMDC_MDMISC_DDR_TYPE 0x3 +#define BM_MMDC_MDMISC_LPDDR2_2CH 0x4 +#define BP_MMDC_MDMISC_LPDDR2_2CH 0x2 #define TOTAL_CYCLES 0x0 #define BUSY_CYCLES 0x1 @@ -64,6 +66,7 @@ #define to_mmdc_pmu(p) container_of(p, struct mmdc_pmu, pmu) static int ddr_type; +static int lpddr2_2ch_mode; struct fsl_mmdc_devtype_data { unsigned int flags; @@ -557,6 +560,9 @@ static int imx_mmdc_probe(struct platform_device *pdev) val = readl_relaxed(reg); ddr_type = (val & BM_MMDC_MDMISC_DDR_TYPE) >> BP_MMDC_MDMISC_DDR_TYPE; + /* Get lpddr2 2ch-mode */ + lpddr2_2ch_mode = (val & BM_MMDC_MDMISC_LPDDR2_2CH) >> + BP_MMDC_MDMISC_LPDDR2_2CH; reg = mmdc_base + MMDC_MAPSR; @@ -583,6 +589,11 @@ int imx_mmdc_get_ddr_type(void) return ddr_type; } +int imx_mmdc_get_lpddr2_2ch_mode(void) +{ + return lpddr2_2ch_mode; +} + static struct platform_driver imx_mmdc_driver = { .driver = { .name = "imx-mmdc", diff --git a/arch/arm/mach-imx/mxc.h b/arch/arm/mach-imx/mxc.h index 5dcda87d9308..f162e82d3ca1 100644 --- a/arch/arm/mach-imx/mxc.h +++ b/arch/arm/mach-imx/mxc.h @@ -49,6 +49,9 @@ #define IMX_DDR_TYPE_LPDDR3 2 #define IMX_MMDC_DDR_TYPE_LPDDR3 3 +#define IMX_LPDDR2_1CH_MODE 0 +#define IMX_LPDDR2_2CH_MODE 1 + #ifndef __ASSEMBLY__ extern unsigned int __mxc_cpu_type; |