Merge branch 'master' of git://www.denx.de/git/u-boot-imx
This commit is contained in:
@@ -535,6 +535,11 @@ config TARGET_MX6SABRESD
|
||||
select DM
|
||||
select DM_THERMAL
|
||||
|
||||
config TARGET_MX6CUBOXI
|
||||
bool "Support Solid-run mx6 boards"
|
||||
select CPU_V7
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_MX6SLEVK
|
||||
bool "Support mx6slevk"
|
||||
select CPU_V7
|
||||
@@ -922,6 +927,7 @@ source "board/siemens/draco/Kconfig"
|
||||
source "board/siemens/pxm2/Kconfig"
|
||||
source "board/siemens/rut/Kconfig"
|
||||
source "board/silica/pengwyn/Kconfig"
|
||||
source "board/solidrun/mx6cuboxi/Kconfig"
|
||||
source "board/solidrun/hummingboard/Kconfig"
|
||||
source "board/spear/spear300/Kconfig"
|
||||
source "board/spear/spear310/Kconfig"
|
||||
|
||||
@@ -49,13 +49,6 @@ static const iomux_cfg_t iomux_boot[] = {
|
||||
MX23_PAD_LCD_D03__GPIO_1_3 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
MX23_PAD_LCD_D04__GPIO_1_4 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
MX23_PAD_LCD_D05__GPIO_1_5 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
#elif defined(CONFIG_MX28)
|
||||
MX28_PAD_LCD_D00__GPIO_1_0 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
MX28_PAD_LCD_D01__GPIO_1_1 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
MX28_PAD_LCD_D02__GPIO_1_2 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
MX28_PAD_LCD_D03__GPIO_1_3 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
MX28_PAD_LCD_D04__GPIO_1_4 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
MX28_PAD_LCD_D05__GPIO_1_5 | MUX_CONFIG_BOOTMODE_PAD,
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -65,10 +58,10 @@ static uint8_t mxs_get_bootmode_index(void)
|
||||
int i;
|
||||
uint8_t masked;
|
||||
|
||||
#if defined(CONFIG_MX23)
|
||||
/* Setup IOMUX of bootmode pads to GPIO */
|
||||
mxs_iomux_setup_multiple_pads(iomux_boot, ARRAY_SIZE(iomux_boot));
|
||||
|
||||
#if defined(CONFIG_MX23)
|
||||
/* Setup bootmode pins as GPIO input */
|
||||
gpio_direction_input(MX23_PAD_LCD_D00__GPIO_1_0);
|
||||
gpio_direction_input(MX23_PAD_LCD_D01__GPIO_1_1);
|
||||
@@ -83,21 +76,11 @@ static uint8_t mxs_get_bootmode_index(void)
|
||||
bootmode |= (gpio_get_value(MX23_PAD_LCD_D03__GPIO_1_3) ? 1 : 0) << 3;
|
||||
bootmode |= (gpio_get_value(MX23_PAD_LCD_D05__GPIO_1_5) ? 1 : 0) << 5;
|
||||
#elif defined(CONFIG_MX28)
|
||||
/* Setup bootmode pins as GPIO input */
|
||||
gpio_direction_input(MX28_PAD_LCD_D00__GPIO_1_0);
|
||||
gpio_direction_input(MX28_PAD_LCD_D01__GPIO_1_1);
|
||||
gpio_direction_input(MX28_PAD_LCD_D02__GPIO_1_2);
|
||||
gpio_direction_input(MX28_PAD_LCD_D03__GPIO_1_3);
|
||||
gpio_direction_input(MX28_PAD_LCD_D04__GPIO_1_4);
|
||||
gpio_direction_input(MX28_PAD_LCD_D05__GPIO_1_5);
|
||||
|
||||
/* Read bootmode pads */
|
||||
bootmode |= (gpio_get_value(MX28_PAD_LCD_D00__GPIO_1_0) ? 1 : 0) << 0;
|
||||
bootmode |= (gpio_get_value(MX28_PAD_LCD_D01__GPIO_1_1) ? 1 : 0) << 1;
|
||||
bootmode |= (gpio_get_value(MX28_PAD_LCD_D02__GPIO_1_2) ? 1 : 0) << 2;
|
||||
bootmode |= (gpio_get_value(MX28_PAD_LCD_D03__GPIO_1_3) ? 1 : 0) << 3;
|
||||
bootmode |= (gpio_get_value(MX28_PAD_LCD_D04__GPIO_1_4) ? 1 : 0) << 4;
|
||||
bootmode |= (gpio_get_value(MX28_PAD_LCD_D05__GPIO_1_5) ? 1 : 0) << 5;
|
||||
/* The global boot mode will be detected by ROM code and its value
|
||||
* is stored at the fixed address 0x00019BF0 in OCRAM.
|
||||
*/
|
||||
#define GLOBAL_BOOT_MODE_ADDR 0x00019BF0
|
||||
bootmode = __raw_readl(GLOBAL_BOOT_MODE_ADDR);
|
||||
#endif
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mxs_boot_modes); i++) {
|
||||
|
||||
@@ -514,17 +514,21 @@ void mx6_dram_cfg(const struct mx6_ddr_sysinfo *sysinfo,
|
||||
/* MR2 */
|
||||
val = (sysinfo->rtt_wr & 3) << 9 | (ddr3_cfg->SRT & 1) << 7 |
|
||||
((tcwl - 3) & 3) << 3;
|
||||
debug("MR2 CS%d: 0x%08x\n", cs, (u32)MR(val, 2, 3, cs));
|
||||
mmdc0->mdscr = MR(val, 2, 3, cs);
|
||||
/* MR3 */
|
||||
debug("MR3 CS%d: 0x%08x\n", cs, (u32)MR(0, 3, 3, cs));
|
||||
mmdc0->mdscr = MR(0, 3, 3, cs);
|
||||
/* MR1 */
|
||||
val = ((sysinfo->rtt_nom & 1) ? 1 : 0) << 2 |
|
||||
((sysinfo->rtt_nom & 2) ? 1 : 0) << 6;
|
||||
debug("MR1 CS%d: 0x%08x\n", cs, (u32)MR(val, 1, 3, cs));
|
||||
mmdc0->mdscr = MR(val, 1, 3, cs);
|
||||
/* MR0 */
|
||||
val = ((tcl - 1) << 4) | /* CAS */
|
||||
(1 << 8) | /* DLL Reset */
|
||||
((twr - 3) << 9); /* Write Recovery */
|
||||
debug("MR0 CS%d: 0x%08x\n", cs, (u32)MR(val, 0, 3, cs));
|
||||
mmdc0->mdscr = MR(val, 0, 3, cs);
|
||||
/* ZQ calibration */
|
||||
val = (1 << 10);
|
||||
@@ -535,10 +539,11 @@ void mx6_dram_cfg(const struct mx6_ddr_sysinfo *sysinfo,
|
||||
mmdc0->mdpdc = (tcke & 0x7) << 16 |
|
||||
5 << 12 | /* PWDT_1: 256 cycles */
|
||||
5 << 8 | /* PWDT_0: 256 cycles */
|
||||
1 << 7 | /* SLOW_PD */
|
||||
1 << 6 | /* BOTH_CS_PD */
|
||||
(tcksrx & 0x7) << 3 |
|
||||
(tcksre & 0x7);
|
||||
if (!sysinfo->pd_fast_exit)
|
||||
mmdc0->mdpdc |= (1 << 7); /* SLOW_PD */
|
||||
mmdc0->mapsr = 0x00001006; /* ADOPT power down enabled */
|
||||
|
||||
/* Step 11: Configure ZQ calibration: one-time and periodic 1ms */
|
||||
|
||||
@@ -250,6 +250,7 @@ struct mx6_ddr_sysinfo {
|
||||
u8 mif3_mode; /* Command prediction working mode */
|
||||
u8 rst_to_cke; /* Time from SDE enable to CKE rise */
|
||||
u8 sde_to_rst; /* Time from SDE enable until DDR reset# is high */
|
||||
u8 pd_fast_exit;/* enable precharge powerdown fast-exit */
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user