diff options
| author | Michael Lauer <mickey@vanille-media.de> | 2005-08-22 10:30:30 +0000 |
|---|---|---|
| committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2005-08-22 10:30:30 +0000 |
| commit | a1392aaa1d146d105ebf7a6528b91d5746dc0b89 (patch) | |
| tree | 544be87e85beb17b818921c5ee851ca7c0c87863 /packages/linux | |
| parent | a98fc361734009b592044b9b73dfdce3f20caebd (diff) | |
add support for the Sharp SL-C3100 (Borzoi)
Diffstat (limited to 'packages/linux')
40 files changed, 69819 insertions, 3 deletions
diff --git a/packages/linux/linux-openzaurus-2.6.13-rc5-mm1/defconfig-spitz b/packages/linux/linux-openzaurus-2.6.13-rc5-mm1/defconfig-spitz index a388797b6e..641852472c 100644 --- a/packages/linux/linux-openzaurus-2.6.13-rc5-mm1/defconfig-spitz +++ b/packages/linux/linux-openzaurus-2.6.13-rc5-mm1/defconfig-spitz @@ -256,6 +256,7 @@ CONFIG_IRDA=m # IrDA protocols # CONFIG_IRLAN=m +CONFIG_IRNET=m CONFIG_IRCOMM=m # CONFIG_IRDA_ULTRA is not set @@ -554,7 +555,7 @@ CONFIG_NET_PCMCIA=y # CONFIG_PCMCIA_3C589 is not set # CONFIG_PCMCIA_3C574 is not set # CONFIG_PCMCIA_FMVJ18X is not set -# CONFIG_PCMCIA_PCNET is not set +CONFIG_PCMCIA_PCNET=m # CONFIG_PCMCIA_NMCLAN is not set # CONFIG_PCMCIA_SMC91C92 is not set # CONFIG_PCMCIA_XIRC2PS is not set @@ -631,8 +632,11 @@ CONFIG_HW_CONSOLE=y # # Serial drivers -# -# CONFIG_SERIAL_8250 is not set +# +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set # # Non-8250 serial port support diff --git a/packages/linux/linux-openzaurus_2.6.13-rc5-mm1.bb b/packages/linux/linux-openzaurus_2.6.13-rc5-mm1.bb index e624b8a1d5..cb40aad03a 100644 --- a/packages/linux/linux-openzaurus_2.6.13-rc5-mm1.bb +++ b/packages/linux/linux-openzaurus_2.6.13-rc5-mm1.bb @@ -132,6 +132,7 @@ COMPATIBLE_HOST = "arm.*-linux" CMDLINE_CON = "console=ttyS0,115200n8 console=tty1 noinitrd" CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2 " CMDLINE_ROOT_poodle = "root=/dev/mtdblock1 rootfstype=jffs2 " +CMDLINE_ROOT_spitz = "root=/dev/hda1 rootfstype=ext3 " ############################################################## # Configure memory/ramdisk split for collie diff --git a/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/.mtn2git_empty b/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/.mtn2git_empty diff --git a/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/1764-1.patch b/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/1764-1.patch new file mode 100644 index 0000000000..0b660f3521 --- /dev/null +++ b/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/1764-1.patch @@ -0,0 +1,16 @@ +__arch_strncpy_from_user needs to be exported if you build the framebuffer console driver as a module. + +Cheers, + +Ian. + +--- linux-2.6-bkpxa.orig/arch/arm/kernel/armksyms.c 2004-02-27 10:35:29.000000000 +0000 ++++ linux-2.6-bkpxa/arch/arm/kernel/armksyms.c 2004-02-27 14:55:02.000000000 +0000 +@@ -187,6 +187,7 @@ + EXPORT_SYMBOL(__arch_copy_to_user); + EXPORT_SYMBOL(__arch_clear_user); + EXPORT_SYMBOL(__arch_strnlen_user); ++EXPORT_SYMBOL(__arch_strncpy_from_user); + + /* consistent area handling */ + EXPORT_SYMBOL(consistent_alloc); diff --git a/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/CPAR050218.patch b/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/CPAR050218.patch new file mode 100644 index 0000000000..a0b866219b --- /dev/null +++ b/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/CPAR050218.patch @@ -0,0 +1,422 @@ +--- 050125/include/asm-arm/proc-armv/ptrace.h Tue Jan 25 00:22:44 2005 ++++ 050218/include/asm-arm/proc-armv/ptrace.h Thu Feb 17 16:13:54 2005 +@@ -40,6 +40,10 @@ + + struct pt_regs { + long uregs[18]; ++#if defined(CONFIG_CPU_PXA27X) ++ long cpar; ++ long mmx[ 16*2 + 6 + 1 ]; ++#endif + }; + + #define ARM_cpsr uregs[16] +--- 050125/include/asm-arm/sigcontext.h Tue Jan 25 00:22:42 2005 ++++ 050218/include/asm-arm/sigcontext.h Thu Feb 17 18:16:28 2005 +@@ -28,6 +28,10 @@ + unsigned long arm_pc; + unsigned long arm_cpsr; + unsigned long fault_address; ++#if defined(CONFIG_CPU_PXA27X) ++ unsigned long arm_cpar; ++ unsigned long arm_mmx[ 16*2 + 6 + 1 ]; ++#endif + }; + + +--- 050125/include/asm-arm/elf.h Tue Jan 25 00:54:49 2005 ++++ 050218/include/asm-arm/elf.h Thu Feb 17 16:19:02 2005 +@@ -1,6 +1,8 @@ + #ifndef __ASMARM_ELF_H + #define __ASMARM_ELF_H + ++#include <linux/config.h> ++ + /* + * ELF register definitions.. + */ +@@ -14,6 +16,7 @@ + + #define EM_ARM 40 + #define EF_ARM_APCS26 0x08 ++#define EF_ARM_SOFT_FLOAT 0x200 + + #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t)) + typedef elf_greg_t elf_gregset_t[ELF_NGREG]; +--- 050125/arch/arm/kernel/entry-armv.S Tue Jan 25 00:21:45 2005 ++++ 050218/arch/arm/kernel/entry-armv.S Fri Feb 18 07:29:34 2005 +@@ -271,7 +271,7 @@ + tst \irqstat, #IRQ_MASK_DOORBELLHOST + movne \irqnr, #IRQ_DOORBELLHOST + bne 1001f +- ++ + tst \irqstat, #IRQ_MASK_I2OINPOST + movne \irqnr, #IRQ_I2OINPOST + bne 1001f +@@ -494,12 +494,12 @@ + + #elif defined(CONFIG_ARCH_L7200) + #include <asm/hardware.h> +- ++ + .equ irq_base_addr, IO_BASE_2 + + .macro disable_fiq + .endm +- ++ + .macro get_irqnr_and_base, irqnr, irqstat, base, tmp + mov \irqstat, #irq_base_addr @ Virt addr IRQ regs + add \irqstat, \irqstat, #0x00001000 @ Status reg +@@ -589,7 +589,7 @@ + .endm + + .macro get_irqnr_and_base, irqnr, irqstat, base, tmp +- ++ + /* Read all interrupts pending... */ + ldr \irqnr, =IO_ADDRESS(PLAT_PERIPHERAL_BASE) + OMAHA_INTPND + ldr \irqstat, [\irqnr] /* INTPND */ +@@ -607,7 +607,7 @@ + .endm + + .macro irq_prio_table +- .endm ++ .endm + + #elif defined(CONFIG_ARCH_CLPS711X) + +@@ -654,23 +654,23 @@ + + .macro irq_prio_table + .endm +- ++ + #elif defined (CONFIG_ARCH_CAMELOT) + #include <asm/arch/platform.h> + #undef IRQ_MODE /* same name defined in asm/proc/ptrace.h */ + #include <asm/arch/int_ctrl00.h> +- ++ + .macro disable_fiq + .endm + + .macro get_irqnr_and_base, irqnr, irqstat, base, tmp +- ++ + ldr \irqstat, =INT_ID(IO_ADDRESS(EXC_INT_CTRL00_BASE)) +- ldr \irqnr,[\irqstat] ++ ldr \irqnr,[\irqstat] + cmp \irqnr,#0 + subne \irqnr,\irqnr,#1 + +- ++ + .endm + + .macro irq_prio_table +@@ -910,7 +910,7 @@ + mov pc, r7 @ check, if this is a relevant code + cmp r0, #0 @ check return value + beq 1f @ else let linux do what it has to do +-2: ++2: + #endif + #ifndef CONFIG_KGDB + adrsvc al, r9, 1f @ r9 = normal FP return +@@ -977,6 +977,9 @@ + stmia r5, {r2 - r4} @ Save USR pc, cpsr, old_r0 + stmdb r5, {sp, lr}^ + alignment_trap r7, r7, __temp_abt ++#ifdef CONFIG_CPU_PXA27X ++ save_user_mmx ++#endif + zero_fp + mov r0, r2 @ remove once everyones in sync + #ifdef MULTI_CPU +@@ -1001,6 +1004,9 @@ + stmia r8, {r5 - r7} @ save pc, psr, old_r0 + stmdb r8, {sp, lr}^ + alignment_trap r4, r7, __temp_irq ++#ifdef CONFIG_CPU_PXA27X ++ save_user_mmx ++#endif + zero_fp + get_current_task tsk + #ifdef CONFIG_PREEMPT +@@ -1039,6 +1045,9 @@ + stmia r8, {r5 - r7} @ Save USR pc, cpsr, old_r0 + stmdb r8, {sp, lr}^ @ Save user sp, lr + alignment_trap r4, r7, __temp_und ++#ifdef CONFIG_CPU_PXA27X ++ save_user_mmx ++#endif + zero_fp + tst r6, #T_BIT @ Thumb mode + bne fpundefinstr +@@ -1068,6 +1077,9 @@ + stmia r8, {r5 - r7} @ Save USR pc, cpsr, old_r0 + stmdb r8, {sp, lr}^ @ Save sp_usr lr_usr + alignment_trap r4, r7, __temp_abt ++#ifdef CONFIG_CPU_PXA27X ++ save_user_mmx ++#endif + zero_fp + mov r0, #MODE_SVC + msr cpsr_c, r0 @ Enable interrupts +@@ -1394,7 +1406,7 @@ + stmfd sp!, {r4, r5} + #endif + mrc p15, 0, r2, c3, c0 +- str r2, [sp, #-4]! ++ str r2, [sp, #-4]! + + ldr r2, [r0] + str sp, [r2] +--- 050125/arch/arm/kernel/entry-header.S Tue Jan 25 00:21:45 2005 ++++ 050218/arch/arm/kernel/entry-header.S Thu Feb 17 20:15:24 2005 +@@ -42,9 +42,44 @@ + @ Stack format (ensured by USER_* and SVC_*) + @ + #ifdef CONFIG_CPU_32 +-#define S_FRAME_SIZE 72 +-#define S_OLD_R0 68 +-#define S_PSR 64 ++#ifdef CONFIG_CPU_PXA27X ++ #define S_MMX 80 ++ ++ #define MMX_WR0 (0x00) ++ #define MMX_WR1 (0x08) ++ #define MMX_WR2 (0x10) ++ #define MMX_WR3 (0x18) ++ #define MMX_WR4 (0x20) ++ #define MMX_WR5 (0x28) ++ #define MMX_WR6 (0x30) ++ #define MMX_WR7 (0x38) ++ #define MMX_WR8 (0x40) ++ #define MMX_WR9 (0x48) ++ #define MMX_WR10 (0x50) ++ #define MMX_WR11 (0x58) ++ #define MMX_WR12 (0x60) ++ #define MMX_WR13 (0x68) ++ #define MMX_WR14 (0x70) ++ #define MMX_WR15 (0x78) ++ #define MMX_WCSSF (0x80) ++ #define MMX_WCASF (0x84) ++ #define MMX_WCGR0 (0x88) ++ #define MMX_WCGR1 (0x8C) ++ #define MMX_WCGR2 (0x90) ++ #define MMX_WCGR3 (0x94) ++ ++ #define MMX_SIZE (0x98) ++ ++ #define S_FRAME_SIZE (76+4+MMX_SIZE) ++ ++ #define S_CPAR 72 ++ #define S_OLD_R0 68 ++ #define S_PSR 64 ++#else ++ #define S_FRAME_SIZE 72 ++ #define S_OLD_R0 68 ++ #define S_PSR 64 ++#endif + #else + #define S_FRAME_SIZE 68 + #define S_OLD_R0 64 +@@ -88,6 +123,43 @@ + set_cpsr_c \temp, #MODE_SVC + .endm + ++#ifdef CONFIG_CPU_PXA27X ++ .macro save_user_mmx ++ mrc p15, 0, r0, c15, c1, 0 ++ str r0, [sp, #S_CPAR] @ Save CPAR ++ cmp r0, #3 ++ bne 1f ++ add r0,sp,#S_MMX @ StoreMMX ++ bic r0, r0, #7 ++ wstrw wCSSF, [r0, #MMX_WCSSF] ++ wstrw wCASF, [r0, #MMX_WCASF] ++ wstrw wCGR0, [r0, #MMX_WCGR0] ++ wstrw wCGR1, [r0, #MMX_WCGR1] ++ wstrw wCGR2, [r0, #MMX_WCGR2] ++ wstrw wCGR3, [r0, #MMX_WCGR3] ++ wstrd wR0, [r0, #MMX_WR0] ++ wstrd wR1, [r0, #MMX_WR1] ++ wstrd wR2, [r0, #MMX_WR2] ++ wstrd wR3, [r0, #MMX_WR3] ++ wstrd wR4, [r0, #MMX_WR4] ++ wstrd wR5, [r0, #MMX_WR5] ++ wstrd wR6, [r0, #MMX_WR6] ++ wstrd wR7, [r0, #MMX_WR7] ++ wstrd wR8, [r0, #MMX_WR8] ++ wstrd wR9, [r0, #MMX_WR9] ++ wstrd wR10, [r0, #MMX_WR10] ++ wstrd wR11, [r0, #MMX_WR11] ++ wstrd wR12, [r0, #MMX_WR12] ++ wstrd wR13, [r0, #MMX_WR13] ++ wstrd wR14, [r0, #MMX_WR14] ++ wstrd wR15, [r0, #MMX_WR15] ++1: ++ mov r0, #1 ++ mcr p15, 0, r0, c15, c1, 0 @ CP0 Only. ++ ldr r0, [sp] @ Restore R0 ++ .endm ++#endif ++ + .macro save_user_regs + sub sp, sp, #S_FRAME_SIZE + stmia sp, {r0 - r12} @ Calling r0 - r12 +@@ -97,12 +169,44 @@ + str lr, [sp, #S_PC] @ Save calling PC + str r8, [sp, #S_PSR] @ Save CPSR + str r0, [sp, #S_OLD_R0] @ Save OLD_R0 ++ save_user_mmx + .endm + + /* + * Must be called with IRQs already disabled. + */ + .macro restore_user_regs ++#ifdef CONFIG_CPU_PXA27X ++ ldr r1, [sp, #S_CPAR] ++ mcr p15, 0, r1, c15, c1, 0 ++ cmp r1, #3 ++ bne 2f ++ add r1,sp,#S_MMX @ LoadMMX ++ bic r1, r1, #7 ++ wldrd wR0, [r1, #MMX_WR0] ++ wldrd wR1, [r1, #MMX_WR1] ++ wldrd wR2, [r1, #MMX_WR2] ++ wldrd wR3, [r1, #MMX_WR3] ++ wldrd wR4, [r1, #MMX_WR4] ++ wldrd wR5, [r1, #MMX_WR5] ++ wldrd wR6, [r1, #MMX_WR6] ++ wldrd wR7, [r1, #MMX_WR7] ++ wldrd wR8, [r1, #MMX_WR8] ++ wldrd wR9, [r1, #MMX_WR9] ++ wldrd wR10, [r1, #MMX_WR10] ++ wldrd wR11, [r1, #MMX_WR11] ++ wldrd wR12, [r1, #MMX_WR12] ++ wldrd wR13, [r1, #MMX_WR13] ++ wldrd wR14, [r1, #MMX_WR14] ++ wldrd wR15, [r1, #MMX_WR15] ++ wldrw wCSSF, [r1, #MMX_WCSSF] ++ wldrw wCASF, [r1, #MMX_WCASF] ++ wldrw wCGR0, [r1, #MMX_WCGR0] ++ wldrw wCGR1, [r1, #MMX_WCGR1] ++ wldrw wCGR2, [r1, #MMX_WCGR2] ++ wldrw wCGR3, [r1, #MMX_WCGR3] ++2: ++#endif + ldr r1, [sp, #S_PSR] @ Get calling cpsr + ldr lr, [sp, #S_PC]! @ Get PC + msr spsr, r1 @ save in spsr_svc +@@ -116,6 +220,37 @@ + * Must be called with IRQs already disabled. + */ + .macro fast_restore_user_regs ++#ifdef CONFIG_CPU_PXA27X ++ ldr r1, [sp, #S_OFF + S_CPAR] ++ mcr p15, 0, r1, c15, c1, 0 ++ cmp r1, #3 ++ bne 3f ++ add r1,sp,#S_OFF + S_MMX @ LoadMMX ++ bic r1, r1, #7 ++ wldrd wR0, [r1, #MMX_WR0] ++ wldrd wR1, [r1, #MMX_WR1] ++ wldrd wR2, [r1, #MMX_WR2] ++ wldrd wR3, [r1, #MMX_WR3] ++ wldrd wR4, [r1, #MMX_WR4] ++ wldrd wR5, [r1, #MMX_WR5] ++ wldrd wR6, [r1, #MMX_WR6] ++ wldrd wR7, [r1, #MMX_WR7] ++ wldrd wR8, [r1, #MMX_WR8] ++ wldrd wR9, [r1, #MMX_WR9] ++ wldrd wR10, [r1, #MMX_WR10] ++ wldrd wR11, [r1, #MMX_WR11] ++ wldrd wR12, [r1, #MMX_WR12] ++ wldrd wR13, [r1, #MMX_WR13] ++ wldrd wR14, [r1, #MMX_WR14] ++ wldrd wR15, [r1, #MMX_WR15] ++ wldrw wCSSF, [r1, #MMX_WCSSF] ++ wldrw wCASF, [r1, #MMX_WCASF] ++ wldrw wCGR0, [r1, #MMX_WCGR0] ++ wldrw wCGR1, [r1, #MMX_WCGR1] ++ wldrw wCGR2, [r1, #MMX_WCGR2] ++ wldrw wCGR3, [r1, #MMX_WCGR3] ++3: ++#endif + ldr r1, [sp, #S_OFF + S_PSR] @ get calling cpsr + ldr lr, [sp, #S_OFF + S_PC]! @ get pc + msr spsr, r1 @ save in spsr_svc +--- 050125/arch/arm/kernel/signal.c Tue Jan 25 00:21:45 2005 ++++ 050218/arch/arm/kernel/signal.c Thu Feb 17 18:22:10 2005 +@@ -198,6 +198,13 @@ + { + int err = 0; + ++#if defined(CONFIG_CPU_PXA27X) ++ int _m; ++ __get_user_error(regs->cpar, &sc->arm_cpar, err); ++ for( _m=0; _m<16*2 + 6 + 1; ++_m ) { ++ __get_user_error(regs->mmx[ _m ], &sc->arm_mmx[ _m ], err); ++ } ++#endif + __get_user_error(regs->ARM_r0, &sc->arm_r0, err); + __get_user_error(regs->ARM_r1, &sc->arm_r1, err); + __get_user_error(regs->ARM_r2, &sc->arm_r2, err); +@@ -312,6 +319,13 @@ + { + int err = 0; + ++#if defined(CONFIG_CPU_PXA27X) ++ int _m; ++ __put_user_error(regs->cpar, &sc->arm_cpar, err); ++ for( _m=0; _m<16*2 + 6 + 1; ++_m ) { ++ __put_user_error(regs->mmx[ _m ], &sc->arm_mmx[ _m ], err); ++ } ++#endif + __put_user_error(regs->ARM_r0, &sc->arm_r0, err); + __put_user_error(regs->ARM_r1, &sc->arm_r1, err); + __put_user_error(regs->ARM_r2, &sc->arm_r2, err); +--- 050125/arch/arm/Makefile Tue Jan 25 00:21:44 2005 ++++ 050218/arch/arm/Makefile Thu Feb 17 09:38:40 2005 +@@ -69,7 +69,8 @@ + + ifeq ($(CONFIG_ARCH_SHARP_SL),y) + CROSS_COMPILE = arm-linux- +-arch-y :=-D__LINUX_ARM_ARCH__=4 -march=armv4 -Wa,-mxscale ++#arch-y :=-D__LINUX_ARM_ARCH__=4 -march=armv4 -Wa,-mxscale ++arch-y :=-D__LINUX_ARM_ARCH__=4 -Wa,-mcpu=iwmmxt + tune-y :=-mtune=strongarm + endif + +@@ -212,7 +213,7 @@ + MACHINE = omaha + endif + +-ifeq ($(CONFIG_XIP_KERNEL),y) ++ifeq ($(CONFIG_XIP_KERNEL),y) + DATAADDR := $(TEXTADDR) + # Replace phys addr with virt addr while keeping offset from base. + # Virt base addr also defined in include/asm-arm/arch-*/hardware.h +--- 050125/fs/binfmt_elf.c Tue Jan 25 00:22:37 2005 ++++ 050218/fs/binfmt_elf.c Thu Feb 17 08:52:54 2005 +@@ -815,6 +815,15 @@ + ELF_PLAT_INIT(regs); + #endif + ++#if defined(CONFIG_CPU_PXA27X) ++ if( elf_ex.e_flags & EF_ARM_SOFT_FLOAT ) { ++ regs->cpar = 0x03; //CP0 CP1 Used. ++ } ++ else { ++ regs->cpar = 0x01; //CP0 Only. ++ } ++#endif ++ + start_thread(regs, elf_entry, bprm->p); + if (current->ptrace & PT_PTRACED) + send_sig(SIGTRAP, current, 0); diff --git a/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P01-C3000-clockup_050221.patch b/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P01-C3000-clockup_050221.patch new file mode 100644 index 0000000000..d193f23733 --- /dev/null +++ b/packages/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P01-C3000-clockup_050221.patch @@ -0,0 +1,202 @@ +diff -Nur c3000_org/linux/arch/arm/config.in c3000_work/linux/arch/arm/config.in +--- c3000_org/linux/arch/arm/config.in 2004-08-21 09:48:07.000000000 +0900 ++++ c3000_work/linux/arch/arm/config.in 2005-02-21 21:41:40.000000000 +0900 +@@ -195,7 +195,7 @@ + dep_bool ' SHARP Spitz' CONFIG_ARCH_PXA_SPITZ $CONFIG_ARCH_PXA_BOXER + dep_bool ' Using Trial 0' CONFIG_SPITZ_TR0 $CONFIG_ARCH_PXA_SPITZ + dep_bool ' Using Trial 0.5' CONFIG_SPITZ_TR0_5 $CONFIG_ARCH_PXA_SPITZ +-dep_bool ' SHARP Tosa' CONFIG_ARCH_PXA_TOSA ++dep_bool ' SHARP Tosa' CONFIG_ARCH_PXA_TOSA $CONFIG_ARCH_PXA + dep_bool ' SHARP Tosa skipping' CONFIG_ARCH_PXA_TOSA_SKIP $CONFIG_ARCH_PXA_TOSA + + if [ "$CONFIG_SABINAL_DISCOVERY" = "y" -o "$CONFIG_ARCH_PXA_POODLE" = "y" -o \ +@@ -475,6 +475,9 @@ + if [ "$CONFIG_ARCH_PXA_SPITZ" = "y" ]; then + define_bool CONFIG_CPU_PXA27X y + fi ++ if [ "$CONFIG_ARCH_PXA_SPITZ" = "y" ]; then ++ bool 'Use clock change(cccr_change) enable (EXPERIMENTAL)' CONFIG_SL_CCCR_CHANGE ++ fi + if [ "$CONFIG_ARCH_SHARP_SL" = "y" ]; then + define_bool CONFIG_BATT y + fi +@@ -557,7 +560,7 @@ + # bool ' Real-Time Scheduling support' CONFIG_RTSCHED + define_bool CONFIG_RTSCHED y + if [ "$CONFIG_RTSCHED" = "y" ]; then +- int ' MAX PTHREAD (int)' CONFIG_RTH_PTHREAD_MAX 128 ++ int ' MAX PTHREAD (int)' CONFIG_RTH_PTHREAD_MAX 128 + hex ' RT MEMORY SIZE (hex)' CONFIG_RT_MEM_SIZE 80000 + bool ' Real-Time Calibrate support' CONFIG_RTHAL_CALIBRATION + if [ "$CONFIG_RTHAL_CALIBRATION" != "y" ]; then +@@ -615,7 +618,7 @@ + hex 'Compressed ROM boot loader BSS address' CONFIG_ZBOOT_ROM_BSS 0 + else + define_hex CONFIG_ZBOOT_ROM_TEXT 0 +- define_hex CONFIG_ZBOOT_ROM_BSS 0 ++ define_hex CONFIG_ZBOOT_ROM_BSS 0 + fi + + if [ "$CONFIG_ARCH_SA1100" = "y" -o \ +diff -Nur c3000_org/linux/arch/arm/mach-pxa/sharpsl_apm.c c3000_work/linux/arch/arm/mach-pxa/sharpsl_apm.c +--- c3000_org/linux/arch/arm/mach-pxa/sharpsl_apm.c 2004-11-16 15:31:06.000000000 +0900 ++++ c3000_work/linux/arch/arm/mach-pxa/sharpsl_apm.c 2005-02-21 21:44:13.000000000 +0900 +@@ -130,6 +130,11 @@ + extern int HWR_flag; + #endif + ++#if defined(CONFIG_SL_CCCR_CHANGE) ++extern unsigned int CCCR_ValAdr_high; ++struct proc_dir_entry *proc_zaurus; ++#endif ++ + #if defined(CONFIG_SABINAL_DISCOVERY) + #define SHARPSL_AC_LINE_STATUS (( ASIC3_GPIO_PSTS_D & AC_IN )? APM_AC_OFFLINE : APM_AC_ONLINE) + #define BACKPACK_IN_DETECT() ( ASIC3_GPIO_PSTS_D & BACKPACK_DETECT ) /* 0: exist , 1: not in */ +@@ -974,6 +979,63 @@ + + EXPORT_SYMBOL(lock_FCS); + ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ ++void write_cccr(int cccr) ++{ ++ printk("Change CCCR = %x.\n",cccr); ++ CCCR_ValAdr_high = cccr; ++ sharpsl_chg_freq = cccr; ++ cpu_xscale_sl_change_speed_high(); ++ cccr_reg = CCCR; ++ printk("Changed CCCR = %x.\n",cccr_reg); ++ return; ++} ++ ++int read_cccr(void) ++{ ++ return CCCR_ValAdr_high; ++} ++ ++static ssize_t cccr_change_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[32]; ++ int count; ++ ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "0x%08X\n", read_cccr()); ++ count++; ++ *ppos += count; ++ if (count>nbytes)/* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count+1)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t cccr_change_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ unsigned int param=0; ++ ++ sscanf(buf,"%x",¶m); ++ if (param) { ++ write_cccr(param); ++ } ++ return nbytes; ++} ++ ++static struct file_operations proc_cccr_change_params_operations = { ++ read:cccr_change_read_params, ++ write:cccr_change_write_params, ++}; ++ ++EXPORT_SYMBOL(read_cccr); ++EXPORT_SYMBOL(write_cccr); ++#endif ++ + #ifdef CONFIG_APM_CPU_IDLE + #ifdef SHARPSL_NEW_IDLE + static int save_icmr; +@@ -2786,6 +2848,7 @@ + struct proc_dir_entry *apm_proc; + struct proc_dir_entry *lock_fcs_proc; + struct proc_dir_entry *power_mode_proc; ++ struct proc_dir_entry *cccr_change_proc; + + apm_info.bios = apm_bios_info; + if (apm_info.bios.version == 0) { +@@ -2822,6 +2885,9 @@ + printk("FCS : CCCR = %x\n",cccr_reg); + #if defined(CONFIG_CPU_PXA27X) + sharpsl_chg_freq = cccr_reg; ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ CCCR_ValAdr_high = sharpsl_chg_freq; ++#endif + #endif + #endif + +@@ -2902,6 +2968,19 @@ + power_mode_proc->proc_fops = &proc_power_mode_params_operations; + } + ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ proc_zaurus = proc_mkdir("zaurus", NULL); ++ if (proc_zaurus == NULL) { ++ unregister_chrdev(228, "zaurus"); ++ printk(KERN_ERR "proc: can't create /proc/zaurus\n"); ++ return -ENOMEM; ++ } ++ ++ cccr_change_proc = create_proc_entry("zaurus/CCCR", 0, NULL); ++ if (cccr_change_proc) { ++ cccr_change_proc->proc_fops = &proc_cccr_change_params_operations; ++ } ++#endif + kernel_thread(apm_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); + + #if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA) +diff -Nur c3000_org/linux/arch/arm/mach-pxa/sharpsl_suspend.S c3000_work/linux/arch/arm/mach-pxa/sharpsl_suspend.S +--- c3000_org/linux/arch/arm/mach-pxa/sharpsl_suspend.S 2004-11-09 14:30:36.000000000 +0900 ++++ c3000_work/linux/arch/arm/mach-pxa/sharpsl_suspend.S 2005-02-21 21:41:40.000000000 +0900 +@@ -64,7 +64,7 @@ + + sleep_param: .word 0 @ virtual address of parameter array + sleep_param_p: .word 0 @ physical address of parameter array +- ++ + IC_BASE: .word io_p2v(0x40D00000) + + +@@ -1109,6 +1109,9 @@ + + #else /* CONFIG_CPU_PXA27X */ + ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ .global CCCR_ValAdr_high ++#endif + CCCR_ValAdr_high: .word 0x02000210 + MSC0_ValAdr_high: .word 0x7ff02DD8 + MSC1_ValAdr_high: .word 0x7ff434D4 +@@ -1305,8 +1308,12 @@ + stmfd sp!, {r0, r1, r2, r3, r4, lr} + + ldr r0, CMR_BASE ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ ldr r1, CCCR_ValAdr_high |
