All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file
@ 2019-07-18 18:04 Fabio Estevam
  2019-07-18 18:04 ` [U-Boot] [PATCH 2/4] imx: mmdc_size: Fix checkpatch warnings Fabio Estevam
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Fabio Estevam @ 2019-07-18 18:04 UTC (permalink / raw)
  To: u-boot

Place imx_ddr_size() into a separate file.

The motivation for doing this is to be able to easily reuse
imx_ddr_size() on i.MX7ULP.

Currently imx_ddr_size() is inside arch/arm/mach-imx/cpu.c, which
is not built for i.MX7ULP.

Changing the logic to allow building cpu.c for i.MX7UP would
require adding several ifdef's, leading to a not a very elegant
solution.

To allow better reuse, just place imx_ddr_size() into a common
mmdc_size.c file.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
 arch/arm/mach-imx/Makefile    |  2 +-
 arch/arm/mach-imx/cpu.c       | 53 ---------------------------------
 arch/arm/mach-imx/mmdc_size.c | 55 +++++++++++++++++++++++++++++++++++
 3 files changed, 56 insertions(+), 54 deletions(-)
 create mode 100644 arch/arm/mach-imx/mmdc_size.c

diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 898478fc4a..0c8519be94 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -20,7 +20,7 @@ obj-y += cpu.o
 endif
 
 ifeq ($(SOC),$(filter $(SOC),mx5 mx6))
-obj-y	+= cpu.o speed.o
+obj-y	+= cpu.o speed.o mmdc_size.o
 obj-$(CONFIG_GPT_TIMER) += timer.o
 obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o
 endif
diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index 3a8cf30c06..0b30ff40cd 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -87,59 +87,6 @@ static char *get_reset_cause(void)
 }
 #endif
 
-#if defined(CONFIG_MX53) || defined(CONFIG_MX6)
-#if defined(CONFIG_MX53)
-#define MEMCTL_BASE	ESDCTL_BASE_ADDR
-#else
-#define MEMCTL_BASE	MMDC_P0_BASE_ADDR
-#endif
-static const unsigned char col_lookup[] = {9, 10, 11, 8, 12, 9, 9, 9};
-static const unsigned char bank_lookup[] = {3, 2};
-
-/* these MMDC registers are common to the IMX53 and IMX6 */
-struct esd_mmdc_regs {
-	uint32_t	ctl;
-	uint32_t	pdc;
-	uint32_t	otc;
-	uint32_t	cfg0;
-	uint32_t	cfg1;
-	uint32_t	cfg2;
-	uint32_t	misc;
-};
-
-#define ESD_MMDC_CTL_GET_ROW(mdctl)	((ctl >> 24) & 7)
-#define ESD_MMDC_CTL_GET_COLUMN(mdctl)	((ctl >> 20) & 7)
-#define ESD_MMDC_CTL_GET_WIDTH(mdctl)	((ctl >> 16) & 3)
-#define ESD_MMDC_CTL_GET_CS1(mdctl)	((ctl >> 30) & 1)
-#define ESD_MMDC_MISC_GET_BANK(mdmisc)	((misc >> 5) & 1)
-
-/*
- * imx_ddr_size - return size in bytes of DRAM according MMDC config
- * The MMDC MDCTL register holds the number of bits for row, col, and data
- * width and the MMDC MDMISC register holds the number of banks. Combine
- * all these bits to determine the meme size the MMDC has been configured for
- */
-unsigned imx_ddr_size(void)
-{
-	struct esd_mmdc_regs *mem = (struct esd_mmdc_regs *)MEMCTL_BASE;
-	unsigned ctl = readl(&mem->ctl);
-	unsigned misc = readl(&mem->misc);
-	int bits = 11 + 0 + 0 + 1;      /* row + col + bank + width */
-
-	bits += ESD_MMDC_CTL_GET_ROW(ctl);
-	bits += col_lookup[ESD_MMDC_CTL_GET_COLUMN(ctl)];
-	bits += bank_lookup[ESD_MMDC_MISC_GET_BANK(misc)];
-	bits += ESD_MMDC_CTL_GET_WIDTH(ctl);
-	bits += ESD_MMDC_CTL_GET_CS1(ctl);
-
-	/* The MX6 can do only 3840 MiB of DRAM */
-	if (bits == 32)
-		return 0xf0000000;
-
-	return 1 << bits;
-}
-#endif
-
 #if defined(CONFIG_DISPLAY_CPUINFO) && !defined(CONFIG_SPL_BUILD)
 
 const char *get_imx_type(u32 imxtype)
diff --git a/arch/arm/mach-imx/mmdc_size.c b/arch/arm/mach-imx/mmdc_size.c
new file mode 100644
index 0000000000..8a3c6bdea6
--- /dev/null
+++ b/arch/arm/mach-imx/mmdc_size.c
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <common.h>
+#include <asm/io.h>
+
+#if defined(CONFIG_MX53)
+#define MEMCTL_BASE	ESDCTL_BASE_ADDR
+#else
+#define MEMCTL_BASE	MMDC_P0_BASE_ADDR
+#endif
+static const unsigned char col_lookup[] = {9, 10, 11, 8, 12, 9, 9, 9};
+static const unsigned char bank_lookup[] = {3, 2};
+
+/* these MMDC registers are common to the IMX53 and IMX6 */
+struct esd_mmdc_regs {
+	uint32_t	ctl;
+	uint32_t	pdc;
+	uint32_t	otc;
+	uint32_t	cfg0;
+	uint32_t	cfg1;
+	uint32_t	cfg2;
+	uint32_t	misc;
+};
+
+#define ESD_MMDC_CTL_GET_ROW(mdctl)	((ctl >> 24) & 7)
+#define ESD_MMDC_CTL_GET_COLUMN(mdctl)	((ctl >> 20) & 7)
+#define ESD_MMDC_CTL_GET_WIDTH(mdctl)	((ctl >> 16) & 3)
+#define ESD_MMDC_CTL_GET_CS1(mdctl)	((ctl >> 30) & 1)
+#define ESD_MMDC_MISC_GET_BANK(mdmisc)	((misc >> 5) & 1)
+
+/*
+ * imx_ddr_size - return size in bytes of DRAM according MMDC config
+ * The MMDC MDCTL register holds the number of bits for row, col, and data
+ * width and the MMDC MDMISC register holds the number of banks. Combine
+ * all these bits to determine the meme size the MMDC has been configured for
+ */
+unsigned imx_ddr_size(void)
+{
+	struct esd_mmdc_regs *mem = (struct esd_mmdc_regs *)MEMCTL_BASE;
+	unsigned ctl = readl(&mem->ctl);
+	unsigned misc = readl(&mem->misc);
+	int bits = 11 + 0 + 0 + 1;      /* row + col + bank + width */
+
+	bits += ESD_MMDC_CTL_GET_ROW(ctl);
+	bits += col_lookup[ESD_MMDC_CTL_GET_COLUMN(ctl)];
+	bits += bank_lookup[ESD_MMDC_MISC_GET_BANK(misc)];
+	bits += ESD_MMDC_CTL_GET_WIDTH(ctl);
+	bits += ESD_MMDC_CTL_GET_CS1(ctl);
+
+	/* The MX6 can do only 3840 MiB of DRAM */
+	if (bits == 32)
+		return 0xf0000000;
+
+	return 1 << bits;
+}
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/4] imx: mmdc_size: Fix checkpatch warnings
  2019-07-18 18:04 [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Fabio Estevam
@ 2019-07-18 18:04 ` Fabio Estevam
  2019-10-14 12:40   ` sbabic at denx.de
  2019-07-18 18:04 ` [U-Boot] [PATCH 3/4] imx: mmdc_size: Allow building it for i.MX7ULP Fabio Estevam
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Fabio Estevam @ 2019-07-18 18:04 UTC (permalink / raw)
  To: u-boot

The original imx_ddr_size() implementation had some
issues reported by checkpatch like this:

CHECK: Prefer kernel type 'u32' over 'uint32_t'
#127: FILE: arch/arm/mach-imx/mmdc_size.c:16:
+	uint32_t	ctl;

WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
#151: FILE: arch/arm/mach-imx/mmdc_size.c:40:
+	unsigned ctl = readl(&mem->ctl);

Fix all of them.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
 arch/arm/mach-imx/mmdc_size.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/arm/mach-imx/mmdc_size.c b/arch/arm/mach-imx/mmdc_size.c
index 8a3c6bdea6..13f587c38a 100644
--- a/arch/arm/mach-imx/mmdc_size.c
+++ b/arch/arm/mach-imx/mmdc_size.c
@@ -13,13 +13,13 @@ static const unsigned char bank_lookup[] = {3, 2};
 
 /* these MMDC registers are common to the IMX53 and IMX6 */
 struct esd_mmdc_regs {
-	uint32_t	ctl;
-	uint32_t	pdc;
-	uint32_t	otc;
-	uint32_t	cfg0;
-	uint32_t	cfg1;
-	uint32_t	cfg2;
-	uint32_t	misc;
+	u32 ctl;
+	u32 pdc;
+	u32 otc;
+	u32 cfg0;
+	u32 cfg1;
+	u32 cfg2;
+	u32 misc;
 };
 
 #define ESD_MMDC_CTL_GET_ROW(mdctl)	((ctl >> 24) & 7)
@@ -34,11 +34,11 @@ struct esd_mmdc_regs {
  * width and the MMDC MDMISC register holds the number of banks. Combine
  * all these bits to determine the meme size the MMDC has been configured for
  */
-unsigned imx_ddr_size(void)
+unsigned int imx_ddr_size(void)
 {
 	struct esd_mmdc_regs *mem = (struct esd_mmdc_regs *)MEMCTL_BASE;
-	unsigned ctl = readl(&mem->ctl);
-	unsigned misc = readl(&mem->misc);
+	unsigned int ctl = readl(&mem->ctl);
+	unsigned int misc = readl(&mem->misc);
 	int bits = 11 + 0 + 0 + 1;      /* row + col + bank + width */
 
 	bits += ESD_MMDC_CTL_GET_ROW(ctl);
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/4] imx: mmdc_size: Allow building it for i.MX7ULP
  2019-07-18 18:04 [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Fabio Estevam
  2019-07-18 18:04 ` [U-Boot] [PATCH 2/4] imx: mmdc_size: Fix checkpatch warnings Fabio Estevam
@ 2019-07-18 18:04 ` Fabio Estevam
  2019-10-14 12:40   ` sbabic at denx.de
  2019-07-18 18:04 ` [U-Boot] [PATCH 4/4] mx7ulp_evk: Use imx_ddr_size() Fabio Estevam
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Fabio Estevam @ 2019-07-18 18:04 UTC (permalink / raw)
  To: u-boot

i.MX7ULP uses the same MMDC controller IP as found on i.MX53
and i.MX6, so build mmdc_size.c for i.MX7ULP as well.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
 arch/arm/mach-imx/Makefile    | 2 +-
 arch/arm/mach-imx/mmdc_size.c | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 0c8519be94..b29f90b024 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -48,7 +48,7 @@ obj-$(CONFIG_SECURE_BOOT)    += hab.o
 obj-$(CONFIG_SYSCOUNTER_TIMER) += syscounter.o
 endif
 ifeq ($(SOC),$(filter $(SOC),mx7ulp))
-obj-y  += cache.o
+obj-y  += cache.o mmdc_size.o
 obj-$(CONFIG_SECURE_BOOT) += hab.o
 endif
 ifeq ($(SOC),$(filter $(SOC),vf610))
diff --git a/arch/arm/mach-imx/mmdc_size.c b/arch/arm/mach-imx/mmdc_size.c
index 13f587c38a..1a094726aa 100644
--- a/arch/arm/mach-imx/mmdc_size.c
+++ b/arch/arm/mach-imx/mmdc_size.c
@@ -5,8 +5,10 @@
 
 #if defined(CONFIG_MX53)
 #define MEMCTL_BASE	ESDCTL_BASE_ADDR
-#else
+#elif defined(CONFIG_MX6)
 #define MEMCTL_BASE	MMDC_P0_BASE_ADDR
+#elif defined(CONFIG_MX7ULP)
+#define MEMCTL_BASE	MMDC0_RBASE
 #endif
 static const unsigned char col_lookup[] = {9, 10, 11, 8, 12, 9, 9, 9};
 static const unsigned char bank_lookup[] = {3, 2};
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 4/4] mx7ulp_evk: Use imx_ddr_size()
  2019-07-18 18:04 [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Fabio Estevam
  2019-07-18 18:04 ` [U-Boot] [PATCH 2/4] imx: mmdc_size: Fix checkpatch warnings Fabio Estevam
  2019-07-18 18:04 ` [U-Boot] [PATCH 3/4] imx: mmdc_size: Allow building it for i.MX7ULP Fabio Estevam
@ 2019-07-18 18:04 ` Fabio Estevam
  2019-10-14 12:40   ` sbabic at denx.de
  2019-10-13 20:44 ` [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Stefano Babic
  2019-10-14 12:40 ` sbabic at denx.de
  4 siblings, 1 reply; 10+ messages in thread
From: Fabio Estevam @ 2019-07-18 18:04 UTC (permalink / raw)
  To: u-boot

Use imx_ddr_size() to retrieve the total DDR size instead
of passing a hardcoded memory size.

imx_ddr_size() calculates the memory size based on the actual
MMDC registers values and is useful to detect misconfigurations,
so switch to this more robust approach.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
 board/freescale/mx7ulp_evk/mx7ulp_evk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/board/freescale/mx7ulp_evk/mx7ulp_evk.c b/board/freescale/mx7ulp_evk/mx7ulp_evk.c
index 7527263577..c939514a5f 100644
--- a/board/freescale/mx7ulp_evk/mx7ulp_evk.c
+++ b/board/freescale/mx7ulp_evk/mx7ulp_evk.c
@@ -17,7 +17,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 int dram_init(void)
 {
-	gd->ram_size = PHYS_SDRAM_SIZE;
+	gd->ram_size = imx_ddr_size();
 
 	return 0;
 }
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file
  2019-07-18 18:04 [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Fabio Estevam
                   ` (2 preceding siblings ...)
  2019-07-18 18:04 ` [U-Boot] [PATCH 4/4] mx7ulp_evk: Use imx_ddr_size() Fabio Estevam
@ 2019-10-13 20:44 ` Stefano Babic
  2019-10-13 22:34   ` Fabio Estevam
  2019-10-14 12:40 ` sbabic at denx.de
  4 siblings, 1 reply; 10+ messages in thread
From: Stefano Babic @ 2019-10-13 20:44 UTC (permalink / raw)
  To: u-boot

Hi Fabio,

get a lost patch, I pick it up:

On 18/07/19 20:04, Fabio Estevam wrote:
> Place imx_ddr_size() into a separate file.
> 
> The motivation for doing this is to be able to easily reuse
> imx_ddr_size() on i.MX7ULP.
> 
> Currently imx_ddr_size() is inside arch/arm/mach-imx/cpu.c, which
> is not built for i.MX7ULP.
> 
> Changing the logic to allow building cpu.c for i.MX7UP would
> require adding several ifdef's, leading to a not a very elegant
> solution.
> 
> To allow better reuse, just place imx_ddr_size() into a common
> mmdc_size.c file.
> 
> Signed-off-by: Fabio Estevam <festevam@gmail.com>
> ---
>  arch/arm/mach-imx/Makefile    |  2 +-
>  arch/arm/mach-imx/cpu.c       | 53 ---------------------------------
>  arch/arm/mach-imx/mmdc_size.c | 55 +++++++++++++++++++++++++++++++++++
>  3 files changed, 56 insertions(+), 54 deletions(-)
>  create mode 100644 arch/arm/mach-imx/mmdc_size.c
> 
> diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
> index 898478fc4a..0c8519be94 100644
> --- a/arch/arm/mach-imx/Makefile
> +++ b/arch/arm/mach-imx/Makefile
> @@ -20,7 +20,7 @@ obj-y += cpu.o
>  endif
>  
>  ifeq ($(SOC),$(filter $(SOC),mx5 mx6))
> -obj-y	+= cpu.o speed.o
> +obj-y	+= cpu.o speed.o mmdc_size.o

This does not filter MX51, code is not common for it. What do you mind
if I pick it up with :

 ifeq ($(SOC),$(filter $(SOC),mx5 mx6))
obj-y  += cpu.o speed.o
ifneq ($(CONFIG_MX51),y)
obj-y  += mmdc_size.o
endif

Regards,
Stefano

>  obj-$(CONFIG_GPT_TIMER) += timer.o
>  obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o
>  endif
> diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
> index 3a8cf30c06..0b30ff40cd 100644
> --- a/arch/arm/mach-imx/cpu.c
> +++ b/arch/arm/mach-imx/cpu.c
> @@ -87,59 +87,6 @@ static char *get_reset_cause(void)
>  }
>  #endif
>  
> -#if defined(CONFIG_MX53) || defined(CONFIG_MX6)
> -#if defined(CONFIG_MX53)
> -#define MEMCTL_BASE	ESDCTL_BASE_ADDR
> -#else
> -#define MEMCTL_BASE	MMDC_P0_BASE_ADDR
> -#endif
> -static const unsigned char col_lookup[] = {9, 10, 11, 8, 12, 9, 9, 9};
> -static const unsigned char bank_lookup[] = {3, 2};
> -
> -/* these MMDC registers are common to the IMX53 and IMX6 */
> -struct esd_mmdc_regs {
> -	uint32_t	ctl;
> -	uint32_t	pdc;
> -	uint32_t	otc;
> -	uint32_t	cfg0;
> -	uint32_t	cfg1;
> -	uint32_t	cfg2;
> -	uint32_t	misc;
> -};
> -
> -#define ESD_MMDC_CTL_GET_ROW(mdctl)	((ctl >> 24) & 7)
> -#define ESD_MMDC_CTL_GET_COLUMN(mdctl)	((ctl >> 20) & 7)
> -#define ESD_MMDC_CTL_GET_WIDTH(mdctl)	((ctl >> 16) & 3)
> -#define ESD_MMDC_CTL_GET_CS1(mdctl)	((ctl >> 30) & 1)
> -#define ESD_MMDC_MISC_GET_BANK(mdmisc)	((misc >> 5) & 1)
> -
> -/*
> - * imx_ddr_size - return size in bytes of DRAM according MMDC config
> - * The MMDC MDCTL register holds the number of bits for row, col, and data
> - * width and the MMDC MDMISC register holds the number of banks. Combine
> - * all these bits to determine the meme size the MMDC has been configured for
> - */
> -unsigned imx_ddr_size(void)
> -{
> -	struct esd_mmdc_regs *mem = (struct esd_mmdc_regs *)MEMCTL_BASE;
> -	unsigned ctl = readl(&mem->ctl);
> -	unsigned misc = readl(&mem->misc);
> -	int bits = 11 + 0 + 0 + 1;      /* row + col + bank + width */
> -
> -	bits += ESD_MMDC_CTL_GET_ROW(ctl);
> -	bits += col_lookup[ESD_MMDC_CTL_GET_COLUMN(ctl)];
> -	bits += bank_lookup[ESD_MMDC_MISC_GET_BANK(misc)];
> -	bits += ESD_MMDC_CTL_GET_WIDTH(ctl);
> -	bits += ESD_MMDC_CTL_GET_CS1(ctl);
> -
> -	/* The MX6 can do only 3840 MiB of DRAM */
> -	if (bits == 32)
> -		return 0xf0000000;
> -
> -	return 1 << bits;
> -}
> -#endif
> -
>  #if defined(CONFIG_DISPLAY_CPUINFO) && !defined(CONFIG_SPL_BUILD)
>  
>  const char *get_imx_type(u32 imxtype)
> diff --git a/arch/arm/mach-imx/mmdc_size.c b/arch/arm/mach-imx/mmdc_size.c
> new file mode 100644
> index 0000000000..8a3c6bdea6
> --- /dev/null
> +++ b/arch/arm/mach-imx/mmdc_size.c
> @@ -0,0 +1,55 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +
> +#include <common.h>
> +#include <asm/io.h>
> +
> +#if defined(CONFIG_MX53)
> +#define MEMCTL_BASE	ESDCTL_BASE_ADDR
> +#else
> +#define MEMCTL_BASE	MMDC_P0_BASE_ADDR
> +#endif
> +static const unsigned char col_lookup[] = {9, 10, 11, 8, 12, 9, 9, 9};
> +static const unsigned char bank_lookup[] = {3, 2};
> +
> +/* these MMDC registers are common to the IMX53 and IMX6 */
> +struct esd_mmdc_regs {
> +	uint32_t	ctl;
> +	uint32_t	pdc;
> +	uint32_t	otc;
> +	uint32_t	cfg0;
> +	uint32_t	cfg1;
> +	uint32_t	cfg2;
> +	uint32_t	misc;
> +};
> +
> +#define ESD_MMDC_CTL_GET_ROW(mdctl)	((ctl >> 24) & 7)
> +#define ESD_MMDC_CTL_GET_COLUMN(mdctl)	((ctl >> 20) & 7)
> +#define ESD_MMDC_CTL_GET_WIDTH(mdctl)	((ctl >> 16) & 3)
> +#define ESD_MMDC_CTL_GET_CS1(mdctl)	((ctl >> 30) & 1)
> +#define ESD_MMDC_MISC_GET_BANK(mdmisc)	((misc >> 5) & 1)
> +
> +/*
> + * imx_ddr_size - return size in bytes of DRAM according MMDC config
> + * The MMDC MDCTL register holds the number of bits for row, col, and data
> + * width and the MMDC MDMISC register holds the number of banks. Combine
> + * all these bits to determine the meme size the MMDC has been configured for
> + */
> +unsigned imx_ddr_size(void)
> +{
> +	struct esd_mmdc_regs *mem = (struct esd_mmdc_regs *)MEMCTL_BASE;
> +	unsigned ctl = readl(&mem->ctl);
> +	unsigned misc = readl(&mem->misc);
> +	int bits = 11 + 0 + 0 + 1;      /* row + col + bank + width */
> +
> +	bits += ESD_MMDC_CTL_GET_ROW(ctl);
> +	bits += col_lookup[ESD_MMDC_CTL_GET_COLUMN(ctl)];
> +	bits += bank_lookup[ESD_MMDC_MISC_GET_BANK(misc)];
> +	bits += ESD_MMDC_CTL_GET_WIDTH(ctl);
> +	bits += ESD_MMDC_CTL_GET_CS1(ctl);
> +
> +	/* The MX6 can do only 3840 MiB of DRAM */
> +	if (bits == 32)
> +		return 0xf0000000;
> +
> +	return 1 << bits;
> +}
> 

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file
  2019-10-13 20:44 ` [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Stefano Babic
@ 2019-10-13 22:34   ` Fabio Estevam
  0 siblings, 0 replies; 10+ messages in thread
From: Fabio Estevam @ 2019-10-13 22:34 UTC (permalink / raw)
  To: u-boot

Hi Stefano,

On Sun, Oct 13, 2019 at 5:44 PM Stefano Babic <sbabic@denx.de> wrote:

> This does not filter MX51, code is not common for it. What do you mind
> if I pick it up with :
>
>  ifeq ($(SOC),$(filter $(SOC),mx5 mx6))
> obj-y  += cpu.o speed.o
> ifneq ($(CONFIG_MX51),y)
> obj-y  += mmdc_size.o
> endif

Looks like a good fix, thanks!

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot]  [PATCH 2/4] imx: mmdc_size: Fix checkpatch warnings
  2019-07-18 18:04 ` [U-Boot] [PATCH 2/4] imx: mmdc_size: Fix checkpatch warnings Fabio Estevam
@ 2019-10-14 12:40   ` sbabic at denx.de
  0 siblings, 0 replies; 10+ messages in thread
From: sbabic at denx.de @ 2019-10-14 12:40 UTC (permalink / raw)
  To: u-boot

> The original imx_ddr_size() implementation had some
> issues reported by checkpatch like this:
> CHECK: Prefer kernel type 'u32' over 'uint32_t'
> #127: FILE: arch/arm/mach-imx/mmdc_size.c:16:
> +	uint32_t	ctl;
> WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
> #151: FILE: arch/arm/mach-imx/mmdc_size.c:40:
> +	unsigned ctl = readl(&mem->ctl);
> Fix all of them.
> Signed-off-by: Fabio Estevam <festevam@gmail.com>

Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/4] imx: mmdc_size: Allow building it for i.MX7ULP
  2019-07-18 18:04 ` [U-Boot] [PATCH 3/4] imx: mmdc_size: Allow building it for i.MX7ULP Fabio Estevam
@ 2019-10-14 12:40   ` sbabic at denx.de
  0 siblings, 0 replies; 10+ messages in thread
From: sbabic at denx.de @ 2019-10-14 12:40 UTC (permalink / raw)
  To: u-boot

> i.MX7ULP uses the same MMDC controller IP as found on i.MX53
> and i.MX6, so build mmdc_size.c for i.MX7ULP as well.
> Signed-off-by: Fabio Estevam <festevam@gmail.com>

Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot]  [PATCH 4/4] mx7ulp_evk: Use imx_ddr_size()
  2019-07-18 18:04 ` [U-Boot] [PATCH 4/4] mx7ulp_evk: Use imx_ddr_size() Fabio Estevam
@ 2019-10-14 12:40   ` sbabic at denx.de
  0 siblings, 0 replies; 10+ messages in thread
From: sbabic at denx.de @ 2019-10-14 12:40 UTC (permalink / raw)
  To: u-boot

> Use imx_ddr_size() to retrieve the total DDR size instead
> of passing a hardcoded memory size.
> imx_ddr_size() calculates the memory size based on the actual
> MMDC registers values and is useful to detect misconfigurations,
> so switch to this more robust approach.
> Signed-off-by: Fabio Estevam <festevam@gmail.com>

Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file
  2019-07-18 18:04 [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Fabio Estevam
                   ` (3 preceding siblings ...)
  2019-10-13 20:44 ` [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Stefano Babic
@ 2019-10-14 12:40 ` sbabic at denx.de
  4 siblings, 0 replies; 10+ messages in thread
From: sbabic at denx.de @ 2019-10-14 12:40 UTC (permalink / raw)
  To: u-boot

> Place imx_ddr_size() into a separate file.
> The motivation for doing this is to be able to easily reuse
> imx_ddr_size() on i.MX7ULP.
> Currently imx_ddr_size() is inside arch/arm/mach-imx/cpu.c, which
> is not built for i.MX7ULP.
> Changing the logic to allow building cpu.c for i.MX7UP would
> require adding several ifdef's, leading to a not a very elegant
> solution.
> To allow better reuse, just place imx_ddr_size() into a common
> mmdc_size.c file.
> Signed-off-by: Fabio Estevam <festevam@gmail.com>

Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2019-10-14 12:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-18 18:04 [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Fabio Estevam
2019-07-18 18:04 ` [U-Boot] [PATCH 2/4] imx: mmdc_size: Fix checkpatch warnings Fabio Estevam
2019-10-14 12:40   ` sbabic at denx.de
2019-07-18 18:04 ` [U-Boot] [PATCH 3/4] imx: mmdc_size: Allow building it for i.MX7ULP Fabio Estevam
2019-10-14 12:40   ` sbabic at denx.de
2019-07-18 18:04 ` [U-Boot] [PATCH 4/4] mx7ulp_evk: Use imx_ddr_size() Fabio Estevam
2019-10-14 12:40   ` sbabic at denx.de
2019-10-13 20:44 ` [U-Boot] [PATCH 1/4] imx: Place imx_ddr_size() into a separate file Stefano Babic
2019-10-13 22:34   ` Fabio Estevam
2019-10-14 12:40 ` sbabic at denx.de

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.