All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32
@ 2021-01-14  7:27 Peng Fan
  2021-01-14  7:27 ` [PATCH 02/13] nandbcb: Fix uninitialized variable Peng Fan
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:27 UTC (permalink / raw)
  To: u-boot

From: Peng Fan <peng.fan@nxp.com>

Implement armv8_el2_to_aarch32 for aarch64 U-Boot booting aarch32 SMP
linux. It will trap to ATF to let ATF handle the mode switching.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/lowlevel.S | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/arch/arm/mach-imx/lowlevel.S b/arch/arm/mach-imx/lowlevel.S
index 158fdb7d87..c500aa8123 100644
--- a/arch/arm/mach-imx/lowlevel.S
+++ b/arch/arm/mach-imx/lowlevel.S
@@ -20,3 +20,26 @@ ENTRY(lowlevel_init)
 	isb
 	ret
 ENDPROC(lowlevel_init)
+
+/*
+ * Switch from AArch64 EL2 to AArch32 EL2
+ * @param inputs:
+ * x0: argument, zero
+ * x1: machine nr
+ * x2: fdt address
+ * x3: input argument
+ * x4: kernel entry point
+ * @param outputs for secure firmware:
+ * x0: function id
+ * x1: kernel entry point
+ * x2: machine nr
+ * x3: fdt address
+*/
+.global armv8_el2_to_aarch32
+armv8_el2_to_aarch32:
+	mov     x3, x2
+	mov     x2, x1
+	mov     x1, x4
+	ldr     x0, =0xc20000fd
+	smc     #0
+	ret
-- 
2.28.0

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

* [PATCH 02/13] nandbcb: Fix uninitialized variable
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
@ 2021-01-14  7:27 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 03/13] imx: nandbcb: Fix resource leak Peng Fan
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:27 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

Fix Coverity Issue 9006654. In write_fcb, use of an uninitialized
variable "ret".

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cmd_nandbcb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c
index 44fc37695d..c01f6aea73 100644
--- a/arch/arm/mach-imx/cmd_nandbcb.c
+++ b/arch/arm/mach-imx/cmd_nandbcb.c
@@ -563,7 +563,7 @@ static int write_fcb(struct boot_config *boot_cfg, struct fcb_block *fcb)
 {
 	struct mtd_info *mtd;
 	void *fcb_raw_page = NULL;
-	int i, ret;
+	int i, ret = 0;
 	loff_t off;
 	size_t size;
 
-- 
2.28.0

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

* [PATCH 03/13] imx: nandbcb: Fix resource leak
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
  2021-01-14  7:27 ` [PATCH 02/13] nandbcb: Fix uninitialized variable Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 04/13] imx: nandbcb: Fix resource leak in read_fcb Peng Fan
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

Fix Coverity Issue 9006655. In write_fcb, leak of memory to resource
"fcb_raw_page". Since we have initialized the "ret" to 0, should return
the value of ret.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cmd_nandbcb.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c
index c01f6aea73..6e50471164 100644
--- a/arch/arm/mach-imx/cmd_nandbcb.c
+++ b/arch/arm/mach-imx/cmd_nandbcb.c
@@ -653,8 +653,6 @@ static int write_fcb(struct boot_config *boot_cfg, struct fcb_block *fcb)
 		off += g_boot_search_stride;
 	}
 
-	return 0;
-
 fcb_raw_page_err:
 	kfree(fcb_raw_page);
 
-- 
2.28.0

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

* [PATCH 04/13] imx: nandbcb: Fix resource leak in read_fcb
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
  2021-01-14  7:27 ` [PATCH 02/13] nandbcb: Fix uninitialized variable Peng Fan
  2021-01-14  7:28 ` [PATCH 03/13] imx: nandbcb: Fix resource leak Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 05/13] imx: nandbcb: Fix potential overflow in fill_dbbt_data Peng Fan
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

Fix Coverity Issue 9006657. In read_fcb, leak of memory to system
resource "fcb_raw_page". Adjust the sequence to check the mtd bad
block prior than allocation of "fcb_raw_page", also check the NULL
return of allocation.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cmd_nandbcb.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c
index 6e50471164..836981c895 100644
--- a/arch/arm/mach-imx/cmd_nandbcb.c
+++ b/arch/arm/mach-imx/cmd_nandbcb.c
@@ -503,13 +503,18 @@ static int read_fcb(struct boot_config *boot_cfg, struct fcb_block *fcb,
 	int ret = 0;
 
 	mtd = boot_cfg->mtd;
-	fcb_raw_page = kzalloc(mtd->writesize + mtd->oobsize, GFP_KERNEL);
-
 	if (mtd_block_isbad(mtd, off)) {
 		printf("Block %d is bad, skipped\n", (int)CONV_TO_BLOCKS(off));
 		return 1;
 	}
 
+	fcb_raw_page = kzalloc(mtd->writesize + mtd->oobsize, GFP_KERNEL);
+	if (!fcb_raw_page) {
+		debug("failed to allocate fcb_raw_page\n");
+		ret = -ENOMEM;
+		return ret;
+	}
+
 	/*
 	 * User BCH hardware to decode ECC for FCB
 	 */
-- 
2.28.0

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

* [PATCH 05/13] imx: nandbcb: Fix potential overflow in fill_dbbt_data
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (2 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 04/13] imx: nandbcb: Fix resource leak in read_fcb Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 06/13] imx: nandbcb: Fix potential overflow in nandbcb_set_boot_config Peng Fan
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

Fix Coverity Issue 9006658. In fill_dbbt_data, an integer overflow occurs,
with the result converted to a wider integer type

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cmd_nandbcb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c
index 836981c895..ea4e147da8 100644
--- a/arch/arm/mach-imx/cmd_nandbcb.c
+++ b/arch/arm/mach-imx/cmd_nandbcb.c
@@ -476,7 +476,7 @@ static int fill_dbbt_data(struct mtd_info *mtd, void *buf, int num_blocks)
 	u32 *n_bad_blocksp = buf + 0x4;
 
 	for (n = 0; n < num_blocks; n++) {
-		loff_t offset = n * mtd->erasesize;
+		loff_t offset = (loff_t)n * mtd->erasesize;
 			if (mtd_block_isbad(mtd, offset)) {
 				n_bad_blocks++;
 				*bb = n;
-- 
2.28.0

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

* [PATCH 06/13] imx: nandbcb: Fix potential overflow in nandbcb_set_boot_config
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (3 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 05/13] imx: nandbcb: Fix potential overflow in fill_dbbt_data Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 07/13] nandbcb: nand support for i.MX8MP Peng Fan
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

Fix Coverity Issue 9006656. In nandbcb_set_boot_config, an integer overflow
occurs, with the result converted to a wider integer type.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cmd_nandbcb.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c
index ea4e147da8..028b7c4835 100644
--- a/arch/arm/mach-imx/cmd_nandbcb.c
+++ b/arch/arm/mach-imx/cmd_nandbcb.c
@@ -275,7 +275,8 @@ static int nandbcb_set_boot_config(int argc, char * const argv[],
 			       boot_stream1_address);
 
 	if (boot_cfg->secondary_boot_stream_off_in_MB)
-		boot_stream2_address = boot_cfg->secondary_boot_stream_off_in_MB * 1024 * 1024;
+		boot_stream2_address =
+			(loff_t)boot_cfg->secondary_boot_stream_off_in_MB * 1024 * 1024;
 
 	max_boot_stream_size = boot_stream2_address - boot_stream1_address;
 
-- 
2.28.0

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

* [PATCH 07/13] nandbcb: nand support for i.MX8MP
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (4 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 06/13] imx: nandbcb: Fix potential overflow in nandbcb_set_boot_config Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 08/13] imx: Fix market segment fuse offset on iMX8MP Peng Fan
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Han Xu <han.xu@nxp.com>

Add NAND boot support for i.MX8MP by adding i.MX8MP in nandbcb support
list, reading boot_search_count from fuse.

i.MX8MN NAND boot is same as i.MX8MP, fix some issues as well.

Signed-off-by: Han Xu <han.xu@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cmd_nandbcb.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c
index 028b7c4835..7157c9e979 100644
--- a/arch/arm/mach-imx/cmd_nandbcb.c
+++ b/arch/arm/mach-imx/cmd_nandbcb.c
@@ -1487,7 +1487,7 @@ static int do_nandbcb(struct cmd_tbl *cmdtp, int flag, int argc,
 		plat_config = imx8mq_plat_config;
 	} else if (is_imx8mm()) {
 		plat_config = imx8mm_plat_config;
-	} else if (is_imx8mn()) {
+	} else if (is_imx8mn() || is_imx8mp()) {
 		plat_config = imx8mn_plat_config;
 	} else if (is_imx8qm() || is_imx8qxp()) {
 		plat_config = imx8q_plat_config;
@@ -1496,13 +1496,13 @@ static int do_nandbcb(struct cmd_tbl *cmdtp, int flag, int argc,
 		return CMD_RET_FAILURE;
 	}
 
-	if (plat_config.misc_flags & BT_SEARCH_CNT_FROM_FUSE) {
-		if (is_imx8qxp()) {
-			g_boot_search_count = fuse_to_search_count(0, 720,
-								   0xc0, 6);
-			printf("search count set to %d from fuse\n",
-			       g_boot_search_count);
-		}
+	if ((plat_config.misc_flags) & BT_SEARCH_CNT_FROM_FUSE) {
+		if (is_imx8qxp())
+			g_boot_search_count = fuse_to_search_count(0, 720, 0xc0, 6);
+		if (is_imx8mn() || is_imx8mp())
+			g_boot_search_count = fuse_to_search_count(2, 2, 0x6000, 13);
+		printf("search count set to %d from fuse\n",
+		       g_boot_search_count);
 	}
 
 	cmd = argv[1];
-- 
2.28.0

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

* [PATCH 08/13] imx: Fix market segment fuse offset on iMX8MP
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (5 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 07/13] nandbcb: nand support for i.MX8MP Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 09/13] imx6: Remove AHCI device before boot OS Peng Fan
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

iMX8MP has shifted market segment fuse one bit from 0x440 [7:6] to [6:5],
correct it in imx common codes.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cpu.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index a4d8f101b6..425d0f0327 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -385,6 +385,9 @@ u32 get_cpu_speed_grade_hz(void)
  */
 #define OCOTP_TESTER3_TEMP_SHIFT	6
 
+/* iMX8MP uses OCOTP_TESTER3[6:5] for Market segment */
+#define IMX8MP_OCOTP_TESTER3_TEMP_SHIFT	5
+
 u32 get_cpu_temp_grade(int *minc, int *maxc)
 {
 	struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
@@ -394,7 +397,10 @@ u32 get_cpu_temp_grade(int *minc, int *maxc)
 	uint32_t val;
 
 	val = readl(&fuse->tester3);
-	val >>= OCOTP_TESTER3_TEMP_SHIFT;
+	if (is_imx8mp())
+		val >>= IMX8MP_OCOTP_TESTER3_TEMP_SHIFT;
+	else
+		val >>= OCOTP_TESTER3_TEMP_SHIFT;
 	val &= 0x3;
 
 	if (minc && maxc) {
-- 
2.28.0

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

* [PATCH 09/13] imx6: Remove AHCI device before boot OS
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (6 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 08/13] imx: Fix market segment fuse offset on iMX8MP Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 10/13] imx8m: add QSPI boot dev Peng Fan
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

Since we remove SATA device before boot OS, when AHCI is enabled, update
the codes to remove AHCI device.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cpu.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index 425d0f0327..af0b7fbf7b 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -24,6 +24,8 @@
 #include <ipu_pixfmt.h>
 #include <thermal.h>
 #include <sata.h>
+#include <dm/device-internal.h>
+#include <dm/uclass-internal.h>
 
 #ifdef CONFIG_FSL_ESDHC_IMX
 #include <fsl_esdhc_imx.h>
@@ -278,6 +280,20 @@ void arch_preboot_os(void)
 #if defined(CONFIG_PCIE_IMX) && !CONFIG_IS_ENABLED(DM_PCI)
 	imx_pcie_remove();
 #endif
+
+#if defined(CONFIG_IMX_AHCI)
+	struct udevice *dev;
+	int rc;
+
+	rc = uclass_find_device(UCLASS_AHCI, 0, &dev);
+	if (!rc && dev) {
+		rc = device_remove(dev, DM_REMOVE_NORMAL);
+		if (rc)
+			printf("Cannot remove SATA device '%s' (err=%d)\n",
+				dev->name, rc);
+	}
+#endif
+
 #if defined(CONFIG_SATA)
 	if (!is_mx6sdl()) {
 		sata_remove(0);
-- 
2.28.0

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

* [PATCH 10/13] imx8m: add QSPI boot dev
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (7 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 09/13] imx6: Remove AHCI device before boot OS Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 11/13] imx: Update runtime SD/MMC boot env device and env variables Peng Fan
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Peng Fan <peng.fan@nxp.com>

When boot type could not be detected from rom sw info,
read sbmr1 to detect, here we only use it to detect FLEXSPI
boot, because ROM not update it in rom sw info.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cpu.c | 6 ++++--
 arch/arm/mach-imx/spl.c | 2 ++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index af0b7fbf7b..38b87ed5c3 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -467,12 +467,14 @@ enum boot_device get_boot_device(void)
 	case BOOT_TYPE_SPINOR:
 		boot_dev = SPI_NOR_BOOT;
 		break;
-#ifdef CONFIG_IMX8M
 	case BOOT_TYPE_USB:
 		boot_dev = USB_BOOT;
 		break;
-#endif
 	default:
+#ifdef CONFIG_IMX8M
+		if (((readl(SRC_BASE_ADDR + 0x58) & 0x00007FFF) >> 12) == 0x4)
+			boot_dev = QSPI_BOOT;
+#endif
 		break;
 	}
 
diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c
index aa2686bb92..2d15f62445 100644
--- a/arch/arm/mach-imx/spl.c
+++ b/arch/arm/mach-imx/spl.c
@@ -172,6 +172,8 @@ u32 spl_boot_device(void)
 		return BOOT_DEVICE_NAND;
 	case SPI_NOR_BOOT:
 		return BOOT_DEVICE_SPI;
+	case QSPI_BOOT:
+		return BOOT_DEVICE_NOR;
 	case USB_BOOT:
 		return BOOT_DEVICE_USB;
 	default:
-- 
2.28.0

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

* [PATCH 11/13] imx: Update runtime SD/MMC boot env device and env variables
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (8 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 10/13] imx8m: add QSPI boot dev Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 12/13] imx: support choose emmc device by uuu Peng Fan
  2021-01-14  7:28 ` [PATCH 13/13] imx: timer: Modify GPT timer driver for mx7 Peng Fan
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

Since we enabled MMC alias, the USDHC index in u-boot is the usdhc port.
So we don't need to convert them for kernel and u-boot env device.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/imx8/cpu.c                | 2 +-
 arch/arm/mach-imx/mmc_env.c                 | 2 +-
 arch/arm/mach-imx/mx6/soc.c                 | 2 +-
 arch/arm/mach-imx/mx7ulp/soc.c              | 2 +-
 board/freescale/imx8mm_evk/imx8mm_evk.c     | 9 ++++-----
 board/freescale/imx8mq_evk/imx8mq_evk.c     | 9 ++++-----
 board/freescale/imx8qm_mek/imx8qm_mek.c     | 8 +++-----
 board/freescale/imx8qxp_mek/imx8qxp_mek.c   | 9 ++++-----
 board/freescale/mx6sabreauto/mx6sabreauto.c | 4 ++++
 board/freescale/mx6sabresd/mx6sabresd.c     | 4 ++++
 board/freescale/mx6slevk/mx6slevk.c         | 5 -----
 11 files changed, 27 insertions(+), 29 deletions(-)

diff --git a/arch/arm/mach-imx/imx8/cpu.c b/arch/arm/mach-imx/imx8/cpu.c
index 911d6a51d1..bdd4b87192 100644
--- a/arch/arm/mach-imx/imx8/cpu.c
+++ b/arch/arm/mach-imx/imx8/cpu.c
@@ -205,7 +205,7 @@ void get_board_serial(struct tag_serialnr *serialnr)
 #ifdef CONFIG_ENV_IS_IN_MMC
 __weak int board_mmc_get_env_dev(int devno)
 {
-	return CONFIG_SYS_MMC_ENV_DEV;
+	return devno;
 }
 
 int mmc_get_env_dev(void)
diff --git a/arch/arm/mach-imx/mmc_env.c b/arch/arm/mach-imx/mmc_env.c
index 9c822f721c..9c1d3cdfcb 100644
--- a/arch/arm/mach-imx/mmc_env.c
+++ b/arch/arm/mach-imx/mmc_env.c
@@ -11,7 +11,7 @@
 
 __weak int board_mmc_get_env_dev(int devno)
 {
-	return CONFIG_SYS_MMC_ENV_DEV;
+	return devno;
 }
 
 int mmc_get_env_dev(void)
diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c
index f43a2460f9..5c6eddef3b 100644
--- a/arch/arm/mach-imx/mx6/soc.c
+++ b/arch/arm/mach-imx/mx6/soc.c
@@ -492,7 +492,7 @@ int arch_cpu_init(void)
 #ifdef CONFIG_ENV_IS_IN_MMC
 __weak int board_mmc_get_env_dev(int devno)
 {
-	return CONFIG_SYS_MMC_ENV_DEV;
+	return devno;
 }
 
 static int mmc_get_boot_dev(void)
diff --git a/arch/arm/mach-imx/mx7ulp/soc.c b/arch/arm/mach-imx/mx7ulp/soc.c
index 8dd6b4d40e..6dcb8e736f 100644
--- a/arch/arm/mach-imx/mx7ulp/soc.c
+++ b/arch/arm/mach-imx/mx7ulp/soc.c
@@ -319,7 +319,7 @@ static char *get_reset_cause(char *ret)
 #ifdef CONFIG_ENV_IS_IN_MMC
 __weak int board_mmc_get_env_dev(int devno)
 {
-	return CONFIG_SYS_MMC_ENV_DEV;
+	return devno;
 }
 
 int mmc_get_env_dev(void)
diff --git a/board/freescale/imx8mm_evk/imx8mm_evk.c b/board/freescale/imx8mm_evk/imx8mm_evk.c
index 6af7100696..02dfe5bd22 100644
--- a/board/freescale/imx8mm_evk/imx8mm_evk.c
+++ b/board/freescale/imx8mm_evk/imx8mm_evk.c
@@ -52,13 +52,12 @@ int board_init(void)
 	return 0;
 }
 
-int board_mmc_get_env_dev(int devno)
-{
-	return devno;
-}
-
 int board_late_init(void)
 {
+#ifdef CONFIG_ENV_IS_IN_MMC
+	board_late_mmc_env_init();
+#endif
+
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 	env_set("board_name", "EVK");
 	env_set("board_rev", "iMX8MM");
diff --git a/board/freescale/imx8mq_evk/imx8mq_evk.c b/board/freescale/imx8mq_evk/imx8mq_evk.c
index 1ad670b8cc..a1a77041fa 100644
--- a/board/freescale/imx8mq_evk/imx8mq_evk.c
+++ b/board/freescale/imx8mq_evk/imx8mq_evk.c
@@ -88,11 +88,6 @@ int board_init(void)
 	return 0;
 }
 
-int board_mmc_get_env_dev(int devno)
-{
-	return devno;
-}
-
 int board_late_init(void)
 {
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
@@ -100,5 +95,9 @@ int board_late_init(void)
 	env_set("board_rev", "iMX8MQ");
 #endif
 
+#ifdef CONFIG_ENV_IS_IN_MMC
+	board_late_mmc_env_init();
+#endif
+
 	return 0;
 }
diff --git a/board/freescale/imx8qm_mek/imx8qm_mek.c b/board/freescale/imx8qm_mek/imx8qm_mek.c
index fba3baa126..106e7127dc 100644
--- a/board/freescale/imx8qm_mek/imx8qm_mek.c
+++ b/board/freescale/imx8qm_mek/imx8qm_mek.c
@@ -116,11 +116,6 @@ int ft_board_setup(void *blob, struct bd_info *bd)
 }
 #endif
 
-int board_mmc_get_env_dev(int devno)
-{
-	return devno;
-}
-
 int board_late_init(void)
 {
 	char *fdt_file;
@@ -141,5 +136,8 @@ int board_late_init(void)
 			env_set("fdt_file", "imx8qm-mek.dtb");
 	}
 
+#ifdef CONFIG_ENV_IS_IN_MMC
+	board_late_mmc_env_init();
+#endif
 	return 0;
 }
diff --git a/board/freescale/imx8qxp_mek/imx8qxp_mek.c b/board/freescale/imx8qxp_mek/imx8qxp_mek.c
index da55933e21..6576ee112e 100644
--- a/board/freescale/imx8qxp_mek/imx8qxp_mek.c
+++ b/board/freescale/imx8qxp_mek/imx8qxp_mek.c
@@ -140,11 +140,6 @@ int ft_board_setup(void *blob, struct bd_info *bd)
 }
 #endif
 
-int board_mmc_get_env_dev(int devno)
-{
-	return devno;
-}
-
 int board_late_init(void)
 {
 	char *fdt_file;
@@ -165,5 +160,9 @@ int board_late_init(void)
 			env_set("fdt_file", "imx8qxp-mek.dtb");
 	}
 
+#ifdef CONFIG_ENV_IS_IN_MMC
+	board_late_mmc_env_init();
+#endif
+
 	return 0;
 }
diff --git a/board/freescale/mx6sabreauto/mx6sabreauto.c b/board/freescale/mx6sabreauto/mx6sabreauto.c
index c031cf8538..55ff7c607c 100644
--- a/board/freescale/mx6sabreauto/mx6sabreauto.c
+++ b/board/freescale/mx6sabreauto/mx6sabreauto.c
@@ -594,6 +594,10 @@ int board_late_init(void)
 		env_set("board_rev", "MX6DL");
 #endif
 
+#ifdef CONFIG_ENV_IS_IN_MMC
+	board_late_mmc_env_init();
+#endif
+
 	return 0;
 }
 
diff --git a/board/freescale/mx6sabresd/mx6sabresd.c b/board/freescale/mx6sabresd/mx6sabresd.c
index 9a176f4711..cc336fd8dd 100644
--- a/board/freescale/mx6sabresd/mx6sabresd.c
+++ b/board/freescale/mx6sabresd/mx6sabresd.c
@@ -572,6 +572,10 @@ int board_late_init(void)
 		env_set("board_rev", "MX6DL");
 #endif
 
+#ifdef CONFIG_ENV_IS_IN_MMC
+	board_late_mmc_env_init();
+#endif
+
 	return 0;
 }
 
diff --git a/board/freescale/mx6slevk/mx6slevk.c b/board/freescale/mx6slevk/mx6slevk.c
index 5d2f815d23..92ecdb4d3d 100644
--- a/board/freescale/mx6slevk/mx6slevk.c
+++ b/board/freescale/mx6slevk/mx6slevk.c
@@ -108,11 +108,6 @@ static void setup_iomux_uart(void)
 	imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
 }
 
-int board_mmc_get_env_dev(int devno)
-{
-	return devno;
-}
-
 #ifdef CONFIG_DM_PMIC_PFUZE100
 int power_init_board(void)
 {
-- 
2.28.0

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

* [PATCH 12/13] imx: support choose emmc device by uuu
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (9 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 11/13] imx: Update runtime SD/MMC boot env device and env variables Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  2021-01-14  7:28 ` [PATCH 13/13] imx: timer: Modify GPT timer driver for mx7 Peng Fan
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Frank Li <Frank.Li@nxp.com>

uuu can change emmc device number for fastboot

Signed-off-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/mmc_env.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-imx/mmc_env.c b/arch/arm/mach-imx/mmc_env.c
index 9c1d3cdfcb..22d8daa107 100644
--- a/arch/arm/mach-imx/mmc_env.c
+++ b/arch/arm/mach-imx/mmc_env.c
@@ -23,7 +23,7 @@ int mmc_get_env_dev(void)
 
 	/* If not boot from sd/mmc, use default value */
 	if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC))
-		return CONFIG_SYS_MMC_ENV_DEV;
+		return env_get_ulong("mmcdev", 10, CONFIG_SYS_MMC_ENV_DEV);
 
 	return board_mmc_get_env_dev(devno);
 }
-- 
2.28.0

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

* [PATCH 13/13] imx: timer: Modify GPT timer driver for mx7
  2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
                   ` (10 preceding siblings ...)
  2021-01-14  7:28 ` [PATCH 12/13] imx: support choose emmc device by uuu Peng Fan
@ 2021-01-14  7:28 ` Peng Fan
  11 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2021-01-14  7:28 UTC (permalink / raw)
  To: u-boot

From: Ye Li <ye.li@nxp.com>

Modify the GPT common platform driver for mx7 which only use 24Mhz
OSC as clock source.

Note: at default, the mx7d will use system counter as timer. The GPT
is disabled.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/timer.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-imx/timer.c b/arch/arm/mach-imx/timer.c
index fa1941aec4..a3c47889f1 100644
--- a/arch/arm/mach-imx/timer.c
+++ b/arch/arm/mach-imx/timer.c
@@ -39,18 +39,16 @@ static struct mxc_gpt *cur_gpt = (struct mxc_gpt *)GPT1_BASE_ADDR;
 #define GPTPR_PRESCALER24M_SHIFT 12
 #define GPTPR_PRESCALER24M_MASK (0xF << GPTPR_PRESCALER24M_SHIFT)
 
+DECLARE_GLOBAL_DATA_PTR;
+
 static inline int gpt_has_clk_source_osc(void)
 {
-#if defined(CONFIG_MX6)
 	if (((is_mx6dq()) && (soc_rev() > CHIP_REV_1_0)) ||
 	    is_mx6dqp() || is_mx6sdl() || is_mx6sx() || is_mx6ul() ||
-	    is_mx6ull() || is_mx6sll())
+	    is_mx6ull() || is_mx6sll() || is_mx7())
 		return 1;
 
 	return 0;
-#else
-	return 0;
-#endif
 }
 
 static inline ulong gpt_get_clk(void)
@@ -73,7 +71,8 @@ int timer_init(void)
 	__raw_writel(GPTCR_SWR, &cur_gpt->control);
 
 	/* We have no udelay by now */
-	__raw_writel(0, &cur_gpt->control);
+	for (i = 0; i < 100; i++)
+		__raw_writel(0, &cur_gpt->control);
 
 	i = __raw_readl(&cur_gpt->control);
 	i &= ~GPTCR_CLKSOURCE_MASK;
@@ -87,7 +86,7 @@ int timer_init(void)
 		 * Enable bit and prescaler
 		 */
 		if (is_mx6sdl() || is_mx6sx() || is_mx6ul() || is_mx6ull() ||
-		    is_mx6sll()) {
+		    is_mx6sll() || is_mx7()) {
 			i |= GPTCR_24MEN;
 
 			/* Produce 3Mhz clock */
@@ -103,6 +102,9 @@ int timer_init(void)
 #endif
 	__raw_writel(i, &cur_gpt->control);
 
+	gd->arch.tbl = __raw_readl(&cur_gpt->counter);
+	gd->arch.tbu = 0;
+
 	return 0;
 }
 
-- 
2.28.0

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

end of thread, other threads:[~2021-01-14  7:28 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-14  7:27 [PATCH 01/13] imx: lowlevel: implement armv8_el2_to_aarch32 Peng Fan
2021-01-14  7:27 ` [PATCH 02/13] nandbcb: Fix uninitialized variable Peng Fan
2021-01-14  7:28 ` [PATCH 03/13] imx: nandbcb: Fix resource leak Peng Fan
2021-01-14  7:28 ` [PATCH 04/13] imx: nandbcb: Fix resource leak in read_fcb Peng Fan
2021-01-14  7:28 ` [PATCH 05/13] imx: nandbcb: Fix potential overflow in fill_dbbt_data Peng Fan
2021-01-14  7:28 ` [PATCH 06/13] imx: nandbcb: Fix potential overflow in nandbcb_set_boot_config Peng Fan
2021-01-14  7:28 ` [PATCH 07/13] nandbcb: nand support for i.MX8MP Peng Fan
2021-01-14  7:28 ` [PATCH 08/13] imx: Fix market segment fuse offset on iMX8MP Peng Fan
2021-01-14  7:28 ` [PATCH 09/13] imx6: Remove AHCI device before boot OS Peng Fan
2021-01-14  7:28 ` [PATCH 10/13] imx8m: add QSPI boot dev Peng Fan
2021-01-14  7:28 ` [PATCH 11/13] imx: Update runtime SD/MMC boot env device and env variables Peng Fan
2021-01-14  7:28 ` [PATCH 12/13] imx: support choose emmc device by uuu Peng Fan
2021-01-14  7:28 ` [PATCH 13/13] imx: timer: Modify GPT timer driver for mx7 Peng Fan

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.