diff -urN linux-c700-b500-20021214-rom1_00.orig/arch/arm/config.in linux-c700-b500-20021214-rom1_00-yk2/arch/arm/config.in --- linux-c700-b500-20021214-rom1_00.orig/arch/arm/config.in Fri Oct 11 15:30:37 2002 +++ linux-c700-b500-20021214-rom1_00-yk2/arch/arm/config.in Thu Apr 17 00:50:39 2003 @@ -214,6 +214,12 @@ English fi +if [ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then + choice 'Corgi RAM Available' \ + "128MB CONFIG_PXA_CORGI_128MB \ + 64MB CONFIG_PXA_CORGI_64MB \ + 32MB CONFIG_PXA_CORGI_32MB" 32MB +fi if [ "$CONFIG_ARCH_LUBBOCK" = "y" ]; then diff -urN linux-c700-b500-20021214-rom1_00.orig/arch/arm/kernel/head-armv.S linux-c700-b500-20021214-rom1_00-yk2/arch/arm/kernel/head-armv.S --- linux-c700-b500-20021214-rom1_00.orig/arch/arm/kernel/head-armv.S Thu Aug 29 12:27:20 2002 +++ linux-c700-b500-20021214-rom1_00-yk2/arch/arm/kernel/head-armv.S Thu Apr 17 00:50:39 2003 @@ -145,6 +145,9 @@ teq r7, #0 @ invalid architecture? moveq r0, #'a' @ yes, error 'a' beq __error +#if defined(CONFIG_PXA_CORGI_128MB) || defined(CONFIG_PXA_CORGI_64MB) + bl cpu_xscale_sl_modify_sdram_config +#endif bl __create_page_tables adr lr, __ret @ return address add pc, r10, #12 @ initialise processor diff -urN linux-c700-b500-20021214-rom1_00.orig/arch/arm/mach-pxa/corgi.c linux-c700-b500-20021214-rom1_00-yk2/arch/arm/mach-pxa/corgi.c --- linux-c700-b500-20021214-rom1_00.orig/arch/arm/mach-pxa/corgi.c Tue Jan 14 12:07:55 2003 +++ linux-c700-b500-20021214-rom1_00-yk2/arch/arm/mach-pxa/corgi.c Thu Apr 17 00:50:39 2003 @@ -258,7 +258,17 @@ fixup_corgi(struct machine_desc *desc, struct param_struct *params, char **cmdline, struct meminfo *mi) { - SET_BANK (0, 0xa0000000, 32*1024*1024); + u32 corgi_ram_size; + +#if defined(CONFIG_PXA_CORGI_128MB) + corgi_ram_size = 128; +#elif defined(CONFIG_PXA_CORGI_64MB) + corgi_ram_size = 64; +#else + corgi_ram_size = 32; +#endif + + SET_BANK (0, PHYS_OFFSET + PXA_CS0_PHYS, corgi_ram_size * 1024 * 1024); mi->nr_banks = 1; #if defined(CONFIG_BLK_DEV_INITRD) setup_ramdisk (1, 0, 0, 8192); @@ -271,7 +281,7 @@ #ifdef CONFIG_SHARPSL_BOOTLDR_PARAMS if (params->u1.s.page_size != PAGE_SIZE) { params->u1.s.page_size = PAGE_SIZE; - params->u1.s.nr_pages = 32 * 1024 * 1024 / PAGE_SIZE; + params->u1.s.nr_pages = corgi_ram_size * 1024 * 1024 / PAGE_SIZE; params->u1.s.ramdisk_size = 0; params->u1.s.flags = FLAG_READONLY | FLAG_RDLOAD | FLAG_RDPROMPT; params->u1.s.rootdev = ROOT_DEV; diff -urN linux-c700-b500-20021214-rom1_00.orig/arch/arm/mach-pxa/sharpsl_suspend.S linux-c700-b500-20021214-rom1_00-yk2/arch/arm/mach-pxa/sharpsl_suspend.S --- linux-c700-b500-20021214-rom1_00.orig/arch/arm/mach-pxa/sharpsl_suspend.S Tue Jan 14 12:07:55 2003 +++ linux-c700-b500-20021214-rom1_00-yk2/arch/arm/mach-pxa/sharpsl_suspend.S Thu Apr 17 01:13:37 2003 @@ -43,6 +43,23 @@ #include "sharpsl_param.h" + +#define PXA_PHYS_MD_BASE 0x48000000 +#define PXA_MDCNFG_ORG_MASK 0xff +#define PXA_MDREFR_DRI_SHIFT 12 + +#if defined(CONFIG_PXA_CORGI_128MB) +#define PXA_MDCNFG_ORG 0xCB +#define PXA_MDREFR_DRI 0x17 +#elif defined(CONFIG_PXA_CORGI_64MB) +#define PXA_MDCNFG_ORG 0xC9 +#define PXA_MDREFR_DRI 0x17 +#else +#define PXA_MDCNFG_ORG 0xA9 +#define PXA_MDREFR_DRI 0x27 +#endif + + /* * cpu_pxa_do_suspend() * @@ -462,6 +479,9 @@ ENTRY(cpu_pxa_resume) +#if defined(CONFIG_PXA_CORGI_128MB) || defined(CONFIG_PXA_CORGI_64MB) + bl cpu_xscale_sl_modify_sdram_config +#endif ldr r3, sleep_param_p @ Sleep mode information data structure mov r0, r3 @@ -484,7 +504,6 @@ nop nop nop - nop Awake_address: @@ -840,8 +859,8 @@ MD_BASE: .word io_p2v(0x48000000) CodeOnCacheAdr: .word CodeOnCache -MDCNFG_ValAdr: .word 0x01A819A9 -MDREFR_ValAdr: .word 0x000BC027 +MDCNFG_ValAdr: .word 0x01A81900 | PXA_MDCNFG_ORG +MDREFR_ValAdr: .word 0x000BC000 | PXA_MDREFR_DRI CCCR_ValAdr: .word 0x00000145 MSC0_ValAdr: .word 0x7ff03DD8 MSC1_ValAdr: .word 0x2274225C @@ -898,9 +917,9 @@ .text CodeOnCacheAdr_100: .word CodeOnCache_100 -MDCNFG_ValAdr_100: .word 0x01A81AA9 +MDCNFG_ValAdr_100: .word 0x01A81A00 | PXA_MDCNFG_ORG @@MDREFR_ValAdr_100: .word 0x0009C02F -MDREFR_ValAdr_100: .word 0x0009C027 +MDREFR_ValAdr_100: .word 0x0009C000 | PXA_MDREFR_DRI CCCR_ValAdr_100: .word 0x00000241 MSC0_ValAdr_100: .word 0x7ff01888 MSC1_ValAdr_100: .word 0x1244123C @@ -942,9 +961,9 @@ LCCR3VALUE_121: .word 0x04000007 CodeOnCacheAdr_121: .word CodeOnCache_121 -MDCNFG_ValAdr_121: .word 0x01A81AA9 +MDCNFG_ValAdr_121: .word 0x01A81A00 | PXA_MDCNFG_ORG @@MDREFR_ValAdr_121: .word 0x0009C02F -MDREFR_ValAdr_121: .word 0x0009C027 +MDREFR_ValAdr_121: .word 0x0009C000 | PXA_MDREFR_DRI CCCR_ValAdr_121: .word 0x00000121 MSC0_ValAdr_121: .word 0x7ff01888 MSC1_ValAdr_121: .word 0x1244123C @@ -993,8 +1012,8 @@ LCCR3VALUE_145: .word 0x0400000C CodeOnCacheAdr_145: .word CodeOnCache_145 CCCR_ValAdr_145: .word 0x00000145 -MDCNFG_ValAdr_145: .word 0x01A819A9 -MDREFR_ValAdr_145: .word 0x000BC027 +MDCNFG_ValAdr_145: .word 0x01A81900 | PXA_MDCNFG_ORG +MDREFR_ValAdr_145: .word 0x000BC000 | PXA_MDREFR_DRI MSC0_ValAdr_145: .word 0x7ff03DD8 MSC1_ValAdr_145: .word 0x2274225C MSC2_ValAdr_145: .word 0x7FF024F4 @@ -1048,5 +1067,18 @@ .align 5 .text - - + +ENTRY(cpu_xscale_sl_modify_sdram_config) + mov r2, #PXA_PHYS_MD_BASE + ldr r3, [r2, #MD_MDCNFG] + bic r3, r3, #PXA_MDCNFG_ORG_MASK + orr r3, r3, #PXA_MDCNFG_ORG + str r3, [r2, #MD_MDCNFG] + + ldr r3, [r2, #MD_MDREFR] + mov r3, r3, lsr #PXA_MDREFR_DRI_SHIFT @clear DRI(1) + mov r3, r3, lsl #PXA_MDREFR_DRI_SHIFT @clear DRI(2) + orr r3, r3, #PXA_MDREFR_DRI + str r3, [r2, #MD_MDREFR] + + mov pc, lr diff -urN linux-c700-b500-20021214-rom1_00.orig/arch/arm/mach-pxa/sleep.S linux-c700-b500-20021214-rom1_00-yk2/arch/arm/mach-pxa/sleep.S --- linux-c700-b500-20021214-rom1_00.orig/arch/arm/mach-pxa/sleep.S Mon Aug 26 15:01:51 2002 +++ linux-c700-b500-20021214-rom1_00-yk2/arch/arm/mach-pxa/sleep.S Thu Apr 17 00:50:39 2003 @@ -104,6 +104,9 @@ mov r0, #I_BIT | F_BIT | MODE_SVC @ set SVC, irqs off msr cpsr_c, r0 +#if defined(CONFIG_PXA_CORGI_128MB) || defined(CONFIG_PXA_CORGI_64MB) +@ bl cpu_xscale_sl_modify_sdram_config +#endif ldr r0, sleep_save_sp @ stack phys addr ldr r2, =resume_after_mmu @ its absolute virtual address ldmfd r0, {r4 - r9, sp} @ CP regs + virt stack ptr