mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
Merge branch 'master' of git://git.denx.de/u-boot-arm
This commit is contained in:
commit
d7b1970015
35 changed files with 582 additions and 291 deletions
|
@ -104,22 +104,6 @@ _bss_start_ofs:
|
||||||
_bss_end_ofs:
|
_bss_end_ofs:
|
||||||
.word _end - _start
|
.word _end - _start
|
||||||
|
|
||||||
.globl _datarel_start_ofs
|
|
||||||
_datarel_start_ofs:
|
|
||||||
.word __datarel_start - _start
|
|
||||||
|
|
||||||
.globl _datarelrolocal_start_ofs
|
|
||||||
_datarelrolocal_start_ofs:
|
|
||||||
.word __datarelrolocal_start - _start
|
|
||||||
|
|
||||||
.globl _datarellocal_start_ofs
|
|
||||||
_datarellocal_start_ofs:
|
|
||||||
.word __datarellocal_start - _start
|
|
||||||
|
|
||||||
.globl _datarelro_start_ofs
|
|
||||||
_datarelro_start_ofs:
|
|
||||||
.word __datarelro_start - _start
|
|
||||||
|
|
||||||
#ifdef CONFIG_USE_IRQ
|
#ifdef CONFIG_USE_IRQ
|
||||||
/* IRQ stack memory (calculated at run-time) */
|
/* IRQ stack memory (calculated at run-time) */
|
||||||
.globl IRQ_STACK_START
|
.globl IRQ_STACK_START
|
||||||
|
|
|
@ -20,7 +20,8 @@
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
|
@ -49,23 +50,9 @@ SECTIONS
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
.data : {
|
.data : {
|
||||||
*(.data)
|
*(.data)
|
||||||
__datarel_start = .;
|
|
||||||
*(.data.rel)
|
|
||||||
__datarelrolocal_start = .;
|
|
||||||
*(.data.rel.ro.local)
|
|
||||||
__datarellocal_start = .;
|
|
||||||
*(.data.rel.local)
|
|
||||||
__datarelro_start = .;
|
|
||||||
*(.data.rel.ro)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__rel_dyn_start = .;
|
|
||||||
.rel.dyn : { *(.rel.dyn) }
|
|
||||||
__rel_dyn_end = .;
|
|
||||||
|
|
||||||
__dynsym_start = .;
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
|
|
||||||
. = .;
|
. = .;
|
||||||
__u_boot_cmd_start = .;
|
__u_boot_cmd_start = .;
|
||||||
|
@ -73,9 +60,24 @@ SECTIONS
|
||||||
__u_boot_cmd_end = .;
|
__u_boot_cmd_end = .;
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__bss_start = .;
|
|
||||||
.bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
|
.rel.dyn : {
|
||||||
_end = .;
|
__rel_dyn_start = .;
|
||||||
|
*(.rel*)
|
||||||
|
__rel_dyn_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dynsym : {
|
||||||
|
__dynsym_start = .;
|
||||||
|
*(.dynsym)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss __rel_dyn_start (OVERLAY) : {
|
||||||
|
__bss_start = .;
|
||||||
|
*(.bss)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
/DISCARD/ : { *(.dynstr*) }
|
/DISCARD/ : { *(.dynstr*) }
|
||||||
/DISCARD/ : { *(.dynamic*) }
|
/DISCARD/ : { *(.dynamic*) }
|
||||||
|
|
|
@ -41,33 +41,32 @@ SECTIONS
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
.data : {
|
.data : {
|
||||||
*(.data)
|
*(.data)
|
||||||
__datarel_start = .;
|
|
||||||
*(.data.rel)
|
|
||||||
__datarelrolocal_start = .;
|
|
||||||
*(.data.rel.ro.local)
|
|
||||||
__datarellocal_start = .;
|
|
||||||
*(.data.rel.local)
|
|
||||||
__datarelro_start = .;
|
|
||||||
*(.data.rel.ro)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(4);
|
|
||||||
__rel_dyn_start = .;
|
|
||||||
.rel.dyn : { *(.rel.dyn) }
|
|
||||||
__rel_dyn_end = .;
|
|
||||||
|
|
||||||
__dynsym_start = .;
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
|
|
||||||
. = .;
|
. = .;
|
||||||
__u_boot_cmd_start = .;
|
__u_boot_cmd_start = .;
|
||||||
.u_boot_cmd : { *(.u_boot_cmd) }
|
.u_boot_cmd : { *(.u_boot_cmd) }
|
||||||
__u_boot_cmd_end = .;
|
__u_boot_cmd_end = .;
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__bss_start = .;
|
|
||||||
.bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
|
.rel.dyn : {
|
||||||
_end = .;
|
__rel_dyn_start = .;
|
||||||
|
*(.rel*)
|
||||||
|
__rel_dyn_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dynsym : {
|
||||||
|
__dynsym_start = .;
|
||||||
|
*(.dynsym)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss __rel_dyn_start (OVERLAY) : {
|
||||||
|
__bss_start = .;
|
||||||
|
*(.bss)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
/DISCARD/ : { *(.dynstr*) }
|
/DISCARD/ : { *(.dynstr*) }
|
||||||
/DISCARD/ : { *(.dynamic*) }
|
/DISCARD/ : { *(.dynamic*) }
|
||||||
|
|
|
@ -45,24 +45,30 @@ SECTIONS
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
__rel_dyn_start = .;
|
|
||||||
.rel.dyn : { *(.rel.dyn) }
|
|
||||||
__rel_dyn_end = .;
|
|
||||||
|
|
||||||
__dynsym_start = .;
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
|
|
||||||
. = ALIGN(4);
|
|
||||||
|
|
||||||
. = .;
|
. = .;
|
||||||
__u_boot_cmd_start = .;
|
__u_boot_cmd_start = .;
|
||||||
.u_boot_cmd : { *(.u_boot_cmd) }
|
.u_boot_cmd : { *(.u_boot_cmd) }
|
||||||
__u_boot_cmd_end = .;
|
__u_boot_cmd_end = .;
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__bss_start = .;
|
|
||||||
.bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
|
.rel.dyn : {
|
||||||
_end = .;
|
__rel_dyn_start = .;
|
||||||
|
*(.rel*)
|
||||||
|
__rel_dyn_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dynsym : {
|
||||||
|
__dynsym_start = .;
|
||||||
|
*(.dynsym)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss __rel_dyn_start (OVERLAY) : {
|
||||||
|
__bss_start = .;
|
||||||
|
*(.bss)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
/DISCARD/ : { *(.dynstr*) }
|
/DISCARD/ : { *(.dynstr*) }
|
||||||
/DISCARD/ : { *(.dynamic*) }
|
/DISCARD/ : { *(.dynamic*) }
|
||||||
|
|
|
@ -149,6 +149,13 @@ void do_sdrc_init(u32 cs, u32 early)
|
||||||
&sdrc_actim_base1->ctrla);
|
&sdrc_actim_base1->ctrla);
|
||||||
writel(readl(&sdrc_actim_base0->ctrlb),
|
writel(readl(&sdrc_actim_base0->ctrlb),
|
||||||
&sdrc_actim_base1->ctrlb);
|
&sdrc_actim_base1->ctrlb);
|
||||||
|
|
||||||
|
writel(CMD_NOP, &sdrc_base->cs[cs].manual);
|
||||||
|
writel(CMD_PRECHARGE, &sdrc_base->cs[cs].manual);
|
||||||
|
writel(CMD_AUTOREFRESH, &sdrc_base->cs[cs].manual);
|
||||||
|
writel(CMD_AUTOREFRESH, &sdrc_base->cs[cs].manual);
|
||||||
|
writel(readl(&sdrc_base->cs[CS0].mr),
|
||||||
|
&sdrc_base->cs[CS1].mr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -98,30 +98,6 @@ FIQ_STACK_START:
|
||||||
IRQ_STACK_START_IN:
|
IRQ_STACK_START_IN:
|
||||||
.word 0x0badc0de
|
.word 0x0badc0de
|
||||||
|
|
||||||
.globl _datarel_start_ofs
|
|
||||||
_datarel_start_ofs:
|
|
||||||
.word __datarel_start - _start
|
|
||||||
|
|
||||||
.globl _datarelrolocal_start_ofs
|
|
||||||
_datarelrolocal_start_ofs:
|
|
||||||
.word __datarelrolocal_start - _start
|
|
||||||
|
|
||||||
.globl _datarellocal_start_ofs
|
|
||||||
_datarellocal_start_ofs:
|
|
||||||
.word __datarellocal_start - _start
|
|
||||||
|
|
||||||
.globl _datarelro_start_ofs
|
|
||||||
_datarelro_start_ofs:
|
|
||||||
.word __datarelro_start - _start
|
|
||||||
|
|
||||||
.globl _got_start_ofs
|
|
||||||
_got_start_ofs:
|
|
||||||
.word __got_start - _start
|
|
||||||
|
|
||||||
.globl _got_end_Ofs
|
|
||||||
_got_end_ofs:
|
|
||||||
.word __got_end - _start
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* the actual reset code
|
* the actual reset code
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -44,34 +44,38 @@ SECTIONS
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
.data : {
|
.data : {
|
||||||
*(.data)
|
*(.data)
|
||||||
__datarel_start = .;
|
|
||||||
*(.data.rel)
|
|
||||||
__datarelrolocal_start = .;
|
|
||||||
*(.data.rel.ro.local)
|
|
||||||
__datarellocal_start = .;
|
|
||||||
*(.data.rel.local)
|
|
||||||
__datarelro_start = .;
|
|
||||||
*(.data.rel.ro)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__rel_dyn_start = .;
|
|
||||||
.rel.dyn : { *(.rel.dyn) }
|
|
||||||
__rel_dyn_end = .;
|
|
||||||
|
|
||||||
__dynsym_start = .;
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
|
|
||||||
__got_start = .;
|
|
||||||
. = ALIGN(4);
|
|
||||||
.got : { *(.got) }
|
|
||||||
__got_end = .;
|
|
||||||
|
|
||||||
|
. = .;
|
||||||
__u_boot_cmd_start = .;
|
__u_boot_cmd_start = .;
|
||||||
.u_boot_cmd : { *(.u_boot_cmd) }
|
.u_boot_cmd : { *(.u_boot_cmd) }
|
||||||
__u_boot_cmd_end = .;
|
__u_boot_cmd_end = .;
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__bss_start = .;
|
|
||||||
.bss : { *(.bss) }
|
.rel.dyn : {
|
||||||
_end = .;
|
__rel_dyn_start = .;
|
||||||
|
*(.rel*)
|
||||||
|
__rel_dyn_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dynsym : {
|
||||||
|
__dynsym_start = .;
|
||||||
|
*(.dynsym)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss __rel_dyn_start (OVERLAY) : {
|
||||||
|
__bss_start = .;
|
||||||
|
*(.bss)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
/DISCARD/ : { *(.dynstr*) }
|
||||||
|
/DISCARD/ : { *(.dynamic*) }
|
||||||
|
/DISCARD/ : { *(.plt*) }
|
||||||
|
/DISCARD/ : { *(.interp*) }
|
||||||
|
/DISCARD/ : { *(.gnu*) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,14 +43,6 @@ SECTIONS
|
||||||
*(.data)
|
*(.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(4);
|
|
||||||
__rel_dyn_start = .;
|
|
||||||
.rel.dyn : { *(.rel.dyn) }
|
|
||||||
__rel_dyn_end = .;
|
|
||||||
|
|
||||||
__dynsym_start = .;
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
. = .;
|
. = .;
|
||||||
|
@ -59,7 +51,28 @@ SECTIONS
|
||||||
__u_boot_cmd_end = .;
|
__u_boot_cmd_end = .;
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__bss_start = .;
|
|
||||||
.bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
|
.rel.dyn : {
|
||||||
_end = .;
|
__rel_dyn_start = .;
|
||||||
|
*(.rel*)
|
||||||
|
__rel_dyn_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dynsym : {
|
||||||
|
__dynsym_start = .;
|
||||||
|
*(.dynsym)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss __rel_dyn_start (OVERLAY) : {
|
||||||
|
__bss_start = .;
|
||||||
|
*(.bss)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
/DISCARD/ : { *(.dynstr*) }
|
||||||
|
/DISCARD/ : { *(.dynamic*) }
|
||||||
|
/DISCARD/ : { *(.plt*) }
|
||||||
|
/DISCARD/ : { *(.interp*) }
|
||||||
|
/DISCARD/ : { *(.gnu*) }
|
||||||
}
|
}
|
||||||
|
|
38
arch/arm/include/asm/arch-at91/at91_shdwn.h
Normal file
38
arch/arm/include/asm/arch-at91/at91_shdwn.h
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2010
|
||||||
|
* Reinhard Meyer, reinhard.meyer@emk-elektronik.de
|
||||||
|
*
|
||||||
|
* Shutdown Controller
|
||||||
|
* Based on AT91SAM9XE datasheet
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AT91_SHDWN_H
|
||||||
|
#define AT91_SHDWN_H
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
struct at91_shdwn {
|
||||||
|
u32 cr; /* Control Rer. WO */
|
||||||
|
u32 mr; /* Mode Register RW 0x00000003 */
|
||||||
|
u32 sr; /* Status Register RO 0x00000000 */
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#define AT91_SHDW_CR_KEY 0xa5000000
|
||||||
|
#define AT91_SHDW_CR_SHDW 0x00000001
|
||||||
|
|
||||||
|
#define AT91_SHDW_MR_RTTWKEN 0x00010000
|
||||||
|
#define AT91_SHDW_MR_CPTWK0 0x000000f0
|
||||||
|
#define AT91_SHDW_MR_WKMODE0H2L 0x00000002
|
||||||
|
#define AT91_SHDW_MR_WKMODE0L2H 0x00000001
|
||||||
|
|
||||||
|
#define AT91_SHDW_SR_RTTWK 0x00010000
|
||||||
|
#define AT91_SHDW_SR_WAKEUP0 0x00000001
|
||||||
|
|
||||||
|
#endif
|
|
@ -56,6 +56,7 @@
|
||||||
#define AT91_PIO_BASE 0xfffff400
|
#define AT91_PIO_BASE 0xfffff400
|
||||||
#define AT91_PMC_BASE 0xfffffc00
|
#define AT91_PMC_BASE 0xfffffc00
|
||||||
#define AT91_RSTC_BASE 0xfffffd00
|
#define AT91_RSTC_BASE 0xfffffd00
|
||||||
|
#define AT91_SHDWN_BASE 0xfffffd10
|
||||||
#define AT91_RTT_BASE 0xfffffd20
|
#define AT91_RTT_BASE 0xfffffd20
|
||||||
#define AT91_PIT_BASE 0xfffffd30
|
#define AT91_PIT_BASE 0xfffffd30
|
||||||
#define AT91_WDT_BASE 0xfffffd40
|
#define AT91_WDT_BASE 0xfffffd40
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <asm/arch/at91sam9260.h>
|
#include <asm/arch/at91sam9260.h>
|
||||||
#define AT91_BASE_MCI AT91SAM9260_BASE_MCI
|
#define AT91_BASE_MCI AT91SAM9260_BASE_MCI
|
||||||
#define AT91_BASE_SPI AT91SAM9260_BASE_SPI0
|
#define AT91_BASE_SPI AT91SAM9260_BASE_SPI0
|
||||||
|
#define AT91_BASE_SPI1 AT91SAM9260_BASE_SPI1
|
||||||
#define AT91_ID_UHP AT91SAM9260_ID_UHP
|
#define AT91_ID_UHP AT91SAM9260_ID_UHP
|
||||||
#define AT91_PMC_UHP AT91SAM926x_PMC_UHP
|
#define AT91_PMC_UHP AT91SAM926x_PMC_UHP
|
||||||
#elif defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10)
|
#elif defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10)
|
||||||
|
|
|
@ -31,5 +31,6 @@
|
||||||
#define USART2_BASE AT91_USART2
|
#define USART2_BASE AT91_USART2
|
||||||
#define USART3_BASE (AT91_BASE_SYS + AT91_DBGU)
|
#define USART3_BASE (AT91_BASE_SYS + AT91_DBGU)
|
||||||
#define SPI0_BASE AT91_BASE_SPI
|
#define SPI0_BASE AT91_BASE_SPI
|
||||||
|
#define SPI1_BASE AT91_BASE_SPI1
|
||||||
|
|
||||||
#endif /* __ASM_ARM_ARCH_MEMORYMAP_H__ */
|
#endif /* __ASM_ARM_ARCH_MEMORYMAP_H__ */
|
||||||
|
|
|
@ -38,7 +38,7 @@ void flush_cache (unsigned long dummy1, unsigned long dummy2)
|
||||||
/* disable write buffer as well (page 2-22) */
|
/* disable write buffer as well (page 2-22) */
|
||||||
asm("mcr p15, 0, %0, c7, c10, 4" : : "r" (0));
|
asm("mcr p15, 0, %0, c7, c10, 4" : : "r" (0));
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_ARMV7
|
#ifdef CONFIG_OMAP34XX
|
||||||
void v7_flush_cache_all(void);
|
void v7_flush_cache_all(void);
|
||||||
|
|
||||||
v7_flush_cache_all();
|
v7_flush_cache_all();
|
||||||
|
|
|
@ -30,4 +30,4 @@
|
||||||
# (mem base + reserved)
|
# (mem base + reserved)
|
||||||
|
|
||||||
# For use with external or internal boots.
|
# For use with external or internal boots.
|
||||||
TEXT_BASE = 0x80008000
|
CONFIG_SYS_TEXT_BASE = 0x80008000
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
#include <asm/arch/mem.h>
|
#include <asm/arch/mem.h>
|
||||||
|
#include <asm/arch/mmc_host_def.h>
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/sys_proto.h>
|
#include <asm/arch/sys_proto.h>
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
|
@ -91,6 +92,14 @@ static void setup_net_chip(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_GENERIC_MMC
|
||||||
|
int board_mmc_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
omap_mmc_init(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine: misc_init_r
|
* Routine: misc_init_r
|
||||||
* Description: Configure board specific parts
|
* Description: Configure board specific parts
|
||||||
|
|
|
@ -30,4 +30,5 @@
|
||||||
# (mem base + reserved)
|
# (mem base + reserved)
|
||||||
|
|
||||||
# For use with external or internal boots.
|
# For use with external or internal boots.
|
||||||
TEXT_BASE = 0x80008000
|
CONFIG_SYS_TEXT_BASE = 0x80008000
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <twl4030.h>
|
#include <twl4030.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/arch/mem.h>
|
#include <asm/arch/mem.h>
|
||||||
|
#include <asm/arch/mmc_host_def.h>
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/sys_proto.h>
|
#include <asm/arch/sys_proto.h>
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
|
@ -46,6 +47,14 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_GENERIC_MMC
|
||||||
|
int board_mmc_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
omap_mmc_init(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine: misc_init_r
|
* Routine: misc_init_r
|
||||||
* Description: Configure board specific parts
|
* Description: Configure board specific parts
|
||||||
|
|
|
@ -40,6 +40,32 @@
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
#include "overo.h"
|
#include "overo.h"
|
||||||
|
|
||||||
|
#define TWL4030_I2C_BUS 0
|
||||||
|
#define EXPANSION_EEPROM_I2C_BUS 2
|
||||||
|
#define EXPANSION_EEPROM_I2C_ADDRESS 0x51
|
||||||
|
|
||||||
|
#define GUMSTIX_SUMMIT 0x01000200
|
||||||
|
#define GUMSTIX_TOBI 0x02000200
|
||||||
|
#define GUMSTIX_TOBI_DUO 0x03000200
|
||||||
|
#define GUMSTIX_PALO35 0x04000200
|
||||||
|
#define GUMSTIX_PALO43 0x05000200
|
||||||
|
#define GUMSTIX_CHESTNUT43 0x06000200
|
||||||
|
#define GUMSTIX_PINTO 0x07000200
|
||||||
|
#define GUMSTIX_GALLOP43 0x08000200
|
||||||
|
|
||||||
|
#define ETTUS_USRP_E 0x01000300
|
||||||
|
|
||||||
|
#define GUMSTIX_NO_EEPROM 0xffffffff
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
unsigned int device_vendor;
|
||||||
|
unsigned char revision;
|
||||||
|
unsigned char content;
|
||||||
|
char fab_revision[8];
|
||||||
|
char env_var[16];
|
||||||
|
char env_setting[64];
|
||||||
|
} expansion_config;
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_NET)
|
#if defined(CONFIG_CMD_NET)
|
||||||
static void setup_net_chip(void);
|
static void setup_net_chip(void);
|
||||||
#endif
|
#endif
|
||||||
|
@ -136,6 +162,31 @@ int get_sdio2_config(void)
|
||||||
return sdio_direct;
|
return sdio_direct;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Routine: get_expansion_id
|
||||||
|
* Description: This function checks for expansion board by checking I2C
|
||||||
|
* bus 2 for the availability of an AT24C01B serial EEPROM.
|
||||||
|
* returns the device_vendor field from the EEPROM
|
||||||
|
*/
|
||||||
|
unsigned int get_expansion_id(void)
|
||||||
|
{
|
||||||
|
i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS);
|
||||||
|
|
||||||
|
/* return GUMSTIX_NO_EEPROM if eeprom doesn't respond */
|
||||||
|
if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1) {
|
||||||
|
i2c_set_bus_num(TWL4030_I2C_BUS);
|
||||||
|
return GUMSTIX_NO_EEPROM;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read configuration data */
|
||||||
|
i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config,
|
||||||
|
sizeof(expansion_config));
|
||||||
|
|
||||||
|
i2c_set_bus_num(TWL4030_I2C_BUS);
|
||||||
|
|
||||||
|
return expansion_config.device_vendor;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine: misc_init_r
|
* Routine: misc_init_r
|
||||||
* Description: Configure board specific parts
|
* Description: Configure board specific parts
|
||||||
|
@ -164,6 +215,70 @@ int misc_init_r(void)
|
||||||
printf("Unable to detect mmc2 connection type\n");
|
printf("Unable to detect mmc2 connection type\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (get_expansion_id()) {
|
||||||
|
case GUMSTIX_SUMMIT:
|
||||||
|
printf("Recognized Summit expansion board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
setenv("defaultdisplay", "dvi");
|
||||||
|
break;
|
||||||
|
case GUMSTIX_TOBI:
|
||||||
|
printf("Recognized Tobi expansion board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
setenv("defaultdisplay", "dvi");
|
||||||
|
break;
|
||||||
|
case GUMSTIX_TOBI_DUO:
|
||||||
|
printf("Recognized Tobi Duo expansion board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
break;
|
||||||
|
case GUMSTIX_PALO35:
|
||||||
|
printf("Recognized Palo35 expansion board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
setenv("defaultdisplay", "lcd35");
|
||||||
|
break;
|
||||||
|
case GUMSTIX_PALO43:
|
||||||
|
printf("Recognized Palo43 expansion board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
setenv("defaultdisplay", "lcd43");
|
||||||
|
break;
|
||||||
|
case GUMSTIX_CHESTNUT43:
|
||||||
|
printf("Recognized Chestnut43 expansion board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
setenv("defaultdisplay", "lcd43");
|
||||||
|
break;
|
||||||
|
case GUMSTIX_PINTO:
|
||||||
|
printf("Recognized Pinto expansion board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
break;
|
||||||
|
case GUMSTIX_GALLOP43:
|
||||||
|
printf("Recognized Gallop43 expansion board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
setenv("defaultdisplay", "lcd43");
|
||||||
|
break;
|
||||||
|
case ETTUS_USRP_E:
|
||||||
|
printf("Recognized Ettus Research USRP-E (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
MUX_USRP_E();
|
||||||
|
setenv("defaultdisplay", "dvi");
|
||||||
|
break;
|
||||||
|
case GUMSTIX_NO_EEPROM:
|
||||||
|
printf("No EEPROM on expansion board\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("Unrecognized expansion board\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expansion_config.content == 1)
|
||||||
|
setenv(expansion_config.env_var, expansion_config.env_setting);
|
||||||
|
|
||||||
dieid_num_r();
|
dieid_num_r();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -419,4 +419,8 @@ const omap3_sysinfo sysinfo = {
|
||||||
MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) /*GPIO_128*/\
|
MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) /*GPIO_128*/\
|
||||||
MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) /*GPIO_129*/
|
MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) /*GPIO_129*/
|
||||||
|
|
||||||
|
#define MUX_USRP_E() \
|
||||||
|
MUX_VAL(CP(MCSPI1_SOMI), (IEN | PTD | DIS | M4)) /*GPIO_173 */\
|
||||||
|
MUX_VAL(CP(MCSPI1_CS1), (IDIS | PTD | EN | M4)) /*GPIO_175 */\
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -39,6 +39,27 @@
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
#include "beagle.h"
|
#include "beagle.h"
|
||||||
|
|
||||||
|
#define TWL4030_I2C_BUS 0
|
||||||
|
#define EXPANSION_EEPROM_I2C_BUS 1
|
||||||
|
#define EXPANSION_EEPROM_I2C_ADDRESS 0x50
|
||||||
|
|
||||||
|
#define TINCANTOOLS_ZIPPY 0x01000100
|
||||||
|
#define TINCANTOOLS_ZIPPY2 0x02000100
|
||||||
|
#define TINCANTOOLS_TRAINER 0x04000100
|
||||||
|
#define TINCANTOOLS_SHOWDOG 0x03000100
|
||||||
|
#define KBADC_BEAGLEFPGA 0x01000600
|
||||||
|
|
||||||
|
#define BEAGLE_NO_EEPROM 0xffffffff
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
unsigned int device_vendor;
|
||||||
|
unsigned char revision;
|
||||||
|
unsigned char content;
|
||||||
|
char fab_revision[8];
|
||||||
|
char env_var[16];
|
||||||
|
char env_setting[64];
|
||||||
|
} expansion_config;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine: board_init
|
* Routine: board_init
|
||||||
* Description: Early hardware init.
|
* Description: Early hardware init.
|
||||||
|
@ -94,6 +115,31 @@ int get_board_revision(void)
|
||||||
return revision;
|
return revision;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Routine: get_expansion_id
|
||||||
|
* Description: This function checks for expansion board by checking I2C
|
||||||
|
* bus 1 for the availability of an AT24C01B serial EEPROM.
|
||||||
|
* returns the device_vendor field from the EEPROM
|
||||||
|
*/
|
||||||
|
unsigned int get_expansion_id(void)
|
||||||
|
{
|
||||||
|
i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS);
|
||||||
|
|
||||||
|
/* return BEAGLE_NO_EEPROM if eeprom doesn't respond */
|
||||||
|
if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1) {
|
||||||
|
i2c_set_bus_num(TWL4030_I2C_BUS);
|
||||||
|
return BEAGLE_NO_EEPROM;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read configuration data */
|
||||||
|
i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config,
|
||||||
|
sizeof(expansion_config));
|
||||||
|
|
||||||
|
i2c_set_bus_num(TWL4030_I2C_BUS);
|
||||||
|
|
||||||
|
return expansion_config.device_vendor;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine: misc_init_r
|
* Routine: misc_init_r
|
||||||
* Description: Configure board specific parts
|
* Description: Configure board specific parts
|
||||||
|
@ -141,6 +187,55 @@ int misc_init_r(void)
|
||||||
printf("Beagle unknown 0x%02x\n", get_board_revision());
|
printf("Beagle unknown 0x%02x\n", get_board_revision());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (get_expansion_id()) {
|
||||||
|
case TINCANTOOLS_ZIPPY:
|
||||||
|
printf("Recognized Tincantools Zippy board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
MUX_TINCANTOOLS_ZIPPY();
|
||||||
|
setenv("buddy", "zippy");
|
||||||
|
break;
|
||||||
|
case TINCANTOOLS_ZIPPY2:
|
||||||
|
printf("Recognized Tincantools Zippy2 board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
MUX_TINCANTOOLS_ZIPPY();
|
||||||
|
setenv("buddy", "zippy2");
|
||||||
|
break;
|
||||||
|
case TINCANTOOLS_TRAINER:
|
||||||
|
printf("Recognized Tincantools Trainer board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
MUX_TINCANTOOLS_ZIPPY();
|
||||||
|
MUX_TINCANTOOLS_TRAINER();
|
||||||
|
setenv("buddy", "trainer");
|
||||||
|
break;
|
||||||
|
case TINCANTOOLS_SHOWDOG:
|
||||||
|
printf("Recognized Tincantools Showdow board (rev %d %s)\n",
|
||||||
|
expansion_config.revision,
|
||||||
|
expansion_config.fab_revision);
|
||||||
|
/* Place holder for DSS2 definition for showdog lcd */
|
||||||
|
setenv("defaultdisplay", "showdoglcd");
|
||||||
|
setenv("buddy", "showdog");
|
||||||
|
break;
|
||||||
|
case KBADC_BEAGLEFPGA:
|
||||||
|
printf("Recognized KBADC Beagle FPGA board\n");
|
||||||
|
MUX_KBADC_BEAGLEFPGA();
|
||||||
|
setenv("buddy", "beaglefpga");
|
||||||
|
break;
|
||||||
|
case BEAGLE_NO_EEPROM:
|
||||||
|
printf("No EEPROM on expansion board\n");
|
||||||
|
setenv("buddy", "none");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("Unrecognized expansion board: %x\n",
|
||||||
|
expansion_config.device_vendor);
|
||||||
|
setenv("buddy", "unknown");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expansion_config.content == 1)
|
||||||
|
setenv(expansion_config.env_var, expansion_config.env_setting);
|
||||||
|
|
||||||
twl4030_power_init();
|
twl4030_power_init();
|
||||||
twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
|
twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
|
||||||
|
|
||||||
|
|
|
@ -259,8 +259,8 @@ const omap3_sysinfo sysinfo = {
|
||||||
MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
|
MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
|
||||||
MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\
|
MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\
|
||||||
MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\
|
MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\
|
||||||
MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\
|
MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\
|
||||||
MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\
|
MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\
|
||||||
MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\
|
MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\
|
||||||
MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\
|
MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\
|
||||||
MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\
|
MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\
|
||||||
|
@ -415,4 +415,46 @@ const omap3_sysinfo sysinfo = {
|
||||||
MUX_VAL(CP(SYS_BOOT5), (IDIS | PTD | DIS | M3)) /*DSS_DATA22*/\
|
MUX_VAL(CP(SYS_BOOT5), (IDIS | PTD | DIS | M3)) /*DSS_DATA22*/\
|
||||||
MUX_VAL(CP(SYS_BOOT6), (IDIS | PTD | DIS | M3)) /*DSS_DATA23*/
|
MUX_VAL(CP(SYS_BOOT6), (IDIS | PTD | DIS | M3)) /*DSS_DATA23*/
|
||||||
|
|
||||||
|
#define MUX_TINCANTOOLS_ZIPPY() \
|
||||||
|
MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\
|
||||||
|
MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\
|
||||||
|
MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\
|
||||||
|
MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\
|
||||||
|
MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/
|
||||||
|
|
||||||
|
#define MUX_TINCANTOOLS_TRAINER() \
|
||||||
|
MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\
|
||||||
|
MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\
|
||||||
|
MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\
|
||||||
|
MUX_VAL(CP(MCBSP3_DX), (IEN | PTU | EN | M4)) /*GPIO_140*/\
|
||||||
|
MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTU | EN | M4)) /*GPIO_141*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTU | EN | M4)) /*GPIO_162*/
|
||||||
|
|
||||||
|
#define MUX_KBADC_BEAGLEFPGA() \
|
||||||
|
MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | DIS | M1)) /*MCSPI4_CLK*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_DX), (IDIS | PTU | DIS | M1)) /*MCSPI4_SIMO*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_DR), (IEN | PTU | EN | M1)) /*MCSPI4_SOMI*/\
|
||||||
|
MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTU | DIS | M1)) /*MCSPI4_CS0*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -30,4 +30,4 @@
|
||||||
# (mem base + reserved)
|
# (mem base + reserved)
|
||||||
|
|
||||||
# For use with external or internal boots.
|
# For use with external or internal boots.
|
||||||
CONFIG_SYS_TEXT_BASE = 0x80e80000
|
CONFIG_SYS_TEXT_BASE = 0x80008000
|
||||||
|
|
|
@ -46,6 +46,11 @@ u8 get_omap3_evm_rev(void)
|
||||||
|
|
||||||
static void omap3_evm_get_revision(void)
|
static void omap3_evm_get_revision(void)
|
||||||
{
|
{
|
||||||
|
#if defined(CONFIG_CMD_NET)
|
||||||
|
/*
|
||||||
|
* Board revision can be ascertained only by identifying
|
||||||
|
* the Ethernet chipset.
|
||||||
|
*/
|
||||||
unsigned int smsc_id;
|
unsigned int smsc_id;
|
||||||
|
|
||||||
/* Ethernet PHY ID is stored at ID_REV register */
|
/* Ethernet PHY ID is stored at ID_REV register */
|
||||||
|
@ -62,8 +67,22 @@ static void omap3_evm_get_revision(void)
|
||||||
default:
|
default:
|
||||||
omap3_evm_version = OMAP3EVM_BOARD_GEN_2;
|
omap3_evm_version = OMAP3EVM_BOARD_GEN_2;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#if defined(CONFIG_STATIC_BOARD_REV)
|
||||||
|
/*
|
||||||
|
* Look for static defintion of the board revision
|
||||||
|
*/
|
||||||
|
omap3_evm_version = CONFIG_STATIC_BOARD_REV;
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* Fallback to the default above.
|
||||||
|
*/
|
||||||
|
omap3_evm_version = OMAP3EVM_BOARD_GEN_2;
|
||||||
|
#endif
|
||||||
|
#endif /* CONFIG_CMD_NET */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_USB_OMAP3
|
||||||
/*
|
/*
|
||||||
* MUSB port on OMAP3EVM Rev >= E requires extvbus programming.
|
* MUSB port on OMAP3EVM Rev >= E requires extvbus programming.
|
||||||
*/
|
*/
|
||||||
|
@ -76,6 +95,7 @@ u8 omap3_evm_need_extvbus(void)
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine: board_init
|
* Routine: board_init
|
||||||
|
@ -108,6 +128,7 @@ int misc_init_r(void)
|
||||||
#if defined(CONFIG_CMD_NET)
|
#if defined(CONFIG_CMD_NET)
|
||||||
setup_net_chip();
|
setup_net_chip();
|
||||||
#endif
|
#endif
|
||||||
|
omap3_evm_get_revision();
|
||||||
|
|
||||||
dieid_num_r();
|
dieid_num_r();
|
||||||
|
|
||||||
|
@ -161,9 +182,6 @@ static void setup_net_chip(void)
|
||||||
writel(GPIO0, &gpio3_base->cleardataout);
|
writel(GPIO0, &gpio3_base->cleardataout);
|
||||||
udelay(1);
|
udelay(1);
|
||||||
writel(GPIO0, &gpio3_base->setdataout);
|
writel(GPIO0, &gpio3_base->setdataout);
|
||||||
|
|
||||||
/* determine omap3evm revision */
|
|
||||||
omap3_evm_get_revision();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int board_eth_init(bd_t *bis)
|
int board_eth_init(bd_t *bis)
|
||||||
|
|
|
@ -47,7 +47,9 @@ enum {
|
||||||
|
|
||||||
u8 get_omap3_evm_rev(void);
|
u8 get_omap3_evm_rev(void);
|
||||||
|
|
||||||
|
#if defined(CONFIG_CMD_NET)
|
||||||
static void setup_net_chip(void);
|
static void setup_net_chip(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IEN - Input Enable
|
* IEN - Input Enable
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
#
|
|
||||||
# (C) Copyright 2006
|
|
||||||
# Texas Instruments, <www.ti.com>
|
|
||||||
#
|
|
||||||
# (C) Copyright 2009
|
|
||||||
# Frederik Kriewitz <frederik@kriewitz.eu>
|
|
||||||
#
|
|
||||||
# DevKit8000 uses OMAP3 (ARM-CortexA8) cpu
|
|
||||||
# see http://www.ti.com/ for more information on Texas Instruments
|
|
||||||
#
|
|
||||||
# See file CREDITS for list of people who contributed to this
|
|
||||||
# project.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License as
|
|
||||||
# published by the Free Software Foundation; either version 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
||||||
# MA 02111-1307 USA
|
|
||||||
#
|
|
||||||
# Physical Address:
|
|
||||||
# 8000'0000 (bank0)
|
|
||||||
# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
|
|
||||||
# (mem base + reserved)
|
|
||||||
|
|
||||||
# For use with external or internal boots.
|
|
||||||
CONFIG_SYS_TEXT_BASE = 0x80e80000
|
|
|
@ -82,12 +82,9 @@ mmc_write_blocks(struct mmc *mmc, ulong start, lbaint_t blkcnt, const void*src)
|
||||||
{
|
{
|
||||||
struct mmc_cmd cmd;
|
struct mmc_cmd cmd;
|
||||||
struct mmc_data data;
|
struct mmc_data data;
|
||||||
int blklen, err;
|
|
||||||
|
|
||||||
blklen = mmc->write_bl_len;
|
|
||||||
|
|
||||||
if ((start + blkcnt) > mmc->block_dev.lba) {
|
if ((start + blkcnt) > mmc->block_dev.lba) {
|
||||||
printf("MMC: block number 0x%lx exceeds max(0x%lx)",
|
printf("MMC: block number 0x%lx exceeds max(0x%lx)\n",
|
||||||
start + blkcnt, mmc->block_dev.lba);
|
start + blkcnt, mmc->block_dev.lba);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -100,21 +97,19 @@ mmc_write_blocks(struct mmc *mmc, ulong start, lbaint_t blkcnt, const void*src)
|
||||||
if (mmc->high_capacity)
|
if (mmc->high_capacity)
|
||||||
cmd.cmdarg = start;
|
cmd.cmdarg = start;
|
||||||
else
|
else
|
||||||
cmd.cmdarg = start * blklen;
|
cmd.cmdarg = start * mmc->write_bl_len;
|
||||||
|
|
||||||
cmd.resp_type = MMC_RSP_R1;
|
cmd.resp_type = MMC_RSP_R1;
|
||||||
cmd.flags = 0;
|
cmd.flags = 0;
|
||||||
|
|
||||||
data.src = src;
|
data.src = src;
|
||||||
data.blocks = blkcnt;
|
data.blocks = blkcnt;
|
||||||
data.blocksize = blklen;
|
data.blocksize = mmc->write_bl_len;
|
||||||
data.flags = MMC_DATA_WRITE;
|
data.flags = MMC_DATA_WRITE;
|
||||||
|
|
||||||
err = mmc_send_cmd(mmc, &cmd, &data);
|
if (mmc_send_cmd(mmc, &cmd, &data)) {
|
||||||
|
printf("mmc write failed\n");
|
||||||
if (err) {
|
return 0;
|
||||||
printf("mmc write failed\n\r");
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blkcnt > 1) {
|
if (blkcnt > 1) {
|
||||||
|
@ -122,10 +117,9 @@ mmc_write_blocks(struct mmc *mmc, ulong start, lbaint_t blkcnt, const void*src)
|
||||||
cmd.cmdarg = 0;
|
cmd.cmdarg = 0;
|
||||||
cmd.resp_type = MMC_RSP_R1b;
|
cmd.resp_type = MMC_RSP_R1b;
|
||||||
cmd.flags = 0;
|
cmd.flags = 0;
|
||||||
err = mmc_send_cmd(mmc, &cmd, NULL);
|
if (mmc_send_cmd(mmc, &cmd, NULL)) {
|
||||||
if (err) {
|
printf("mmc fail to send stop cmd\n");
|
||||||
printf("mmc fail to send stop cmd\n\r");
|
return 0;
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,18 +129,14 @@ mmc_write_blocks(struct mmc *mmc, ulong start, lbaint_t blkcnt, const void*src)
|
||||||
static ulong
|
static ulong
|
||||||
mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt, const void*src)
|
mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt, const void*src)
|
||||||
{
|
{
|
||||||
int err;
|
|
||||||
struct mmc *mmc = find_mmc_device(dev_num);
|
|
||||||
lbaint_t cur, blocks_todo = blkcnt;
|
lbaint_t cur, blocks_todo = blkcnt;
|
||||||
|
|
||||||
|
struct mmc *mmc = find_mmc_device(dev_num);
|
||||||
if (!mmc)
|
if (!mmc)
|
||||||
return -1;
|
return 0;
|
||||||
|
|
||||||
err = mmc_set_blocklen(mmc, mmc->write_bl_len);
|
if (mmc_set_blocklen(mmc, mmc->write_bl_len))
|
||||||
if (err) {
|
return 0;
|
||||||
printf("set write bl len failed\n\r");
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
/*
|
/*
|
||||||
|
@ -155,7 +145,7 @@ mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt, const void*src)
|
||||||
*/
|
*/
|
||||||
cur = (blocks_todo > 65535) ? 65535 : blocks_todo;
|
cur = (blocks_todo > 65535) ? 65535 : blocks_todo;
|
||||||
if(mmc_write_blocks(mmc, start, cur, src) != cur)
|
if(mmc_write_blocks(mmc, start, cur, src) != cur)
|
||||||
return -1;
|
return 0;
|
||||||
blocks_todo -= cur;
|
blocks_todo -= cur;
|
||||||
start += cur;
|
start += cur;
|
||||||
src += cur * mmc->write_bl_len;
|
src += cur * mmc->write_bl_len;
|
||||||
|
@ -164,110 +154,78 @@ mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt, const void*src)
|
||||||
return blkcnt;
|
return blkcnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mmc_read_block(struct mmc *mmc, void *dst, uint blocknum)
|
int mmc_read_blocks(struct mmc *mmc, void *dst, ulong start, lbaint_t blkcnt)
|
||||||
{
|
{
|
||||||
struct mmc_cmd cmd;
|
struct mmc_cmd cmd;
|
||||||
struct mmc_data data;
|
struct mmc_data data;
|
||||||
|
|
||||||
cmd.cmdidx = MMC_CMD_READ_SINGLE_BLOCK;
|
if (blkcnt > 1)
|
||||||
|
cmd.cmdidx = MMC_CMD_READ_MULTIPLE_BLOCK;
|
||||||
|
else
|
||||||
|
cmd.cmdidx = MMC_CMD_READ_SINGLE_BLOCK;
|
||||||
|
|
||||||
if (mmc->high_capacity)
|
if (mmc->high_capacity)
|
||||||
cmd.cmdarg = blocknum;
|
cmd.cmdarg = start;
|
||||||
else
|
else
|
||||||
cmd.cmdarg = blocknum * mmc->read_bl_len;
|
cmd.cmdarg = start * mmc->read_bl_len;
|
||||||
|
|
||||||
cmd.resp_type = MMC_RSP_R1;
|
cmd.resp_type = MMC_RSP_R1;
|
||||||
cmd.flags = 0;
|
cmd.flags = 0;
|
||||||
|
|
||||||
data.dest = dst;
|
data.dest = dst;
|
||||||
data.blocks = 1;
|
data.blocks = blkcnt;
|
||||||
data.blocksize = mmc->read_bl_len;
|
data.blocksize = mmc->read_bl_len;
|
||||||
data.flags = MMC_DATA_READ;
|
data.flags = MMC_DATA_READ;
|
||||||
|
|
||||||
return mmc_send_cmd(mmc, &cmd, &data);
|
if (mmc_send_cmd(mmc, &cmd, &data))
|
||||||
}
|
return 0;
|
||||||
|
|
||||||
int mmc_read(struct mmc *mmc, u64 src, uchar *dst, int size)
|
if (blkcnt > 1) {
|
||||||
{
|
cmd.cmdidx = MMC_CMD_STOP_TRANSMISSION;
|
||||||
char *buffer;
|
cmd.cmdarg = 0;
|
||||||
int i;
|
cmd.resp_type = MMC_RSP_R1b;
|
||||||
int blklen = mmc->read_bl_len;
|
cmd.flags = 0;
|
||||||
int startblock = lldiv(src, mmc->read_bl_len);
|
if (mmc_send_cmd(mmc, &cmd, NULL)) {
|
||||||
int endblock = lldiv(src + size - 1, mmc->read_bl_len);
|
printf("mmc fail to send stop cmd\n");
|
||||||
int err = 0;
|
return 0;
|
||||||
|
}
|
||||||
/* Make a buffer big enough to hold all the blocks we might read */
|
|
||||||
buffer = malloc(blklen);
|
|
||||||
|
|
||||||
if (!buffer) {
|
|
||||||
printf("Could not allocate buffer for MMC read!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We always do full block reads from the card */
|
return blkcnt;
|
||||||
err = mmc_set_blocklen(mmc, mmc->read_bl_len);
|
|
||||||
|
|
||||||
if (err)
|
|
||||||
goto free_buffer;
|
|
||||||
|
|
||||||
for (i = startblock; i <= endblock; i++) {
|
|
||||||
int segment_size;
|
|
||||||
int offset;
|
|
||||||
|
|
||||||
err = mmc_read_block(mmc, buffer, i);
|
|
||||||
|
|
||||||
if (err)
|
|
||||||
goto free_buffer;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The first block may not be aligned, so we
|
|
||||||
* copy from the desired point in the block
|
|
||||||
*/
|
|
||||||
offset = (src & (blklen - 1));
|
|
||||||
segment_size = MIN(blklen - offset, size);
|
|
||||||
|
|
||||||
memcpy(dst, buffer + offset, segment_size);
|
|
||||||
|
|
||||||
dst += segment_size;
|
|
||||||
src += segment_size;
|
|
||||||
size -= segment_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
free_buffer:
|
|
||||||
free(buffer);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ulong mmc_bread(int dev_num, ulong start, lbaint_t blkcnt, void *dst)
|
static ulong mmc_bread(int dev_num, ulong start, lbaint_t blkcnt, void *dst)
|
||||||
{
|
{
|
||||||
int err;
|
lbaint_t cur, blocks_todo = blkcnt;
|
||||||
int i;
|
|
||||||
struct mmc *mmc = find_mmc_device(dev_num);
|
|
||||||
|
|
||||||
|
if (blkcnt == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
struct mmc *mmc = find_mmc_device(dev_num);
|
||||||
if (!mmc)
|
if (!mmc)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ((start + blkcnt) > mmc->block_dev.lba) {
|
if ((start + blkcnt) > mmc->block_dev.lba) {
|
||||||
printf("MMC: block number 0x%lx exceeds max(0x%lx)",
|
printf("MMC: block number 0x%lx exceeds max(0x%lx)\n",
|
||||||
start + blkcnt, mmc->block_dev.lba);
|
start + blkcnt, mmc->block_dev.lba);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* We always do full block reads from the card */
|
|
||||||
err = mmc_set_blocklen(mmc, mmc->read_bl_len);
|
|
||||||
|
|
||||||
if (err) {
|
if (mmc_set_blocklen(mmc, mmc->read_bl_len))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
for (i = start; i < start + blkcnt; i++, dst += mmc->read_bl_len) {
|
do {
|
||||||
err = mmc_read_block(mmc, dst, i);
|
/*
|
||||||
|
* The 65535 constraint comes from some hardware has
|
||||||
if (err) {
|
* only 16 bit width block number counter
|
||||||
printf("block read failed: %d\n", err);
|
*/
|
||||||
return i - start;
|
cur = (blocks_todo > 65535) ? 65535 : blocks_todo;
|
||||||
}
|
if(mmc_read_blocks(mmc, dst, start, cur) != cur)
|
||||||
}
|
return 0;
|
||||||
|
blocks_todo -= cur;
|
||||||
|
start += cur;
|
||||||
|
dst += cur * mmc->read_bl_len;
|
||||||
|
} while (blocks_todo > 0);
|
||||||
|
|
||||||
return blkcnt;
|
return blkcnt;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
#define CONFIG_OMAP3430 1 /* which is in a 3430 */
|
#define CONFIG_OMAP3430 1 /* which is in a 3430 */
|
||||||
#define CONFIG_OMAP3_DEVKIT8000 1 /* working with DevKit8000 */
|
#define CONFIG_OMAP3_DEVKIT8000 1 /* working with DevKit8000 */
|
||||||
|
|
||||||
|
#define CONFIG_SYS_TEXT_BASE 0x80008000
|
||||||
|
|
||||||
#define CONFIG_SDRC /* The chip has SDRC controller */
|
#define CONFIG_SDRC /* The chip has SDRC controller */
|
||||||
|
|
||||||
#include <asm/arch/cpu.h> /* get chip and board defs */
|
#include <asm/arch/cpu.h> /* get chip and board defs */
|
||||||
|
@ -305,4 +307,7 @@ extern unsigned int boot_flash_sec;
|
||||||
extern unsigned int boot_flash_type;
|
extern unsigned int boot_flash_type;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||||
|
#define CONFIG_SYS_INIT_SP_ADDR (LOW_LEVEL_SRAM_STACK - CONFIG_SYS_GBL_DATA_SIZE)
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
|
|
@ -73,8 +73,9 @@
|
||||||
#define CONFIG_ENV_OVERWRITE
|
#define CONFIG_ENV_OVERWRITE
|
||||||
#define CONFIG_BAUDRATE 115200
|
#define CONFIG_BAUDRATE 115200
|
||||||
#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, 115200}
|
#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, 115200}
|
||||||
|
#define CONFIG_GENERIC_MMC 1
|
||||||
#define CONFIG_MMC 1
|
#define CONFIG_MMC 1
|
||||||
#define CONFIG_OMAP3_MMC 1
|
#define CONFIG_OMAP_HSMMC 1
|
||||||
#define CONFIG_DOS_PARTITION 1
|
#define CONFIG_DOS_PARTITION 1
|
||||||
|
|
||||||
/* DDR */
|
/* DDR */
|
||||||
|
@ -222,6 +223,10 @@
|
||||||
#endif /* (CONFIG_CMD_NET) */
|
#endif /* (CONFIG_CMD_NET) */
|
||||||
|
|
||||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (LOW_LEVEL_SRAM_STACK - GENERATED_GBL_DATA_SIZE)
|
#define CONFIG_SYS_INIT_RAM_ADDR 0x4020f800
|
||||||
|
#define CONFIG_SYS_INIT_RAM_SIZE 0x800
|
||||||
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
|
||||||
|
CONFIG_SYS_INIT_RAM_SIZE - \
|
||||||
|
GENERATED_GBL_DATA_SIZE)
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
|
|
@ -73,8 +73,9 @@
|
||||||
#define CONFIG_ENV_OVERWRITE
|
#define CONFIG_ENV_OVERWRITE
|
||||||
#define CONFIG_BAUDRATE 115200
|
#define CONFIG_BAUDRATE 115200
|
||||||
#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, 115200}
|
#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, 115200}
|
||||||
|
#define CONFIG_GENERIC_MMC 1
|
||||||
#define CONFIG_MMC 1
|
#define CONFIG_MMC 1
|
||||||
#define CONFIG_OMAP3_MMC 1
|
#define CONFIG_OMAP_HSMMC 1
|
||||||
#define CONFIG_DOS_PARTITION 1
|
#define CONFIG_DOS_PARTITION 1
|
||||||
|
|
||||||
/* DDR */
|
/* DDR */
|
||||||
|
@ -209,6 +210,10 @@
|
||||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (128 << 10))
|
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (128 << 10))
|
||||||
|
|
||||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (LOW_LEVEL_SRAM_STACK - GENERATED_GBL_DATA_SIZE)
|
#define CONFIG_SYS_INIT_RAM_ADDR 0x4020f800
|
||||||
|
#define CONFIG_SYS_INIT_RAM_SIZE 0x800
|
||||||
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
|
||||||
|
CONFIG_SYS_INIT_RAM_SIZE - \
|
||||||
|
GENERATED_GBL_DATA_SIZE)
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
|
|
@ -152,6 +152,7 @@
|
||||||
#define CONFIG_SYS_I2C_SLAVE 1
|
#define CONFIG_SYS_I2C_SLAVE 1
|
||||||
#define CONFIG_SYS_I2C_BUS 0
|
#define CONFIG_SYS_I2C_BUS 0
|
||||||
#define CONFIG_SYS_I2C_BUS_SELECT 1
|
#define CONFIG_SYS_I2C_BUS_SELECT 1
|
||||||
|
#define CONFIG_I2C_MULTI_BUS 1
|
||||||
#define CONFIG_DRIVER_OMAP34XX_I2C 1
|
#define CONFIG_DRIVER_OMAP34XX_I2C 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -345,8 +346,11 @@ extern unsigned int boot_flash_sec;
|
||||||
extern unsigned int boot_flash_type;
|
extern unsigned int boot_flash_type;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* additions for new relocation code, must be added to all boards */
|
|
||||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (LOW_LEVEL_SRAM_STACK - GENERATED_GBL_DATA_SIZE)
|
#define CONFIG_SYS_INIT_RAM_ADDR 0x4020f800
|
||||||
|
#define CONFIG_SYS_INIT_RAM_SIZE 0x800
|
||||||
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
|
||||||
|
CONFIG_SYS_INIT_RAM_SIZE - \
|
||||||
|
GENERATED_GBL_DATA_SIZE)
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
|
|
@ -344,6 +344,17 @@ extern unsigned int boot_flash_sec;
|
||||||
extern unsigned int boot_flash_type;
|
extern unsigned int boot_flash_type;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Support for relocation
|
||||||
|
*/
|
||||||
|
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||||
|
#define CONFIG_SYS_INIT_SP_ADDR (LOW_LEVEL_SRAM_STACK - CONFIG_SYS_GBL_DATA_SIZE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define the board revision statically
|
||||||
|
*/
|
||||||
|
/* #define CONFIG_STATIC_BOARD_REV OMAP3EVM_BOARD_GEN_2 */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
* SMSC9115 Ethernet from SMSC9118 family
|
* SMSC9115 Ethernet from SMSC9118 family
|
||||||
*----------------------------------------------------------------------------
|
*----------------------------------------------------------------------------
|
||||||
|
|
|
@ -119,6 +119,7 @@
|
||||||
#define CONFIG_SYS_I2C_SLAVE 1
|
#define CONFIG_SYS_I2C_SLAVE 1
|
||||||
#define CONFIG_SYS_I2C_BUS 0
|
#define CONFIG_SYS_I2C_BUS 0
|
||||||
#define CONFIG_SYS_I2C_BUS_SELECT 1
|
#define CONFIG_SYS_I2C_BUS_SELECT 1
|
||||||
|
#define CONFIG_I2C_MULTI_BUS 1
|
||||||
#define CONFIG_DRIVER_OMAP34XX_I2C 1
|
#define CONFIG_DRIVER_OMAP34XX_I2C 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -324,6 +325,10 @@ extern unsigned int boot_flash_type;
|
||||||
#endif /* (CONFIG_CMD_NET) */
|
#endif /* (CONFIG_CMD_NET) */
|
||||||
|
|
||||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (LOW_LEVEL_SRAM_STACK - GENERATED_GBL_DATA_SIZE)
|
#define CONFIG_SYS_INIT_RAM_ADDR 0x4020f800
|
||||||
|
#define CONFIG_SYS_INIT_RAM_SIZE 0x800
|
||||||
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
|
||||||
|
CONFIG_SYS_INIT_RAM_SIZE - \
|
||||||
|
GENERATED_GBL_DATA_SIZE)
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
|
|
@ -227,6 +227,10 @@
|
||||||
#define CONFIG_NR_DRAM_BANKS 1
|
#define CONFIG_NR_DRAM_BANKS 1
|
||||||
|
|
||||||
#define CONFIG_SYS_SDRAM_BASE 0x80000000
|
#define CONFIG_SYS_SDRAM_BASE 0x80000000
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (LOW_LEVEL_SRAM_STACK - GENERATED_GBL_DATA_SIZE)
|
#define CONFIG_SYS_INIT_RAM_ADDR 0x4030D800
|
||||||
|
#define CONFIG_SYS_INIT_RAM_SIZE 0x800
|
||||||
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
|
||||||
|
CONFIG_SYS_INIT_RAM_SIZE - \
|
||||||
|
GENERATED_GBL_DATA_SIZE)
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
|
|
@ -232,6 +232,10 @@
|
||||||
#define CONFIG_NR_DRAM_BANKS 1
|
#define CONFIG_NR_DRAM_BANKS 1
|
||||||
|
|
||||||
#define CONFIG_SYS_SDRAM_BASE 0x80000000
|
#define CONFIG_SYS_SDRAM_BASE 0x80000000
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (LOW_LEVEL_SRAM_STACK - GENERATED_GBL_DATA_SIZE)
|
#define CONFIG_SYS_INIT_RAM_ADDR 0x4030D800
|
||||||
|
#define CONFIG_SYS_INIT_RAM_SIZE 0x800
|
||||||
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
|
||||||
|
CONFIG_SYS_INIT_RAM_SIZE - \
|
||||||
|
GENERATED_GBL_DATA_SIZE)
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
|
|
@ -43,35 +43,33 @@ SECTIONS
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
.data : {
|
.data : {
|
||||||
*(.data)
|
*(.data)
|
||||||
__datarel_start = .;
|
|
||||||
*(.data.rel)
|
|
||||||
__datarelrolocal_start = .;
|
|
||||||
*(.data.rel.ro.local)
|
|
||||||
__datarellocal_start = .;
|
|
||||||
*(.data.rel.local)
|
|
||||||
__datarelro_start = .;
|
|
||||||
*(.data.rel.ro)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__rel_dyn_start = .;
|
|
||||||
__rel_dyn_end = .;
|
|
||||||
__dynsym_start = .;
|
|
||||||
|
|
||||||
__got_start = .;
|
|
||||||
. = ALIGN(4);
|
|
||||||
.got : { *(.got) }
|
|
||||||
|
|
||||||
__got_end = .;
|
|
||||||
. = .;
|
|
||||||
__u_boot_cmd_start = .;
|
__u_boot_cmd_start = .;
|
||||||
.u_boot_cmd : { *(.u_boot_cmd) }
|
.u_boot_cmd : { *(.u_boot_cmd) }
|
||||||
__u_boot_cmd_end = .;
|
__u_boot_cmd_end = .;
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__bss_start = .;
|
|
||||||
.bss : { *(.bss) }
|
.rel.dyn : {
|
||||||
_end = .;
|
__rel_dyn_start = .;
|
||||||
|
*(.rel*)
|
||||||
|
__rel_dyn_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dynsym : {
|
||||||
|
__dynsym_start = .;
|
||||||
|
*(.dynsym)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss __rel_dyn_start (OVERLAY) : {
|
||||||
|
__bss_start = .;
|
||||||
|
*(.bss)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
/DISCARD/ : { *(.bss*) }
|
/DISCARD/ : { *(.bss*) }
|
||||||
/DISCARD/ : { *(.dynstr*) }
|
/DISCARD/ : { *(.dynstr*) }
|
||||||
/DISCARD/ : { *(.dynsym*) }
|
/DISCARD/ : { *(.dynsym*) }
|
||||||
|
|
Loading…
Reference in a new issue