mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH v1 1/2] ARM: i.MX6 MMDC: Add register offset comments to struct
@ 2023-09-28 12:11 Oleksij Rempel
  2023-09-28 12:11 ` [PATCH v1 2/2] ARM: skov-imx6: Remove unused board variants Oleksij Rempel
  2023-10-04  7:38 ` [PATCH v1 1/2] ARM: i.MX6 MMDC: Add register offset comments to struct Sascha Hauer
  0 siblings, 2 replies; 3+ messages in thread
From: Oleksij Rempel @ 2023-09-28 12:11 UTC (permalink / raw)
  To: barebox

From: Sascha Hauer <s.hauer@pengutronix.de>

Lying structs over registers is a U-Boot paradigm I'll never understand.
The only thing it does is to successfully prevent a reader from
knowing/verifying the register offset without counting struct members. I
am currently not in the mood of rewriting this, but at least add some
comments with the register offsets as a debugging aid.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 include/mach/imx/imx6-mmdc.h | 100 +++++++++++++++++------------------
 1 file changed, 50 insertions(+), 50 deletions(-)

diff --git a/include/mach/imx/imx6-mmdc.h b/include/mach/imx/imx6-mmdc.h
index bf8d41fe58..1df87bf6bd 100644
--- a/include/mach/imx/imx6-mmdc.h
+++ b/include/mach/imx/imx6-mmdc.h
@@ -145,60 +145,60 @@ struct mx6sx_iomux_grp_regs {
  */
 #define MX6DQ_IOM_DDR_BASE      0x020e0500
 struct mx6dq_iomux_ddr_regs {
-	u32 res1[3];
-	u32 dram_sdqs5;
-	u32 dram_dqm5;
-	u32 dram_dqm4;
-	u32 dram_sdqs4;
-	u32 dram_sdqs3;
-	u32 dram_dqm3;
-	u32 dram_sdqs2;
-	u32 dram_dqm2;
-	u32 res2[16];
-	u32 dram_cas;
-	u32 res3[2];
-	u32 dram_ras;
-	u32 dram_reset;
-	u32 res4[2];
-	u32 dram_sdclk_0;
-	u32 dram_sdba2;
-	u32 dram_sdcke0;
-	u32 dram_sdclk_1;
-	u32 dram_sdcke1;
-	u32 dram_sdodt0;
-	u32 dram_sdodt1;
-	u32 res5;
-	u32 dram_sdqs0;
-	u32 dram_dqm0;
-	u32 dram_sdqs1;
-	u32 dram_dqm1;
-	u32 dram_sdqs6;
-	u32 dram_dqm6;
-	u32 dram_sdqs7;
-	u32 dram_dqm7;
+	u32 res1[3];		/* 0x020e0500 */
+	u32 dram_sdqs5;		/* 0x020e050c */
+	u32 dram_dqm5;		/* 0x020e0510 */
+	u32 dram_dqm4;		/* 0x020e0514 */
+	u32 dram_sdqs4;		/* 0x020e0518 */
+	u32 dram_sdqs3;		/* 0x020e051c */
+	u32 dram_dqm3;		/* 0x020e0520 */
+	u32 dram_sdqs2;		/* 0x020e0524 */
+	u32 dram_dqm2;		/* 0x020e0528 */
+	u32 res2[16];		/* 0x020e052c */
+	u32 dram_cas;		/* 0x020e056c */
+	u32 res3[2];		/* 0x020e0570 */
+	u32 dram_ras;		/* 0x020e0578 */
+	u32 dram_reset;		/* 0x020e057c */
+	u32 res4[2];		/* 0x020e0580 */
+	u32 dram_sdclk_0;	/* 0x020e0588 */
+	u32 dram_sdba2;		/* 0x020e058c */
+	u32 dram_sdcke0;	/* 0x020e0590 */
+	u32 dram_sdclk_1;	/* 0x020e0594 */
+	u32 dram_sdcke1;	/* 0x020e0598 */
+	u32 dram_sdodt0;	/* 0x020e059c */
+	u32 dram_sdodt1;	/* 0x020e05a0 */
+	u32 res5;		/* 0x020e05a4 */
+	u32 dram_sdqs0;		/* 0x020e05a8 */
+	u32 dram_dqm0;		/* 0x020e05ac */
+	u32 dram_sdqs1;		/* 0x020e05b0 */
+	u32 dram_dqm1;		/* 0x020e05b4 */
+	u32 dram_sdqs6;		/* 0x020e05b8 */
+	u32 dram_dqm6;		/* 0x020e05bc */
+	u32 dram_sdqs7;		/* 0x020e05c0 */
+	u32 dram_dqm7;		/* 0x020e05c4 */
 };
 
 #define MX6DQ_IOM_GRP_BASE      0x020e0700
 struct mx6dq_iomux_grp_regs {
-	u32 res1[18];
-	u32 grp_b7ds;
-	u32 grp_addds;
-	u32 grp_ddrmode_ctl;
-	u32 res2;
-	u32 grp_ddrpke;
-	u32 res3[6];
-	u32 grp_ddrmode;
-	u32 res4[3];
-	u32 grp_b0ds;
-	u32 grp_b1ds;
-	u32 grp_ctlds;
-	u32 res5;
-	u32 grp_b2ds;
-	u32 grp_ddr_type;
-	u32 grp_b3ds;
-	u32 grp_b4ds;
-	u32 grp_b5ds;
-	u32 grp_b6ds;
+	u32 res1[18];		/* 0x020e0700 */
+	u32 grp_b7ds;		/* 0x020e0748 */
+	u32 grp_addds;		/* 0x020e074c */
+	u32 grp_ddrmode_ctl;	/* 0x020e0750 */
+	u32 res2;		/* 0x020e0754 */
+	u32 grp_ddrpke;		/* 0x020e0758 */
+	u32 res3[6];		/* 0x020e075c */
+	u32 grp_ddrmode;	/* 0x020e0774 */
+	u32 res4[3];		/* 0x020e0778 */
+	u32 grp_b0ds;		/* 0x020e0784 */
+	u32 grp_b1ds;		/* 0x020e0788 */
+	u32 grp_ctlds;		/* 0x020e078c */
+	u32 res5;		/* 0x020e0790 */
+	u32 grp_b2ds;		/* 0x020e0794 */
+	u32 grp_ddr_type;	/* 0x020e0798 */
+	u32 grp_b3ds;		/* 0x020e079c */
+	u32 grp_b4ds;		/* 0x020e07a0 */
+	u32 grp_b5ds;		/* 0x020e07a4 */
+	u32 grp_b6ds;		/* 0x020e07a8 */
 };
 
 #define MX6SDL_IOM_DDR_BASE     0x020e0400
-- 
2.39.2




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

* [PATCH v1 2/2] ARM: skov-imx6: Remove unused board variants
  2023-09-28 12:11 [PATCH v1 1/2] ARM: i.MX6 MMDC: Add register offset comments to struct Oleksij Rempel
@ 2023-09-28 12:11 ` Oleksij Rempel
  2023-10-04  7:38 ` [PATCH v1 1/2] ARM: i.MX6 MMDC: Add register offset comments to struct Sascha Hauer
  1 sibling, 0 replies; 3+ messages in thread
From: Oleksij Rempel @ 2023-09-28 12:11 UTC (permalink / raw)
  To: barebox

From: Sascha Hauer <s.hauer@pengutronix.de>

The board variants 12 and 18 are no longer used. Remove them.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/arm/boards/skov-imx6/lowlevel.c | 136 ---------------------------
 1 file changed, 136 deletions(-)

diff --git a/arch/arm/boards/skov-imx6/lowlevel.c b/arch/arm/boards/skov-imx6/lowlevel.c
index c9a695ced4..16809dd4a6 100644
--- a/arch/arm/boards/skov-imx6/lowlevel.c
+++ b/arch/arm/boards/skov-imx6/lowlevel.c
@@ -28,122 +28,6 @@ static void __udelay(int us)
 
 /* ------------------------------------------------------------------------ */
 
-/*
- * Micron MT41K512M16HA-125 IT:E ->  8 GBit = 64 Meg x 16 x 8 banks
- *
- * Speed Grade   Data Rate (MT/s)  tRCD-tRP-CL   tRCD(ns)  tRP(ns)  CL(ns)
- *    -125          1600            11-11-11      13.75     13.75   13.75
- *               (=800 MHz)
- *
- * Memory configuration used by variant:
- * - "Max Performance", 64 bit data bus, 1066 MHz, 4 GiB memory
- */
-static const struct mx6_ddr3_cfg skov_imx6_cfg_4x512Mb_1066MHz = {
-	.mem_speed = 1066,
-	.density = 8, /* GiBit */
-	.width = 16, /* 16 bit data per device */
-	.banks = 8,
-	.rowaddr = 16, /* 64 k */
-	.coladdr = 10, /* 1 k */
-	.pagesz = 2, /* [kiB] */
-	.trcd = 1375, /* 13.75 ns = 11 clocks @ 1.6 GHz */
-	.trcmin = 4875, /* 48.75 ns = 39 clocks @ 1.6 GHz */
-	.trasmin = 3500, /* 35 ns = 28 clocks @ 1.6 GHz */
-	.SRT = 0,
-};
-
-static const struct mx6_ddr_sysinfo skov_imx6_sysinfo_4x512Mb_1066MHz = {
-	.dsize = 2, /* 64 bit wide = 4 devices, 16 bit each */
-	.cs_density = 32, /* four 8 GBit devices connected */
-	.ncs = 1, /* one CS line for all devices */
-	.cs1_mirror = 1, /* TODO */
-	.bi_on = 1, /* TODO */
-	.rtt_nom = 1, /* MX6_MMDC_P0_MPODTCTRL -> 0x00022227 */
-	.rtt_wr = 0, /* is LW_EN is 0 in their code */
-	.ralat = 5, /* TODO */
-	.walat = 1, /* TODO */
-	.mif3_mode = 3, /* TODO */
-	.rst_to_cke = 0x23, /* used in their code as well */
-	.sde_to_rst = 0x10, /* used in their code as well */
-	.pd_fast_exit = 0, /* TODO */
-};
-
-static const struct mx6_mmdc_calibration skov_imx6_calib_4x512Mb_1066MHz = {
-	.p0_mpwldectrl0 = 0x001a0017,
-	.p0_mpwldectrl1 = 0x001F001F,
-	.p0_mpdgctrl0 = 0x43040319,
-	.p0_mpdgctrl1 = 0x03040279,
-	.p0_mprddlctl = 0x4d434248,
-	.p0_mpwrdlctl = 0x34424543,
-
-	.p1_mpwldectrl0 = 0x00170027,
-	.p1_mpwldectrl1 = 0x000a001f,
-	.p1_mpdgctrl0 = 0x43040321,
-	.p1_mpdgctrl1 = 0x03030251,
-	.p1_mprddlctl = 0x42413c4d,
-	.p1_mpwrdlctl = 0x49324933,
-};
-
-/* ------------------------------------------------------------------------ */
-
-/*
- * Micron MT41K256M16HA-125 IT:E ->  4 GBit = 32 Meg x 16 x 8 banks
- *
- * Speed Grade   Data Rate (MT/s)  tRCD-tRP-CL   tRCD(ns)  tRP(ns)  CL(ns)
- *    -125          1600            11-11-11      13.75     13.75   13.75
- *               (=800 MHz)
- *
- * Memory configuration used by variant:
- * - "Max Performance", 64 bit data bus, 1066 MHz, 2 GiB memory
- */
-static const struct mx6_ddr3_cfg skov_imx6_cfg_4x256Mb_1066MHz = {
-	.mem_speed = 1066,
-	.density = 4, /* GiBit */
-	.width = 16, /* 16 bit data per device */
-	.banks = 8,
-	.rowaddr = 15, /* 32 k */
-	.coladdr = 10, /* 1 k */
-	.pagesz = 2, /* [kiB] */
-	.trcd = 1375, /* 13.75 ns = 11 clocks @ 1.6 GHz */
-	.trcmin = 4875, /* 48.75 ns = 39 clocks @ 1.6 GHz */
-	.trasmin = 3500, /* 35 ns = 28 clocks @ 1.6 GHz */
-	.SRT = 0,
-};
-
-static const struct mx6_ddr_sysinfo skov_imx6_sysinfo_4x256Mb_1066MHz = {
-	.dsize = 2, /* 64 bit wide = 4 devices, 16 bit each */
-	.cs_density = 16, /* four 4 GBit devices connected */
-	.ncs = 1, /* one CS line for all devices */
-	.cs1_mirror = 1, /* TODO */
-	.bi_on = 1, /* TODO */
-	.rtt_nom = 1, /* MX6_MMDC_P0_MPODTCTRL -> 0x00022227 */
-	.rtt_wr = 0, /* is LW_EN is 0 in their code */
-	.ralat = 5, /* TODO */
-	.walat = 1, /* TODO */
-	.mif3_mode = 3, /* TODO */
-	.rst_to_cke = 0x23, /* used in their code as well */
-	.sde_to_rst = 0x10, /* used in their code as well */
-	.pd_fast_exit = 0, /* TODO */
-};
-
-static const struct mx6_mmdc_calibration skov_imx6_calib_4x256Mb_1066MHz = {
-	.p0_mpwldectrl0 = 0x001a0017,
-	.p0_mpwldectrl1 = 0x001F001F,
-	.p0_mpdgctrl0 = 0x43040319,
-	.p0_mpdgctrl1 = 0x03040279,
-	.p0_mprddlctl = 0x4d434248,
-	.p0_mpwrdlctl = 0x34424543,
-
-	.p1_mpwldectrl0 = 0x00170027,
-	.p1_mpwldectrl1 = 0x000a001f,
-	.p1_mpdgctrl0 = 0x43040321,
-	.p1_mpdgctrl1 = 0x03030251,
-	.p1_mprddlctl = 0x42413c4d,
-	.p1_mpwrdlctl = 0x49324933,
-};
-
-/* ------------------------------------------------------------------------ */
-
 /*
  * Micron MT41K128M16JT-125 IT:K ->  2 GBit = 16 Meg x 16 x 8 banks
  *
@@ -530,26 +414,6 @@ static void skov_imx6_init(int cpu_type, unsigned board_variant)
 	int instance;
 
 	switch (board_variant) {
-	case 12: /* P2 i.MX6Q, max performance */
-		if (cpu_type != IMX6_CPUTYPE_IMX6Q) {
-			pr_err("Invalid SoC! i.MX6Q expected\n");
-			return;
-		}
-		pr_debug("Initializing a P2 max performance system...\n");
-		spl_imx6q_dram_init(&skov_imx6_sysinfo_4x256Mb_1066MHz,
-					&skov_imx6_calib_4x256Mb_1066MHz,
-					&skov_imx6_cfg_4x256Mb_1066MHz);
-		break;
-	case 18: /* i.MX6Q+ */
-		if (cpu_type != IMX6_CPUTYPE_IMX6Q) {
-			pr_err("Invalid SoC! i.MX6Q expected\n");
-			return;
-		}
-		pr_debug("Initializing board variant 18\n");
-		spl_imx6q_dram_init(&skov_imx6_sysinfo_4x512Mb_1066MHz,
-					&skov_imx6_calib_4x512Mb_1066MHz,
-					&skov_imx6_cfg_4x512Mb_1066MHz);
-		break;
 	case 19: /* i.MX6S "Solo_R512M_F2G" */
 		if (cpu_type != IMX6_CPUTYPE_IMX6S) {
 			pr_err("Invalid SoC! i.MX6S expected\n");
-- 
2.39.2




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

* Re: [PATCH v1 1/2] ARM: i.MX6 MMDC: Add register offset comments to struct
  2023-09-28 12:11 [PATCH v1 1/2] ARM: i.MX6 MMDC: Add register offset comments to struct Oleksij Rempel
  2023-09-28 12:11 ` [PATCH v1 2/2] ARM: skov-imx6: Remove unused board variants Oleksij Rempel
@ 2023-10-04  7:38 ` Sascha Hauer
  1 sibling, 0 replies; 3+ messages in thread
From: Sascha Hauer @ 2023-10-04  7:38 UTC (permalink / raw)
  To: Oleksij Rempel; +Cc: barebox

On Thu, Sep 28, 2023 at 02:11:05PM +0200, Oleksij Rempel wrote:
> From: Sascha Hauer <s.hauer@pengutronix.de>
> 
> Lying structs over registers is a U-Boot paradigm I'll never understand.
> The only thing it does is to successfully prevent a reader from
> knowing/verifying the register offset without counting struct members. I
> am currently not in the mood of rewriting this, but at least add some
> comments with the register offsets as a debugging aid.
> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
>  include/mach/imx/imx6-mmdc.h | 100 +++++++++++++++++------------------
>  1 file changed, 50 insertions(+), 50 deletions(-)

Applied, thanks

Sascha

> 
> diff --git a/include/mach/imx/imx6-mmdc.h b/include/mach/imx/imx6-mmdc.h
> index bf8d41fe58..1df87bf6bd 100644
> --- a/include/mach/imx/imx6-mmdc.h
> +++ b/include/mach/imx/imx6-mmdc.h
> @@ -145,60 +145,60 @@ struct mx6sx_iomux_grp_regs {
>   */
>  #define MX6DQ_IOM_DDR_BASE      0x020e0500
>  struct mx6dq_iomux_ddr_regs {
> -	u32 res1[3];
> -	u32 dram_sdqs5;
> -	u32 dram_dqm5;
> -	u32 dram_dqm4;
> -	u32 dram_sdqs4;
> -	u32 dram_sdqs3;
> -	u32 dram_dqm3;
> -	u32 dram_sdqs2;
> -	u32 dram_dqm2;
> -	u32 res2[16];
> -	u32 dram_cas;
> -	u32 res3[2];
> -	u32 dram_ras;
> -	u32 dram_reset;
> -	u32 res4[2];
> -	u32 dram_sdclk_0;
> -	u32 dram_sdba2;
> -	u32 dram_sdcke0;
> -	u32 dram_sdclk_1;
> -	u32 dram_sdcke1;
> -	u32 dram_sdodt0;
> -	u32 dram_sdodt1;
> -	u32 res5;
> -	u32 dram_sdqs0;
> -	u32 dram_dqm0;
> -	u32 dram_sdqs1;
> -	u32 dram_dqm1;
> -	u32 dram_sdqs6;
> -	u32 dram_dqm6;
> -	u32 dram_sdqs7;
> -	u32 dram_dqm7;
> +	u32 res1[3];		/* 0x020e0500 */
> +	u32 dram_sdqs5;		/* 0x020e050c */
> +	u32 dram_dqm5;		/* 0x020e0510 */
> +	u32 dram_dqm4;		/* 0x020e0514 */
> +	u32 dram_sdqs4;		/* 0x020e0518 */
> +	u32 dram_sdqs3;		/* 0x020e051c */
> +	u32 dram_dqm3;		/* 0x020e0520 */
> +	u32 dram_sdqs2;		/* 0x020e0524 */
> +	u32 dram_dqm2;		/* 0x020e0528 */
> +	u32 res2[16];		/* 0x020e052c */
> +	u32 dram_cas;		/* 0x020e056c */
> +	u32 res3[2];		/* 0x020e0570 */
> +	u32 dram_ras;		/* 0x020e0578 */
> +	u32 dram_reset;		/* 0x020e057c */
> +	u32 res4[2];		/* 0x020e0580 */
> +	u32 dram_sdclk_0;	/* 0x020e0588 */
> +	u32 dram_sdba2;		/* 0x020e058c */
> +	u32 dram_sdcke0;	/* 0x020e0590 */
> +	u32 dram_sdclk_1;	/* 0x020e0594 */
> +	u32 dram_sdcke1;	/* 0x020e0598 */
> +	u32 dram_sdodt0;	/* 0x020e059c */
> +	u32 dram_sdodt1;	/* 0x020e05a0 */
> +	u32 res5;		/* 0x020e05a4 */
> +	u32 dram_sdqs0;		/* 0x020e05a8 */
> +	u32 dram_dqm0;		/* 0x020e05ac */
> +	u32 dram_sdqs1;		/* 0x020e05b0 */
> +	u32 dram_dqm1;		/* 0x020e05b4 */
> +	u32 dram_sdqs6;		/* 0x020e05b8 */
> +	u32 dram_dqm6;		/* 0x020e05bc */
> +	u32 dram_sdqs7;		/* 0x020e05c0 */
> +	u32 dram_dqm7;		/* 0x020e05c4 */
>  };
>  
>  #define MX6DQ_IOM_GRP_BASE      0x020e0700
>  struct mx6dq_iomux_grp_regs {
> -	u32 res1[18];
> -	u32 grp_b7ds;
> -	u32 grp_addds;
> -	u32 grp_ddrmode_ctl;
> -	u32 res2;
> -	u32 grp_ddrpke;
> -	u32 res3[6];
> -	u32 grp_ddrmode;
> -	u32 res4[3];
> -	u32 grp_b0ds;
> -	u32 grp_b1ds;
> -	u32 grp_ctlds;
> -	u32 res5;
> -	u32 grp_b2ds;
> -	u32 grp_ddr_type;
> -	u32 grp_b3ds;
> -	u32 grp_b4ds;
> -	u32 grp_b5ds;
> -	u32 grp_b6ds;
> +	u32 res1[18];		/* 0x020e0700 */
> +	u32 grp_b7ds;		/* 0x020e0748 */
> +	u32 grp_addds;		/* 0x020e074c */
> +	u32 grp_ddrmode_ctl;	/* 0x020e0750 */
> +	u32 res2;		/* 0x020e0754 */
> +	u32 grp_ddrpke;		/* 0x020e0758 */
> +	u32 res3[6];		/* 0x020e075c */
> +	u32 grp_ddrmode;	/* 0x020e0774 */
> +	u32 res4[3];		/* 0x020e0778 */
> +	u32 grp_b0ds;		/* 0x020e0784 */
> +	u32 grp_b1ds;		/* 0x020e0788 */
> +	u32 grp_ctlds;		/* 0x020e078c */
> +	u32 res5;		/* 0x020e0790 */
> +	u32 grp_b2ds;		/* 0x020e0794 */
> +	u32 grp_ddr_type;	/* 0x020e0798 */
> +	u32 grp_b3ds;		/* 0x020e079c */
> +	u32 grp_b4ds;		/* 0x020e07a0 */
> +	u32 grp_b5ds;		/* 0x020e07a4 */
> +	u32 grp_b6ds;		/* 0x020e07a8 */
>  };
>  
>  #define MX6SDL_IOM_DDR_BASE     0x020e0400
> -- 
> 2.39.2
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



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

end of thread, other threads:[~2023-10-04  7:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-28 12:11 [PATCH v1 1/2] ARM: i.MX6 MMDC: Add register offset comments to struct Oleksij Rempel
2023-09-28 12:11 ` [PATCH v1 2/2] ARM: skov-imx6: Remove unused board variants Oleksij Rempel
2023-10-04  7:38 ` [PATCH v1 1/2] ARM: i.MX6 MMDC: Add register offset comments to struct Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox