mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
Compare commits
64 Commits
v2014.01-r
...
v2014.01
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b44bd2c73c | ||
|
|
be6d426697 | ||
|
|
004c10598b | ||
|
|
f66f2aa265 | ||
|
|
86a8b3a207 | ||
|
|
84977e44eb | ||
|
|
55283635a0 | ||
|
|
b5bbac1a9b | ||
|
|
470173274d | ||
|
|
c47817be25 | ||
|
|
0550870b1c | ||
|
|
f17828830d | ||
|
|
55ca99f894 | ||
|
|
4641c211f6 | ||
|
|
5c9038b6af | ||
|
|
13fbde6e4f | ||
|
|
09b72d692f | ||
|
|
3865ceb726 | ||
|
|
6e5d1db3c4 | ||
|
|
c4e96dbfcc | ||
|
|
be2a3bb39a | ||
|
|
cdd15bcebc | ||
|
|
4913fc23f0 | ||
|
|
c71b4dd2da | ||
|
|
0e05b217c2 | ||
|
|
22e75d6d60 | ||
|
|
82852762ce | ||
|
|
16bf36f779 | ||
|
|
9f861f0ae2 | ||
|
|
bf46e7d8d1 | ||
|
|
3a21773129 | ||
|
|
5f98d0b5d3 | ||
|
|
b5c068f3f8 | ||
|
|
7810480952 | ||
|
|
f66e3ded61 | ||
|
|
a4d481ed81 | ||
|
|
1b6102718b | ||
|
|
a113fb39df | ||
|
|
c5cbe1e299 | ||
|
|
c9b0fa310c | ||
|
|
68b15e831c | ||
|
|
9b438946c9 | ||
|
|
4d3b8a0d1b | ||
|
|
6ba2bc8fa9 | ||
|
|
e6fe4bd989 | ||
|
|
b02bfc4dfc | ||
|
|
e570aca947 | ||
|
|
af5b9b1f78 | ||
|
|
a6bbee6619 | ||
|
|
5a66016987 | ||
|
|
f353397011 | ||
|
|
03ce330274 | ||
|
|
12c20c0c9b | ||
|
|
92c707a580 | ||
|
|
579be2f760 | ||
|
|
1037dc0a2b | ||
|
|
8aa42441c8 | ||
|
|
14da759fb5 | ||
|
|
dccacbe019 | ||
|
|
32d041e218 | ||
|
|
7cc1b02f8f | ||
|
|
6d001e7df9 | ||
|
|
da1ed0d20e | ||
|
|
ad5e14ecdd |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -29,6 +29,7 @@
|
||||
/SPL
|
||||
/System.map
|
||||
/u-boot
|
||||
/u-boot.elf
|
||||
/u-boot.hex
|
||||
/u-boot.imx
|
||||
/u-boot-with-spl.imx
|
||||
@@ -57,8 +58,8 @@
|
||||
/errlog
|
||||
/reloc_off
|
||||
|
||||
/spl/
|
||||
!/spl/Makefile
|
||||
/spl/*
|
||||
/tpl/
|
||||
|
||||
/include/generated/
|
||||
|
||||
2
Makefile
2
Makefile
@@ -8,7 +8,7 @@
|
||||
VERSION = 2014
|
||||
PATCHLEVEL = 01
|
||||
SUBLEVEL =
|
||||
EXTRAVERSION = -rc3
|
||||
EXTRAVERSION =
|
||||
ifneq "$(SUBLEVEL)" ""
|
||||
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
|
||||
else
|
||||
|
||||
@@ -109,5 +109,5 @@ endif
|
||||
ifdef CONFIG_ARM64
|
||||
OBJCFLAGS += -j .text -j .rodata -j .data -j .u_boot_list -j .rela.dyn
|
||||
else
|
||||
OBJCFLAGS += -j .text -j .rodata -j .data -j .u_boot_list -j .rel.dyn
|
||||
OBJCFLAGS += -j .text -j .rodata -j .hash -j .data -j .got.plt -j .u_boot_list -j .rel.dyn
|
||||
endif
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/mbox.h>
|
||||
|
||||
#define TIMEOUT (100 * 1000) /* 100mS in uS */
|
||||
#define TIMEOUT 1000 /* ms */
|
||||
|
||||
int bcm2835_mbox_call_raw(u32 chan, u32 send, u32 *recv)
|
||||
{
|
||||
|
||||
7
arch/arm/cpu/armv7/exynos/config.mk
Normal file
7
arch/arm/cpu/armv7/exynos/config.mk
Normal file
@@ -0,0 +1,7 @@
|
||||
#
|
||||
# Copyright (C) Albert ARIBAUD <albert.u.boot@aribaud.net>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
SPL_OBJCFLAGS += -j .machine_param
|
||||
@@ -24,7 +24,7 @@ ENTRY(lowlevel_init)
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
ldr r9, =gdata
|
||||
#else
|
||||
sub sp, #GD_SIZE
|
||||
sub sp, sp, #GD_SIZE
|
||||
bic sp, sp, #7
|
||||
mov r9, sp
|
||||
#endif
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <div64.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/arch/imx-regs.h>
|
||||
@@ -123,7 +124,7 @@ static u32 mxc_get_pll_pfd(enum pll_clocks pll, int pfd_num)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (freq * 18) / ((div & ANATOP_PFD_FRAC_MASK(pfd_num)) >>
|
||||
return lldiv(freq * 18, (div & ANATOP_PFD_FRAC_MASK(pfd_num)) >>
|
||||
ANATOP_PFD_FRAC_SHIFT(pfd_num));
|
||||
}
|
||||
|
||||
@@ -322,7 +323,7 @@ static u32 get_mmdc_ch0_clk(void)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FEC_MXC
|
||||
int enable_fec_anatop_clock(void)
|
||||
int enable_fec_anatop_clock(enum enet_freq freq)
|
||||
{
|
||||
u32 reg = 0;
|
||||
s32 timeout = 100000;
|
||||
@@ -330,7 +331,13 @@ int enable_fec_anatop_clock(void)
|
||||
struct anatop_regs __iomem *anatop =
|
||||
(struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
|
||||
|
||||
if (freq < ENET_25MHz || freq > ENET_125MHz)
|
||||
return -EINVAL;
|
||||
|
||||
reg = readl(&anatop->pll_enet);
|
||||
reg &= ~BM_ANADIG_PLL_ENET_DIV_SELECT;
|
||||
reg |= freq;
|
||||
|
||||
if ((reg & BM_ANADIG_PLL_ENET_POWERDOWN) ||
|
||||
(!(reg & BM_ANADIG_PLL_ENET_LOCK))) {
|
||||
reg &= ~BM_ANADIG_PLL_ENET_POWERDOWN;
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
#include <asm/arch/mxc_hdmi.h>
|
||||
#include <asm/arch/crm_regs.h>
|
||||
|
||||
#define VDDPU_MASK (0x1f << 9)
|
||||
|
||||
enum ldo_reg {
|
||||
LDO_ARM,
|
||||
LDO_SOC,
|
||||
@@ -179,50 +177,11 @@ static void imx_set_wdog_powerdown(bool enable)
|
||||
writew(enable, &wdog2->wmcr);
|
||||
}
|
||||
|
||||
static void imx_set_vddpu_power_down(void)
|
||||
{
|
||||
struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
|
||||
struct gpc_regs *gpc = (struct gpc_regs *)GPC_BASE_ADDR;
|
||||
|
||||
u32 reg;
|
||||
|
||||
/*
|
||||
* Disable the brown out detection since we are going to be
|
||||
* disabling the LDO.
|
||||
*/
|
||||
reg = readl(&anatop->ana_misc2);
|
||||
reg &= ~ANADIG_ANA_MISC2_REG1_BO_EN;
|
||||
writel(reg, &anatop->ana_misc2);
|
||||
|
||||
/* need to power down xPU in GPC before turning off PU LDO */
|
||||
reg = readl(&gpc->gpu_ctrl);
|
||||
writel(reg | 0x1, &gpc->gpu_ctrl);
|
||||
|
||||
reg = readl(&gpc->ctrl);
|
||||
writel(reg | 0x1, &gpc->ctrl);
|
||||
while (readl(&gpc->ctrl) & 0x1)
|
||||
;
|
||||
|
||||
/* Mask the ANATOP brown out interrupt in the GPC. */
|
||||
reg = readl(&gpc->imr4);
|
||||
reg |= 0x80000000;
|
||||
writel(reg, &gpc->imr4);
|
||||
|
||||
/* disable VDDPU */
|
||||
writel(VDDPU_MASK, &anatop->reg_core_clr);
|
||||
|
||||
/* Clear the BO interrupt in the ANATOP. */
|
||||
reg = readl(&anatop->ana_misc1);
|
||||
reg |= 0x80000000;
|
||||
writel(reg, &anatop->ana_misc1);
|
||||
}
|
||||
|
||||
int arch_cpu_init(void)
|
||||
{
|
||||
init_aips();
|
||||
|
||||
imx_set_wdog_powerdown(false); /* Disable PDE bit of WMCR register */
|
||||
imx_set_vddpu_power_down();
|
||||
|
||||
#ifdef CONFIG_APBH_DMA
|
||||
/* Start APBH DMA */
|
||||
|
||||
@@ -92,8 +92,6 @@ SECTIONS
|
||||
}
|
||||
|
||||
.dynsym _end : { *(.dynsym) }
|
||||
.hash : { *(.hash) }
|
||||
.got.plt : { *(.got.plt) }
|
||||
.dynbss : { *(.dynbss) }
|
||||
.dynstr : { *(.dynstr*) }
|
||||
.dynamic : { *(.dynamic*) }
|
||||
@@ -101,4 +99,5 @@ SECTIONS
|
||||
.interp : { *(.interp*) }
|
||||
.gnu : { *(.gnu*) }
|
||||
.ARM.exidx : { *(.ARM.exidx*) }
|
||||
.gnu.linkonce.armexidx : { *(.gnu.linkonce.armexidx.*) }
|
||||
}
|
||||
|
||||
@@ -133,6 +133,54 @@ struct bcm2835_mbox_tag_get_arm_mem {
|
||||
} body;
|
||||
};
|
||||
|
||||
#define BCM2835_MBOX_POWER_DEVID_SDHCI 0
|
||||
#define BCM2835_MBOX_POWER_DEVID_UART0 1
|
||||
#define BCM2835_MBOX_POWER_DEVID_UART1 2
|
||||
#define BCM2835_MBOX_POWER_DEVID_USB_HCD 3
|
||||
#define BCM2835_MBOX_POWER_DEVID_I2C0 4
|
||||
#define BCM2835_MBOX_POWER_DEVID_I2C1 5
|
||||
#define BCM2835_MBOX_POWER_DEVID_I2C2 6
|
||||
#define BCM2835_MBOX_POWER_DEVID_SPI 7
|
||||
#define BCM2835_MBOX_POWER_DEVID_CCP2TX 8
|
||||
|
||||
#define BCM2835_MBOX_POWER_STATE_RESP_ON (1 << 1)
|
||||
/* Device doesn't exist */
|
||||
#define BCM2835_MBOX_POWER_STATE_RESP_NODEV (1 << 1)
|
||||
|
||||
#define BCM2835_MBOX_TAG_GET_POWER_STATE 0x00020001
|
||||
|
||||
struct bcm2835_mbox_tag_get_power_state {
|
||||
struct bcm2835_mbox_tag_hdr tag_hdr;
|
||||
union {
|
||||
struct {
|
||||
u32 device_id;
|
||||
} req;
|
||||
struct {
|
||||
u32 device_id;
|
||||
u32 state;
|
||||
} resp;
|
||||
} body;
|
||||
};
|
||||
|
||||
#define BCM2835_MBOX_TAG_SET_POWER_STATE 0x00028001
|
||||
|
||||
#define BCM2835_MBOX_SET_POWER_STATE_REQ_ON (1 << 0)
|
||||
#define BCM2835_MBOX_SET_POWER_STATE_REQ_WAIT (1 << 1)
|
||||
|
||||
struct bcm2835_mbox_tag_set_power_state {
|
||||
struct bcm2835_mbox_tag_hdr tag_hdr;
|
||||
union {
|
||||
struct {
|
||||
u32 device_id;
|
||||
u32 state;
|
||||
} req;
|
||||
struct {
|
||||
u32 device_id;
|
||||
u32 state;
|
||||
} resp;
|
||||
} body;
|
||||
};
|
||||
|
||||
#define BCM2835_MBOX_TAG_GET_CLOCK_RATE 0x00030002
|
||||
|
||||
#define BCM2835_MBOX_CLOCK_ID_EMMC 1
|
||||
|
||||
@@ -42,6 +42,13 @@ enum mxc_clock {
|
||||
MXC_I2C_CLK,
|
||||
};
|
||||
|
||||
enum enet_freq {
|
||||
ENET_25MHz,
|
||||
ENET_50MHz,
|
||||
ENET_100MHz,
|
||||
ENET_125MHz,
|
||||
};
|
||||
|
||||
u32 imx_get_uartclk(void);
|
||||
u32 imx_get_fecclk(void);
|
||||
unsigned int mxc_get_clock(enum mxc_clock clk);
|
||||
@@ -50,5 +57,5 @@ void enable_usboh3_clk(unsigned char enable);
|
||||
int enable_sata_clock(void);
|
||||
int enable_i2c_clk(unsigned char enable, unsigned i2c_num);
|
||||
void enable_ipu_clock(void);
|
||||
int enable_fec_anatop_clock(void);
|
||||
int enable_fec_anatop_clock(enum enet_freq freq);
|
||||
#endif /* __ASM_ARCH_CLOCK_H */
|
||||
|
||||
@@ -890,5 +890,4 @@ struct mxc_ccm_reg {
|
||||
#define BF_ANADIG_PFD_528_PFD0_FRAC(v) \
|
||||
(((v) << 0) & BM_ANADIG_PFD_528_PFD0_FRAC)
|
||||
|
||||
#define ANADIG_ANA_MISC2_REG1_BO_EN (1 << 13)
|
||||
#endif /*__ARCH_ARM_MACH_MX6_CCM_REGS_H__ */
|
||||
|
||||
@@ -245,6 +245,10 @@ struct src {
|
||||
u32 gpr10;
|
||||
};
|
||||
|
||||
/* GPR1 bitfields */
|
||||
#define IOMUXC_GPR1_ENET_CLK_SEL_OFFSET 21
|
||||
#define IOMUXC_GPR1_ENET_CLK_SEL_MASK (1 << IOMUXC_GPR1_ENET_CLK_SEL_OFFSET)
|
||||
|
||||
/* GPR3 bitfields */
|
||||
#define IOMUXC_GPR3_GPU_DBG_OFFSET 29
|
||||
#define IOMUXC_GPR3_GPU_DBG_MASK (3<<IOMUXC_GPR3_GPU_DBG_OFFSET)
|
||||
@@ -659,28 +663,5 @@ struct wdog_regs {
|
||||
u16 wmcr; /* Miscellaneous Control */
|
||||
};
|
||||
|
||||
struct gpc_regs {
|
||||
u32 ctrl; /* 0x000 */
|
||||
u32 pgr; /* 0x004 */
|
||||
u32 imr1; /* 0x008 */
|
||||
u32 imr2; /* 0x00c */
|
||||
u32 imr3; /* 0x010 */
|
||||
u32 imr4; /* 0x014 */
|
||||
u32 isr1; /* 0x018 */
|
||||
u32 isr2; /* 0x01c */
|
||||
u32 isr3; /* 0x020 */
|
||||
u32 isr4; /* 0x024 */
|
||||
u32 reserved1[0x86];
|
||||
u32 gpu_ctrl; /* 0x260 */
|
||||
u32 gpu_pupscr; /* 0x264 */
|
||||
u32 gpu_pdnscr; /* 0x268 */
|
||||
u32 gpu_sr; /* 0x26c */
|
||||
u32 reserved2[0xc];
|
||||
u32 cpu_ctrl; /* 0x2a0 */
|
||||
u32 cpu_pupscr; /* 0x2a4 */
|
||||
u32 cpu_pdnscr; /* 0x2a8 */
|
||||
u32 cpu_sr; /* 0x2ac */
|
||||
};
|
||||
|
||||
#endif /* __ASSEMBLER__*/
|
||||
#endif /* __ASM_ARCH_MX6_IMX_REGS_H__ */
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#define DBSC3_1_BASE 0xE67A0000
|
||||
#define TMU_BASE 0xE61E0000
|
||||
#define GPIO5_BASE 0xE6055000
|
||||
#define SH_QSPI_BASE 0xE6B10000
|
||||
|
||||
#define S3C_BASE 0xE6784000
|
||||
#define S3C_INT_BASE 0xE6784A00
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#define DBSC3_1_BASE 0xE67A0000
|
||||
#define TMU_BASE 0xE61E0000
|
||||
#define GPIO5_BASE 0xE6055000
|
||||
#define SH_QSPI_BASE 0xE6B10000
|
||||
|
||||
#define S3C_BASE 0xE6784000
|
||||
#define S3C_INT_BASE 0xE6784A00
|
||||
|
||||
@@ -67,7 +67,7 @@ ENTRY(_main)
|
||||
ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
|
||||
#endif
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
sub sp, #GD_SIZE /* allocate one GD above SP */
|
||||
sub sp, sp, #GD_SIZE /* allocate one GD above SP */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
mov r9, sp /* GD is above SP */
|
||||
mov r0, #0
|
||||
|
||||
@@ -8,7 +8,9 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <netdev.h>
|
||||
#if defined(CONFIG_CFI_FLASH_MTD)
|
||||
#include <mtd/cfi_flash.h>
|
||||
#endif
|
||||
#include <asm/io.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
|
||||
@@ -264,15 +264,9 @@ int board_phy_config(struct phy_device *phydev)
|
||||
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
int ret;
|
||||
|
||||
setup_iomux_enet();
|
||||
|
||||
ret = cpu_eth_init(bis);
|
||||
if (ret)
|
||||
printf("FEC MXC: %s:failed\n", __func__);
|
||||
|
||||
return ret;
|
||||
return cpu_eth_init(bis);
|
||||
}
|
||||
|
||||
int board_early_init_f(void)
|
||||
|
||||
@@ -186,13 +186,10 @@ int fecmxc_mii_postcall(int phy)
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
struct eth_device *dev;
|
||||
int ret;
|
||||
int ret = cpu_eth_init(bis);
|
||||
|
||||
ret = cpu_eth_init(bis);
|
||||
if (ret) {
|
||||
printf("FEC MXC: %s:failed\n", __func__);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
dev = eth_get_dev_by_name("FEC");
|
||||
if (!dev) {
|
||||
|
||||
@@ -192,15 +192,9 @@ int board_phy_config(struct phy_device *phydev)
|
||||
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
int ret;
|
||||
|
||||
setup_iomux_enet();
|
||||
|
||||
ret = cpu_eth_init(bis);
|
||||
if (ret)
|
||||
printf("FEC MXC: %s:failed\n", __func__);
|
||||
|
||||
return ret;
|
||||
return cpu_eth_init(bis);
|
||||
}
|
||||
|
||||
#define BOARD_REV_B 0x200
|
||||
|
||||
@@ -453,15 +453,9 @@ int overwrite_console(void)
|
||||
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
int ret;
|
||||
|
||||
setup_iomux_enet();
|
||||
|
||||
ret = cpu_eth_init(bis);
|
||||
if (ret)
|
||||
printf("FEC MXC: %s:failed\n", __func__);
|
||||
|
||||
return ret;
|
||||
return cpu_eth_init(bis);
|
||||
}
|
||||
|
||||
int board_early_init_f(void)
|
||||
|
||||
@@ -106,17 +106,9 @@ int board_mmc_init(bd_t *bis)
|
||||
#ifdef CONFIG_FEC_MXC
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
int ret;
|
||||
|
||||
setup_iomux_fec();
|
||||
|
||||
ret = cpu_eth_init(bis);
|
||||
if (ret) {
|
||||
printf("FEC MXC: %s:failed\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return cpu_eth_init(bis);
|
||||
}
|
||||
|
||||
static int setup_fec(void)
|
||||
@@ -128,7 +120,7 @@ static int setup_fec(void)
|
||||
/* clear gpr1[14], gpr1[18:17] to select anatop clock */
|
||||
clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC_MASK, 0);
|
||||
|
||||
ret = enable_fec_anatop_clock();
|
||||
ret = enable_fec_anatop_clock(ENET_50MHz);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
#
|
||||
# (C) Copyright 2012
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-y := mini2440.o
|
||||
@@ -1,118 +0,0 @@
|
||||
/*
|
||||
* (C) Copyright 2002
|
||||
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
|
||||
* Marius Groeger <mgroeger@sysgo.de>
|
||||
*
|
||||
* (C) Copyright 2002
|
||||
* David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
|
||||
*
|
||||
* (C) Copyright 2009
|
||||
* Michel Pollet <buserror@gmail.com>
|
||||
*
|
||||
* (C) Copyright 2012
|
||||
* Gabriel Huau <contact@huau-gabriel.fr>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/arch/s3c2440.h>
|
||||
#include <asm/arch/iomux.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <netdev.h>
|
||||
#include "mini2440.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
static inline void pll_delay(unsigned long loops)
|
||||
{
|
||||
__asm__ volatile ("1:\n"
|
||||
"subs %0, %1, #1\n"
|
||||
"bne 1b" : "=r" (loops) : "0" (loops));
|
||||
}
|
||||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
struct s3c24x0_clock_power * const clk_power =
|
||||
s3c24x0_get_base_clock_power();
|
||||
|
||||
/* to reduce PLL lock time, adjust the LOCKTIME register */
|
||||
clk_power->locktime = 0xFFFFFF; /* Max PLL Lock time count */
|
||||
clk_power->clkdivn = CLKDIVN_VAL;
|
||||
|
||||
/* configure UPLL */
|
||||
clk_power->upllcon = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
|
||||
/* some delay between MPLL and UPLL */
|
||||
pll_delay(100);
|
||||
|
||||
/* configure MPLL */
|
||||
clk_power->mpllcon = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
|
||||
|
||||
/* some delay between MPLL and UPLL */
|
||||
pll_delay(10000);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Miscellaneous platform dependent initialisations
|
||||
*/
|
||||
int board_init(void)
|
||||
{
|
||||
struct s3c24x0_gpio * const gpio = s3c24x0_get_base_gpio();
|
||||
|
||||
/* IOMUX Port H : UART Configuration */
|
||||
gpio->gphcon = IOMUXH_nCTS0 | IOMUXH_nRTS0 | IOMUXH_TXD0 | IOMUXH_RXD0 |
|
||||
IOMUXH_TXD1 | IOMUXH_RXD1 | IOMUXH_TXD2 | IOMUXH_RXD2;
|
||||
|
||||
gpio_direction_output(GPH8, 0);
|
||||
gpio_direction_output(GPH9, 0);
|
||||
gpio_direction_output(GPH10, 0);
|
||||
|
||||
/* adress of boot parameters */
|
||||
gd->bd->bi_boot_params = CONFIG_BOOT_PARAM_ADDR;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
struct s3c24x0_memctl *memctl = s3c24x0_get_base_memctl();
|
||||
|
||||
/*
|
||||
* Configuring bus width and timing
|
||||
* Initialize clocks for each bank 0..5
|
||||
* Bank 3 and 4 are used for DM9000
|
||||
*/
|
||||
writel(BANK_CONF, &memctl->bwscon);
|
||||
writel(B0_CONF, &memctl->bankcon[0]);
|
||||
writel(B1_CONF, &memctl->bankcon[1]);
|
||||
writel(B2_CONF, &memctl->bankcon[2]);
|
||||
writel(B3_CONF, &memctl->bankcon[3]);
|
||||
writel(B4_CONF, &memctl->bankcon[4]);
|
||||
writel(B5_CONF, &memctl->bankcon[5]);
|
||||
|
||||
/* Bank 6 and 7 are used for DRAM */
|
||||
writel(SDRAM_64MB, &memctl->bankcon[6]);
|
||||
writel(SDRAM_64MB, &memctl->bankcon[7]);
|
||||
|
||||
writel(MEM_TIMING, &memctl->refresh);
|
||||
writel(BANKSIZE_CONF, &memctl->banksize);
|
||||
writel(B6_MRSR, &memctl->mrsrb6);
|
||||
writel(B7_MRSR, &memctl->mrsrb7);
|
||||
|
||||
gd->ram_size = get_ram_size((void *) CONFIG_SYS_SDRAM_BASE,
|
||||
PHYS_SDRAM_SIZE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
#ifdef CONFIG_DRIVER_DM9000
|
||||
return dm9000_initialize(bis);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
@@ -1,144 +0,0 @@
|
||||
#ifndef __MINI2440_BOARD_CONF_H__
|
||||
#define __MINI2440_BOARD_CONF_H__
|
||||
|
||||
/* PLL Parameters */
|
||||
#define CLKDIVN_VAL 7
|
||||
#define M_MDIV 0x7f
|
||||
#define M_PDIV 0x2
|
||||
#define M_SDIV 0x1
|
||||
|
||||
#define U_M_MDIV 0x38
|
||||
#define U_M_PDIV 0x2
|
||||
#define U_M_SDIV 0x2
|
||||
|
||||
/* BWSCON */
|
||||
#define DW8 0x0
|
||||
#define DW16 0x1
|
||||
#define DW32 0x2
|
||||
#define WAIT (0x1<<2)
|
||||
#define UBLB (0x1<<3)
|
||||
|
||||
#define B1_BWSCON (DW32)
|
||||
#define B2_BWSCON (DW16)
|
||||
#define B3_BWSCON (DW16 + WAIT + UBLB)
|
||||
#define B4_BWSCON (DW16 + WAIT + UBLB)
|
||||
#define B5_BWSCON (DW16)
|
||||
#define B6_BWSCON (DW32)
|
||||
#define B7_BWSCON (DW32)
|
||||
|
||||
/*
|
||||
* Bank Configuration
|
||||
*/
|
||||
#define B0_Tacs 0x0 /* 0clk */
|
||||
#define B0_Tcos 0x0 /* 0clk */
|
||||
#define B0_Tacc 0x7 /* 14clk */
|
||||
#define B0_Tcoh 0x0 /* 0clk */
|
||||
#define B0_Tah 0x0 /* 0clk */
|
||||
#define B0_Tacp 0x0 /* 0clk */
|
||||
#define B0_PMC 0x0 /* normal */
|
||||
|
||||
#define B1_Tacs 0x0
|
||||
#define B1_Tcos 0x0
|
||||
#define B1_Tacc 0x7
|
||||
#define B1_Tcoh 0x0
|
||||
#define B1_Tah 0x0
|
||||
#define B1_Tacp 0x0
|
||||
#define B1_PMC 0x0
|
||||
|
||||
#define B2_Tacs 0x0
|
||||
#define B2_Tcos 0x0
|
||||
#define B2_Tacc 0x7
|
||||
#define B2_Tcoh 0x0
|
||||
#define B2_Tah 0x0
|
||||
#define B2_Tacp 0x0
|
||||
#define B2_PMC 0x0
|
||||
|
||||
#define B3_Tacs 0x0
|
||||
#define B3_Tcos 0x3 /* 4clk */
|
||||
#define B3_Tacc 0x7
|
||||
#define B3_Tcoh 0x1 /* 1clk */
|
||||
#define B3_Tah 0x3 /* 4clk */
|
||||
#define B3_Tacp 0x0
|
||||
#define B3_PMC 0x0
|
||||
|
||||
#define B4_Tacs 0x0
|
||||
#define B4_Tcos 0x3
|
||||
#define B4_Tacc 0x7
|
||||
#define B4_Tcoh 0x1
|
||||
#define B4_Tah 0x3
|
||||
#define B4_Tacp 0x0
|
||||
#define B4_PMC 0x0
|
||||
|
||||
#define B5_Tacs 0x0
|
||||
#define B5_Tcos 0x0
|
||||
#define B5_Tacc 0x7
|
||||
#define B5_Tcoh 0x0
|
||||
#define B5_Tah 0x0
|
||||
#define B5_Tacp 0x0
|
||||
#define B5_PMC 0x0
|
||||
|
||||
/*
|
||||
* SDRAM Configuration
|
||||
*/
|
||||
#define SDRAM_MT 0x3 /* SDRAM */
|
||||
#define SDRAM_Trcd 0x0 /* 2clk */
|
||||
#define SDRAM_SCAN_9 0x1 /* 9bit */
|
||||
#define SDRAM_SCAN_10 0x2 /* 10bit */
|
||||
|
||||
#define SDRAM_64MB ((SDRAM_MT<<15) + (SDRAM_Trcd<<2) + (SDRAM_SCAN_9))
|
||||
|
||||
/*
|
||||
* Refresh Parameter
|
||||
*/
|
||||
#define REFEN 0x1 /* Refresh enable */
|
||||
#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
|
||||
#define Trp 0x1 /* 3clk */
|
||||
#define Trc 0x3 /* 7clk */
|
||||
#define Tchr 0x0 /* unused */
|
||||
#define REFCNT 1012 /* period=10.37us, HCLK=100Mhz, (2048 + 1-10.37*100) */
|
||||
|
||||
/*
|
||||
* MRSR Parameter
|
||||
*/
|
||||
#define BL 0x0
|
||||
#define BT 0x0
|
||||
#define CL 0x3 /* 3 clocks */
|
||||
#define TM 0x0
|
||||
#define WBL 0x0
|
||||
|
||||
/*
|
||||
* BankSize Parameter
|
||||
*/
|
||||
#define BK76MAP 0x2 /* 128MB/128MB */
|
||||
#define SCLK_EN 0x1 /* SCLK active */
|
||||
#define SCKE_EN 0x1 /* SDRAM power down mode enable */
|
||||
#define BURST_EN 0x1 /* Burst enable */
|
||||
|
||||
/*
|
||||
* Register values
|
||||
*/
|
||||
#define BANK_CONF ((0 + (B1_BWSCON<<4) + (B2_BWSCON<<8) + (B3_BWSCON<<12) + \
|
||||
(B4_BWSCON<<16) + (B5_BWSCON<<20) + (B6_BWSCON<<24) + \
|
||||
(B7_BWSCON<<28)))
|
||||
|
||||
#define B0_CONF ((B0_Tacs<<13) + (B0_Tcos<<11) + (B0_Tacc<<8) + \
|
||||
(B0_Tcoh<<6) + (B0_Tah<<4) + (B0_Tacp<<2) + (B0_PMC))
|
||||
#define B1_CONF ((B1_Tacs<<13) + (B1_Tcos<<11) + (B1_Tacc<<8) + \
|
||||
(B1_Tcoh<<6) + (B1_Tah<<4) + (B1_Tacp<<2) + (B1_PMC))
|
||||
#define B2_CONF ((B2_Tacs<<13) + (B2_Tcos<<11) + (B2_Tacc<<8) + \
|
||||
(B2_Tcoh<<6) + (B2_Tah<<4) + (B2_Tacp<<2) + (B2_PMC))
|
||||
#define B3_CONF ((B3_Tacs<<13) + (B3_Tcos<<11) + (B3_Tacc<<8) + \
|
||||
(B3_Tcoh<<6) + (B3_Tah<<4) + (B3_Tacp<<2) + (B3_PMC))
|
||||
#define B4_CONF ((B4_Tacs<<13) + (B4_Tcos<<11) + (B4_Tacc<<8) + \
|
||||
(B4_Tcoh<<6) + (B4_Tah<<4) + (B4_Tacp<<2) + (B4_PMC))
|
||||
#define B5_CONF ((B5_Tacs<<13) + (B5_Tcos<<11) + (B5_Tacc<<8) + \
|
||||
(B5_Tcoh<<6) + (B5_Tah<<4) + (B5_Tacp<<2) + (B5_PMC))
|
||||
|
||||
#define MEM_TIMING (REFEN<<23) + (TREFMD<<22) + (Trp<<20) + \
|
||||
(Trc<<18) + (Tchr<<16) + REFCNT
|
||||
|
||||
#define BANKSIZE_CONF (BK76MAP) + (SCLK_EN<<4) + (SCKE_EN<<5) + (BURST_EN<<7)
|
||||
#define B6_MRSR (CL<<4)
|
||||
#define B7_MRSR (CL<<4)
|
||||
|
||||
#endif
|
||||
@@ -1,16 +0,0 @@
|
||||
#
|
||||
# board/mx1ads/Makefile
|
||||
#
|
||||
# (C) Copyright 2006
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# (c) Copyright 2004
|
||||
# Techware Information Technology, Inc.
|
||||
# http://www.techware.com.tw/
|
||||
#
|
||||
# Ming-Len Wu <minglen_wu@techware.com.tw>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
obj-y := mx1ads.o syncflash.o
|
||||
obj-y += lowlevel_init.o
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* board/mx1ads/lowlevel_init.S
|
||||
*
|
||||
* (c) Copyright 2004
|
||||
* Techware Information Technology, Inc.
|
||||
* http://www.techware.com.tw/
|
||||
*
|
||||
* Ming-Len Wu <minglen_wu@techware.com.tw>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <version.h>
|
||||
|
||||
#define SDCTL0 0x221000
|
||||
#define SDCTL1 0x221004
|
||||
|
||||
|
||||
_TEXT_BASE:
|
||||
.word CONFIG_SYS_TEXT_BASE
|
||||
|
||||
.globl lowlevel_init
|
||||
lowlevel_init:
|
||||
/* memory controller init */
|
||||
|
||||
ldr r1, =SDCTL0
|
||||
|
||||
/* Set Precharge Command */
|
||||
|
||||
ldr r3, =0x92120200
|
||||
/* ldr r3, =0x92120251
|
||||
*/
|
||||
str r3, [r1]
|
||||
|
||||
/* Issue Precharge All Commad */
|
||||
ldr r3, =0x8200000
|
||||
ldr r2, [r3]
|
||||
|
||||
/* Set AutoRefresh Command */
|
||||
ldr r3, =0xA2120200
|
||||
str r3, [r1]
|
||||
|
||||
/* Issue AutoRefresh Command */
|
||||
ldr r3, =0x8000000
|
||||
ldr r2, [r3]
|
||||
ldr r2, [r3]
|
||||
ldr r2, [r3]
|
||||
ldr r2, [r3]
|
||||
ldr r2, [r3]
|
||||
ldr r2, [r3]
|
||||
ldr r2, [r3]
|
||||
ldr r2, [r3]
|
||||
|
||||
/* Set Mode Register */
|
||||
ldr r3, =0xB2120200
|
||||
str r3, [r1]
|
||||
|
||||
/* Issue Mode Register Command */
|
||||
ldr r3, =0x08111800 /* Mode Register Value */
|
||||
ldr r2, [r3]
|
||||
|
||||
/* Set Normal Mode */
|
||||
ldr r3, =0x82124200
|
||||
str r3, [r1]
|
||||
|
||||
/* everything is fine now */
|
||||
mov pc, lr
|
||||
@@ -1,178 +0,0 @@
|
||||
/*
|
||||
* board/mx1ads/mx1ads.c
|
||||
*
|
||||
* (c) Copyright 2004
|
||||
* Techware Information Technology, Inc.
|
||||
* http://www.techware.com.tw/
|
||||
*
|
||||
* Ming-Len Wu <minglen_wu@techware.com.tw>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <netdev.h>
|
||||
/*#include <mc9328.h>*/
|
||||
#include <asm/arch/imx-regs.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#define FCLK_SPEED 1
|
||||
|
||||
#if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
|
||||
#define M_MDIV 0xC3
|
||||
#define M_PDIV 0x4
|
||||
#define M_SDIV 0x1
|
||||
#elif FCLK_SPEED==1 /* Fout = 202.8MHz */
|
||||
#define M_MDIV 0xA1
|
||||
#define M_PDIV 0x3
|
||||
#define M_SDIV 0x1
|
||||
#endif
|
||||
|
||||
#define USB_CLOCK 1
|
||||
|
||||
#if USB_CLOCK==0
|
||||
#define U_M_MDIV 0xA1
|
||||
#define U_M_PDIV 0x3
|
||||
#define U_M_SDIV 0x1
|
||||
#elif USB_CLOCK==1
|
||||
#define U_M_MDIV 0x48
|
||||
#define U_M_PDIV 0x3
|
||||
#define U_M_SDIV 0x2
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
|
||||
static inline void delay (unsigned long loops)
|
||||
{
|
||||
__asm__ volatile ("1:\n"
|
||||
"subs %0, %1, #1\n"
|
||||
"bne 1b":"=r" (loops):"0" (loops));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Miscellaneous platform dependent initialisations
|
||||
*/
|
||||
|
||||
void SetAsynchMode (void)
|
||||
{
|
||||
__asm__ ("mrc p15,0,r0,c1,c0,0 \n"
|
||||
"mov r2, #0xC0000000 \n"
|
||||
"orr r0,r2,r0 \n" "mcr p15,0,r0,c1,c0,0 \n");
|
||||
}
|
||||
|
||||
static u32 mc9328sid;
|
||||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
mc9328sid = SIDR;
|
||||
|
||||
GPCR = 0x000003AB; /* I/O pad driving strength */
|
||||
|
||||
/* MX1_CS1U = 0x00000A00; */ /* SRAM initialization */
|
||||
/* MX1_CS1L = 0x11110601; */
|
||||
|
||||
MPCTL0 = 0x04632410; /* setting for 150 MHz MCU PLL CLK */
|
||||
|
||||
/* set FCLK divider 1 (i.e. FCLK to MCU PLL CLK) and
|
||||
* BCLK divider to 2 (i.e. BCLK to 48 MHz)
|
||||
*/
|
||||
CSCR = 0xAF000403;
|
||||
|
||||
CSCR |= 0x00200000; /* Trigger the restart bit(bit 21) */
|
||||
CSCR &= 0xFFFF7FFF; /* Program PRESC bit(bit 15) to 0 to divide-by-1 */
|
||||
|
||||
/* setup cs4 for cs8900 ethernet */
|
||||
|
||||
CS4U = 0x00000F00; /* Initialize CS4 for CS8900 ethernet */
|
||||
CS4L = 0x00001501;
|
||||
|
||||
GIUS (0) &= 0xFF3FFFFF;
|
||||
GPR (0) &= 0xFF3FFFFF;
|
||||
|
||||
readl(0x1500000C);
|
||||
readl(0x1500000C);
|
||||
|
||||
SetAsynchMode ();
|
||||
|
||||
icache_enable ();
|
||||
dcache_enable ();
|
||||
|
||||
/* set PERCLKs */
|
||||
PCDR = 0x00000055; /* set PERCLKS */
|
||||
|
||||
/* PERCLK3 is only used by SSI so the SSI driver can set it any value it likes
|
||||
* PERCLK1 and PERCLK2 are shared so DO NOT change it in any other place
|
||||
* all sources selected as normal interrupt
|
||||
*/
|
||||
|
||||
/* MX1_INTTYPEH = 0;
|
||||
MX1_INTTYPEL = 0;
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
gd->bd->bi_arch_number = MACH_TYPE_MX1ADS;
|
||||
|
||||
gd->bd->bi_boot_params = 0x08000100; /* adress of boot parameters */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_late_init (void)
|
||||
{
|
||||
|
||||
setenv ("stdout", "serial");
|
||||
setenv ("stderr", "serial");
|
||||
|
||||
switch (mc9328sid) {
|
||||
case 0x0005901d:
|
||||
printf ("MX1ADS board with MC9328 MX1 (0L44N), Silicon ID 0x%08x \n\n",
|
||||
mc9328sid);
|
||||
break;
|
||||
case 0x04d4c01d:
|
||||
printf ("MX1ADS board with MC9328 MXL (1L45N), Silicon ID 0x%08x \n\n",
|
||||
mc9328sid);
|
||||
break;
|
||||
case 0x00d4c01d:
|
||||
printf ("MX1ADS board with MC9328 MXL (2L45N), Silicon ID 0x%08x \n\n",
|
||||
mc9328sid);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("MX1ADS board with UNKNOWN MC9328 cpu, Silicon ID 0x%08x \n",
|
||||
mc9328sid);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
/* dram_init must store complete ramsize in gd->ram_size */
|
||||
gd->ram_size = get_ram_size((void *)PHYS_SDRAM_1,
|
||||
PHYS_SDRAM_1_SIZE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void dram_init_banksize(void)
|
||||
{
|
||||
gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
|
||||
gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CMD_NET
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
int rc = 0;
|
||||
#ifdef CONFIG_CS8900
|
||||
rc = cs8900_initialize(0, CONFIG_CS8900_BASE);
|
||||
#endif
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
@@ -1,307 +0,0 @@
|
||||
/*
|
||||
* board/mx1ads/syncflash.c
|
||||
*
|
||||
* (c) Copyright 2004
|
||||
* Techware Information Technology, Inc.
|
||||
* http://www.techware.com.tw/
|
||||
*
|
||||
* Ming-Len Wu <minglen_wu@techware.com.tw>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
/*#include <mc9328.h>*/
|
||||
#include <asm/arch/imx-regs.h>
|
||||
|
||||
typedef unsigned long * p_u32;
|
||||
|
||||
/* 4Mx16x2 IAM=0 CSD1 */
|
||||
|
||||
flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
|
||||
|
||||
/* Following Setting is for CSD1 */
|
||||
#define SFCTL 0x00221004
|
||||
#define reg_SFCTL __REG(SFCTL)
|
||||
|
||||
#define SYNCFLASH_A10 (0x00100000)
|
||||
|
||||
#define CMD_NORMAL (0x81020300) /* Normal Mode */
|
||||
#define CMD_PREC (CMD_NORMAL + 0x10000000) /* Precharge Command */
|
||||
#define CMD_AUTO (CMD_NORMAL + 0x20000000) /* Auto Refresh Command */
|
||||
#define CMD_LMR (CMD_NORMAL + 0x30000000) /* Load Mode Register Command */
|
||||
#define CMD_LCR (CMD_NORMAL + 0x60000000) /* LCR Command */
|
||||
#define CMD_PROGRAM (CMD_NORMAL + 0x70000000)
|
||||
|
||||
#define MODE_REG_VAL (CONFIG_SYS_FLASH_BASE+0x0008CC00) /* Cas Latency 3 */
|
||||
|
||||
/* LCR Command */
|
||||
#define LCR_READSTATUS (0x0001C000) /* 0x70 */
|
||||
#define LCR_ERASE_CONFIRM (0x00008000) /* 0x20 */
|
||||
#define LCR_ERASE_NVMODE (0x0000C000) /* 0x30 */
|
||||
#define LCR_PROG_NVMODE (0x00028000) /* 0xA0 */
|
||||
#define LCR_SR_CLEAR (0x00014000) /* 0x50 */
|
||||
|
||||
/* Get Status register */
|
||||
u32 SF_SR(void) {
|
||||
u32 tmp;
|
||||
|
||||
reg_SFCTL = CMD_PROGRAM;
|
||||
tmp = __REG(CONFIG_SYS_FLASH_BASE);
|
||||
|
||||
reg_SFCTL = CMD_NORMAL;
|
||||
|
||||
reg_SFCTL = CMD_LCR; /* Activate LCR Mode */
|
||||
__REG(CONFIG_SYS_FLASH_BASE + LCR_SR_CLEAR);
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
/* check if SyncFlash is ready */
|
||||
u8 SF_Ready(void) {
|
||||
u32 tmp;
|
||||
|
||||
tmp = SF_SR();
|
||||
|
||||
if ((tmp & 0x00800000) && (tmp & 0x001C0000)) {
|
||||
printf ("SyncFlash Error code %08x\n",tmp);
|
||||
};
|
||||
|
||||
if ((tmp & 0x00000080) && (tmp & 0x0000001C)) {
|
||||
printf ("SyncFlash Error code %08x\n",tmp);
|
||||
};
|
||||
|
||||
if (tmp == 0x00800080) /* Test Bit 7 of SR */
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Issue the precharge all command */
|
||||
void SF_PrechargeAll(void) {
|
||||
|
||||
/* Set Precharge Command */
|
||||
reg_SFCTL = CMD_PREC;
|
||||
/* Issue Precharge All Command */
|
||||
__REG(CONFIG_SYS_FLASH_BASE + SYNCFLASH_A10);
|
||||
}
|
||||
|
||||
/* set SyncFlash to normal mode */
|
||||
void SF_Normal(void) {
|
||||
|
||||
SF_PrechargeAll();
|
||||
|
||||
reg_SFCTL = CMD_NORMAL;
|
||||
}
|
||||
|
||||
/* Erase SyncFlash */
|
||||
void SF_Erase(u32 RowAddress) {
|
||||
|
||||
reg_SFCTL = CMD_NORMAL;
|
||||
__REG(RowAddress);
|
||||
|
||||
reg_SFCTL = CMD_PREC;
|
||||
__REG(RowAddress);
|
||||
|
||||
reg_SFCTL = CMD_LCR; /* Set LCR mode */
|
||||
__REG(RowAddress + LCR_ERASE_CONFIRM) = 0; /* Issue Erase Setup Command */
|
||||
|
||||
reg_SFCTL = CMD_NORMAL; /* return to Normal mode */
|
||||
__REG(RowAddress) = 0xD0D0D0D0; /* Confirm */
|
||||
|
||||
while(!SF_Ready());
|
||||
}
|
||||
|
||||
void SF_NvmodeErase(void) {
|
||||
SF_PrechargeAll();
|
||||
|
||||
reg_SFCTL = CMD_LCR; /* Set to LCR mode */
|
||||
__REG(CONFIG_SYS_FLASH_BASE + LCR_ERASE_NVMODE) = 0; /* Issue Erase Nvmode Reg Command */
|
||||
|
||||
reg_SFCTL = CMD_NORMAL; /* Return to Normal mode */
|
||||
__REG(CONFIG_SYS_FLASH_BASE + LCR_ERASE_NVMODE) = 0xC0C0C0C0; /* Confirm */
|
||||
|
||||
while(!SF_Ready());
|
||||
}
|
||||
|
||||
void SF_NvmodeWrite(void) {
|
||||
SF_PrechargeAll();
|
||||
|
||||
reg_SFCTL = CMD_LCR; /* Set to LCR mode */
|
||||
__REG(CONFIG_SYS_FLASH_BASE+LCR_PROG_NVMODE) = 0; /* Issue Program Nvmode reg command */
|
||||
|
||||
reg_SFCTL = CMD_NORMAL; /* Return to Normal mode */
|
||||
__REG(CONFIG_SYS_FLASH_BASE+LCR_PROG_NVMODE) = 0xC0C0C0C0; /* Confirm not needed */
|
||||
}
|
||||
|
||||
/****************************************************************************************/
|
||||
|
||||
ulong flash_init(void) {
|
||||
int i, j;
|
||||
|
||||
/* Turn on CSD1 for negating RESETSF of SyncFLash */
|
||||
|
||||
reg_SFCTL |= 0x80000000; /* enable CSD1 for SyncFlash */
|
||||
udelay(200);
|
||||
|
||||
reg_SFCTL = CMD_LMR; /* Set Load Mode Register Command */
|
||||
__REG(MODE_REG_VAL); /* Issue Load Mode Register Command */
|
||||
|
||||
SF_Normal();
|
||||
|
||||
i = 0;
|
||||
|
||||
flash_info[i].flash_id = FLASH_MAN_MT | FLASH_MT28S4M16LC;
|
||||
|
||||
flash_info[i].size = FLASH_BANK_SIZE;
|
||||
flash_info[i].sector_count = CONFIG_SYS_MAX_FLASH_SECT;
|
||||
|
||||
memset(flash_info[i].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
|
||||
|
||||
for (j = 0; j < flash_info[i].sector_count; j++) {
|
||||
flash_info[i].start[j] = CONFIG_SYS_FLASH_BASE + j * 0x00100000;
|
||||
}
|
||||
|
||||
flash_protect(FLAG_PROTECT_SET,
|
||||
CONFIG_SYS_FLASH_BASE,
|
||||
CONFIG_SYS_FLASH_BASE + monitor_flash_len - 1,
|
||||
&flash_info[0]);
|
||||
|
||||
flash_protect(FLAG_PROTECT_SET,
|
||||
CONFIG_ENV_ADDR,
|
||||
CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
|
||||
&flash_info[0]);
|
||||
|
||||
return FLASH_BANK_SIZE;
|
||||
}
|
||||
|
||||
void flash_print_info (flash_info_t *info) {
|
||||
|
||||
int i;
|
||||
|
||||
switch (info->flash_id & FLASH_VENDMASK) {
|
||||
case (FLASH_MAN_MT & FLASH_VENDMASK):
|
||||
printf("Micron: ");
|
||||
break;
|
||||
default:
|
||||
printf("Unknown Vendor ");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (info->flash_id & FLASH_TYPEMASK) {
|
||||
case (FLASH_MT28S4M16LC & FLASH_TYPEMASK):
|
||||
printf("2x FLASH_MT28S4M16LC (16MB Total)\n");
|
||||
break;
|
||||
default:
|
||||
printf("Unknown Chip Type\n");
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
printf(" Size: %ld MB in %d Sectors\n",
|
||||
info->size >> 20, info->sector_count);
|
||||
|
||||
printf(" Sector Start Addresses: ");
|
||||
|
||||
for (i = 0; i < info->sector_count; i++) {
|
||||
if ((i % 5) == 0)
|
||||
printf ("\n ");
|
||||
|
||||
printf (" %08lX%s", info->start[i],
|
||||
info->protect[i] ? " (RO)" : " ");
|
||||
}
|
||||
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
int flash_erase (flash_info_t *info, int s_first, int s_last) {
|
||||
int iflag, cflag, prot, sect;
|
||||
int rc = ERR_OK;
|
||||
|
||||
/* first look for protection bits */
|
||||
|
||||
if (info->flash_id == FLASH_UNKNOWN)
|
||||
return ERR_UNKNOWN_FLASH_TYPE;
|
||||
|
||||
if ((s_first < 0) || (s_first > s_last))
|
||||
return ERR_INVAL;
|
||||
|
||||
if ((info->flash_id & FLASH_VENDMASK) != (FLASH_MAN_MT & FLASH_VENDMASK))
|
||||
return ERR_UNKNOWN_FLASH_VENDOR;
|
||||
|
||||
prot = 0;
|
||||
|
||||
for (sect = s_first; sect <= s_last; ++sect) {
|
||||
if (info->protect[sect])
|
||||
prot++;
|
||||
}
|
||||
|
||||
if (prot) {
|
||||
printf("protected!\n");
|
||||
return ERR_PROTECTED;
|
||||
}
|
||||
/*
|
||||
* Disable interrupts which might cause a timeout
|
||||
* here. Remember that our exception vectors are
|
||||
* at address 0 in the flash, and we don't want a
|
||||
* (ticker) exception to happen while the flash
|
||||
* chip is in programming mode.
|
||||
*/
|
||||
|
||||
cflag = icache_status();
|
||||
icache_disable();
|
||||
iflag = disable_interrupts();
|
||||
|
||||
/* Start erase on unprotected sectors */
|
||||
for (sect = s_first; sect <= s_last && !ctrlc(); sect++) {
|
||||
|
||||
printf("Erasing sector %2d ... ", sect);
|
||||
|
||||
/* arm simple, non interrupt dependent timer */
|
||||
|
||||
get_timer(0);
|
||||
|
||||
SF_NvmodeErase();
|
||||
SF_NvmodeWrite();
|
||||
|
||||
SF_Erase(CONFIG_SYS_FLASH_BASE + (0x0100000 * sect));
|
||||
SF_Normal();
|
||||
|
||||
printf("ok.\n");
|
||||
}
|
||||
|
||||
if (ctrlc())
|
||||
printf("User Interrupt!\n");
|
||||
|
||||
if (iflag)
|
||||
enable_interrupts();
|
||||
|
||||
if (cflag)
|
||||
icache_enable();
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Copy memory to flash.
|
||||
*/
|
||||
|
||||
int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) {
|
||||
int i;
|
||||
|
||||
for(i = 0; i < cnt; i += 4) {
|
||||
|
||||
SF_PrechargeAll();
|
||||
|
||||
reg_SFCTL = CMD_PROGRAM; /* Enter SyncFlash Program mode */
|
||||
__REG(addr + i) = __REG((u32)src + i);
|
||||
|
||||
while(!SF_Ready());
|
||||
}
|
||||
|
||||
SF_Normal();
|
||||
|
||||
return ERR_OK;
|
||||
}
|
||||
@@ -29,6 +29,12 @@ struct msg_get_arm_mem {
|
||||
u32 end_tag;
|
||||
};
|
||||
|
||||
struct msg_set_power_state {
|
||||
struct bcm2835_mbox_hdr hdr;
|
||||
struct bcm2835_mbox_tag_set_power_state set_power_state;
|
||||
u32 end_tag;
|
||||
};
|
||||
|
||||
struct msg_get_clock_rate {
|
||||
struct bcm2835_mbox_hdr hdr;
|
||||
struct bcm2835_mbox_tag_get_clock_rate get_clock_rate;
|
||||
@@ -54,11 +60,35 @@ int dram_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int power_on_module(u32 module)
|
||||
{
|
||||
ALLOC_ALIGN_BUFFER(struct msg_set_power_state, msg_pwr, 1, 16);
|
||||
int ret;
|
||||
|
||||
BCM2835_MBOX_INIT_HDR(msg_pwr);
|
||||
BCM2835_MBOX_INIT_TAG(&msg_pwr->set_power_state,
|
||||
SET_POWER_STATE);
|
||||
msg_pwr->set_power_state.body.req.device_id = module;
|
||||
msg_pwr->set_power_state.body.req.state =
|
||||
BCM2835_MBOX_SET_POWER_STATE_REQ_ON |
|
||||
BCM2835_MBOX_SET_POWER_STATE_REQ_WAIT;
|
||||
|
||||
ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN,
|
||||
&msg_pwr->hdr);
|
||||
if (ret) {
|
||||
printf("bcm2835: Could not set module %u power state\n",
|
||||
module);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
gd->bd->bi_boot_params = 0x100;
|
||||
|
||||
return 0;
|
||||
return power_on_module(BCM2835_MBOX_POWER_DEVID_USB_HCD);
|
||||
}
|
||||
|
||||
int board_mmc_init(void)
|
||||
@@ -66,6 +96,8 @@ int board_mmc_init(void)
|
||||
ALLOC_ALIGN_BUFFER(struct msg_get_clock_rate, msg_clk, 1, 16);
|
||||
int ret;
|
||||
|
||||
power_on_module(BCM2835_MBOX_POWER_DEVID_SDHCI);
|
||||
|
||||
BCM2835_MBOX_INIT_HDR(msg_clk);
|
||||
BCM2835_MBOX_INIT_TAG(&msg_clk->get_clock_rate, GET_CLOCK_RATE);
|
||||
msg_clk->get_clock_rate.body.req.clock_id = BCM2835_MBOX_CLOCK_ID_EMMC;
|
||||
|
||||
@@ -253,6 +253,12 @@ int board_early_init_f(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void arch_preboot_os(void)
|
||||
{
|
||||
/* Disable TMU0 */
|
||||
mstp_setbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
|
||||
}
|
||||
|
||||
/* LSI pin pull-up control */
|
||||
#define PUPR5 0xe6060114
|
||||
#define PUPR5_ETH 0x3FFC0000
|
||||
|
||||
@@ -254,6 +254,12 @@ int board_early_init_f(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void arch_preboot_os(void)
|
||||
{
|
||||
/* Disable TMU0 */
|
||||
mstp_setbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
|
||||
}
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
int board_init(void)
|
||||
{
|
||||
|
||||
@@ -49,7 +49,7 @@ int power_init_board(void)
|
||||
* For PMIC the I2C bus is named as I2C5, but it is connected
|
||||
* to logical I2C adapter 0
|
||||
*/
|
||||
ret = pmic_init(I2C_5);
|
||||
ret = pmic_init(I2C_0);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
9
board/solidrun/hummingboard/Makefile
Normal file
9
board/solidrun/hummingboard/Makefile
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# (C) Copyright 2013 Freescale Semiconductor, Inc.
|
||||
# Copyright (C) 2013, Boundary Devices <info@boundarydevices.com>
|
||||
# Copyright (C) 2013, Jon Nettleton <jon.nettleton@gmail.com>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-y := hummingboard.o
|
||||
40
board/solidrun/hummingboard/README
Normal file
40
board/solidrun/hummingboard/README
Normal file
@@ -0,0 +1,40 @@
|
||||
U-Boot for SolidRun Hummingboard
|
||||
--------------------------------
|
||||
|
||||
This file contains information for the port of U-Boot to the Hummingboard.
|
||||
|
||||
For more details about Hummingboard, please refer to:
|
||||
http://imx.solid-run.com/wiki/index.php?title=Carrier-One_Hardware
|
||||
|
||||
(Carrier-One was the previous name of Hummingboard).
|
||||
|
||||
Building U-boot for Hummingboard
|
||||
--------------------------------
|
||||
|
||||
To build U-Boot for the Hummingboard Solo version:
|
||||
|
||||
$ make hummingboard_solo_config
|
||||
$ make
|
||||
|
||||
Flashing U-boot into the SD card
|
||||
--------------------------------
|
||||
|
||||
- After the 'make' command completes, the generated 'u-boot.imx' binary must be
|
||||
flashed into the SD card:
|
||||
|
||||
$ sudo dd if=u-boot.imx of=/dev/mmcblk0 bs=1k seek=1; sync
|
||||
|
||||
(Note - the SD card node may vary, so adjust this as needed).
|
||||
|
||||
Also, a more detailed explanation on how to format the SD card is available
|
||||
at doc/README.imximage.
|
||||
|
||||
- Insert the micro SD card into the slot located in the bottom of the board
|
||||
|
||||
- Connect a 3.3V USB to serial converter cable to the host PC. The MX6 UART
|
||||
signals are available in the 26 pin connector as shown at:
|
||||
http://imx.solid-run.com/wiki/index.php?title=Carrier-One_Hardware
|
||||
(Check for "26 pin header layout").
|
||||
|
||||
- Power up the board via USB cable (CON201) and U-boot messages will appear in
|
||||
the serial console.
|
||||
187
board/solidrun/hummingboard/hummingboard.c
Normal file
187
board/solidrun/hummingboard/hummingboard.c
Normal file
@@ -0,0 +1,187 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Freescale Semiconductor, Inc.
|
||||
* Copyright (C) 2013 SolidRun ltd.
|
||||
* Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>.
|
||||
*
|
||||
* Authors: Fabio Estevam <fabio.estevam@freescale.com>
|
||||
Jon Nettleton <jon.nettleton@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <asm/arch/clock.h>
|
||||
#include <asm/arch/crm_regs.h>
|
||||
#include <asm/arch/imx-regs.h>
|
||||
#include <asm/arch/iomux.h>
|
||||
#include <asm/arch/mx6-pins.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <asm/imx-common/iomux-v3.h>
|
||||
#include <asm/io.h>
|
||||
#include <mmc.h>
|
||||
#include <fsl_esdhc.h>
|
||||
#include <miiphy.h>
|
||||
#include <netdev.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
|
||||
PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | \
|
||||
PAD_CTL_SRE_FAST | PAD_CTL_HYS)
|
||||
|
||||
#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | \
|
||||
PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm | \
|
||||
PAD_CTL_SRE_FAST | PAD_CTL_HYS)
|
||||
|
||||
#define USDHC_PAD_CLK_CTRL (PAD_CTL_SPEED_LOW | \
|
||||
PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | \
|
||||
PAD_CTL_HYS)
|
||||
|
||||
#define USDHC_PAD_GPIO_CTRL (PAD_CTL_PUS_22K_UP | \
|
||||
PAD_CTL_SPEED_LOW | PAD_CTL_DSE_40ohm | \
|
||||
PAD_CTL_SRE_FAST | PAD_CTL_HYS)
|
||||
|
||||
#define ENET_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
|
||||
PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
|
||||
|
||||
#define ENET_PAD_CTRL_PD (PAD_CTL_PUS_100K_DOWN | \
|
||||
PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
|
||||
|
||||
#define ENET_PAD_CTRL_CLK ((PAD_CTL_PUS_100K_UP & ~PAD_CTL_PKE) | \
|
||||
PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
|
||||
|
||||
#define ETH_PHY_RESET IMX_GPIO_NR(4, 15)
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
gd->ram_size = ((phys_size_t)CONFIG_DDR_MB * 1024 * 1024);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static iomux_v3_cfg_t const uart1_pads[] = {
|
||||
MX6_PAD_CSI0_DAT10__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
|
||||
MX6_PAD_CSI0_DAT11__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
|
||||
};
|
||||
|
||||
static void setup_iomux_uart(void)
|
||||
{
|
||||
imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
|
||||
}
|
||||
|
||||
static iomux_v3_cfg_t const usdhc2_pads[] = {
|
||||
MX6_PAD_SD2_CLK__SD2_CLK | MUX_PAD_CTRL(USDHC_PAD_CLK_CTRL),
|
||||
MX6_PAD_SD2_CMD__SD2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
|
||||
MX6_PAD_SD2_DAT0__SD2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
|
||||
MX6_PAD_SD2_DAT1__SD2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
|
||||
MX6_PAD_SD2_DAT2__SD2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
|
||||
MX6_PAD_SD2_DAT3__SD2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
|
||||
MX6_PAD_GPIO_4__SD2_CD_B | MUX_PAD_CTRL(USDHC_PAD_GPIO_CTRL),
|
||||
};
|
||||
|
||||
#ifdef CONFIG_FSL_ESDHC
|
||||
static struct fsl_esdhc_cfg usdhc_cfg[1] = {
|
||||
{ USDHC2_BASE_ADDR },
|
||||
};
|
||||
|
||||
int board_mmc_getcd(struct mmc *mmc)
|
||||
{
|
||||
return 1; /* SD card is the boot medium, so always present */
|
||||
}
|
||||
|
||||
int board_mmc_init(bd_t *bis)
|
||||
{
|
||||
imx_iomux_v3_setup_multiple_pads(usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
|
||||
usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
|
||||
|
||||
return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FEC_MXC
|
||||
static iomux_v3_cfg_t const enet_pads[] = {
|
||||
MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
MX6_PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
/* AR8035 reset */
|
||||
MX6_PAD_KEY_ROW4__GPIO4_IO15 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
|
||||
/* AR8035 interrupt */
|
||||
MX6_PAD_DI0_PIN2__GPIO4_IO18 | MUX_PAD_CTRL(NO_PAD_CTRL),
|
||||
/* GPIO16 -> AR8035 25MHz */
|
||||
MX6_PAD_GPIO_16__ENET_REF_CLK | MUX_PAD_CTRL(NO_PAD_CTRL),
|
||||
MX6_PAD_RGMII_TXC__RGMII_TXC | MUX_PAD_CTRL(NO_PAD_CTRL),
|
||||
MX6_PAD_RGMII_TD0__RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
MX6_PAD_RGMII_TD1__RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
MX6_PAD_RGMII_TD2__RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
MX6_PAD_RGMII_TD3__RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
/* AR8035 CLK_25M --> ENET_REF_CLK (V22) */
|
||||
MX6_PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL_CLK),
|
||||
MX6_PAD_RGMII_RXC__RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
MX6_PAD_RGMII_RD0__RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
|
||||
MX6_PAD_RGMII_RD1__RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
|
||||
MX6_PAD_RGMII_RD2__RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
MX6_PAD_RGMII_RD3__RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
|
||||
MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
|
||||
};
|
||||
|
||||
static void setup_iomux_enet(void)
|
||||
{
|
||||
imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
|
||||
|
||||
gpio_direction_output(ETH_PHY_RESET, 0);
|
||||
mdelay(2);
|
||||
gpio_set_value(ETH_PHY_RESET, 1);
|
||||
}
|
||||
|
||||
int board_phy_config(struct phy_device *phydev)
|
||||
{
|
||||
if (phydev->drv->config)
|
||||
phydev->drv->config(phydev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
struct iomuxc_base_regs *const iomuxc_regs =
|
||||
(struct iomuxc_base_regs *)IOMUXC_BASE_ADDR;
|
||||
|
||||
int ret = enable_fec_anatop_clock(ENET_25MHz);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* set gpr1[ENET_CLK_SEL] */
|
||||
setbits_le32(&iomuxc_regs->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK);
|
||||
|
||||
setup_iomux_enet();
|
||||
|
||||
ret = cpu_eth_init(bis);
|
||||
if (ret)
|
||||
printf("FEC MXC: %s:failed\n", __func__);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
setup_iomux_uart();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
/* address of boot parameters */
|
||||
gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int checkboard(void)
|
||||
{
|
||||
puts("Board: Hummingboard\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
25
board/solidrun/hummingboard/solo.cfg
Normal file
25
board/solidrun/hummingboard/solo.cfg
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Boundary Devices
|
||||
* Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/* image version */
|
||||
IMAGE_VERSION 2
|
||||
|
||||
/*
|
||||
* Boot Device : one of
|
||||
* spi, sd (the board has no nand neither onenand)
|
||||
*/
|
||||
BOOT_FROM sd
|
||||
|
||||
#define __ASSEMBLY__
|
||||
#include <config.h>
|
||||
#include "asm/arch/mx6-ddr.h"
|
||||
#include "asm/arch/iomux.h"
|
||||
#include "asm/arch/crm_regs.h"
|
||||
|
||||
#include "../mx6-microsom/ddr-800mhz-32bit-setup.cfg"
|
||||
#include "../mx6-microsom/800mhz_2x128mx16.cfg"
|
||||
#include "../mx6-microsom/clocks.cfg"
|
||||
74
board/solidrun/mx6-microsom/800mhz_2x128mx16.cfg
Normal file
74
board/solidrun/mx6-microsom/800mhz_2x128mx16.cfg
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Boundary Devices
|
||||
* Copyright (C) 2013 SolidRun ltd.
|
||||
* Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/* ZQ Calibrations */
|
||||
DATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xa1390003
|
||||
DATA 4, MX6_MMDC_P1_MPZQHWCTRL, 0xa1390003
|
||||
/* write leveling */
|
||||
DATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x005a0057
|
||||
DATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x004a0052
|
||||
/*
|
||||
* DQS gating, read delay, write delay calibration values
|
||||
* based on calibration compare of 0x00ffff00
|
||||
*/
|
||||
DATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x02480240
|
||||
DATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x02340230
|
||||
DATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x40404440
|
||||
DATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x38343034
|
||||
/* read data bit delay */
|
||||
DATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333
|
||||
DATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333
|
||||
DATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333
|
||||
DATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333
|
||||
/* Complete calibration by forced measurement */
|
||||
DATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800
|
||||
DATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800
|
||||
|
||||
/*
|
||||
* MMDC init:
|
||||
* in DDR3, 32-bit mode, only MMDC0 is initiated:
|
||||
*/
|
||||
DATA 4, MX6_MMDC_P0_MDPDC, 0x0002002d
|
||||
DATA 4, MX6_MMDC_P0_MDOTC, 0x00333040
|
||||
|
||||
DATA 4, MX6_MMDC_P0_MDCFG0, 0x3f435313
|
||||
DATA 4, MX6_MMDC_P0_MDCFG1, 0xb66e8b63
|
||||
|
||||
DATA 4, MX6_MMDC_P0_MDCFG2, 0x01ff00db
|
||||
DATA 4, MX6_MMDC_P0_MDMISC, 0x00011740
|
||||
DATA 4, MX6_MMDC_P0_MDSCR, 0x00008000
|
||||
DATA 4, MX6_MMDC_P0_MDRWD, 0x000026d2
|
||||
DATA 4, MX6_MMDC_P0_MDOR, 0x00431023
|
||||
/* CS0_END - 0x2fffffff, 512M */
|
||||
DATA 4, MX6_MMDC_P0_MDASP, 0x00000017
|
||||
|
||||
/* MMDC0_MAARCR ADOPT optimized priorities. Dyn jump disabled */
|
||||
DATA 4, 0x021b0400, 0x11420000
|
||||
|
||||
/* MMDC0_MDCTL- row-14bits; col-10bits; burst length 8;32-bit data bus */
|
||||
DATA 4, MX6_MMDC_P0_MDCTL, 0x83190000
|
||||
|
||||
/*
|
||||
* Initialize 2GB DDR3 - Hynix H5TQ2G63BFR-H9C
|
||||
* MR2
|
||||
*/
|
||||
DATA 4, MX6_MMDC_P0_MDSCR, 0x00008032
|
||||
/* MR3 */
|
||||
DATA 4, MX6_MMDC_P0_MDSCR, 0x00008033
|
||||
/* MR1 */
|
||||
DATA 4, MX6_MMDC_P0_MDSCR, 0x00008031
|
||||
/* MR0 */
|
||||
DATA 4, MX6_MMDC_P0_MDSCR, 0x05208030
|
||||
/* ZQ calibration */
|
||||
DATA 4, MX6_MMDC_P0_MDSCR, 0x04008040
|
||||
/* final DDR setup */
|
||||
DATA 4, MX6_MMDC_P0_MDREF, 0x00007800
|
||||
DATA 4, MX6_MMDC_P0_MPODTCTRL, 0x00000007
|
||||
DATA 4, MX6_MMDC_P0_MDPDC, 0x0002556d
|
||||
DATA 4, MX6_MMDC_P0_MAPSR, 0x00011006
|
||||
DATA 4, MX6_MMDC_P0_MDSCR, 0x00000000
|
||||
33
board/solidrun/mx6-microsom/clocks.cfg
Normal file
33
board/solidrun/mx6-microsom/clocks.cfg
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Boundary Devices
|
||||
* Copyright (C) 2013 SolidRun ltd.
|
||||
* Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/* set the default clock gate to save power */
|
||||
DATA 4, CCM_CCGR0, 0x00C03F3F
|
||||
DATA 4, CCM_CCGR1, 0x0030FC03
|
||||
DATA 4, CCM_CCGR2, 0x0FFFC000
|
||||
DATA 4, CCM_CCGR3, 0x3FF00000
|
||||
DATA 4, CCM_CCGR4, 0x00FFF300
|
||||
DATA 4, CCM_CCGR5, 0x0F0000C3
|
||||
DATA 4, CCM_CCGR6, 0x000003FF
|
||||
|
||||
/* enable AXI cache for VDOA/VPU/IPU */
|
||||
DATA 4, MX6_IOMUXC_GPR4, 0xF00000CF
|
||||
/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
|
||||
DATA 4, MX6_IOMUXC_GPR6, 0x007F007F
|
||||
DATA 4, MX6_IOMUXC_GPR7, 0x007F007F
|
||||
|
||||
/*
|
||||
* Setup CCM_CCOSR register as follows:
|
||||
*
|
||||
* cko1_en = 1 --> CKO1 enabled
|
||||
* cko1_div = 111 --> divide by 8
|
||||
* cko1_sel = 1011 --> ahb_clk_root
|
||||
*
|
||||
* This sets CKO1 at ahb_clk_root/8 = 132/8 = 16.5 MHz
|
||||
*/
|
||||
DATA 4, CCM_CCOSR, 0x000000fb
|
||||
76
board/solidrun/mx6-microsom/ddr-800mhz-32bit-setup.cfg
Normal file
76
board/solidrun/mx6-microsom/ddr-800mhz-32bit-setup.cfg
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Boundary Devices
|
||||
* Copyright (C) 2013 SolidRun ltd.
|
||||
* Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/*
|
||||
* DDR3 settings
|
||||
* MX6Q ddr is limited to 1066 Mhz currently 1056 MHz(528 MHz clock),
|
||||
* memory bus width: 64 bits x16/x32/x64
|
||||
* MX6DL ddr is limited to 800 MHz(400 MHz clock)
|
||||
* memory bus width: 64 bits x16/x32/x64
|
||||
* MX6SOLO ddr is limited to 800 MHz(400 MHz clock)
|
||||
* memory bus width: 32 bits x16/x32
|
||||
*/
|
||||
/* DDR IO TYPE */
|
||||
DATA 4, MX6_IOM_GRP_DDR_TYPE, 0x000c0000
|
||||
DATA 4, MX6_IOM_GRP_DDRPKE, 0x00000000
|
||||
/* Clock */
|
||||
DATA 4, MX6_IOM_DRAM_SDCLK_0, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_SDCLK_1, 0x00000028
|
||||
/* Address */
|
||||
DATA 4, MX6_IOM_DRAM_CAS, 0x00000010
|
||||
DATA 4, MX6_IOM_DRAM_RAS, 0x00000010
|
||||
DATA 4, MX6_IOM_GRP_ADDDS, 0x00000010
|
||||
/* Control */
|
||||
DATA 4, MX6_IOM_DRAM_RESET, 0x00000010
|
||||
DATA 4, MX6_IOM_DRAM_SDCKE0, 0x00003000
|
||||
DATA 4, MX6_IOM_DRAM_SDCKE1, 0x00003000
|
||||
DATA 4, MX6_IOM_DRAM_SDBA2, 0x00000000
|
||||
DATA 4, MX6_IOM_DRAM_SDODT0, 0x00000010
|
||||
DATA 4, MX6_IOM_DRAM_SDODT1, 0x00000010
|
||||
DATA 4, MX6_IOM_GRP_CTLDS, 0x00000010
|
||||
|
||||
/*
|
||||
* Data Strobe: IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL - DDR_INPUT=0, CMOS,
|
||||
* CMOS mode saves power, but have less timing margin in case of DDR
|
||||
* timing issue on your board you can try DDR_MODE: [= 0x00020000]
|
||||
*/
|
||||
DATA 4, MX6_IOM_DDRMODE_CTL, 0x00020000
|
||||
|
||||
DATA 4, MX6_IOM_DRAM_SDQS0, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_SDQS1, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_SDQS2, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_SDQS3, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_SDQS4, 0x00000000
|
||||
DATA 4, MX6_IOM_DRAM_SDQS5, 0x00000000
|
||||
DATA 4, MX6_IOM_DRAM_SDQS6, 0x00000000
|
||||
DATA 4, MX6_IOM_DRAM_SDQS7, 0x00000000
|
||||
|
||||
/*
|
||||
* DATA:IOMUXC_SW_PAD_CTL_GRP_DDRMODE - DDR_INPUT=0, CMOS,
|
||||
* CMOS mode saves power, but have less timing margin in case of DDR
|
||||
* timing issue on your board you can try DDR_MODE: [= 0x00020000]
|
||||
*/
|
||||
DATA 4, MX6_IOM_GRP_DDRMODE, 0x00020000
|
||||
|
||||
DATA 4, MX6_IOM_GRP_B0DS, 0x00000028
|
||||
DATA 4, MX6_IOM_GRP_B1DS, 0x00000028
|
||||
DATA 4, MX6_IOM_GRP_B2DS, 0x00000028
|
||||
DATA 4, MX6_IOM_GRP_B3DS, 0x00000028
|
||||
DATA 4, MX6_IOM_GRP_B4DS, 0x00000000
|
||||
DATA 4, MX6_IOM_GRP_B5DS, 0x00000000
|
||||
DATA 4, MX6_IOM_GRP_B6DS, 0x00000000
|
||||
DATA 4, MX6_IOM_GRP_B7DS, 0x00000000
|
||||
|
||||
DATA 4, MX6_IOM_DRAM_DQM0, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_DQM1, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_DQM2, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_DQM3, 0x00000028
|
||||
DATA 4, MX6_IOM_DRAM_DQM4, 0x00000000
|
||||
DATA 4, MX6_IOM_DRAM_DQM5, 0x00000000
|
||||
DATA 4, MX6_IOM_DRAM_DQM6, 0x00000000
|
||||
DATA 4, MX6_IOM_DRAM_DQM7, 0x00000000
|
||||
@@ -257,15 +257,9 @@ static void setup_display(void)
|
||||
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
int ret;
|
||||
|
||||
setup_iomux_enet();
|
||||
|
||||
ret = cpu_eth_init(bis);
|
||||
if (ret)
|
||||
printf("FEC MXC: %s:failed\n", __func__);
|
||||
|
||||
return ret;
|
||||
return cpu_eth_init(bis);
|
||||
}
|
||||
|
||||
int board_early_init_f(void)
|
||||
|
||||
@@ -65,11 +65,9 @@ Active arm arm920t at91 BuS eb_cpux9k2
|
||||
Active arm arm920t at91 BuS eb_cpux9k2 eb_cpux9k2_ram eb_cpux9k2:RAMBOOT Jens Scharsig <esw@bus-elektronik.de>
|
||||
Active arm arm920t at91 eukrea cpuat91 cpuat91 cpuat91 Eric Benard <eric@eukrea.com>
|
||||
Active arm arm920t at91 eukrea cpuat91 cpuat91_ram cpuat91:RAMBOOT Eric Benard <eric@eukrea.com>
|
||||
Active arm arm920t imx - - mx1ads - -
|
||||
Active arm arm920t imx - - scb9328 - Torsten Koschorrek <koschorrek@synertronixx.de>
|
||||
Active arm arm920t ks8695 - - cm4008 - Greg Ungerer <greg.ungerer@opengear.com>
|
||||
Active arm arm920t ks8695 - - cm41xx - -
|
||||
Active arm arm920t s3c24x0 friendlyarm mini2440 mini2440 - Gabriel Huau <contact@huau-gabriel.fr>
|
||||
Active arm arm920t s3c24x0 mpl vcma9 VCMA9 - David Müller <d.mueller@elsoft.ch>
|
||||
Active arm arm920t s3c24x0 samsung - smdk2410 - David Müller <d.mueller@elsoft.ch>
|
||||
Active arm arm926ejs - armltd integrator integratorap_cm926ejs integratorap:CM926EJ_S Linus Walleij <linus.walleij@linaro.org>
|
||||
@@ -311,6 +309,7 @@ Active arm armv7 mx6 freescale mx6sabresd
|
||||
Active arm armv7 mx6 freescale mx6sabresd mx6qsabresd mx6sabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q Fabio Estevam <fabio.estevam@freescale.com>
|
||||
Active arm armv7 mx6 freescale mx6slevk mx6slevk mx6slevk:IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL Fabio Estevam <fabio.estevam@freescale.com>
|
||||
Active arm armv7 mx6 barco titanium titanium titanium:IMX_CONFIG=board/barco/titanium/imximage.cfg Stefan Roese <sr@denx.de>
|
||||
Active arm armv7 mx6 solidrun hummingboard hummingboard_solo hummingboard:IMX_CONFIG=board/solidrun/hummingboard/solo.cfg,MX6S,DDR_MB=512 Jon Nettleton <jon.nettleton@gmail.com>
|
||||
Active arm armv7 omap3 - overo omap3_overo - Steve Sakoman <sakoman@gmail.com>
|
||||
Active arm armv7 omap3 - pandora omap3_pandora - Grazvydas Ignotas <notasas@gmail.com>
|
||||
Active arm armv7 omap3 8dtech eco5pk eco5pk - Raphael Assenat <raph@8d.com>
|
||||
|
||||
@@ -82,6 +82,9 @@ static int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
|
||||
static void fixup_silent_linux(void);
|
||||
#endif
|
||||
|
||||
static int do_bootm_standalone(int flag, int argc, char * const argv[],
|
||||
bootm_headers_t *images);
|
||||
|
||||
static const void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||
char * const argv[], bootm_headers_t *images,
|
||||
ulong *os_data, ulong *os_len);
|
||||
@@ -139,6 +142,7 @@ static boot_os_fn do_bootm_integrity;
|
||||
#endif
|
||||
|
||||
static boot_os_fn *boot_os[] = {
|
||||
[IH_OS_U_BOOT] = do_bootm_standalone,
|
||||
#ifdef CONFIG_BOOTM_LINUX
|
||||
[IH_OS_LINUX] = do_bootm_linux,
|
||||
#endif
|
||||
@@ -499,17 +503,18 @@ static int bootm_load_os(bootm_headers_t *images, unsigned long *load_end,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bootm_start_standalone(int argc, char * const argv[])
|
||||
static int do_bootm_standalone(int flag, int argc, char * const argv[],
|
||||
bootm_headers_t *images)
|
||||
{
|
||||
char *s;
|
||||
int (*appl)(int, char * const []);
|
||||
|
||||
/* Don't start if "autostart" is set to "no" */
|
||||
if (((s = getenv("autostart")) != NULL) && (strcmp(s, "no") == 0)) {
|
||||
setenv_hex("filesize", images.os.image_len);
|
||||
setenv_hex("filesize", images->os.image_len);
|
||||
return 0;
|
||||
}
|
||||
appl = (int (*)(int, char * const []))(ulong)ntohl(images.ep);
|
||||
appl = (int (*)(int, char * const []))(ulong)ntohl(images->ep);
|
||||
(*appl)(argc, argv);
|
||||
return 0;
|
||||
}
|
||||
@@ -535,14 +540,12 @@ static cmd_tbl_t cmd_bootm_sub[] = {
|
||||
static int boot_selected_os(int argc, char * const argv[], int state,
|
||||
bootm_headers_t *images, boot_os_fn *boot_fn)
|
||||
{
|
||||
if (images->os.type == IH_TYPE_STANDALONE) {
|
||||
/* This may return when 'autostart' is 'no' */
|
||||
bootm_start_standalone(argc, argv);
|
||||
return 0;
|
||||
}
|
||||
arch_preboot_os();
|
||||
boot_fn(state, argc, argv, images);
|
||||
if (state == BOOTM_STATE_OS_FAKE_GO) /* We expect to return */
|
||||
|
||||
/* Stand-alone may return when 'autostart' is 'no' */
|
||||
if (images->os.type == IH_TYPE_STANDALONE ||
|
||||
state == BOOTM_STATE_OS_FAKE_GO) /* We expect to return */
|
||||
return 0;
|
||||
bootstage_error(BOOTSTAGE_ID_BOOT_OS_RETURNED);
|
||||
#ifdef DEBUG
|
||||
|
||||
@@ -184,10 +184,10 @@ static int complete_cmdv(int argc, char * const argv[], char last_char, int maxv
|
||||
/* output full list of commands */
|
||||
for (; cmdtp != cmdend; cmdtp++) {
|
||||
if (n_found >= maxv - 2) {
|
||||
cmdv[n_found] = "...";
|
||||
cmdv[n_found++] = "...";
|
||||
break;
|
||||
}
|
||||
cmdv[n_found] = cmdtp->name;
|
||||
cmdv[n_found++] = cmdtp->name;
|
||||
}
|
||||
cmdv[n_found] = NULL;
|
||||
return n_found;
|
||||
|
||||
@@ -35,6 +35,9 @@ static struct env_clbk_tbl *find_env_callback(const char *name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int first_call = 1;
|
||||
static const char *callback_list;
|
||||
|
||||
/*
|
||||
* Look for a possible callback for a newly added variable
|
||||
* This is called specifically when the variable did not exist in the hash
|
||||
@@ -43,11 +46,15 @@ static struct env_clbk_tbl *find_env_callback(const char *name)
|
||||
void env_callback_init(ENTRY *var_entry)
|
||||
{
|
||||
const char *var_name = var_entry->key;
|
||||
const char *callback_list = getenv(ENV_CALLBACK_VAR);
|
||||
char callback_name[256] = "";
|
||||
struct env_clbk_tbl *clbkp;
|
||||
int ret = 1;
|
||||
|
||||
if (first_call) {
|
||||
callback_list = getenv(ENV_CALLBACK_VAR);
|
||||
first_call = 0;
|
||||
}
|
||||
|
||||
/* look in the ".callbacks" var for a reference to this variable */
|
||||
if (callback_list != NULL)
|
||||
ret = env_attr_lookup(callback_list, var_name, callback_name);
|
||||
|
||||
@@ -24,7 +24,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
env_t *env_ptr;
|
||||
|
||||
char *env_name_spec = "EEPROM";
|
||||
int env_eeprom_bus = -1;
|
||||
|
||||
static int eeprom_bus_read(unsigned dev_addr, unsigned offset,
|
||||
uchar *buffer, unsigned cnt)
|
||||
@@ -40,8 +39,7 @@ static int eeprom_bus_read(unsigned dev_addr, unsigned offset,
|
||||
rcode = eeprom_read(dev_addr, offset, buffer, cnt);
|
||||
|
||||
#if defined(CONFIG_I2C_ENV_EEPROM_BUS)
|
||||
if (old_bus != env_eeprom_bus)
|
||||
i2c_set_bus_num(old_bus);
|
||||
i2c_set_bus_num(old_bus);
|
||||
#endif
|
||||
|
||||
return rcode;
|
||||
@@ -63,6 +61,7 @@ static int eeprom_bus_write(unsigned dev_addr, unsigned offset,
|
||||
#if defined(CONFIG_I2C_ENV_EEPROM_BUS)
|
||||
i2c_set_bus_num(old_bus);
|
||||
#endif
|
||||
|
||||
return rcode;
|
||||
}
|
||||
|
||||
|
||||
@@ -395,6 +395,9 @@ static int env_parse_flags_to_bin(const char *flags)
|
||||
return binflags;
|
||||
}
|
||||
|
||||
static int first_call = 1;
|
||||
static const char *flags_list;
|
||||
|
||||
/*
|
||||
* Look for possible flags for a newly added variable
|
||||
* This is called specifically when the variable did not exist in the hash
|
||||
@@ -403,10 +406,13 @@ static int env_parse_flags_to_bin(const char *flags)
|
||||
void env_flags_init(ENTRY *var_entry)
|
||||
{
|
||||
const char *var_name = var_entry->key;
|
||||
const char *flags_list = getenv(ENV_FLAGS_VAR);
|
||||
char flags[ENV_FLAGS_ATTR_MAX_LEN + 1] = "";
|
||||
int ret = 1;
|
||||
|
||||
if (first_call) {
|
||||
flags_list = getenv(ENV_FLAGS_VAR);
|
||||
first_call = 0;
|
||||
}
|
||||
/* look in the ".flags" and static for a reference to this variable */
|
||||
ret = env_flags_lookup(flags_list, var_name, flags);
|
||||
|
||||
|
||||
@@ -204,7 +204,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
|
||||
if ((path == NULL) || force) {
|
||||
write_cell((u8 *)&tmp, initrd_start, addr_cell_len);
|
||||
err = fdt_setprop(fdt, nodeoffset,
|
||||
"linux,initrd-start", &tmp, sizeof(tmp));
|
||||
"linux,initrd-start", &tmp, addr_cell_len);
|
||||
if (err < 0) {
|
||||
printf("WARNING: "
|
||||
"could not set linux,initrd-start %s.\n",
|
||||
@@ -213,7 +213,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
|
||||
}
|
||||
write_cell((u8 *)&tmp, initrd_end, addr_cell_len);
|
||||
err = fdt_setprop(fdt, nodeoffset,
|
||||
"linux,initrd-end", &tmp, sizeof(tmp));
|
||||
"linux,initrd-end", &tmp, addr_cell_len);
|
||||
if (err < 0) {
|
||||
printf("WARNING: could not set linux,initrd-end %s.\n",
|
||||
fdt_strerror(err));
|
||||
|
||||
@@ -96,9 +96,9 @@ static const table_entry_t uimage_os[] = {
|
||||
{ IH_OS_PLAN9, "plan9", "Plan 9", },
|
||||
{ IH_OS_RTEMS, "rtems", "RTEMS", },
|
||||
{ IH_OS_U_BOOT, "u-boot", "U-Boot", },
|
||||
{ IH_OS_VXWORKS, "vxworks", "VxWorks", },
|
||||
#if defined(CONFIG_CMD_ELF) || defined(USE_HOSTCC)
|
||||
{ IH_OS_QNX, "qnx", "QNX", },
|
||||
{ IH_OS_VXWORKS, "vxworks", "VxWorks", },
|
||||
#endif
|
||||
#if defined(CONFIG_INTEGRITY) || defined(USE_HOSTCC)
|
||||
{ IH_OS_INTEGRITY,"integrity", "INTEGRITY", },
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
U-Boot for FriendlyARM Mini2440 (s3c2440)
|
||||
|
||||
This file contains information for the port of U-Boot to FriendlyARM
|
||||
mini2440
|
||||
|
||||
All information about the board can be found on :
|
||||
http://www.friendlyarm.net/products/mini2440
|
||||
|
||||
To build u-boot : ./MAKEALL mini2440
|
||||
|
||||
Overview :
|
||||
--------
|
||||
FriendlyARM Mini 2440 SBC (Single-Board Computer) with 400 MHz Samsung S3C2440
|
||||
ARM9 processor. The board measures 100 x 100 mm, ideal for learning about ARM9
|
||||
systems. It's a low cost board.
|
||||
|
||||
Boot Methods :
|
||||
------------
|
||||
Mini2440 can boot from NOR or NAND.
|
||||
|
||||
Build :
|
||||
-----
|
||||
./MAKEALL mini2440
|
||||
|
||||
or
|
||||
|
||||
make mini2440_config
|
||||
make
|
||||
@@ -11,8 +11,10 @@ easily if here is something they might want to dig for...
|
||||
|
||||
Board Arch CPU Commit Removed Last known maintainer/contact
|
||||
=================================================================================================
|
||||
omap730p2 arm arm926ejs - 2013-11-11
|
||||
pn62 powerpc mpc824x - 2013-11-11 Wolfgang Grandegger <wg@grandegger.com>
|
||||
mx1ads arm arm920t - 2014-01-13
|
||||
mini2440 arm arm920t - 2014-01-13 Gabriel Huau <contact@huau-gabriel.fr>
|
||||
omap730p2 arm arm926ejs 79c5c08d 2013-11-11
|
||||
pn62 powerpc mpc824x 649acfe1 2013-11-11 Wolfgang Grandegger <wg@grandegger.com>
|
||||
pdnb3 arm ixp 304db0b 2013-09-24 Stefan Roese <sr@denx.de>
|
||||
scpu arm ixp 304db0b 2013-09-24 Stefan Roese <sr@denx.de>
|
||||
omap1510inn arm arm925t 0610a16 2013-09-23 Kshitij Gupta <kshitij@ti.com>
|
||||
|
||||
@@ -20,8 +20,8 @@ www.jdl.com for its latest version. mkimage (together with dtc) takes as input
|
||||
an image source file, which describes the contents of the image and defines
|
||||
its various properties used during booting. By convention, image source file
|
||||
has the ".its" extension, also, the details of its format are given in
|
||||
doc/source_file_format.txt. The actual data that is to be included in the
|
||||
uImage (kernel, ramdisk, etc.) is specified in the image source file in the
|
||||
doc/uImage.FIT/source_file_format.txt. The actual data that is to be included in
|
||||
the uImage (kernel, ramdisk, etc.) is specified in the image source file in the
|
||||
form of paths to appropriate data files. The outcome of the image creation
|
||||
process is a binary file (by convention with the ".itb" extension) that
|
||||
contains all the referenced data (kernel, ramdisk, etc.) and other information
|
||||
@@ -39,7 +39,7 @@ Here's a graphical overview of the image creation and booting process:
|
||||
|
||||
image source file mkimage + dtc transfer to target
|
||||
+ ---------------> image file --------------------> bootm
|
||||
image data files(s)
|
||||
image data file(s)
|
||||
|
||||
|
||||
Example 1 -- old-style (non-FDT) kernel booting
|
||||
|
||||
@@ -159,7 +159,7 @@ the '/images' node should have the following layout:
|
||||
- description : Textual description of the component sub-image
|
||||
- type : Name of component sub-image type, supported types are:
|
||||
"standalone", "kernel", "ramdisk", "firmware", "script", "filesystem",
|
||||
"fdt".
|
||||
"flat_dt".
|
||||
- data : Path to the external file which contains this node's binary data.
|
||||
- compression : Compression used by included data. Supported compressions
|
||||
are "gzip" and "bzip2". If no compression is used compression property
|
||||
|
||||
@@ -266,6 +266,25 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)
|
||||
{
|
||||
unsigned long start_time_rx;
|
||||
|
||||
#ifdef CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW
|
||||
/*
|
||||
* EEPROM chips that implement "address overflow" are ones
|
||||
* like Catalyst 24WC04/08/16 which has 9/10/11 bits of
|
||||
* address and the extra bits end up in the "chip address"
|
||||
* bit slots. This makes a 24WC08 (1Kbyte) chip look like
|
||||
* four 256 byte chips.
|
||||
*
|
||||
* Note that we consider the length of the address field to
|
||||
* still be one byte because the extra address bits are
|
||||
* hidden in the chip address.
|
||||
*/
|
||||
chip |= ((addr >> (alen * 8)) & CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW);
|
||||
addr &= ~(CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW << (alen * 8));
|
||||
|
||||
debug("%s: fix addr_overflow: chip %02x addr %02x\n", __func__, chip,
|
||||
addr);
|
||||
#endif
|
||||
|
||||
if (check_params(addr, alen, buffer, len))
|
||||
return 1;
|
||||
|
||||
@@ -307,6 +326,25 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)
|
||||
int nb = len;
|
||||
unsigned long start_time_tx;
|
||||
|
||||
#ifdef CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW
|
||||
/*
|
||||
* EEPROM chips that implement "address overflow" are ones
|
||||
* like Catalyst 24WC04/08/16 which has 9/10/11 bits of
|
||||
* address and the extra bits end up in the "chip address"
|
||||
* bit slots. This makes a 24WC08 (1Kbyte) chip look like
|
||||
* four 256 byte chips.
|
||||
*
|
||||
* Note that we consider the length of the address field to
|
||||
* still be one byte because the extra address bits are
|
||||
* hidden in the chip address.
|
||||
*/
|
||||
chip |= ((addr >> (alen * 8)) & CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW);
|
||||
addr &= ~(CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW << (alen * 8));
|
||||
|
||||
debug("%s: fix addr_overflow: chip %02x addr %02x\n", __func__, chip,
|
||||
addr);
|
||||
#endif
|
||||
|
||||
if (check_params(addr, alen, buffer, len))
|
||||
return 1;
|
||||
|
||||
|
||||
@@ -201,7 +201,7 @@ static int fti2c010_read(struct i2c_adapter *adap,
|
||||
struct fti2c010_chip *chip = chip_list + adap->hwadapnr;
|
||||
struct fti2c010_regs *regs = chip->regs;
|
||||
int ret, pos;
|
||||
uchar paddr[4];
|
||||
uchar paddr[4] = { 0 };
|
||||
|
||||
to_i2c_addr(paddr, addr, alen);
|
||||
|
||||
@@ -263,7 +263,7 @@ static int fti2c010_write(struct i2c_adapter *adap,
|
||||
struct fti2c010_chip *chip = chip_list + adap->hwadapnr;
|
||||
struct fti2c010_regs *regs = chip->regs;
|
||||
int ret, pos;
|
||||
uchar paddr[4];
|
||||
uchar paddr[4] = { 0 };
|
||||
|
||||
to_i2c_addr(paddr, addr, alen);
|
||||
|
||||
|
||||
@@ -349,7 +349,7 @@ unsigned int i2c_set_bus_speed(unsigned int speed)
|
||||
return 0;
|
||||
ret = I2C_ADAP->set_bus_speed(I2C_ADAP, speed);
|
||||
if (gd->flags & GD_FLG_RELOC)
|
||||
I2C_ADAP->speed = ret;
|
||||
I2C_ADAP->speed = (ret == 0) ? speed : 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -119,11 +119,13 @@ rcar_i2c_raw_read(struct rcar_i2c *dev, u8 chip, uint addr)
|
||||
|
||||
/* set slave address, receive */
|
||||
writel((chip << 1) | 1, &dev->icmar);
|
||||
/* clear status */
|
||||
writel(0, &dev->icmsr);
|
||||
/* start master receive */
|
||||
writel(MCR_MDBS | MCR_MIE | MCR_ESG, &dev->icmcr);
|
||||
|
||||
while ((readl(&dev->icmsr) & (MSR_MAT | MSR_MDE))
|
||||
!= (MSR_MAT | MSR_MDE))
|
||||
while ((readl(&dev->icmsr) & (MSR_MAT | MSR_MDR))
|
||||
!= (MSR_MAT | MSR_MDR))
|
||||
udelay(10);
|
||||
|
||||
/* clear ESG */
|
||||
|
||||
0
drivers/mmc/dw_mmc.c
Executable file → Normal file
0
drivers/mmc/dw_mmc.c
Executable file → Normal file
@@ -933,6 +933,7 @@ int __maybe_unused omap_nand_switch_ecc(uint32_t hardware, uint32_t eccstrength)
|
||||
mtd = &nand_info[nand_curr_device];
|
||||
nand = mtd->priv;
|
||||
nand->options |= NAND_OWN_BUFFERS;
|
||||
nand->options &= ~NAND_SUBPAGE_READ;
|
||||
/* Setup the ecc configurations again */
|
||||
if (hardware) {
|
||||
if (eccstrength == 1) {
|
||||
|
||||
@@ -50,7 +50,7 @@ static struct phy_driver AR8021_driver = {
|
||||
static struct phy_driver AR8031_driver = {
|
||||
.name = "AR8031/AR8033",
|
||||
.uid = 0x4dd074,
|
||||
.mask = 0x4fffff,
|
||||
.mask = 0xffffffef,
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.config = ar8021_config,
|
||||
.startup = genphy_startup,
|
||||
@@ -60,7 +60,7 @@ static struct phy_driver AR8031_driver = {
|
||||
static struct phy_driver AR8035_driver = {
|
||||
.name = "AR8035",
|
||||
.uid = 0x4dd072,
|
||||
.mask = 0x4fffff,
|
||||
.mask = 0xffffffef,
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.config = ar8035_config,
|
||||
.startup = genphy_startup,
|
||||
|
||||
@@ -20,21 +20,30 @@ static int fg_write_regs(struct pmic *p, u8 addr, u16 *data, int num)
|
||||
int ret = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < num; i++, addr++)
|
||||
ret |= pmic_reg_write(p, addr, *(data + i));
|
||||
for (i = 0; i < num; i++, addr++) {
|
||||
ret = pmic_reg_write(p, addr, *(data + i));
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fg_read_regs(struct pmic *p, u8 addr, u16 *data, int num)
|
||||
{
|
||||
unsigned int dat;
|
||||
int ret = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < num; i++, addr++)
|
||||
ret |= pmic_reg_read(p, addr, (u32 *) (data + i));
|
||||
for (i = 0; i < num; i++, addr++) {
|
||||
ret = pmic_reg_read(p, addr, &dat);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return ret;
|
||||
*(data + i) = (u16)dat;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fg_write_and_verify(struct pmic *p, u8 addr, u16 data)
|
||||
@@ -57,9 +66,13 @@ static int fg_write_and_verify(struct pmic *p, u8 addr, u16 data)
|
||||
static void por_fuelgauge_init(struct pmic *p)
|
||||
{
|
||||
u16 r_data0[16], r_data1[16], r_data2[16];
|
||||
u32 rewrite_count = 5, i = 0;
|
||||
unsigned int val;
|
||||
int ret = 0;
|
||||
u32 rewrite_count = 5;
|
||||
u32 check_count;
|
||||
u32 lock_count;
|
||||
u32 i = 0;
|
||||
u32 val;
|
||||
s32 ret = 0;
|
||||
char *status_msg;
|
||||
|
||||
/* Delay 500 ms */
|
||||
mdelay(500);
|
||||
@@ -67,29 +80,55 @@ static void por_fuelgauge_init(struct pmic *p)
|
||||
pmic_reg_write(p, MAX17042_CONFIG, 0x2310);
|
||||
|
||||
rewrite_model:
|
||||
check_count = 5;
|
||||
lock_count = 5;
|
||||
|
||||
if (!rewrite_count--) {
|
||||
status_msg = "init failed!";
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* Unlock Model Access */
|
||||
pmic_reg_write(p, MAX17042_MLOCKReg1, MODEL_UNLOCK1);
|
||||
pmic_reg_write(p, MAX17042_MLOCKReg2, MODEL_UNLOCK2);
|
||||
|
||||
/* Write/Read/Verify the Custom Model */
|
||||
ret |= fg_write_regs(p, MAX17042_MODEL1, cell_character0,
|
||||
ret = fg_write_regs(p, MAX17042_MODEL1, cell_character0,
|
||||
ARRAY_SIZE(cell_character0));
|
||||
ret |= fg_write_regs(p, MAX17042_MODEL2, cell_character1,
|
||||
ARRAY_SIZE(cell_character1));
|
||||
ret |= fg_write_regs(p, MAX17042_MODEL3, cell_character2,
|
||||
ARRAY_SIZE(cell_character2));
|
||||
if (ret)
|
||||
goto rewrite_model;
|
||||
|
||||
if (ret) {
|
||||
printf("%s: Cell parameters write failed!\n", __func__);
|
||||
return;
|
||||
ret = fg_write_regs(p, MAX17042_MODEL2, cell_character1,
|
||||
ARRAY_SIZE(cell_character1));
|
||||
if (ret)
|
||||
goto rewrite_model;
|
||||
|
||||
ret = fg_write_regs(p, MAX17042_MODEL3, cell_character2,
|
||||
ARRAY_SIZE(cell_character2));
|
||||
if (ret)
|
||||
goto rewrite_model;
|
||||
|
||||
check_model:
|
||||
if (!check_count--) {
|
||||
if (rewrite_count)
|
||||
goto rewrite_model;
|
||||
else
|
||||
status_msg = "check failed!";
|
||||
|
||||
goto error;
|
||||
}
|
||||
|
||||
ret |= fg_read_regs(p, MAX17042_MODEL1, r_data0, ARRAY_SIZE(r_data0));
|
||||
ret |= fg_read_regs(p, MAX17042_MODEL2, r_data1, ARRAY_SIZE(r_data1));
|
||||
ret |= fg_read_regs(p, MAX17042_MODEL3, r_data2, ARRAY_SIZE(r_data2));
|
||||
|
||||
ret = fg_read_regs(p, MAX17042_MODEL1, r_data0, ARRAY_SIZE(r_data0));
|
||||
if (ret)
|
||||
printf("%s: Cell parameters read failed!\n", __func__);
|
||||
goto check_model;
|
||||
|
||||
ret = fg_read_regs(p, MAX17042_MODEL2, r_data1, ARRAY_SIZE(r_data1));
|
||||
if (ret)
|
||||
goto check_model;
|
||||
|
||||
ret = fg_read_regs(p, MAX17042_MODEL3, r_data2, ARRAY_SIZE(r_data2));
|
||||
if (ret)
|
||||
goto check_model;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
if ((cell_character0[i] != r_data0[i])
|
||||
@@ -98,29 +137,37 @@ rewrite_model:
|
||||
goto rewrite_model;
|
||||
}
|
||||
|
||||
lock_model:
|
||||
if (!lock_count--) {
|
||||
if (rewrite_count)
|
||||
goto rewrite_model;
|
||||
else
|
||||
status_msg = "lock failed!";
|
||||
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* Lock model access */
|
||||
pmic_reg_write(p, MAX17042_MLOCKReg1, MODEL_LOCK1);
|
||||
pmic_reg_write(p, MAX17042_MLOCKReg2, MODEL_LOCK2);
|
||||
|
||||
/* Verify the model access is locked */
|
||||
ret |= fg_read_regs(p, MAX17042_MODEL1, r_data0, ARRAY_SIZE(r_data0));
|
||||
ret |= fg_read_regs(p, MAX17042_MODEL2, r_data1, ARRAY_SIZE(r_data1));
|
||||
ret |= fg_read_regs(p, MAX17042_MODEL3, r_data2, ARRAY_SIZE(r_data2));
|
||||
ret = fg_read_regs(p, MAX17042_MODEL1, r_data0, ARRAY_SIZE(r_data0));
|
||||
if (ret)
|
||||
goto lock_model;
|
||||
|
||||
if (ret) {
|
||||
printf("%s: Cell parameters read failed!\n", __func__);
|
||||
return;
|
||||
}
|
||||
ret = fg_read_regs(p, MAX17042_MODEL2, r_data1, ARRAY_SIZE(r_data1));
|
||||
if (ret)
|
||||
goto lock_model;
|
||||
|
||||
ret = fg_read_regs(p, MAX17042_MODEL3, r_data2, ARRAY_SIZE(r_data2));
|
||||
if (ret)
|
||||
goto lock_model;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(r_data0); i++) {
|
||||
/* Check if model locked */
|
||||
if (r_data0[i] || r_data1[i] || r_data2[i]) {
|
||||
/* Rewrite model data - prevent from endless loop */
|
||||
if (rewrite_count--) {
|
||||
puts("FG - Lock model access failed!\n");
|
||||
goto rewrite_model;
|
||||
}
|
||||
}
|
||||
if (r_data0[i] || r_data1[i] || r_data2[i])
|
||||
goto lock_model;
|
||||
}
|
||||
|
||||
/* Write Custom Parameters */
|
||||
@@ -137,6 +184,11 @@ rewrite_model:
|
||||
|
||||
/* Delay at least 350 ms */
|
||||
mdelay(350);
|
||||
|
||||
status_msg = "OK!";
|
||||
error:
|
||||
debug("%s: model init status: %s\n", p->name, status_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
static int power_update_battery(struct pmic *p, struct pmic *bat)
|
||||
@@ -178,7 +230,7 @@ static int power_check_battery(struct pmic *p, struct pmic *bat)
|
||||
ret |= pmic_reg_read(p, MAX17042_STATUS, &val);
|
||||
debug("fg status: 0x%x\n", val);
|
||||
|
||||
if (val == MAX17042_POR)
|
||||
if (val & MAX17042_POR)
|
||||
por_fuelgauge_init(p);
|
||||
|
||||
ret |= pmic_reg_read(p, MAX17042_VERSION, &val);
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <common.h>
|
||||
#include <malloc.h>
|
||||
#include <spi.h>
|
||||
#include <asm/arch/rmobile.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/* SH QSPI register bit masks <REG>_<BIT> */
|
||||
@@ -170,7 +171,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ss->regs = (struct sh_qspi_regs *)CONFIG_SH_QSPI_BASE;
|
||||
ss->regs = (struct sh_qspi_regs *)SH_QSPI_BASE;
|
||||
|
||||
/* Init SH QSPI */
|
||||
sh_qspi_init(ss);
|
||||
|
||||
@@ -41,7 +41,7 @@ void ext4fs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info)
|
||||
get_fs()->dev_desc = rbdd;
|
||||
part_info = info;
|
||||
part_offset = info->start;
|
||||
get_fs()->total_sect = (info->size * info->blksz) >>
|
||||
get_fs()->total_sect = ((uint64_t)info->size * info->blksz) >>
|
||||
get_fs()->dev_desc->log2blksz;
|
||||
}
|
||||
|
||||
|
||||
@@ -445,9 +445,9 @@ restart:
|
||||
goto fail;
|
||||
}
|
||||
put_ext4(((uint64_t)
|
||||
(g_parent_inode->b.
|
||||
((uint64_t)g_parent_inode->b.
|
||||
blocks.dir_blocks[direct_blk_idx] *
|
||||
fs->blksz)), zero_buffer, fs->blksz);
|
||||
(uint64_t)fs->blksz)), zero_buffer, fs->blksz);
|
||||
g_parent_inode->size =
|
||||
g_parent_inode->size + fs->blksz;
|
||||
g_parent_inode->blockcnt =
|
||||
@@ -864,8 +864,8 @@ long int ext4fs_get_new_blk_no(void)
|
||||
for (i = 0; i < fs->no_blkgrp; i++) {
|
||||
if (bgd[i].free_blocks) {
|
||||
if (bgd[i].bg_flags & EXT4_BG_BLOCK_UNINIT) {
|
||||
put_ext4(((uint64_t) (bgd[i].block_id *
|
||||
fs->blksz)),
|
||||
put_ext4(((uint64_t) ((uint64_t)bgd[i].block_id *
|
||||
(uint64_t)fs->blksz)),
|
||||
zero_buffer, fs->blksz);
|
||||
bgd[i].bg_flags =
|
||||
bgd[i].
|
||||
@@ -929,8 +929,8 @@ restart:
|
||||
|
||||
if (bgd[bg_idx].bg_flags & EXT4_BG_BLOCK_UNINIT) {
|
||||
memset(zero_buffer, '\0', fs->blksz);
|
||||
put_ext4(((uint64_t) (bgd[bg_idx].block_id *
|
||||
fs->blksz)), zero_buffer, fs->blksz);
|
||||
put_ext4(((uint64_t) ((uint64_t)bgd[bg_idx].block_id *
|
||||
(uint64_t)fs->blksz)), zero_buffer, fs->blksz);
|
||||
memcpy(fs->blk_bmaps[bg_idx], zero_buffer, fs->blksz);
|
||||
bgd[bg_idx].bg_flags = bgd[bg_idx].bg_flags &
|
||||
~EXT4_BG_BLOCK_UNINIT;
|
||||
@@ -996,8 +996,8 @@ int ext4fs_get_new_inode_no(void)
|
||||
bgd[i].free_inodes;
|
||||
if (bgd[i].bg_flags & EXT4_BG_INODE_UNINIT) {
|
||||
put_ext4(((uint64_t)
|
||||
(bgd[i].inode_id *
|
||||
fs->blksz)),
|
||||
((uint64_t)bgd[i].inode_id *
|
||||
(uint64_t)fs->blksz)),
|
||||
zero_buffer, fs->blksz);
|
||||
bgd[i].bg_flags = bgd[i].bg_flags &
|
||||
~EXT4_BG_INODE_UNINIT;
|
||||
@@ -1037,8 +1037,8 @@ restart:
|
||||
ibmap_idx = fs->curr_inode_no / inodes_per_grp;
|
||||
if (bgd[ibmap_idx].bg_flags & EXT4_BG_INODE_UNINIT) {
|
||||
memset(zero_buffer, '\0', fs->blksz);
|
||||
put_ext4(((uint64_t) (bgd[ibmap_idx].inode_id *
|
||||
fs->blksz)), zero_buffer,
|
||||
put_ext4(((uint64_t) ((uint64_t)bgd[ibmap_idx].inode_id *
|
||||
(uint64_t)fs->blksz)), zero_buffer,
|
||||
fs->blksz);
|
||||
bgd[ibmap_idx].bg_flags =
|
||||
bgd[ibmap_idx].bg_flags & ~EXT4_BG_INODE_UNINIT;
|
||||
@@ -1143,7 +1143,7 @@ static void alloc_single_indirect_block(struct ext2_inode *file_inode,
|
||||
}
|
||||
|
||||
/* write the block to disk */
|
||||
put_ext4(((uint64_t) (si_blockno * fs->blksz)),
|
||||
put_ext4(((uint64_t) ((uint64_t)si_blockno * (uint64_t)fs->blksz)),
|
||||
si_start_addr, fs->blksz);
|
||||
file_inode->b.blocks.indir_block = si_blockno;
|
||||
}
|
||||
@@ -1242,7 +1242,7 @@ static void alloc_double_indirect_block(struct ext2_inode *file_inode,
|
||||
break;
|
||||
}
|
||||
/* write the block table */
|
||||
put_ext4(((uint64_t) (di_blockno_child * fs->blksz)),
|
||||
put_ext4(((uint64_t) ((uint64_t)di_blockno_child * (uint64_t)fs->blksz)),
|
||||
di_child_buff_start, fs->blksz);
|
||||
free(di_child_buff_start);
|
||||
di_child_buff_start = NULL;
|
||||
@@ -1250,7 +1250,7 @@ static void alloc_double_indirect_block(struct ext2_inode *file_inode,
|
||||
if (*total_remaining_blocks == 0)
|
||||
break;
|
||||
}
|
||||
put_ext4(((uint64_t) (di_blockno_parent * fs->blksz)),
|
||||
put_ext4(((uint64_t) ((uint64_t)di_blockno_parent * (uint64_t)fs->blksz)),
|
||||
di_block_start_addr, fs->blksz);
|
||||
file_inode->b.blocks.double_indir_block = di_blockno_parent;
|
||||
}
|
||||
@@ -1348,8 +1348,8 @@ static void alloc_triple_indirect_block(struct ext2_inode *file_inode,
|
||||
break;
|
||||
}
|
||||
/* write the child block */
|
||||
put_ext4(((uint64_t) (ti_child_blockno *
|
||||
fs->blksz)),
|
||||
put_ext4(((uint64_t) ((uint64_t)ti_child_blockno *
|
||||
(uint64_t)fs->blksz)),
|
||||
ti_cbuff_start_addr, fs->blksz);
|
||||
free(ti_cbuff_start_addr);
|
||||
|
||||
@@ -1357,7 +1357,7 @@ static void alloc_triple_indirect_block(struct ext2_inode *file_inode,
|
||||
break;
|
||||
}
|
||||
/* write the parent block */
|
||||
put_ext4(((uint64_t) (ti_parent_blockno * fs->blksz)),
|
||||
put_ext4(((uint64_t) ((uint64_t)ti_parent_blockno * (uint64_t)fs->blksz)),
|
||||
ti_pbuff_start_addr, fs->blksz);
|
||||
free(ti_pbuff_start_addr);
|
||||
|
||||
@@ -1365,7 +1365,7 @@ static void alloc_triple_indirect_block(struct ext2_inode *file_inode,
|
||||
break;
|
||||
}
|
||||
/* write the grand parent block */
|
||||
put_ext4(((uint64_t) (ti_gp_blockno * fs->blksz)),
|
||||
put_ext4(((uint64_t) ((uint64_t)ti_gp_blockno * (uint64_t)fs->blksz)),
|
||||
ti_gp_buff_start_addr, fs->blksz);
|
||||
file_inode->b.blocks.triple_indir_block = ti_gp_blockno;
|
||||
}
|
||||
@@ -1414,7 +1414,7 @@ static struct ext4_extent_header *ext4fs_get_extent_block
|
||||
{
|
||||
struct ext4_extent_idx *index;
|
||||
unsigned long long block;
|
||||
struct ext_filesystem *fs = get_fs();
|
||||
int blksz = EXT2_BLOCK_SIZE(data);
|
||||
int i;
|
||||
|
||||
while (1) {
|
||||
@@ -1430,7 +1430,7 @@ static struct ext4_extent_header *ext4fs_get_extent_block
|
||||
i++;
|
||||
if (i >= le16_to_cpu(ext_block->eh_entries))
|
||||
break;
|
||||
} while (fileblock > le32_to_cpu(index[i].ei_block));
|
||||
} while (fileblock >= le32_to_cpu(index[i].ei_block));
|
||||
|
||||
if (--i < 0)
|
||||
return 0;
|
||||
@@ -1438,7 +1438,7 @@ static struct ext4_extent_header *ext4fs_get_extent_block
|
||||
block = le16_to_cpu(index[i].ei_leaf_hi);
|
||||
block = (block << 32) + le32_to_cpu(index[i].ei_leaf_lo);
|
||||
|
||||
if (ext4fs_devread((lbaint_t)block << log2_blksz, 0, fs->blksz,
|
||||
if (ext4fs_devread((lbaint_t)block << log2_blksz, 0, blksz,
|
||||
buf))
|
||||
ext_block = (struct ext4_extent_header *)buf;
|
||||
else
|
||||
|
||||
@@ -371,7 +371,7 @@ void recover_transaction(int prev_desc_logical_no)
|
||||
blknr = read_allocated_block(&inode_journal, i);
|
||||
ext4fs_devread((lbaint_t)blknr * fs->sect_perblk, 0,
|
||||
fs->blksz, metadata_buff);
|
||||
put_ext4((uint64_t)(be32_to_cpu(tag->block) * fs->blksz),
|
||||
put_ext4((uint64_t)((uint64_t)be32_to_cpu(tag->block) * (uint64_t)fs->blksz),
|
||||
metadata_buff, (uint32_t) fs->blksz);
|
||||
} while (!(flags & EXT3_JOURNAL_FLAG_LAST_TAG));
|
||||
fail:
|
||||
@@ -531,7 +531,7 @@ end:
|
||||
|
||||
blknr = read_allocated_block(&inode_journal,
|
||||
EXT2_JOURNAL_SUPERBLOCK);
|
||||
put_ext4((uint64_t) (blknr * fs->blksz),
|
||||
put_ext4((uint64_t) ((uint64_t)blknr * (uint64_t)fs->blksz),
|
||||
(struct journal_superblock_t *)temp_buff,
|
||||
(uint32_t) fs->blksz);
|
||||
ext4fs_free_revoke_blks();
|
||||
@@ -590,7 +590,7 @@ static void update_descriptor_block(long int blknr)
|
||||
tag.flags = cpu_to_be32(EXT3_JOURNAL_FLAG_LAST_TAG);
|
||||
memcpy(temp - sizeof(struct ext3_journal_block_tag), &tag,
|
||||
sizeof(struct ext3_journal_block_tag));
|
||||
put_ext4((uint64_t) (blknr * fs->blksz), buf, (uint32_t) fs->blksz);
|
||||
put_ext4((uint64_t) ((uint64_t)blknr * (uint64_t)fs->blksz), buf, (uint32_t) fs->blksz);
|
||||
|
||||
free(temp_buff);
|
||||
free(buf);
|
||||
@@ -625,7 +625,7 @@ static void update_commit_block(long int blknr)
|
||||
return;
|
||||
}
|
||||
memcpy(buf, &jdb, sizeof(struct journal_header_t));
|
||||
put_ext4((uint64_t) (blknr * fs->blksz), buf, (uint32_t) fs->blksz);
|
||||
put_ext4((uint64_t) ((uint64_t)blknr * (uint64_t)fs->blksz), buf, (uint32_t) fs->blksz);
|
||||
|
||||
free(temp_buff);
|
||||
free(buf);
|
||||
|
||||
@@ -40,18 +40,18 @@ static void ext4fs_update(void)
|
||||
/* update block groups */
|
||||
for (i = 0; i < fs->no_blkgrp; i++) {
|
||||
fs->bgd[i].bg_checksum = ext4fs_checksum_update(i);
|
||||
put_ext4((uint64_t)(fs->bgd[i].block_id * fs->blksz),
|
||||
put_ext4((uint64_t)((uint64_t)fs->bgd[i].block_id * (uint64_t)fs->blksz),
|
||||
fs->blk_bmaps[i], fs->blksz);
|
||||
}
|
||||
|
||||
/* update inode table groups */
|
||||
for (i = 0; i < fs->no_blkgrp; i++) {
|
||||
put_ext4((uint64_t) (fs->bgd[i].inode_id * fs->blksz),
|
||||
put_ext4((uint64_t) ((uint64_t)fs->bgd[i].inode_id * (uint64_t)fs->blksz),
|
||||
fs->inode_bmaps[i], fs->blksz);
|
||||
}
|
||||
|
||||
/* update the block group descriptor table */
|
||||
put_ext4((uint64_t)(fs->gdtable_blkno * fs->blksz),
|
||||
put_ext4((uint64_t)((uint64_t)fs->gdtable_blkno * (uint64_t)fs->blksz),
|
||||
(struct ext2_block_group *)fs->gdtable,
|
||||
(fs->blksz * fs->no_blk_pergdt));
|
||||
|
||||
@@ -709,7 +709,7 @@ void ext4fs_deinit(void)
|
||||
temp_buff);
|
||||
jsb = (struct journal_superblock_t *)temp_buff;
|
||||
jsb->s_start = cpu_to_be32(0);
|
||||
put_ext4((uint64_t) (blknr * fs->blksz),
|
||||
put_ext4((uint64_t) ((uint64_t)blknr * (uint64_t)fs->blksz),
|
||||
(struct journal_superblock_t *)temp_buff, fs->blksz);
|
||||
free(temp_buff);
|
||||
}
|
||||
@@ -793,7 +793,7 @@ static int ext4fs_write_file(struct ext2_inode *file_inode,
|
||||
delayed_next += blockend >> log2blksz;
|
||||
} else { /* spill */
|
||||
put_ext4((uint64_t)
|
||||
(delayed_start << log2blksz),
|
||||
((uint64_t)delayed_start << log2blksz),
|
||||
delayed_buf,
|
||||
(uint32_t) delayed_extent);
|
||||
previous_block_number = blknr;
|
||||
@@ -814,7 +814,7 @@ static int ext4fs_write_file(struct ext2_inode *file_inode,
|
||||
} else {
|
||||
if (previous_block_number != -1) {
|
||||
/* spill */
|
||||
put_ext4((uint64_t) (delayed_start <<
|
||||
put_ext4((uint64_t) ((uint64_t)delayed_start <<
|
||||
log2blksz),
|
||||
delayed_buf,
|
||||
(uint32_t) delayed_extent);
|
||||
@@ -826,7 +826,7 @@ static int ext4fs_write_file(struct ext2_inode *file_inode,
|
||||
}
|
||||
if (previous_block_number != -1) {
|
||||
/* spill */
|
||||
put_ext4((uint64_t) (delayed_start << log2blksz),
|
||||
put_ext4((uint64_t) ((uint64_t)delayed_start << log2blksz),
|
||||
delayed_buf, (uint32_t) delayed_extent);
|
||||
previous_block_number = -1;
|
||||
}
|
||||
|
||||
@@ -232,7 +232,6 @@ int yaffs_summary_read(struct yaffs_dev *dev,
|
||||
if (result == YAFFS_OK) {
|
||||
/* Verify header */
|
||||
if (hdr.version != YAFFS_SUMMARY_VERSION ||
|
||||
hdr.block != blk ||
|
||||
hdr.seq != bi->seq_number ||
|
||||
hdr.sum != yaffs_summary_sum(dev))
|
||||
result = YAFFS_FAIL;
|
||||
|
||||
226
include/configs/hummingboard.h
Normal file
226
include/configs/hummingboard.h
Normal file
@@ -0,0 +1,226 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Freescale Semiconductor, Inc.
|
||||
* Copyright (C) 2013 SolidRun ltd.
|
||||
* Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>
|
||||
*
|
||||
* Configuration settings for the SolidRun Hummingboard.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#include "mx6_common.h"
|
||||
#include <asm/arch/imx-regs.h>
|
||||
#include <asm/imx-common/gpio.h>
|
||||
#include <asm/sizes.h>
|
||||
|
||||
#define CONFIG_MX6
|
||||
#define CONFIG_DISPLAY_CPUINFO
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
|
||||
#define CONFIG_MACH_TYPE 4773
|
||||
|
||||
#define CONFIG_CMDLINE_TAG
|
||||
#define CONFIG_SETUP_MEMORY_TAGS
|
||||
#define CONFIG_INITRD_TAG
|
||||
#define CONFIG_REVISION_TAG
|
||||
|
||||
/* Size of malloc() pool */
|
||||
#define CONFIG_SYS_MALLOC_LEN (2 * SZ_1M)
|
||||
|
||||
#define CONFIG_BOARD_EARLY_INIT_F
|
||||
#define CONFIG_MXC_GPIO
|
||||
|
||||
#define CONFIG_MXC_UART
|
||||
#define CONFIG_MXC_UART_BASE UART1_BASE
|
||||
|
||||
/* allow to overwrite serial and ethaddr */
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
#define CONFIG_CONS_INDEX 1
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
|
||||
/* Command definition */
|
||||
#include <config_cmd_default.h>
|
||||
|
||||
#undef CONFIG_CMD_IMLS
|
||||
#undef CONFIG_CMD_I2C
|
||||
|
||||
#define CONFIG_CMD_BMODE
|
||||
#define CONFIG_CMD_SETEXPR
|
||||
#define CONFIG_CMD_MEMTEST
|
||||
#define CONFIG_BOOTDELAY 3
|
||||
|
||||
#define CONFIG_SYS_MEMTEST_START 0x10000000
|
||||
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 500 * SZ_1M)
|
||||
#define CONFIG_LOADADDR 0x12000000
|
||||
#define CONFIG_SYS_TEXT_BASE 0x17800000
|
||||
|
||||
/* MMC Configuration */
|
||||
#define CONFIG_FSL_ESDHC
|
||||
#define CONFIG_FSL_USDHC
|
||||
#define CONFIG_SYS_FSL_USDHC_NUM 1
|
||||
#define CONFIG_SYS_FSL_ESDHC_ADDR 0
|
||||
|
||||
#define CONFIG_MMC
|
||||
#define CONFIG_CMD_MMC
|
||||
#define CONFIG_GENERIC_MMC
|
||||
#define CONFIG_BOUNCE_BUFFER
|
||||
#define CONFIG_CMD_EXT2
|
||||
#define CONFIG_CMD_FAT
|
||||
#define CONFIG_DOS_PARTITION
|
||||
|
||||
/* Ethernet Configuration */
|
||||
#define CONFIG_FEC_MXC
|
||||
#ifdef CONFIG_FEC_MXC
|
||||
#define CONFIG_CMD_PING
|
||||
#define CONFIG_CMD_DHCP
|
||||
#define CONFIG_CMD_MII
|
||||
#define CONFIG_CMD_NET
|
||||
#define CONFIG_MII
|
||||
#define IMX_FEC_BASE ENET_BASE_ADDR
|
||||
#define CONFIG_FEC_XCV_TYPE RGMII
|
||||
#define CONFIG_FEC_MXC_PHYADDR 0
|
||||
#define CONFIG_PHYLIB
|
||||
#define CONFIG_PHY_ATHEROS
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_MX6S)
|
||||
#define CONFIG_DEFAULT_FDT_FILE "imx6dl-hummingboard.dtb"
|
||||
#endif
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"script=boot.scr\0" \
|
||||
"uimage=uImage\0" \
|
||||
"console=ttymxc0\0" \
|
||||
"splashpos=m,m\0" \
|
||||
"fdt_high=0xffffffff\0" \
|
||||
"initrd_high=0xffffffff\0" \
|
||||
"fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"fdt_addr=0x18000000\0" \
|
||||
"boot_fdt=try\0" \
|
||||
"ip_dyn=yes\0" \
|
||||
"mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
|
||||
"mmcpart=1\0" \
|
||||
"mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
|
||||
"update_sd_firmware_filename=u-boot.imx\0" \
|
||||
"update_sd_firmware=" \
|
||||
"if test ${ip_dyn} = yes; then " \
|
||||
"setenv get_cmd dhcp; " \
|
||||
"else " \
|
||||
"setenv get_cmd tftp; " \
|
||||
"fi; " \
|
||||
"if mmc dev ${mmcdev}; then " \
|
||||
"if ${get_cmd} ${update_sd_firmware_filename}; then " \
|
||||
"setexpr fw_sz ${filesize} / 0x200; " \
|
||||
"setexpr fw_sz ${fw_sz} + 1; " \
|
||||
"mmc write ${loadaddr} 0x2 ${fw_sz}; " \
|
||||
"fi; " \
|
||||
"fi\0" \
|
||||
"mmcargs=setenv bootargs console=${console},${baudrate} " \
|
||||
"root=${mmcroot}\0" \
|
||||
"loadbootscript=" \
|
||||
"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
|
||||
"bootscript=echo Running bootscript from mmc ...; " \
|
||||
"source\0" \
|
||||
"loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
|
||||
"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
|
||||
"mmcboot=echo Booting from mmc ...; " \
|
||||
"run mmcargs; " \
|
||||
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
"if run loadfdt; then " \
|
||||
"bootm ${loadaddr} - ${fdt_addr}; " \
|
||||
"else " \
|
||||
"if test ${boot_fdt} = try; then " \
|
||||
"bootm; " \
|
||||
"else " \
|
||||
"echo WARN: Cannot load the DT; " \
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else " \
|
||||
"bootm; " \
|
||||
"fi;\0" \
|
||||
"netargs=setenv bootargs console=${console},${baudrate} " \
|
||||
"root=/dev/nfs " \
|
||||
"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
|
||||
"netboot=echo Booting from net ...; " \
|
||||
"run netargs; " \
|
||||
"if test ${ip_dyn} = yes; then " \
|
||||
"setenv get_cmd dhcp; " \
|
||||
"else " \
|
||||
"setenv get_cmd tftp; " \
|
||||
"fi; " \
|
||||
"${get_cmd} ${uimage}; " \
|
||||
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
|
||||
"bootm ${loadaddr} - ${fdt_addr}; " \
|
||||
"else " \
|
||||
"if test ${boot_fdt} = try; then " \
|
||||
"bootm; " \
|
||||
"else " \
|
||||
"echo WARN: Cannot load the DT; " \
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else " \
|
||||
"bootm; " \
|
||||
"fi;\0"
|
||||
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
"mmc dev ${mmcdev}; if mmc rescan; then " \
|
||||
"if run loadbootscript; then " \
|
||||
"run bootscript; " \
|
||||
"else " \
|
||||
"if run loaduimage; then " \
|
||||
"run mmcboot; " \
|
||||
"else run netboot; " \
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else run netboot; fi"
|
||||
|
||||
/* Miscellaneous configurable options */
|
||||
#define CONFIG_SYS_LONGHELP
|
||||
#define CONFIG_SYS_HUSH_PARSER
|
||||
#define CONFIG_AUTO_COMPLETE
|
||||
#define CONFIG_SYS_CBSIZE 1024
|
||||
|
||||
/* Print Buffer Size */
|
||||
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
|
||||
#define CONFIG_SYS_MAXARGS 16
|
||||
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
|
||||
|
||||
#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
|
||||
#define CONFIG_SYS_HZ 1000
|
||||
|
||||
#define CONFIG_CMDLINE_EDITING
|
||||
|
||||
/* Physical Memory Map */
|
||||
#define CONFIG_NR_DRAM_BANKS 1
|
||||
#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
|
||||
|
||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM
|
||||
#define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
|
||||
#define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE
|
||||
|
||||
#define CONFIG_SYS_INIT_SP_OFFSET \
|
||||
(CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
|
||||
#define CONFIG_SYS_INIT_SP_ADDR \
|
||||
(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
|
||||
|
||||
/* FLASH and environment organization */
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
|
||||
#define CONFIG_ENV_SIZE (8 * 1024)
|
||||
|
||||
#define CONFIG_ENV_IS_IN_MMC
|
||||
#define CONFIG_ENV_OFFSET (6 * 64 * 1024)
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0
|
||||
|
||||
#define CONFIG_OF_LIBFDT
|
||||
#define CONFIG_CMD_BOOTZ
|
||||
|
||||
#ifndef CONFIG_SYS_DCACHE_OFF
|
||||
#define CONFIG_CMD_CACHE
|
||||
#endif
|
||||
|
||||
#endif /* __CONFIG_H * */
|
||||
@@ -31,7 +31,16 @@
|
||||
#define CONFIG_CMD_DHCP
|
||||
#define CONFIG_CMD_NFS
|
||||
#define CONFIG_CMD_BOOTZ
|
||||
|
||||
#if defined(CONFIG_SYS_USE_BOOT_NORFLASH)
|
||||
#define CONFIG_CMD_FLASH
|
||||
#define CONFIG_SYS_TEXT_BASE 0x00000000
|
||||
#else
|
||||
/* SPI flash boot is default. */
|
||||
#define CONFIG_CMD_SF
|
||||
#define CONFIG_CMD_SPI
|
||||
#define CONFIG_SYS_TEXT_BASE 0xE6304000
|
||||
#endif
|
||||
|
||||
#define CONFIG_CMDLINE_TAG
|
||||
#define CONFIG_SETUP_MEMORY_TAGS
|
||||
@@ -101,7 +110,7 @@
|
||||
#define CONFIG_SYS_BOOTMAPSZ (8 * 1024 * 1024)
|
||||
|
||||
/* FLASH */
|
||||
#define CONFIG_SYS_TEXT_BASE 0x00000000
|
||||
#if defined(CONFIG_SYS_USE_BOOT_NORFLASH)
|
||||
#define CONFIG_SYS_FLASH_CFI
|
||||
#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_16BIT
|
||||
#define CONFIG_FLASH_CFI_DRIVER
|
||||
@@ -117,13 +126,28 @@
|
||||
#define CONFIG_SYS_FLASH_WRITE_TOUT 3000
|
||||
#define CONFIG_SYS_FLASH_LOCK_TOUT 3000
|
||||
#define CONFIG_SYS_FLASH_UNLOCK_TOUT 3000
|
||||
|
||||
/* ENV setting */
|
||||
#define CONFIG_ENV_IS_IN_FLASH
|
||||
#define CONFIG_ENV_OVERWRITE 1
|
||||
#define CONFIG_ENV_SECT_SIZE (256 * 1024)
|
||||
#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + \
|
||||
CONFIG_SYS_MONITOR_LEN)
|
||||
|
||||
#else /* CONFIG_SYS_USE_BOOT_NORFLASH */
|
||||
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
#define CONFIG_SPI
|
||||
#define CONFIG_SH_QSPI
|
||||
#define CONFIG_SPI_FLASH
|
||||
#define CONFIG_SPI_FLASH_BAR
|
||||
#define CONFIG_SPI_FLASH_SPANSION
|
||||
/* ENV setting */
|
||||
#define CONFIG_ENV_IS_IN_SPI_FLASH
|
||||
#define CONFIG_ENV_ADDR 0xC0000
|
||||
|
||||
#endif /* CONFIG_SYS_USE_BOOT_NORFLASH */
|
||||
|
||||
/* Common ENV setting */
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
#define CONFIG_ENV_SECT_SIZE (256 * 1024)
|
||||
#define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR)
|
||||
#define CONFIG_ENV_SIZE (CONFIG_ENV_SECT_SIZE)
|
||||
#define CONFIG_ENV_SIZE_REDUND (CONFIG_SYS_MONITOR_LEN)
|
||||
|
||||
@@ -34,7 +34,15 @@
|
||||
#define CONFIG_CMD_DHCP
|
||||
#define CONFIG_CMD_NFS
|
||||
#define CONFIG_CMD_BOOTZ
|
||||
#define CONFIG_CMD_FLASH
|
||||
|
||||
#if defined(CONFIG_SYS_USE_BOOT_NORFLASH)
|
||||
#define CONFIG_CMD_FLASH
|
||||
#define CONFIG_SYS_TEXT_BASE 0x00000000
|
||||
#else
|
||||
#define CONFIG_CMD_SF
|
||||
#define CONFIG_CMD_SPI
|
||||
#define CONFIG_SYS_TEXT_BASE 0xE8080000
|
||||
#endif
|
||||
|
||||
#define CONFIG_CMDLINE_TAG
|
||||
#define CONFIG_SETUP_MEMORY_TAGS
|
||||
@@ -104,8 +112,8 @@
|
||||
#define CONFIG_SYS_GBL_DATA_SIZE (256)
|
||||
#define CONFIG_SYS_BOOTMAPSZ (8 * 1024 * 1024)
|
||||
|
||||
#if defined(CONFIG_SYS_USE_BOOT_NORFLASH)
|
||||
/* USE NOR FLASH */
|
||||
#define CONFIG_SYS_TEXT_BASE 0x00000000
|
||||
#define CONFIG_SYS_FLASH_CFI
|
||||
#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_16BIT
|
||||
#define CONFIG_FLASH_CFI_DRIVER
|
||||
@@ -124,10 +132,27 @@
|
||||
|
||||
/* ENV setting */
|
||||
#define CONFIG_ENV_IS_IN_FLASH
|
||||
#define CONFIG_ENV_OVERWRITE 1
|
||||
#define CONFIG_ENV_SECT_SIZE (256 * 1024)
|
||||
#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + \
|
||||
CONFIG_SYS_MONITOR_LEN)
|
||||
|
||||
#else /* CONFIG_SYS_USE_BOOT_NORFLASH */
|
||||
|
||||
/* USE SPI */
|
||||
#define CONFIG_SPI
|
||||
#define CONFIG_SPI_FLASH_BAR
|
||||
#define CONFIG_SH_QSPI
|
||||
#define CONFIG_SPI_FLASH
|
||||
#define CONFIG_SPI_FLASH_SPANSION
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
|
||||
/* ENV setting */
|
||||
#define CONFIG_ENV_IS_IN_SPI_FLASH
|
||||
#define CONFIG_ENV_ADDR 0xC0000
|
||||
#endif
|
||||
|
||||
/* Common ENV setting */
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
#define CONFIG_ENV_SECT_SIZE (256 * 1024)
|
||||
#define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR)
|
||||
#define CONFIG_ENV_SIZE (CONFIG_ENV_SECT_SIZE)
|
||||
#define CONFIG_ENV_SIZE_REDUND (CONFIG_SYS_MONITOR_LEN)
|
||||
|
||||
@@ -1,163 +0,0 @@
|
||||
/*
|
||||
* include/configs/mx1ads.h
|
||||
*
|
||||
* (c) Copyright 2004
|
||||
* Techware Information Technology, Inc.
|
||||
* http://www.techware.com.tw/
|
||||
*
|
||||
* Ming-Len Wu <minglen_wu@techware.com.tw>
|
||||
*
|
||||
* This is the Configuration setting for Motorola MX1ADS board
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
/*
|
||||
* High Level Configuration Options
|
||||
* (easy to change)
|
||||
*/
|
||||
#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
|
||||
#define CONFIG_IMX 1 /* It's a Motorola MC9328 SoC */
|
||||
#define CONFIG_MX1ADS 1 /* on a Motorola MX1ADS Board */
|
||||
|
||||
/*
|
||||
* Select serial console configuration
|
||||
*/
|
||||
#define CONFIG_IMX_SERIAL
|
||||
#define CONFIG_IMX_SERIAL1 /* internal uart 1 */
|
||||
/* #define _CONFIG_UART2 */ /* internal uart 2 */
|
||||
/* #define CONFIG_SILENT_CONSOLE */ /* use this to disable output */
|
||||
|
||||
#define CONFIG_BOARD_LATE_INIT
|
||||
#define USE_920T_MMU 1
|
||||
|
||||
#if 0
|
||||
#define CONFIG_SYS_MX1_GPCR 0x000003AB /* for MX1ADS 0L44N */
|
||||
#define CONFIG_SYS_MX1_GPCR 0x000003AB /* for MX1ADS 0L44N */
|
||||
#define CONFIG_SYS_MX1_GPCR 0x000003AB /* for MX1ADS 0L44N */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Size of malloc() pool
|
||||
*/
|
||||
|
||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024)
|
||||
|
||||
/*
|
||||
* CS8900 Ethernet drivers
|
||||
*/
|
||||
#define CONFIG_CS8900 /* we have a CS8900 on-board */
|
||||
#define CONFIG_CS8900_BASE 0x15000300
|
||||
#define CONFIG_CS8900_BUS16 /* the Linux driver does accesses as shorts */
|
||||
|
||||
/*
|
||||
* select serial console configuration
|
||||
*/
|
||||
|
||||
/* #define CONFIG_UART1 */
|
||||
/* #define CONFIG_UART2 1 */
|
||||
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
|
||||
/*
|
||||
* BOOTP options
|
||||
*/
|
||||
#define CONFIG_BOOTP_BOOTFILESIZE
|
||||
#define CONFIG_BOOTP_BOOTPATH
|
||||
#define CONFIG_BOOTP_GATEWAY
|
||||
#define CONFIG_BOOTP_HOSTNAME
|
||||
|
||||
/*
|
||||
* Command line configuration.
|
||||
*/
|
||||
#include <config_cmd_default.h>
|
||||
|
||||
#define CONFIG_CMD_CACHE
|
||||
#define CONFIG_CMD_REGINFO
|
||||
#define CONFIG_CMD_ELF
|
||||
|
||||
#define CONFIG_BOOTDELAY 3
|
||||
#define CONFIG_BOOTARGS "root=/dev/msdk mem=48M"
|
||||
#define CONFIG_BOOTFILE "mx1ads"
|
||||
#define CONFIG_BOOTCOMMAND "tftp; bootm"
|
||||
|
||||
#if defined(CONFIG_CMD_KGDB)
|
||||
#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Miscellaneous configurable options
|
||||
*/
|
||||
|
||||
#define CONFIG_SYS_HUSH_PARSER 1
|
||||
|
||||
#define CONFIG_SYS_LONGHELP /* undef to save memory */
|
||||
|
||||
#ifdef CONFIG_SYS_HUSH_PARSER
|
||||
#define CONFIG_SYS_PROMPT "MX1ADS$ " /* Monitor Command Prompt */
|
||||
#else
|
||||
#define CONFIG_SYS_PROMPT "MX1ADS=> " /* Monitor Command Prompt */
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
|
||||
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
|
||||
/* Print Buffer Size */
|
||||
#define CONFIG_SYS_MAXARGS 16 /* max number of command args */
|
||||
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size */
|
||||
|
||||
#define CONFIG_SYS_MEMTEST_START 0x09000000 /* memtest works on */
|
||||
#define CONFIG_SYS_MEMTEST_END 0x0AF00000 /* 63 MB in DRAM */
|
||||
|
||||
#define CONFIG_SYS_LOAD_ADDR 0x08800000 /* default load address */
|
||||
#define CONFIG_SYS_HZ 3686400
|
||||
#define CONFIG_SYS_CPUSPEED 0x141
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Physical Memory Map
|
||||
*/
|
||||
|
||||
#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of SDRAM */
|
||||
#define PHYS_SDRAM_1 0x08000000 /* SDRAM on CSD0 */
|
||||
#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
|
||||
|
||||
#define CONFIG_SYS_TEXT_BASE 0x10000000
|
||||
|
||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||
#define CONFIG_SYS_INIT_RAM_ADDR 0x00300000
|
||||
#define CONFIG_SYS_INIT_RAM_SIZE 0x000FFFFF
|
||||
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_SIZE - \
|
||||
GENERATED_GBL_DATA_SIZE)
|
||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
|
||||
CONFIG_SYS_GBL_DATA_OFFSET)
|
||||
|
||||
#define CONFIG_SYS_MAX_FLASH_BANKS 1 /* 1 bank of SyncFlash */
|
||||
#define CONFIG_SYS_FLASH_BASE 0x0C000000 /* SyncFlash on CSD1 */
|
||||
#define FLASH_BANK_SIZE 0x01000000 /* 16 MB Total */
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* FLASH and environment organization
|
||||
*/
|
||||
|
||||
#define CONFIG_SYNCFLASH 1
|
||||
#define PHYS_FLASH_SIZE 0x01000000
|
||||
#define CONFIG_SYS_MAX_FLASH_SECT (16)
|
||||
#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE+0x00ff8000)
|
||||
|
||||
#define CONFIG_ENV_IS_IN_FLASH 1
|
||||
#define CONFIG_ENV_SIZE 0x04000 /* Total Size of Environment Sector */
|
||||
#define CONFIG_ENV_SECT_SIZE 0x100000
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Enable passing ATAGS
|
||||
*/
|
||||
|
||||
#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
|
||||
#define CONFIG_SETUP_MEMORY_TAGS 1
|
||||
|
||||
#define CONFIG_SYS_CLK_FREQ 16780000
|
||||
#define CONFIG_SYSPLL_CLK_FREQ 16000000
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
@@ -95,6 +95,28 @@
|
||||
#define CONFIG_LOADADDR 0x12000000
|
||||
#define CONFIG_SYS_TEXT_BASE 0x17800000
|
||||
|
||||
#ifdef CONFIG_SUPPORT_EMMC_BOOT
|
||||
#define EMMC_ENV \
|
||||
"emmcdev=2\0" \
|
||||
"update_emmc_firmware=" \
|
||||
"if test ${ip_dyn} = yes; then " \
|
||||
"setenv get_cmd dhcp; " \
|
||||
"else " \
|
||||
"setenv get_cmd tftp; " \
|
||||
"fi; " \
|
||||
"if ${get_cmd} ${update_sd_firmware_filename}; then " \
|
||||
"if mmc dev ${emmcdev} && " \
|
||||
"mmc open ${emmcdev} 1; then " \
|
||||
"setexpr fw_sz ${filesize} / 0x200; " \
|
||||
"setexpr fw_sz ${fw_sz} + 1; " \
|
||||
"mmc write ${loadaddr} 0x2 ${fw_sz}; " \
|
||||
"mmc close ${emmcdev} 1; " \
|
||||
"fi; " \
|
||||
"fi\0"
|
||||
#else
|
||||
#define EMMC_ENV ""
|
||||
#endif
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"script=boot.scr\0" \
|
||||
"uimage=uImage\0" \
|
||||
@@ -121,6 +143,7 @@
|
||||
"mmc write ${loadaddr} 0x2 ${fw_sz}; " \
|
||||
"fi; " \
|
||||
"fi\0" \
|
||||
EMMC_ENV \
|
||||
"mmcargs=setenv bootargs console=${console},${baudrate} " \
|
||||
"root=${mmcroot}\0" \
|
||||
"loadbootscript=" \
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
#endif
|
||||
#define PHYS_SDRAM_SIZE (1u * 1024 * 1024 * 1024)
|
||||
|
||||
#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
|
||||
|
||||
#include "mx6sabre_common.h"
|
||||
|
||||
#define CONFIG_SYS_FSL_USDHC_NUM 3
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include <asm/arch/imx-regs.h>
|
||||
#include <asm/sizes.h>
|
||||
#include "mx6_common.h"
|
||||
|
||||
#define CONFIG_MX6
|
||||
#define CONFIG_DISPLAY_CPUINFO
|
||||
|
||||
@@ -241,6 +241,8 @@
|
||||
"setenv fdtfile omap3-beagle.dtb; fi; " \
|
||||
"if test $beaglerev = Cx; then " \
|
||||
"setenv fdtfile omap3-beagle.dtb; fi; " \
|
||||
"if test $beaglerev = C4; then " \
|
||||
"setenv fdtfile omap3-beagle.dtb; fi; " \
|
||||
"if test $beaglerev = xMAB; then " \
|
||||
"setenv fdtfile omap3-beagle-xm.dtb; fi; " \
|
||||
"if test $beaglerev = xMC; then " \
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#define CONFIG_DISPLAY_CPUINFO
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
|
||||
#define CONFIG_SYS_L2CACHE_OFF
|
||||
#ifndef CONFIG_SYS_L2CACHE_OFF
|
||||
#define CONFIG_SYS_L2_PL310
|
||||
#define CONFIG_SYS_PL310_BASE 0x10502000
|
||||
@@ -143,7 +144,10 @@
|
||||
"u-boot mmc 80 400;" \
|
||||
"uImage ext4 0 2;" \
|
||||
"exynos4210-trats.dtb ext4 0 2;" \
|
||||
""PARTS_ROOT" part 0 5\0"
|
||||
""PARTS_BOOT" part 0 2;" \
|
||||
""PARTS_ROOT" part 0 5;" \
|
||||
""PARTS_DATA" part 0 6;" \
|
||||
""PARTS_UMS" part 0 7\0"
|
||||
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
#define CONFIG_SYS_CONSOLE_INFO_QUIET
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
#define CONFIG_SYS_CACHELINE_SIZE 32
|
||||
|
||||
#define CONFIG_SYS_L2CACHE_OFF
|
||||
#ifndef CONFIG_SYS_L2CACHE_OFF
|
||||
#define CONFIG_SYS_L2_PL310
|
||||
#define CONFIG_SYS_PL310_BASE 0x10502000
|
||||
@@ -114,6 +115,7 @@
|
||||
/* USB Composite download gadget - g_dnl */
|
||||
#define CONFIG_USBDOWNLOAD_GADGET
|
||||
#define CONFIG_SYS_DFU_DATA_BUF_SIZE SZ_32M
|
||||
#define DFU_DEFAULT_POLL_TIMEOUT 300
|
||||
#define CONFIG_DFU_FUNCTION
|
||||
#define CONFIG_DFU_MMC
|
||||
|
||||
@@ -173,7 +175,10 @@
|
||||
"u-boot mmc 80 800;" \
|
||||
"uImage ext4 0 2;" \
|
||||
"exynos4412-trats2.dtb ext4 0 2;" \
|
||||
""PARTS_ROOT" part 0 5\0"
|
||||
""PARTS_BOOT" part 0 2;" \
|
||||
""PARTS_ROOT" part 0 5;" \
|
||||
""PARTS_DATA" part 0 6;" \
|
||||
""PARTS_UMS" part 0 7\0"
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"bootk=" \
|
||||
|
||||
@@ -102,9 +102,9 @@
|
||||
/* Size of malloc() pool */
|
||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128 * 1024)
|
||||
|
||||
/* SMSC9115 Ethernet from SMSC9118 family */
|
||||
#define CONFIG_SMC9111 1
|
||||
#define CONFIG_SMC9111_BASE (0x1a000000)
|
||||
/* SMSC91C111 Ethernet Configuration */
|
||||
#define CONFIG_SMC91111 1
|
||||
#define CONFIG_SMC91111_BASE (0x01A000000)
|
||||
|
||||
/* PL011 Serial Configuration */
|
||||
#define CONFIG_PL011_SERIAL
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"script=boot.scr\0" \
|
||||
"uimage=uImage\0" \
|
||||
"image=zImage\0" \
|
||||
"console=ttymxc0\0" \
|
||||
"splashpos=m,m\0" \
|
||||
"fdt_high=0xffffffff\0" \
|
||||
@@ -140,22 +140,22 @@
|
||||
"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
|
||||
"bootscript=echo Running bootscript from mmc ...; " \
|
||||
"source\0" \
|
||||
"loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
|
||||
"loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
|
||||
"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
|
||||
"mmcboot=echo Booting from mmc ...; " \
|
||||
"run mmcargs; " \
|
||||
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
"if run loadfdt; then " \
|
||||
"bootm ${loadaddr} - ${fdt_addr}; " \
|
||||
"bootz ${loadaddr} - ${fdt_addr}; " \
|
||||
"else " \
|
||||
"if test ${boot_fdt} = try; then " \
|
||||
"bootm; " \
|
||||
"bootz; " \
|
||||
"else " \
|
||||
"echo WARN: Cannot load the DT; " \
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else " \
|
||||
"bootm; " \
|
||||
"bootz; " \
|
||||
"fi;\0" \
|
||||
"netargs=setenv bootargs console=${console},${baudrate} " \
|
||||
"root=/dev/nfs " \
|
||||
@@ -167,19 +167,19 @@
|
||||
"else " \
|
||||
"setenv get_cmd tftp; " \
|
||||
"fi; " \
|
||||
"${get_cmd} ${uimage}; " \
|
||||
"${get_cmd} ${image}; " \
|
||||
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
|
||||
"bootm ${loadaddr} - ${fdt_addr}; " \
|
||||
"bootz ${loadaddr} - ${fdt_addr}; " \
|
||||
"else " \
|
||||
"if test ${boot_fdt} = try; then " \
|
||||
"bootm; " \
|
||||
"bootz; " \
|
||||
"else " \
|
||||
"echo WARN: Cannot load the DT; " \
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else " \
|
||||
"bootm; " \
|
||||
"bootz; " \
|
||||
"fi;\0"
|
||||
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
@@ -187,7 +187,7 @@
|
||||
"if run loadbootscript; then " \
|
||||
"run bootscript; " \
|
||||
"else " \
|
||||
"if run loaduimage; then " \
|
||||
"if run loadimage; then " \
|
||||
"run mmcboot; " \
|
||||
"else run netboot; " \
|
||||
"fi; " \
|
||||
|
||||
@@ -102,7 +102,7 @@ int lzmaBuffToBuffDecompress (unsigned char *outStream, SizeT *uncompressedSize,
|
||||
return SZ_ERROR_OUTPUT_EOF;
|
||||
|
||||
/* Decompress */
|
||||
outProcessed = *uncompressedSize;
|
||||
outProcessed = outSizeFull;
|
||||
|
||||
WATCHDOG_RESET();
|
||||
|
||||
@@ -111,6 +111,9 @@ int lzmaBuffToBuffDecompress (unsigned char *outStream, SizeT *uncompressedSize,
|
||||
inStream + LZMA_DATA_OFFSET, &compressedSize,
|
||||
inStream, LZMA_PROPS_SIZE, LZMA_FINISH_END, &state, &g_Alloc);
|
||||
*uncompressedSize = outProcessed;
|
||||
|
||||
debug("LZMA: Uncompresed ................ 0x%zx\n", outProcessed);
|
||||
|
||||
if (res != SZ_OK) {
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ $(obj)$(BOARD)-spl.bin: $(obj)u-boot-spl.bin
|
||||
endif
|
||||
|
||||
$(obj)$(SPL_BIN).bin: $(obj)$(SPL_BIN)
|
||||
$(OBJCOPY) $(OBJCFLAGS) -O binary $< $@
|
||||
$(OBJCOPY) $(OBJCFLAGS) $(SPL_OBJCFLAGS) -O binary $< $@
|
||||
|
||||
GEN_UBOOT = \
|
||||
cd $(obj) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $(__START) \
|
||||
|
||||
1
tools/.gitignore
vendored
1
tools/.gitignore
vendored
@@ -10,6 +10,7 @@
|
||||
/mxsboot
|
||||
/ncb
|
||||
/proftool
|
||||
/relocate-rela
|
||||
/ubsha1
|
||||
/xway-swap-bytes
|
||||
/*.exe
|
||||
|
||||
Reference in New Issue
Block a user