diff -urN linux-2.6.25-vpac1/arch/arm/configs/vpac270_defconfig linux-2.6.25-vpac1-256/arch/arm/configs/vpac270_defconfig --- linux-2.6.25-vpac1/arch/arm/configs/vpac270_defconfig 2008-05-16 18:31:28.000000000 +0200 +++ linux-2.6.25-vpac1-256/arch/arm/configs/vpac270_defconfig 2008-05-16 18:50:02.000000000 +0200 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.25-vpac1 -# Tue May 6 15:44:30 2008 +# Fri May 16 13:21:33 2008 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -240,7 +240,7 @@ # Boot options # CONFIG_ZBOOT_ROM_TEXT=0x20000 -CONFIG_ZBOOT_ROM_BSS=0xa0800000 +CONFIG_ZBOOT_ROM_BSS=0x80800000 CONFIG_ZBOOT_ROM=y CONFIG_CMDLINE="mem=32M root=/dev/nfs ip=dhcp console=ttyS0,38400" # CONFIG_KEXEC is not set diff -urN linux-2.6.25-vpac1/arch/arm/Kconfig.debug linux-2.6.25-vpac1-256/arch/arm/Kconfig.debug --- linux-2.6.25-vpac1/arch/arm/Kconfig.debug 2008-04-17 04:49:44.000000000 +0200 +++ linux-2.6.25-vpac1-256/arch/arm/Kconfig.debug 2008-05-13 12:23:42.000000000 +0200 @@ -71,6 +71,10 @@ It does include a timeout to ensure that the system does not totally freeze when there is nothing connected to read. +config EARLY_PRINTK + bool "Early PRINTK console support" + depends on DEBUG_LL + config DEBUG_DC21285_PORT bool "Kernel low-level debugging messages via footbridge serial port" depends on DEBUG_LL && FOOTBRIDGE diff -urN linux-2.6.25-vpac1/arch/arm/kernel/early_printk.c linux-2.6.25-vpac1-256/arch/arm/kernel/early_printk.c --- linux-2.6.25-vpac1/arch/arm/kernel/early_printk.c 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.6.25-vpac1-256/arch/arm/kernel/early_printk.c 2008-05-09 16:04:50.000000000 +0200 @@ -0,0 +1,58 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2007 Vpoipac Technologies a.s. + * + */ +#include +#include + +#include +#include +#include +#include + +#define UART FFUART +#define CKEN_UART CKEN6_FFUART +#define GPIO_RX_MD GPIO34_FFRXD_MD +#define GPIO_TX_MD GPIO39_FFTXD_MD + + +static void pxa_serial_putchar(u8 c) +{ + static volatile unsigned long *port = (unsigned long *)&UART; + + while (!(port[UART_LSR] & LSR_TDRQ)) + cpu_relax(); + port[UART_TX] = c; +} + + +static void early_console_write(struct console *con, const char *s, unsigned n) +{ + while (n-- && *s) { + if (*s == '\n') + pxa_serial_putchar('\r'); + pxa_serial_putchar(*s); + s++; + } +} + +static struct console early_console = { + .name = "early", + .write = early_console_write, + .flags = CON_PRINTBUFFER | CON_BOOT, + .index = -1 +}; + +void __init setup_early_printk(void) +{ + register_console(&early_console); +} + +void __init disable_early_printk(void) +{ + unregister_console(&early_console); +} diff -urN linux-2.6.25-vpac1/arch/arm/kernel/Makefile linux-2.6.25-vpac1-256/arch/arm/kernel/Makefile --- linux-2.6.25-vpac1/arch/arm/kernel/Makefile 2008-04-17 04:49:44.000000000 +0200 +++ linux-2.6.25-vpac1-256/arch/arm/kernel/Makefile 2008-05-13 12:25:49.000000000 +0200 @@ -37,5 +37,6 @@ head-y := head$(MMUEXT).o obj-$(CONFIG_DEBUG_LL) += debug.o +obj-$(CONFIG_EARLY_PRINTK) += early_printk.o extra-y := $(head-y) init_task.o vmlinux.lds diff -urN linux-2.6.25-vpac1/arch/arm/kernel/setup.c linux-2.6.25-vpac1-256/arch/arm/kernel/setup.c --- linux-2.6.25-vpac1/arch/arm/kernel/setup.c 2008-04-17 04:49:44.000000000 +0200 +++ linux-2.6.25-vpac1-256/arch/arm/kernel/setup.c 2008-05-13 12:24:20.000000000 +0200 @@ -790,7 +790,12 @@ struct tag *tags = (struct tag *)&init_tags; struct machine_desc *mdesc; char *from = default_command_line; - +#ifdef CONFIG_EARLY_PRINTK + { + extern void setup_early_printk(void); + setup_early_printk(); + } +#endif setup_processor(); mdesc = setup_machine(machine_arch_type); machine_name = mdesc->name; diff -urN linux-2.6.25-vpac1/arch/arm/mach-pxa/Makefile.boot linux-2.6.25-vpac1-256/arch/arm/mach-pxa/Makefile.boot --- linux-2.6.25-vpac1/arch/arm/mach-pxa/Makefile.boot 2008-04-17 04:49:44.000000000 +0200 +++ linux-2.6.25-vpac1-256/arch/arm/mach-pxa/Makefile.boot 2008-05-06 23:35:38.000000000 +0200 @@ -1,2 +1,2 @@ - zreladdr-y := 0xa0008000 + zreladdr-y := 0x80008000 diff -urN linux-2.6.25-vpac1/arch/arm/mach-pxa/vpac270.c linux-2.6.25-vpac1-256/arch/arm/mach-pxa/vpac270.c --- linux-2.6.25-vpac1/arch/arm/mach-pxa/vpac270.c 2008-05-16 18:31:28.000000000 +0200 +++ linux-2.6.25-vpac1-256/arch/arm/mach-pxa/vpac270.c 2008-05-16 18:26:10.000000000 +0200 @@ -430,7 +430,7 @@ /* Maintainer: Voipac Technologies */ .phys_io = 0x40000000, .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, - .boot_params = 0xa0000100, + .boot_params = (PHYS_OFFSET + 0x100), .map_io = vpac270_map_io, .init_irq = vpac270_init_irq, .timer = &pxa_timer, diff -urN linux-2.6.25-vpac1/drivers/pcmcia/pxa2xx_vpac270.c linux-2.6.25-vpac1-256/drivers/pcmcia/pxa2xx_vpac270.c --- linux-2.6.25-vpac1/drivers/pcmcia/pxa2xx_vpac270.c 2008-05-16 18:31:28.000000000 +0200 +++ linux-2.6.25-vpac1-256/drivers/pcmcia/pxa2xx_vpac270.c 2008-05-16 18:44:45.000000000 +0200 @@ -88,16 +88,9 @@ /* set interrupts */ GPDR(GPIO_PCMCIA0_CD_IRQ) &= ~GPIO_bit(GPIO_PCMCIA0_CD_IRQ); - set_irq_type(GPIO_PCMCIA0_CD_IRQ, VPAC270_PCMCIA_CD_EDGE); - GPDR(GPIO_PCMCIA0_RDY_IRQ) &= ~GPIO_bit(GPIO_PCMCIA0_RDY_IRQ); - set_irq_type(GPIO_PCMCIA0_RDY_IRQ, VPAC270_PCMCIA_RDY_EDGE); - GPDR(GPIO_PCMCIA1_CD_IRQ) &= ~GPIO_bit(GPIO_PCMCIA1_CD_IRQ); - set_irq_type(GPIO_PCMCIA1_CD_IRQ, VPAC270_PCMCIA_CD_EDGE); - GPDR(GPIO_PCMCIA1_RDY_IRQ) &= ~GPIO_bit(GPIO_PCMCIA1_RDY_IRQ); - set_irq_type(GPIO_PCMCIA1_RDY_IRQ, VPAC270_PCMCIA_RDY_EDGE); if (skt->irq == NO_IRQ) skt->irq = skt->nr ? VPAC270_PCMCIA1_RDY_IRQ : VPAC270_PCMCIA0_RDY_IRQ; diff -urN linux-2.6.25-vpac1/include/asm-arm/arch-pxa/memory.h linux-2.6.25-vpac1-256/include/asm-arm/arch-pxa/memory.h --- linux-2.6.25-vpac1/include/asm-arm/arch-pxa/memory.h 2008-04-17 04:49:44.000000000 +0200 +++ linux-2.6.25-vpac1-256/include/asm-arm/arch-pxa/memory.h 2008-05-13 13:20:03.000000000 +0200 @@ -15,7 +15,7 @@ /* * Physical DRAM offset. */ -#define PHYS_OFFSET UL(0xa0000000) +#define PHYS_OFFSET UL(0x80000000) /* * Virtual view <-> DMA view memory address translations @@ -37,7 +37,7 @@ * * This needs a node mem size of 26 bits. */ -#define NODE_MEM_SIZE_BITS 26 +#define NODE_MEM_SIZE_BITS 28 #if !defined(__ASSEMBLY__) && defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI) void cmx270_pci_adjust_zones(int node, unsigned long *size, diff -urN linux-2.6.25-vpac1/include/asm-arm/memory.h linux-2.6.25-vpac1-256/include/asm-arm/memory.h --- linux-2.6.25-vpac1/include/asm-arm/memory.h 2008-04-17 04:49:44.000000000 +0200 +++ linux-2.6.25-vpac1-256/include/asm-arm/memory.h 2008-05-16 18:42:28.000000000 +0200 @@ -34,7 +34,7 @@ * TASK_SIZE - the maximum size of a user space task. * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area */ -#define TASK_SIZE UL(0xbf000000) +#define TASK_SIZE UL(0x9f000000) #define TASK_UNMAPPED_BASE UL(0x40000000) #endif @@ -44,10 +44,10 @@ #define TASK_SIZE_26 UL(0x04000000) /* - * Page offset: 3GB + * Page offset: 2.5GB */ #ifndef PAGE_OFFSET -#define PAGE_OFFSET UL(0xc0000000) +#define PAGE_OFFSET UL(0xa0000000) #endif /*