summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/ap7000-add-spi-device-and-lcdc-base-address.patch112
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-define-for-sdram-test.patch117
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-framebuffer-address.patch11
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-spi-initcalls.patch16
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-system-manager-header-file.patch252
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-add-lcd-and-spi-to-config.patch124
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-ltv350qv-display-support.patch163
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-spi-support.patch98
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/avr32-boards-fix-flash-read.patch120
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/cmd-bmp-add-gzip-compressed-bmp.patch90
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/fix-mmc-data-timeout.patch101
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/lcd-add-24-bpp-support-and-atmel-lcdc-support.patch670
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/lcdc-driver-for-avr32.patch755
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/libavr32-add-spi-and-lcd-board-support.patch61
-rw-r--r--packages/u-boot/u-boot-1.1.4/at32stk1000/spi-driver-for-avr32.patch1026
-rw-r--r--packages/u-boot/u-boot_1.1.4.bb48
17 files changed, 3749 insertions, 15 deletions
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/.mtn2git_empty b/packages/u-boot/u-boot-1.1.4/at32stk1000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/.mtn2git_empty
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/ap7000-add-spi-device-and-lcdc-base-address.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/ap7000-add-spi-device-and-lcdc-base-address.patch
new file mode 100644
index 0000000000..fa8c8f701f
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/ap7000-add-spi-device-and-lcdc-base-address.patch
@@ -0,0 +1,112 @@
+diff -uprN u-boot-orig/cpu/at32ap7xxx/ap7000/devices.c u-boot/cpu/at32ap7xxx/ap7000/devices.c
+--- u-boot-orig/cpu/at32ap7xxx/ap7000/devices.c 2007-01-01 19:26:46.000000000 +0100
++++ u-boot/cpu/at32ap7xxx/ap7000/devices.c 2006-12-22 14:51:26.000000000 +0100
+@@ -223,6 +223,46 @@ static const struct resource macb1_resou
+ },
+ };
+ #endif
++#if defined(CFG_SPI0)
++static const struct resource spi0_resource[] = {
++ {
++ .type = RESOURCE_CLOCK,
++ .u = {
++ .clock = { CLOCK_APBA, 0 },
++ },
++ }, {
++ .type = RESOURCE_GPIO,
++ .u = {
++ .gpio = { 6, DEVICE_PIOA, GPIO_FUNC_A, 0 },
++ },
++ }, {
++ .type = RESOURCE_GPIO,
++ .u = {
++ .gpio = { 1, DEVICE_PIOA, GPIO_FUNC_B, 20 },
++ },
++ },
++};
++#endif
++#if defined(CFG_SPI1)
++static const struct resource spi1_resource[] = {
++ {
++ .type = RESOURCE_CLOCK,
++ .u = {
++ .clock = { CLOCK_APBA, 1 },
++ },
++ }, {
++ .type = RESOURCE_GPIO,
++ .u = {
++ .gpio = { 6, DEVICE_PIOB, GPIO_FUNC_B, 0 },
++ },
++ }, {
++ .type = RESOURCE_GPIO,
++ .u = {
++ .gpio = { 1, DEVICE_PIOA, GPIO_FUNC_A, 27 },
++ },
++ },
++};
++#endif
+ #if defined(CFG_LCDC)
+ static const struct resource lcdc_resource[] = {
+ {
+@@ -230,6 +270,16 @@ static const struct resource lcdc_resour
+ .u = {
+ .clock = { CLOCK_AHB, 7 },
+ },
++ }, {
++ .type = RESOURCE_GPIO,
++ .u = {
++ .gpio = { 13, DEVICE_PIOC, GPIO_FUNC_A, 19 },
++ },
++ }, {
++ .type = RESOURCE_GPIO,
++ .u = {
++ .gpio = { 18, DEVICE_PIOD, GPIO_FUNC_A, 0 },
++ },
+ },
+ };
+ #endif
+@@ -390,6 +440,20 @@ const struct device chip_device[] = {
+ .resource = macb0_resource,
+ },
+ #endif
++#if defined(CFG_SPI0)
++ [DEVICE_SPI0] = {
++ .regs = (void *)SPI0_BASE,
++ .nr_resources = ARRAY_SIZE(spi0_resource),
++ .resource = spi0_resource,
++ },
++#endif
++#if defined(CFG_SPI1)
++ [DEVICE_SPI1] = {
++ .regs = (void *)SPI1_BASE,
++ .nr_resources = ARRAY_SIZE(spi1_resource),
++ .resource = spi1_resource,
++ },
++#endif
+ #if defined(CFG_MACB1)
+ [DEVICE_MACB1] = {
+ .regs = (void *)MACB1_BASE,
+@@ -399,6 +463,7 @@ const struct device chip_device[] = {
+ #endif
+ #if defined(CFG_LCDC)
+ [DEVICE_LCDC] = {
++ .regs = (void *)LCDC_BASE,
+ .nr_resources = ARRAY_SIZE(lcdc_resource),
+ .resource = lcdc_resource,
+ },
+diff -uprN u-boot-orig/include/asm-avr32/arch-ap7000/platform.h u-boot/include/asm-avr32/arch-ap7000/platform.h
+--- u-boot-orig/include/asm-avr32/arch-ap7000/platform.h 2007-01-01 19:26:46.000000000 +0100
++++ u-boot/include/asm-avr32/arch-ap7000/platform.h 2006-12-22 14:20:39.000000000 +0100
+@@ -66,6 +66,12 @@ enum device_id {
+ #if defined(CFG_MACB1)
+ DEVICE_MACB1,
+ #endif
++#if defined(CFG_SPI0)
++ DEVICE_SPI0,
++#endif
++#if defined(CFG_SPI1)
++ DEVICE_SPI1,
++#endif
+ #if defined(CFG_LCDC)
+ DEVICE_LCDC,
+ #endif
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-define-for-sdram-test.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-define-for-sdram-test.patch
new file mode 100644
index 0000000000..33c5eb9b7c
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-define-for-sdram-test.patch
@@ -0,0 +1,117 @@
+Index: u-boot-1.1.4/cpu/at32ap7xxx/hsdramc.c
+===================================================================
+--- u-boot-1.1.4.orig/cpu/at32ap7xxx/hsdramc.c 2007-01-11 15:28:40.000000000 +0100
++++ u-boot-1.1.4/cpu/at32ap7xxx/hsdramc.c 2007-01-11 15:29:36.000000000 +0100
+@@ -133,6 +133,7 @@
+ printf("SDRAM: %u MB at address 0x%08lx\n",
+ sdram_size >> 20, info->phys_addr);
+
++#ifdef CONFIG_SDRAM_TEST
+ printf("Testing SDRAM...");
+ for (i = 0; i < sdram_size / 4; i++)
+ sdram[i] = i;
+@@ -148,6 +149,7 @@
+ }
+
+ puts("OK\n");
++#endif
+
+ return sdram_size;
+ }
+Index: u-boot-1.1.4/include/configs/atngw.h
+===================================================================
+--- u-boot-1.1.4.orig/include/configs/atngw.h 2007-01-11 15:28:40.000000000 +0100
++++ u-boot-1.1.4/include/configs/atngw.h 2007-01-30 16:41:23.000000000 +0100
+@@ -31,6 +31,10 @@
+
+ #define CONFIG_NGW_EXT_FLASH 1
+
++/* Handy macros for making strings */
++#define xstringify(x) #x
++#define stringify(x) xstringify(x)
++
+ /*
+ * Timer clock frequency. We're using the CPU-internal COUNT register
+ * for this, so this is equivalent to the CPU core clock frequency
+@@ -80,9 +84,9 @@
+
+ #define CONFIG_BAUDRATE 115200
+ #define CONFIG_BOOTARGS \
+- "console=ttyS0 root=/dev/mmcblk0p1"
++ "console=ttyS0 root=/dev/mtdblock1 rootfstype=jffs2"
+ #define CONFIG_BOOTCOMMAND \
+- "mmcinit; ext2load mmc 0:1 0x90400000 /uImage; bootm 0x90400000"
++ "fsload 0x90250000 /uImage; bootm 0x90250000"
+
+ #define CONFIG_BOOTDELAY 2
+ #define CONFIG_AUTOBOOT 1
+@@ -105,8 +109,8 @@
+ * generated and assigned to the environment variables "ethaddr" and
+ * "eth1addr".
+ */
+-#define CONFIG_ETHADDR "6a:87:71:14:cd:cb"
+-#define CONFIG_ETH1ADDR "ca:f8:15:e6:3e:e6"
++#define CONFIG_ETHADDR "42:b2:13:36:50:94"
++#define CONFIG_ETH1ADDR "4e:29:49:7e:5c:b9"
+ #define CONFIG_OVERWRITE_ETHADDR_ONCE 1
+ #define CONFIG_NET_MULTI 1
+
+@@ -183,6 +187,7 @@
+
+ #define CFG_SDRAM_BASE 0x10000000
+ #define CFG_SDRAM_16BIT 1
++#define CONFIG_SDRAM_TEST 1
+
+ #define CFG_ENV_IS_IN_FLASH 1
+ #define CFG_ENV_SIZE 65536
+@@ -202,7 +207,7 @@
+ #define CFG_DMA_ALLOC_END (CFG_MALLOC_START)
+ #define CFG_DMA_ALLOC_START (CFG_DMA_ALLOC_END - CFG_DMA_ALLOC_LEN)
+ /* Allow 2MB for the kernel run-time image */
+-#define CFG_LOAD_ADDR (CFG_SDRAM_BASE + 0x00200000)
++#define CFG_LOAD_ADDR (CFG_SDRAM_BASE + 0x00250000)
+ #define CFG_BOOTPARAMS_LEN (16 * 1024)
+
+ /* Other configuration settings that shouldn't have to change all that often */
+Index: u-boot-1.1.4/include/configs/atstk1002.h
+===================================================================
+--- u-boot-1.1.4.orig/include/configs/atstk1002.h 2007-01-11 15:29:36.000000000 +0100
++++ u-boot-1.1.4/include/configs/atstk1002.h 2007-01-30 16:41:25.000000000 +0100
+@@ -98,7 +98,7 @@
+ #define CFG_CONSOLE_UART_DEV DEVICE_USART1
+
+ /* Define to force consol on serial */
+-/* #define CFG_CONSOLE_ALLWAYS_UART 1 */
++#define CFG_CONSOLE_ALLWAYS_UART 1
+ #ifdef CFG_CONSOLE_ALLWAYS_UART
+ #define CFG_CONSOLE_IS_IN_ENV 1
+ #define CFG_CONSOLE_OVERWRITE_ROUTINE 1
+@@ -123,7 +123,7 @@
+ #endif
+
+ #define CONFIG_BOOTCOMMAND \
+- "mmcinit; ext2load mmc 0:1 /uImage; bootm"
++ "mmcinit; ext2load mmc 0:1 0x90250000 /uImage; bootm 0x90250000"
+ #define CONFIG_BOOTDELAY 2
+ #define CONFIG_AUTOBOOT 1
+
+@@ -145,8 +145,8 @@
+ * generated and assigned to the environment variables "ethaddr" and
+ * "eth1addr".
+ */
+-#define CONFIG_ETHADDR "6a:87:71:14:cd:cb"
+-#define CONFIG_ETH1ADDR "ca:f8:15:e6:3e:e6"
++#define CONFIG_ETHADDR "42:b2:13:36:50:94"
++#define CONFIG_ETH1ADDR "4e:29:49:7e:5c:b9"
+ #define CONFIG_OVERWRITE_ETHADDR_ONCE 1
+ #define CONFIG_NET_MULTI 1
+
+@@ -233,6 +233,8 @@
+ #define CFG_INTRAM_SIZE 0x8000
+
+ #define CFG_SDRAM_BASE 0x10000000
++/* Will do SDRAM test if defined */
++#define CONFIG_SDRAM_TEST 1
+
+ #define CFG_ENV_IS_IN_FLASH 1
+ #define CFG_ENV_SIZE 65536
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-framebuffer-address.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-framebuffer-address.patch
new file mode 100644
index 0000000000..cac9be5d55
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-framebuffer-address.patch
@@ -0,0 +1,11 @@
+diff -uprN u-boot-orig/include/asm-avr32/global_data.h u-boot/include/asm-avr32/global_data.h
+--- u-boot-orig/include/asm-avr32/global_data.h 2007-01-01 19:26:46.000000000 +0100
++++ u-boot/include/asm-avr32/global_data.h 2006-12-19 11:08:14.000000000 +0100
+@@ -44,6 +44,7 @@ typedef struct global_data {
+ unsigned long env_addr; /* Address of env struct */
+ unsigned long env_valid; /* Checksum of env valid? */
+ unsigned long cpu_hz; /* TODO: remove */
++ unsigned long fb_base; /* Address to framebuffer */
+ void **jt;
+ } gd_t;
+
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-spi-initcalls.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-spi-initcalls.patch
new file mode 100644
index 0000000000..397d6b00aa
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-spi-initcalls.patch
@@ -0,0 +1,16 @@
+diff -uprN u-boot-orig/include/asm-avr32/initcalls.h u-boot/include/asm-avr32/initcalls.h
+--- u-boot-orig/include/asm-avr32/initcalls.h 2007-01-01 19:26:46.000000000 +0100
++++ u-boot/include/asm-avr32/initcalls.h 2007-01-05 13:29:16.000000000 +0100
+@@ -30,6 +30,12 @@ extern void board_init_memories(void);
+ extern void board_init_pio(void);
+ extern void board_init_info(void);
+
++#if CONFIG_SPI
++extern void board_init_spi(void);
++#else
++static inline void board_init_spi(void) { }
++#endif
++
+ #if (CONFIG_COMMANDS & CFG_CMD_NET)
+ extern void net_init(void);
+ #else
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-system-manager-header-file.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-system-manager-header-file.patch
new file mode 100644
index 0000000000..221333c4bc
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/at32ap-add-system-manager-header-file.patch
@@ -0,0 +1,252 @@
+diff -uprN u-boot-orig/include/asm-avr32/arch-ap7000/sm.h u-boot/include/asm-avr32/arch-ap7000/sm.h
+--- u-boot-orig/include/asm-avr32/arch-ap7000/sm.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot/include/asm-avr32/arch-ap7000/sm.h 2006-12-21 16:28:04.000000000 +0100
+@@ -0,0 +1,248 @@
++/*
++ * Register definitions for SM
++ *
++ * System Manager
++ */
++#ifndef __ASM_AVR32_SM_H__
++#define __ASM_AVR32_SM_H__
++
++/* SM register offsets */
++#define SM_PM_MCCTRL 0x0000
++#define SM_PM_CKSEL 0x0004
++#define SM_PM_CPU_MASK 0x0008
++#define SM_PM_AHB_MASK 0x000c
++#define SM_PM_APBA_MASK 0x0010
++#define SM_PM_APBB_MASK 0x0014
++#define SM_PM_PLL0 0x0020
++#define SM_PM_PLL1 0x0024
++#define SM_PM_VCTRL 0x0030
++#define SM_PM_VMREF 0x0034
++#define SM_PM_VMV 0x0038
++#define SM_PM_IER 0x0040
++#define SM_PM_IDR 0x0044
++#define SM_PM_IMR 0x0048
++#define SM_PM_ISR 0x004c
++#define SM_PM_ICR 0x0050
++#define SM_PM_GCCTRL 0x0060
++#define SM_PM_GCCTRL0 0x0060
++#define SM_PM_GCCTRL1 0x0064
++#define SM_PM_GCCTRL2 0x0068
++#define SM_PM_GCCTRL3 0x006c
++#define SM_PM_GCCTRL4 0x0070
++#define SM_PM_GCCTRL5 0x0074
++#define SM_PM_GCCTRL6 0x0078
++#define SM_PM_GCCTRL7 0x007c
++#define SM_RTC_CTRL 0x0080
++#define SM_RTC_VAL 0x0084
++#define SM_RTC_TOP 0x0088
++#define SM_RTC_IER 0x0090
++#define SM_RTC_IDR 0x0094
++#define SM_RTC_IMR 0x0098
++#define SM_RTC_ISR 0x009c
++#define SM_RTC_ICR 0x00a0
++#define SM_WDT_CTRL 0x00b0
++#define SM_WDT_CLR 0x00b4
++#define SM_WDT_EXT 0x00b8
++#define SM_RC_RCAUSE 0x00c0
++#define SM_EIM_IER 0x0100
++#define SM_EIM_IDR 0x0104
++#define SM_EIM_IMR 0x0108
++#define SM_EIM_ISR 0x010c
++#define SM_EIM_ICR 0x0110
++#define SM_EIM_MODE 0x0114
++#define SM_EIM_EDGE 0x0118
++#define SM_EIM_LEVEL 0x011c
++#define SM_EIM_TEST 0x0120
++#define SM_EIM_NMIC 0x0124
++
++/* Bitfields in PM_MCCTRL */
++
++/* Bitfields in PM_CKSEL */
++#define SM_CPUSEL_OFFSET 0
++#define SM_CPUSEL_SIZE 3
++#define SM_CPUDIV_OFFSET 7
++#define SM_CPUDIV_SIZE 1
++#define SM_AHBSEL_OFFSET 8
++#define SM_AHBSEL_SIZE 3
++#define SM_AHBDIV_OFFSET 15
++#define SM_AHBDIV_SIZE 1
++#define SM_APBASEL_OFFSET 16
++#define SM_APBASEL_SIZE 3
++#define SM_APBADIV_OFFSET 23
++#define SM_APBADIV_SIZE 1
++#define SM_APBBSEL_OFFSET 24
++#define SM_APBBSEL_SIZE 3
++#define SM_APBBDIV_OFFSET 31
++#define SM_APBBDIV_SIZE 1
++
++/* Bitfields in PM_CPU_MASK */
++
++/* Bitfields in PM_AHB_MASK */
++
++/* Bitfields in PM_APBA_MASK */
++
++/* Bitfields in PM_APBB_MASK */
++
++/* Bitfields in PM_PLL0 */
++#define SM_PLLEN_OFFSET 0
++#define SM_PLLEN_SIZE 1
++#define SM_PLLOSC_OFFSET 1
++#define SM_PLLOSC_SIZE 1
++#define SM_PLLOPT_OFFSET 2
++#define SM_PLLOPT_SIZE 3
++#define SM_PLLDIV_OFFSET 8
++#define SM_PLLDIV_SIZE 8
++#define SM_PLLMUL_OFFSET 16
++#define SM_PLLMUL_SIZE 8
++#define SM_PLLCOUNT_OFFSET 24
++#define SM_PLLCOUNT_SIZE 6
++#define SM_PLLTEST_OFFSET 31
++#define SM_PLLTEST_SIZE 1
++
++/* Bitfields in PM_PLL1 */
++
++/* Bitfields in PM_VCTRL */
++#define SM_VAUTO_OFFSET 0
++#define SM_VAUTO_SIZE 1
++#define SM_PM_VCTRL_VAL_OFFSET 8
++#define SM_PM_VCTRL_VAL_SIZE 7
++
++/* Bitfields in PM_VMREF */
++#define SM_REFSEL_OFFSET 0
++#define SM_REFSEL_SIZE 4
++
++/* Bitfields in PM_VMV */
++#define SM_PM_VMV_VAL_OFFSET 0
++#define SM_PM_VMV_VAL_SIZE 8
++
++/* Bitfields in PM_IER */
++
++/* Bitfields in PM_IDR */
++
++/* Bitfields in PM_IMR */
++
++/* Bitfields in PM_ISR */
++
++/* Bitfields in PM_ICR */
++#define SM_LOCK0_OFFSET 0
++#define SM_LOCK0_SIZE 1
++#define SM_LOCK1_OFFSET 1
++#define SM_LOCK1_SIZE 1
++#define SM_WAKE_OFFSET 2
++#define SM_WAKE_SIZE 1
++#define SM_VOK_OFFSET 3
++#define SM_VOK_SIZE 1
++#define SM_VMRDY_OFFSET 4
++#define SM_VMRDY_SIZE 1
++#define SM_CKRDY_OFFSET 5
++#define SM_CKRDY_SIZE 1
++
++/* Bitfields in PM_GCCTRL */
++#define SM_OSCSEL_OFFSET 0
++#define SM_OSCSEL_SIZE 1
++#define SM_PLLSEL_OFFSET 1
++#define SM_PLLSEL_SIZE 1
++#define SM_CEN_OFFSET 2
++#define SM_CEN_SIZE 1
++#define SM_CPC_OFFSET 3
++#define SM_CPC_SIZE 1
++#define SM_DIVEN_OFFSET 4
++#define SM_DIVEN_SIZE 1
++#define SM_DIV_OFFSET 8
++#define SM_DIV_SIZE 8
++
++/* Bitfields in RTC_CTRL */
++#define SM_PCLR_OFFSET 1
++#define SM_PCLR_SIZE 1
++#define SM_TOPEN_OFFSET 2
++#define SM_TOPEN_SIZE 1
++#define SM_CLKEN_OFFSET 3
++#define SM_CLKEN_SIZE 1
++#define SM_PSEL_OFFSET 8
++#define SM_PSEL_SIZE 16
++
++/* Bitfields in RTC_VAL */
++#define SM_RTC_VAL_VAL_OFFSET 0
++#define SM_RTC_VAL_VAL_SIZE 31
++
++/* Bitfields in RTC_TOP */
++#define SM_RTC_TOP_VAL_OFFSET 0
++#define SM_RTC_TOP_VAL_SIZE 32
++
++/* Bitfields in RTC_IER */
++
++/* Bitfields in RTC_IDR */
++
++/* Bitfields in RTC_IMR */
++
++/* Bitfields in RTC_ISR */
++
++/* Bitfields in RTC_ICR */
++#define SM_TOPI_OFFSET 0
++#define SM_TOPI_SIZE 1
++
++/* Bitfields in WDT_CTRL */
++#define SM_KEY_OFFSET 24
++#define SM_KEY_SIZE 8
++
++/* Bitfields in WDT_CLR */
++
++/* Bitfields in WDT_EXT */
++
++/* Bitfields in RC_RCAUSE */
++#define SM_POR_OFFSET 0
++#define SM_POR_SIZE 1
++#define SM_BOD_OFFSET 1
++#define SM_BOD_SIZE 1
++#define SM_EXT_OFFSET 2
++#define SM_EXT_SIZE 1
++#define SM_WDT_OFFSET 3
++#define SM_WDT_SIZE 1
++#define SM_NTAE_OFFSET 4
++#define SM_NTAE_SIZE 1
++#define SM_SERP_OFFSET 5
++#define SM_SERP_SIZE 1
++
++/* Bitfields in EIM_IER */
++
++/* Bitfields in EIM_IDR */
++
++/* Bitfields in EIM_IMR */
++
++/* Bitfields in EIM_ISR */
++
++/* Bitfields in EIM_ICR */
++
++/* Bitfields in EIM_MODE */
++
++/* Bitfields in EIM_EDGE */
++#define SM_INT0_OFFSET 0
++#define SM_INT0_SIZE 1
++#define SM_INT1_OFFSET 1
++#define SM_INT1_SIZE 1
++#define SM_INT2_OFFSET 2
++#define SM_INT2_SIZE 1
++#define SM_INT3_OFFSET 3
++#define SM_INT3_SIZE 1
++
++/* Bitfields in EIM_LEVEL */
++
++/* Bitfields in EIM_TEST */
++#define SM_TESTEN_OFFSET 31
++#define SM_TESTEN_SIZE 1
++
++/* Bitfields in EIM_NMIC */
++#define SM_EN_OFFSET 0
++#define SM_EN_SIZE 1
++
++/* Bit manipulation macros */
++#define SM_BIT(name) (1 << SM_##name##_OFFSET)
++#define SM_BF(name,value) (((value) & ((1 << SM_##name##_SIZE) - 1)) << SM_##name##_OFFSET)
++#define SM_BFEXT(name,value) (((value) >> SM_##name##_OFFSET) & ((1 << SM_##name##_SIZE) - 1))
++#define SM_BFINS(name,value,old) (((old) & ~(((1 << SM_##name##_SIZE) - 1) << SM_##name##_OFFSET)) | SM_BF(name,value))
++
++/* Register access macros */
++#define sm_readl(port,reg) readl((port)->regs + SM_##reg)
++#define sm_writel(port,reg,value) writel((value), (port)->regs + SM_##reg)
++
++#endif /* __ASM_AVR32_SM_H__ */
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-add-lcd-and-spi-to-config.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-add-lcd-and-spi-to-config.patch
new file mode 100644
index 0000000000..4deb284564
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-add-lcd-and-spi-to-config.patch
@@ -0,0 +1,124 @@
+Index: u-boot-orig/include/configs/atstk1002.h
+===================================================================
+--- u-boot-orig.orig/include/configs/atstk1002.h 2007-01-05 15:58:53.000000000 +0100
++++ u-boot-orig/include/configs/atstk1002.h 2007-01-05 16:04:50.000000000 +0100
+@@ -32,6 +32,10 @@
+
+ #define CONFIG_ATSTK1000_EXT_FLASH 1
+
++/* Handy macros for making strings */
++#define xstringify(x) #x
++#define stringify(x) xstringify(x)
++
+ /*
+ * Timer clock frequency. We're using the CPU-internal COUNT register
+ * for this, so this is equivalent to the CPU core clock frequency
+@@ -68,10 +72,39 @@
+ #define CFG_USART1 1
+ #define CFG_MMCI 1
+ #define CFG_MACB0 1
+-#define CFG_MACB1 1
++/* #define CFG_MACB1 1 */
++
++/* Enable SPI support */
++#define CONFIG_SPI 1
++#define CONFIG_ATMEL_SPI 1
++#define CFG_SPI0 1
++
++/* Enable LCD support */
++#define CFG_DMAC 1
++#define CFG_LCDC 1
++#define CONFIG_LCD 1
++#define CONFIG_ATMEL_LCDC 1
++#define CONFIG_DISPLAY_LTV350QV 1
++
++/* Setup LCD */
++#define LCD_BPP LCD_COLOR24
++/* CFG_SDRAM_BASE + 0x00500000 */
++#define CFG_LCD_BASE 0x10500000
++#define CFG_WHITE_ON_BLACK 1
++#define CONFIG_VIDEO_BMP_GZIP 1
++#define CFG_VIDEO_LOGO_MAX_SIZE 262144 /* > 320 * 240 * 3 */
++/* #define CONFIG_SPLASH_SCREEN 1 */
+
+ #define CFG_CONSOLE_UART_DEV DEVICE_USART1
+
++/* Define to force consol on serial */
++/* #define CFG_CONSOLE_ALLWAYS_UART 1 */
++#ifdef CFG_CONSOLE_ALLWAYS_UART
++#define CFG_CONSOLE_IS_IN_ENV 1
++#define CFG_CONSOLE_OVERWRITE_ROUTINE 1
++#define CFG_CONSOLE_ENV_OVERWRITE 1
++#endif
++
+ /* User serviceable stuff */
+ #define CONFIG_CMDLINE_TAG 1
+ #define CONFIG_SETUP_MEMORY_TAGS 1
+@@ -80,11 +113,17 @@
+ #define CONFIG_STACKSIZE (2048)
+
+ #define CONFIG_BAUDRATE 115200
++
++#ifdef CFG_LCD_BASE
+ #define CONFIG_BOOTARGS \
+- "console=ttyUS0 root=/dev/mmcblk0p1 fbmem=600k"
+-#define CONFIG_BOOTCOMMAND \
+- "mmcinit; ext2load mmc 0:1 0x90400000 /uImage; bootm 0x90400000"
++ "console=ttyS0 root=/dev/mmcblk0p1 fbmem=600k@" stringify(CFG_LCD_BASE)
++#else
++#define CONFIG_BOOTARGS \
++ "console=ttyS0 root=/dev/mmcblk0p1 fbmem=600k"
++#endif
+
++#define CONFIG_BOOTCOMMAND \
++ "mmcinit; ext2load mmc 0:1 /uImage; bootm"
+ #define CONFIG_BOOTDELAY 2
+ #define CONFIG_AUTOBOOT 1
+
+@@ -144,7 +183,7 @@
+ /* | CFG_CMD_DIAG */ \
+ /* | CFG_CMD_HWFLOW */ \
+ /* | CFG_CMD_SAVES */ \
+- /* | CFG_CMD_SPI */ \
++ | CFG_CMD_SPI \
+ /* | CFG_CMD_PING */ \
+ | CFG_CMD_MMC \
+ /* | CFG_CMD_FAT */ \
+@@ -152,6 +191,7 @@
+ /* | CFG_CMD_ITEST */ \
+ | CFG_CMD_EXT2 \
+ | CFG_CMD_JFFS2 \
++ | CFG_CMD_BMP \
+ )
+
+ #include <cmd_confdefs.h>
+@@ -201,7 +241,7 @@
+ #define CFG_INIT_SP_ADDR (CFG_INTRAM_BASE + CFG_INTRAM_SIZE)
+
+ #ifdef CONFIG_ATSTK1000
+-# define CFG_MALLOC_LEN (256*1024)
++# define CFG_MALLOC_LEN (512*1024)
+ # define CFG_MALLOC_END \
+ ({ \
+ DECLARE_GLOBAL_DATA_PTR; \
+@@ -213,7 +253,7 @@
+ # define CFG_DMA_ALLOC_END (CFG_MALLOC_START)
+ # define CFG_DMA_ALLOC_START (CFG_DMA_ALLOC_END - CFG_DMA_ALLOC_LEN)
+ /* Allow 2MB for the kernel run-time image */
+-# define CFG_LOAD_ADDR (CFG_SDRAM_BASE + 0x00200000)
++# define CFG_LOAD_ADDR (CFG_SDRAM_BASE + 0x00250000)
+ # define CFG_BOOTPARAMS_LEN (16 * 1024)
+ #else
+ # define CFG_MALLOC_LEN (8*1024)
+Index: u-boot-orig/board/atstk1000/atstk1000.c
+===================================================================
+--- u-boot-orig.orig/board/atstk1000/atstk1000.c 2007-01-05 16:02:33.000000000 +0100
++++ u-boot-orig/board/atstk1000/atstk1000.c 2007-01-05 16:04:00.000000000 +0100
+@@ -52,3 +52,7 @@
+ gd->bd->bi_phy_id[0] = 0x10;
+ gd->bd->bi_phy_id[1] = 0x11;
+ }
++
++#ifdef CFG_CONSOLE_ALLWAYS_UART
++int overwrite_console(void) { return 1; }
++#endif
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-ltv350qv-display-support.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-ltv350qv-display-support.patch
new file mode 100644
index 0000000000..57c0fae127
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-ltv350qv-display-support.patch
@@ -0,0 +1,163 @@
+diff -uprN u-boot-orig/board/atstk1000/ltv350qv.c u-boot/board/atstk1000/ltv350qv.c
+--- u-boot-orig/board/atstk1000/ltv350qv.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot/board/atstk1000/ltv350qv.c 2007-01-02 15:17:32.000000000 +0100
+@@ -0,0 +1,147 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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
++ */
++#include <common.h>
++
++#ifdef CONFIG_LCD
++#ifndef CONFIG_SPI
++#error No SPI controller for LCD setup, enable CFG_SPI
++#endif
++
++#include <spi.h>
++
++#ifdef CONFIG_ATMEL_SPI
++#include <atmel_spi.h>
++#endif
++
++static int ltv350qv_write_reg(u8 reg, u16 val)
++{
++ int ret;
++ u8 buffer[3];
++
++ buffer[0] = 0x74;
++ buffer[1] = 0x00;
++ buffer[2] = reg & 0x7f;
++
++ ret = spi_write(&buffer[0], 1, &buffer[1], 2);
++ if (ret != 3) {
++ printf("spi_write returned %d\n", ret);
++ return -1;
++ }
++
++ buffer[0] = 0x76;
++ buffer[1] = val >> 8;
++ buffer[2] = val;
++
++ ret = spi_write(&buffer[0], 1, &buffer[1], 2);
++ if (ret != 3) {
++ printf("spi_write returned %d\n", ret);
++ return -1;
++ }
++
++ return 0;
++}
++
++#define write_reg(reg, val) \
++ do { \
++ ret = ltv350qv_write_reg(reg, val); \
++ if (ret) \
++ goto out; \
++ } while (0)
++
++void ltv350qv_power_on(void)
++{
++ int ret;
++
++#ifdef CONFIG_ATMEL_SPI
++ spi_select_chip(1);
++#endif
++
++ debug ("ltv350qv: do power on sequence\n");
++
++ /* write startup procedure */
++ write_reg(9, 0x0000);
++ udelay(15000);
++ write_reg(9, 0x4000);
++ write_reg(10, 0x2000);
++ write_reg(9, 0x4055);
++ udelay(55000);
++ write_reg(1, 0x409d);
++ write_reg(2, 0x0204);
++ write_reg(3, 0x0100);
++ write_reg(4, 0x3000);
++ write_reg(5, 0x4003);
++ write_reg(6, 0x000a);
++ write_reg(7, 0x0021);
++ write_reg(8, 0x0c00);
++ write_reg(10, 0x0103);
++ write_reg(11, 0x0301);
++ write_reg(12, 0x1f0f);
++ write_reg(13, 0x1f0f);
++ write_reg(14, 0x0707);
++ write_reg(15, 0x0307);
++ write_reg(16, 0x0707);
++ write_reg(17, 0x0000);
++ write_reg(18, 0x0004);
++ write_reg(19, 0x0000);
++
++ udelay(20000);
++ write_reg(9, 0x4a55);
++ write_reg(5, 0x5003);
++
++ debug ("ltv350qv: power on sequence done\n");
++out:
++ return;
++}
++
++void ltv350qv_power_off(void)
++{
++ int ret;
++
++#ifdef CONFIG_ATMEL_SPI
++ spi_select_chip(1);
++#endif
++
++ debug ("ltv350qv: do power off sequence\n");
++ /* GON -> 0, POC -> 0 */
++ write_reg(9, 0x4055);
++ /* DSC -> 0 */
++ write_reg(5, 0x4003);
++ /* VCOMG -> 0 */
++ write_reg(10, 0x2103);
++
++ udelay(1000000);
++
++ /* AP[2:0] -> 000 */
++ write_reg(9, 0x4050);
++
++ debug ("ltv350qv: power off sequence done\n");
++out:
++ return;
++}
++
++void ltv350qv_init(void)
++{
++ debug ("ltv350qv: initializing LTV350QV panel\n");
++ ltv350qv_power_on();
++}
++
++#endif
+diff -uprN u-boot-orig/board/atstk1000/Makefile u-boot/board/atstk1000/Makefile
+--- u-boot-orig/board/atstk1000/Makefile 2007-01-01 19:26:46.000000000 +0100
++++ u-boot/board/atstk1000/Makefile 2007-01-01 16:23:12.000000000 +0100
+@@ -30,7 +30,7 @@ endif
+
+ LIB := lib$(BOARD).a
+
+-SRC := $(BOARD).c $(DAUGHTERBOARD).c eth.c flash.c
++SRC := $(BOARD).c $(DAUGHTERBOARD).c eth.c flash.c ltv350qv.c
+ SRC += spi.c
+ OBJS := $(addsuffix .o,$(basename $(SRC)))
+
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-spi-support.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-spi-support.patch
new file mode 100644
index 0000000000..b9cdba16ff
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/at32stk1000/atstk1000-spi-support.patch
@@ -0,0 +1,98 @@
+diff -uprN u-boot-orig/board/atstk1000/spi.c u-boot/board/atstk1000/spi.c
+--- u-boot-orig/board/atstk1000/spi.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot/board/atstk1000/spi.c 2007-01-03 08:46:36.000000000 +0100
+@@ -0,0 +1,83 @@
++/*
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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
++ */
++#include <common.h>
++
++#include <spi.h>
++#include <asm/io.h>
++#include <atmel_spi.h>
++
++extern void ltv350qv_init(void);
++
++static struct spi_options_t cs0 = {
++ .reg = 0,
++ .baudrate = 200000,
++ .bits = 8,
++ .spck_delay = 0,
++ .trans_delay = 0,
++ .stay_act = 1,
++ .spi_mode = 3,
++};
++static struct spi_options_t cs1 = {
++ .reg = 1,
++ .baudrate = 1500000,
++ .bits = 8,
++ .spck_delay = 0,
++ .trans_delay = 0,
++ .stay_act = 1,
++ .spi_mode = 3,