Merge branch 'master' of git://git.denx.de/u-boot-atmel

master
Tom Rini 10 years ago
commit aed03faa06
  1. 2
      arch/arm/cpu/arm926ejs/cpu.c
  2. 16
      arch/arm/cpu/armv7/at91/sama5d4_devices.c
  3. 2
      arch/arm/include/asm/arch-at91/atmel_usba_udc.h
  4. 2
      arch/arm/lib/cache.c
  5. 11
      board/atmel/sama5d4_xplained/sama5d4_xplained.c
  6. 11
      board/atmel/sama5d4ek/sama5d4ek.c
  7. 12
      board/siemens/corvus/board.c
  8. 24
      board/siemens/taurus/taurus.c
  9. 5
      configs/axm_defconfig
  10. 4
      include/configs/corvus.h
  11. 1
      include/configs/sama5d3_xplained.h
  12. 8
      include/configs/sama5d4_xplained.h
  13. 8
      include/configs/sama5d4ek.h
  14. 1
      include/configs/snapper9260.h
  15. 23
      include/configs/taurus.h

@ -45,7 +45,9 @@ int cleanup_before_linux (void)
/* flush I/D-cache */ /* flush I/D-cache */
static void cache_flush (void) static void cache_flush (void)
{ {
#if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))
unsigned long i = 0; unsigned long i = 0;
asm ("mcr p15, 0, %0, c7, c7, 0": :"r" (i)); asm ("mcr p15, 0, %0, c7, c7, 0": :"r" (i));
#endif
} }

@ -6,6 +6,10 @@
*/ */
#include <common.h> #include <common.h>
#include <asm/io.h>
#include <asm/arch/at91_common.h>
#include <asm/arch/at91_pmc.h>
#include <asm/arch/clk.h>
#include <asm/arch/sama5d4.h> #include <asm/arch/sama5d4.h>
char *get_cpu_name() char *get_cpu_name()
@ -28,3 +32,15 @@ char *get_cpu_name()
else else
return "Unknown CPU type"; return "Unknown CPU type";
} }
#ifdef CONFIG_USB_GADGET_ATMEL_USBA
void at91_udp_hw_init(void)
{
struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
/* Enable UPLL clock */
writel(AT91_PMC_UPLLEN | AT91_PMC_BIASEN, &pmc->uckr);
/* Enable UDPHS clock */
at91_periph_clk_enable(ATMEL_ID_UDPHS);
}
#endif

@ -31,7 +31,7 @@ static struct usba_ep_data usba_udc_ep[] = {
EP("ep5", 5, 1024, 3, 1, 1), EP("ep5", 5, 1024, 3, 1, 1),
EP("ep6", 6, 1024, 3, 1, 1), EP("ep6", 6, 1024, 3, 1, 1),
}; };
#elif defined(CONFIG_SAMA5D3) #elif defined(CONFIG_SAMA5D3) || defined(CONFIG_SAMA5D4)
static struct usba_ep_data usba_udc_ep[] = { static struct usba_ep_data usba_udc_ep[] = {
EP("ep0", 0, 64, 1, 0, 0), EP("ep0", 0, 64, 1, 0, 0),
EP("ep1", 1, 1024, 3, 1, 0), EP("ep1", 1, 1024, 3, 1, 0),

@ -25,10 +25,12 @@ __weak void flush_cache(unsigned long start, unsigned long size)
#endif /* CONFIG_CPU_ARM1136 */ #endif /* CONFIG_CPU_ARM1136 */
#ifdef CONFIG_CPU_ARM926EJS #ifdef CONFIG_CPU_ARM926EJS
#if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))
/* test and clean, page 2-23 of arm926ejs manual */ /* test and clean, page 2-23 of arm926ejs manual */
asm("0: mrc p15, 0, r15, c7, c10, 3\n\t" "bne 0b\n" : : : "memory"); asm("0: mrc p15, 0, r15, c7, c10, 3\n\t" "bne 0b\n" : : : "memory");
/* 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 /* CONFIG_CPU_ARM926EJS */ #endif /* CONFIG_CPU_ARM926EJS */
return; return;
} }

@ -10,6 +10,7 @@
#include <asm/arch/at91_common.h> #include <asm/arch/at91_common.h>
#include <asm/arch/at91_pmc.h> #include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h> #include <asm/arch/at91_rstc.h>
#include <asm/arch/atmel_usba_udc.h>
#include <asm/arch/gpio.h> #include <asm/arch/gpio.h>
#include <asm/arch/clk.h> #include <asm/arch/clk.h>
#include <asm/arch/sama5d3_smc.h> #include <asm/arch/sama5d3_smc.h>
@ -294,6 +295,9 @@ int board_init(void)
#ifdef CONFIG_CMD_USB #ifdef CONFIG_CMD_USB
sama5d4_xplained_usb_hw_init(); sama5d4_xplained_usb_hw_init();
#endif #endif
#ifdef CONFIG_USB_GADGET_ATMEL_USBA
at91_udp_hw_init();
#endif
return 0; return 0;
} }
@ -313,5 +317,12 @@ int board_eth_init(bd_t *bis)
rc = macb_eth_initialize(0, (void *)ATMEL_BASE_GMAC0, 0x00); rc = macb_eth_initialize(0, (void *)ATMEL_BASE_GMAC0, 0x00);
#endif #endif
#ifdef CONFIG_USB_GADGET_ATMEL_USBA
usba_udc_probe(&pdata);
#ifdef CONFIG_USB_ETH_RNDIS
usb_eth_initialize(bis);
#endif
#endif
return rc; return rc;
} }

@ -10,6 +10,7 @@
#include <asm/arch/at91_common.h> #include <asm/arch/at91_common.h>
#include <asm/arch/at91_pmc.h> #include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h> #include <asm/arch/at91_rstc.h>
#include <asm/arch/atmel_usba_udc.h>
#include <asm/arch/gpio.h> #include <asm/arch/gpio.h>
#include <asm/arch/clk.h> #include <asm/arch/clk.h>
#include <asm/arch/sama5d3_smc.h> #include <asm/arch/sama5d3_smc.h>
@ -293,6 +294,9 @@ int board_init(void)
#ifdef CONFIG_CMD_USB #ifdef CONFIG_CMD_USB
sama5d4ek_usb_hw_init(); sama5d4ek_usb_hw_init();
#endif #endif
#ifdef CONFIG_USB_GADGET_ATMEL_USBA
at91_udp_hw_init();
#endif
return 0; return 0;
} }
@ -312,5 +316,12 @@ int board_eth_init(bd_t *bis)
rc = macb_eth_initialize(0, (void *)ATMEL_BASE_GMAC0, 0x00); rc = macb_eth_initialize(0, (void *)ATMEL_BASE_GMAC0, 0x00);
#endif #endif
#ifdef CONFIG_USB_GADGET_ATMEL_USBA
usba_udc_probe(&pdata);
#ifdef CONFIG_USB_ETH_RNDIS
usb_eth_initialize(bis);
#endif
#endif
return rc; return rc;
} }

@ -43,13 +43,13 @@ static void corvus_nand_hw_init(void)
writel(csa, &matrix->ebicsa); writel(csa, &matrix->ebicsa);
/* Configure SMC CS3 for NAND/SmartMedia */ /* Configure SMC CS3 for NAND/SmartMedia */
writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) | writel(AT91_SMC_SETUP_NWE(2) | AT91_SMC_SETUP_NCS_WR(0) |
AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0), AT91_SMC_SETUP_NRD(2) | AT91_SMC_SETUP_NCS_RD(0),
&smc->cs[3].setup); &smc->cs[3].setup);
writel(AT91_SMC_PULSE_NWE(4) | AT91_SMC_PULSE_NCS_WR(3) | writel(AT91_SMC_PULSE_NWE(4) | AT91_SMC_PULSE_NCS_WR(4) |
AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(2), AT91_SMC_PULSE_NRD(4) | AT91_SMC_PULSE_NCS_RD(4),
&smc->cs[3].pulse); &smc->cs[3].pulse);
writel(AT91_SMC_CYCLE_NWE(7) | AT91_SMC_CYCLE_NRD(4), writel(AT91_SMC_CYCLE_NWE(7) | AT91_SMC_CYCLE_NRD(7),
&smc->cs[3].cycle); &smc->cs[3].cycle);
writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE | writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
AT91_SMC_MODE_EXNW_DISABLE | AT91_SMC_MODE_EXNW_DISABLE |
@ -62,9 +62,11 @@ static void corvus_nand_hw_init(void)
&smc->cs[3].mode); &smc->cs[3].mode);
at91_periph_clk_enable(ATMEL_ID_PIOC); at91_periph_clk_enable(ATMEL_ID_PIOC);
at91_periph_clk_enable(ATMEL_ID_PIOA);
/* Enable NandFlash */ /* Enable NandFlash */
at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
} }
#if defined(CONFIG_SPL_BUILD) #if defined(CONFIG_SPL_BUILD)

@ -68,6 +68,7 @@ static void taurus_nand_hw_init(void)
#if defined(CONFIG_SPL_BUILD) #if defined(CONFIG_SPL_BUILD)
#include <spl.h> #include <spl.h>
#include <nand.h> #include <nand.h>
#include <spi_flash.h>
void matrix_init(void) void matrix_init(void)
{ {
@ -81,23 +82,28 @@ void matrix_init(void)
void at91_spl_board_init(void) void at91_spl_board_init(void)
{ {
taurus_nand_hw_init(); taurus_nand_hw_init();
at91_spi0_hw_init(TAURUS_SPI_MASK);
/* Configure recovery button PINs */ /* Configure recovery button PINs */
at91_set_gpio_input(AT91_PIN_PA31, 1); at91_set_gpio_input(AT91_PIN_PA31, 1);
/* check if button is pressed */ /* check if button is pressed */
if (at91_get_gpio_value(AT91_PIN_PA31) == 0) { if (at91_get_gpio_value(AT91_PIN_PA31) == 0) {
u32 boot_device; struct spi_flash *flash;
debug("Recovery button pressed\n"); debug("Recovery button pressed\n");
boot_device = spl_boot_device(); nand_init();
switch (boot_device) { spl_nand_erase_one(0, 0);
#ifdef CONFIG_SPL_NAND_SUPPORT flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS,
case BOOT_DEVICE_NAND: 0,
nand_init(); CONFIG_SF_DEFAULT_SPEED,
spl_nand_erase_one(0, 0); SPI_MODE_3);
break; if (!flash) {
#endif puts("no flash\n");
} else {
puts("erase spi flash sector 0\n");
spi_flash_erase(flash, 0,
CONFIG_SYS_NAND_U_BOOT_SIZE);
} }
} }
} }

@ -1,3 +1,4 @@
CONFIG_SPL=y
CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM" CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM"
CONFIG_ARM=y +S:CONFIG_ARM=y
CONFIG_TARGET_TAURUS=y +S:CONFIG_TARGET_TAURUS=y

@ -18,6 +18,7 @@
#define MACH_TYPE_CORVUS 2066 #define MACH_TYPE_CORVUS 2066
#define CONFIG_MACH_TYPE MACH_TYPE_CORVUS
#define CONFIG_SYS_GENERIC_BOARD #define CONFIG_SYS_GENERIC_BOARD
/* /*
* Warning: changing CONFIG_SYS_TEXT_BASE requires * Warning: changing CONFIG_SYS_TEXT_BASE requires
@ -106,6 +107,7 @@
/* our CLE is AD22 */ /* our CLE is AD22 */
#define CONFIG_SYS_NAND_MASK_CLE (1 << 22) #define CONFIG_SYS_NAND_MASK_CLE (1 << 22)
#define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14 #define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14
#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC8
#endif #endif
/* Ethernet */ /* Ethernet */
@ -171,7 +173,6 @@
#define CONFIG_SPL_BOARD_INIT #define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_GPIO_SUPPORT #define CONFIG_SPL_GPIO_SUPPORT
#define CONFIG_SYS_NAND_ENABLE_PIN_SPL (2*32 + 14)
#define CONFIG_SPL_NAND_SUPPORT #define CONFIG_SPL_NAND_SUPPORT
#define CONFIG_SPL_NAND_DRIVERS #define CONFIG_SPL_NAND_DRIVERS
#define CONFIG_SPL_NAND_BASE #define CONFIG_SPL_NAND_BASE
@ -184,7 +185,6 @@
#define CONFIG_SYS_NAND_U_BOOT_DST CONFIG_SYS_TEXT_BASE #define CONFIG_SYS_NAND_U_BOOT_DST CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_NAND_5_ADDR_CYCLE #define CONFIG_SYS_NAND_5_ADDR_CYCLE
#define CONFIG_SYS_NAND_SIZE (256*1024*1024)
#define CONFIG_SYS_NAND_PAGE_SIZE 2048 #define CONFIG_SYS_NAND_PAGE_SIZE 2048
#define CONFIG_SYS_NAND_BLOCK_SIZE (128*1024) #define CONFIG_SYS_NAND_BLOCK_SIZE (128*1024)
#define CONFIG_SYS_NAND_PAGE_COUNT (CONFIG_SYS_NAND_BLOCK_SIZE / \ #define CONFIG_SYS_NAND_PAGE_COUNT (CONFIG_SYS_NAND_BLOCK_SIZE / \

@ -246,6 +246,7 @@
#define CONFIG_SYS_NAND_OOBSIZE 64 #define CONFIG_SYS_NAND_OOBSIZE 64
#define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000 #define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
#define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0 #define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0
#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
#endif #endif

@ -121,6 +121,14 @@
#define CONFIG_USB_STORAGE #define CONFIG_USB_STORAGE
#endif #endif
/* USB device */
#define CONFIG_USB_GADGET
#define CONFIG_USB_GADGET_DUALSPEED
#define CONFIG_USB_GADGET_ATMEL_USBA
#define CONFIG_USB_ETHER
#define CONFIG_USB_ETH_RNDIS
#define CONFIG_USBNET_MANUFACTURER "Atmel SAMA5D4EK"
#if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC) #if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC)
#define CONFIG_CMD_FAT #define CONFIG_CMD_FAT
#define CONFIG_DOS_PARTITION #define CONFIG_DOS_PARTITION

@ -121,6 +121,14 @@
#define CONFIG_USB_STORAGE #define CONFIG_USB_STORAGE
#endif #endif
/* USB device */
#define CONFIG_USB_GADGET
#define CONFIG_USB_GADGET_DUALSPEED
#define CONFIG_USB_GADGET_ATMEL_USBA
#define CONFIG_USB_ETHER
#define CONFIG_USB_ETH_RNDIS
#define CONFIG_USBNET_MANUFACTURER "Atmel SAMA5D4EK"
#if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC) #if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC)
#define CONFIG_CMD_FAT #define CONFIG_CMD_FAT
#define CONFIG_DOS_PARTITION #define CONFIG_DOS_PARTITION

@ -34,7 +34,6 @@
#define CONFIG_SETUP_MEMORY_TAGS #define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG #define CONFIG_INITRD_TAG
#define CONFIG_SKIP_LOWLEVEL_INIT #define CONFIG_SKIP_LOWLEVEL_INIT
#define CONFIG_SKIP_RELOCATE_UBOOT
#define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_CPUINFO
#define CONFIG_FIT #define CONFIG_FIT

@ -26,6 +26,11 @@
#define CONFIG_SYS_GENERIC_BOARD #define CONFIG_SYS_GENERIC_BOARD
#if defined(CONFIG_SPL_BUILD)
#define CONFIG_SYS_THUMB_BUILD
#define CONFIG_SYS_ICACHE_OFF
#define CONFIG_SYS_DCACHE_OFF
#endif
/* /*
* Warning: changing CONFIG_SYS_TEXT_BASE requires * Warning: changing CONFIG_SYS_TEXT_BASE requires
* adapting the initial boot program. * adapting the initial boot program.
@ -137,6 +142,19 @@
#define TAURUS_SPI_MASK (1 << 4) #define TAURUS_SPI_MASK (1 << 4)
#define TAURUS_SPI_CS_PIN AT91_PIN_PA3 #define TAURUS_SPI_CS_PIN AT91_PIN_PA3
#if defined(CONFIG_SPL_BUILD)
/* SPL related */
#undef CONFIG_SPL_OS_BOOT /* Not supported by existing map */
#define CONFIG_SPL_SPI_SUPPORT
#define CONFIG_SPL_SPI_FLASH_SUPPORT
#define CONFIG_SPL_SPI_LOAD
#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x20000
#define CONFIG_SF_DEFAULT_BUS 0
#define CONFIG_SF_DEFAULT_SPEED 10000000
#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
#endif
/* load address */ /* load address */
#define CONFIG_SYS_LOAD_ADDR 0x22000000 #define CONFIG_SYS_LOAD_ADDR 0x22000000
@ -171,8 +189,11 @@
/* Defines for SPL */ /* Defines for SPL */
#define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE 0x0 #define CONFIG_SPL_TEXT_BASE 0x0
#define CONFIG_SPL_MAX_SIZE (11 * 1024) #define CONFIG_SPL_MAX_SIZE (14 * 1024)
#define CONFIG_SPL_STACK (16 * 1024) #define CONFIG_SPL_STACK (16 * 1024)
#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SYS_TEXT_BASE - \
CONFIG_SYS_MALLOC_LEN)
#define CONFIG_SYS_SPL_MALLOC_SIZE CONFIG_SYS_MALLOC_LEN
#define CONFIG_SPL_BSS_START_ADDR CONFIG_SPL_MAX_SIZE #define CONFIG_SPL_BSS_START_ADDR CONFIG_SPL_MAX_SIZE
#define CONFIG_SPL_BSS_MAX_SIZE (3 * 1024) #define CONFIG_SPL_BSS_MAX_SIZE (3 * 1024)

Loading…
Cancel
Save