diff options
author | Ye.Li <B37916@freescale.com> | 2015-05-20 17:19:44 +0800 |
---|---|---|
committer | Ye.Li <B37916@freescale.com> | 2015-05-20 18:05:33 +0800 |
commit | f7775862aa7eb6d5e978f9059e981f57f7f76f1a (patch) | |
tree | cded4b1d5fde87dfe45f151f934432b2567c4fe5 /board | |
parent | 7ae2b544aedaf79c59c54a8cfd917da76eac4d73 (diff) | |
download | u-boot-imx-f7775862aa7eb6d5e978f9059e981f57f7f76f1a.zip u-boot-imx-f7775862aa7eb6d5e978f9059e981f57f7f76f1a.tar.gz u-boot-imx-f7775862aa7eb6d5e978f9059e981f57f7f76f1a.tar.bz2 |
MLK-10936 imx: mx7d: Change to use bootrom_sw_info for getting boot deviceimx_3.14.38_6ul_engr
On MX7D, boot rom can provide some boot information such as boot device,
arm freq, axi freq, etc. (see the structure below)
Offset Byte4 | Byte3 | Byte2 | Byte1
0x0 Reserved | Boot Device Type | Boot Device Instance | Reserved
0x4 ARM core frequency(in Hz)
0x8 AXI bus frequency(in Hz)
0x0C DDR frequency(in Hz)
0x10 GPT1 input clock frequency(in Hz)
0x14 Reserved
0x18
0x1C
The boot information can be accessed by get the pointer at 0x1E8. This patch
changes the u-boot to use the new approach. When manufacture boot, the info
recorded is the actual SD port, not the failed device.
Signed-off-by: Ye.Li <B37916@freescale.com>
Diffstat (limited to 'board')
5 files changed, 25 insertions, 40 deletions
diff --git a/board/freescale/mx7d_12x12_ddr3_arm2/mx7d_12x12_ddr3_arm2.c b/board/freescale/mx7d_12x12_ddr3_arm2/mx7d_12x12_ddr3_arm2.c index 225539a..3f5dcf5 100644 --- a/board/freescale/mx7d_12x12_ddr3_arm2/mx7d_12x12_ddr3_arm2.c +++ b/board/freescale/mx7d_12x12_ddr3_arm2/mx7d_12x12_ddr3_arm2.c @@ -130,19 +130,16 @@ static struct fsl_esdhc_cfg usdhc_cfg[2] = { int mmc_get_env_devno(void) { - u32 soc_sbmr = readl(SRC_BASE_ADDR + 0x58); - u32 dev_no; - u32 bootsel; + struct bootrom_sw_info **p = + (struct bootrom_sw_info **)ROM_SW_INFO_ADDR; - bootsel = (soc_sbmr & 0x0000F000) >> 12; + u8 boot_type = (*p)->boot_dev_type; + u8 dev_no = (*p)->boot_dev_instance; /* If not boot from sd/mmc, use default value */ - if ((bootsel != BOOT_TYPE_SD) && (bootsel != BOOT_TYPE_MMC)) + if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC)) return CONFIG_SYS_MMC_ENV_DEV; - /* BOOT_CFG2[2] and BOOT_CFG2[3] */ - dev_no = (soc_sbmr & 0x00000C00) >> 10; - return dev_no - 1; } diff --git a/board/freescale/mx7d_12x12_lpddr3_arm2/mx7d_12x12_lpddr3_arm2.c b/board/freescale/mx7d_12x12_lpddr3_arm2/mx7d_12x12_lpddr3_arm2.c index 0770818..5ecc8e4 100644 --- a/board/freescale/mx7d_12x12_lpddr3_arm2/mx7d_12x12_lpddr3_arm2.c +++ b/board/freescale/mx7d_12x12_lpddr3_arm2/mx7d_12x12_lpddr3_arm2.c @@ -355,19 +355,16 @@ static struct fsl_esdhc_cfg usdhc_cfg[3] = { int mmc_get_env_devno(void) { - u32 soc_sbmr = readl(SRC_BASE_ADDR + 0x58); - u32 dev_no; - u32 bootsel; + struct bootrom_sw_info **p = + (struct bootrom_sw_info **)ROM_SW_INFO_ADDR; - bootsel = (soc_sbmr & 0x0000F000) >> 12; + u8 boot_type = (*p)->boot_dev_type; + u8 dev_no = (*p)->boot_dev_instance; /* If not boot from sd/mmc, use default value */ - if ((bootsel != BOOT_TYPE_SD) && (bootsel != BOOT_TYPE_MMC)) + if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC)) return CONFIG_SYS_MMC_ENV_DEV; - /* BOOT_CFG2[2] and BOOT_CFG2[3] */ - dev_no = (soc_sbmr & 0x00000C00) >> 10; - return dev_no; } diff --git a/board/freescale/mx7d_19x19_ddr3_arm2/mx7d_19x19_ddr3_arm2.c b/board/freescale/mx7d_19x19_ddr3_arm2/mx7d_19x19_ddr3_arm2.c index a746cc9..6fbde13 100644 --- a/board/freescale/mx7d_19x19_ddr3_arm2/mx7d_19x19_ddr3_arm2.c +++ b/board/freescale/mx7d_19x19_ddr3_arm2/mx7d_19x19_ddr3_arm2.c @@ -356,19 +356,16 @@ static struct fsl_esdhc_cfg usdhc_cfg[3] = { int mmc_get_env_devno(void) { - u32 soc_sbmr = readl(SRC_BASE_ADDR + 0x58); - u32 dev_no; - u32 bootsel; + struct bootrom_sw_info **p = + (struct bootrom_sw_info **)ROM_SW_INFO_ADDR; - bootsel = (soc_sbmr & 0x0000F000) >> 12; + u8 boot_type = (*p)->boot_dev_type; + u8 dev_no = (*p)->boot_dev_instance; /* If not boot from sd/mmc, use default value */ - if ((bootsel != BOOT_TYPE_SD) && (bootsel != BOOT_TYPE_MMC)) + if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC)) return CONFIG_SYS_MMC_ENV_DEV; - /* BOOT_CFG2[2] and BOOT_CFG2[3] */ - dev_no = (soc_sbmr & 0x00000C00) >> 10; - return dev_no; } diff --git a/board/freescale/mx7d_19x19_lpddr3_arm2/mx7d_19x19_lpddr3_arm2.c b/board/freescale/mx7d_19x19_lpddr3_arm2/mx7d_19x19_lpddr3_arm2.c index f0706eb..74a0581 100644 --- a/board/freescale/mx7d_19x19_lpddr3_arm2/mx7d_19x19_lpddr3_arm2.c +++ b/board/freescale/mx7d_19x19_lpddr3_arm2/mx7d_19x19_lpddr3_arm2.c @@ -318,19 +318,16 @@ static struct fsl_esdhc_cfg usdhc_cfg[1] = { int mmc_get_env_devno(void) { - u32 soc_sbmr = readl(SRC_BASE_ADDR + 0x58); - u32 dev_no; - u32 bootsel; + struct bootrom_sw_info **p = + (struct bootrom_sw_info **)ROM_SW_INFO_ADDR; - bootsel = (soc_sbmr & 0x0000F000) >> 12; + u8 boot_type = (*p)->boot_dev_type; + u8 dev_no = (*p)->boot_dev_instance; /* If not boot from sd/mmc, use default value */ - if ((bootsel != BOOT_TYPE_SD) && (bootsel != BOOT_TYPE_MMC)) + if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC)) return CONFIG_SYS_MMC_ENV_DEV; - /* BOOT_CFG2[2] and BOOT_CFG2[3] */ - dev_no = (soc_sbmr & 0x00000C00) >> 10; - return dev_no; } diff --git a/board/freescale/mx7dsabresd/mx7dsabresd.c b/board/freescale/mx7dsabresd/mx7dsabresd.c index 4db309f..0f1a0c4 100644 --- a/board/freescale/mx7dsabresd/mx7dsabresd.c +++ b/board/freescale/mx7dsabresd/mx7dsabresd.c @@ -500,19 +500,16 @@ static struct fsl_esdhc_cfg usdhc_cfg[3] = { int mmc_get_env_devno(void) { - u32 soc_sbmr = readl(SRC_BASE_ADDR + 0x58); - u32 dev_no; - u32 bootsel; + struct bootrom_sw_info **p = + (struct bootrom_sw_info **)ROM_SW_INFO_ADDR; - bootsel = (soc_sbmr & 0x0000F000) >> 12; + u8 boot_type = (*p)->boot_dev_type; + u8 dev_no = (*p)->boot_dev_instance; /* If not boot from sd/mmc, use default value */ - if ((bootsel != BOOT_TYPE_SD) && (bootsel != BOOT_TYPE_MMC)) + if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC)) return CONFIG_SYS_MMC_ENV_DEV; - /* BOOT_CFG2[2] and BOOT_CFG2[3] */ - dev_no = (soc_sbmr & 0x00000C00) >> 10; - if (2 == dev_no) dev_no--; |