MXSCM-243-1 arm: imx: get the mmdc 2ch-mode api for lpddr2
authorJuan Gutierrez <juan.gutierrez@nxp.com>
Tue, 31 Jan 2017 16:32:19 +0000 (10:32 -0600)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:58:24 +0000 (14:58 -0500)
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>
arch/arm/mach-imx/common.h
arch/arm/mach-imx/mmdc.c
arch/arm/mach-imx/mxc.h

index 355dcb0..8f41d70 100644 (file)
@@ -171,8 +171,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);
index db9621c..f0b6ffd 100644 (file)
 #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
 
 static int ddr_type;
+static int lpddr2_2ch_mode;
 
 static int imx_mmdc_probe(struct platform_device *pdev)
 {
@@ -44,6 +47,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;
 
@@ -70,6 +76,11 @@ int imx_mmdc_get_ddr_type(void)
        return ddr_type;
 }
 
+int imx_mmdc_get_lpddr2_2ch_mode(void)
+{
+       return lpddr2_2ch_mode;
+}
+
 static const struct of_device_id imx_mmdc_dt_ids[] = {
        { .compatible = "fsl,imx6q-mmdc", },
        { /* sentinel */ }
index 5dcda87..f162e82 100644 (file)
@@ -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;