Ver Fonte

Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm:
  [ARM] 3815/1: headers_install support for ARM
  [ARM] 3794/1: S3C24XX: do not defined set_irq_wake when no CONFIG_PM
  [ARM] 3793/1: S3C2412: fix wrong serial info struct
  [ARM] 3780/1: Fix iop321 cpuid
  [ARM] 3786/1: pnx4008: update defconfig
  [ARM] 3785/1: S3C2412: Fix idle code as default uses wrong clocks
  [ARM] 3784/1: S3C2413: fix config for MACH_S3C2413/MACH_SMDK2413
Linus Torvalds há 19 anos atrás
pai
commit
77e2782f9b

Diff do ficheiro suprimidas por serem muito extensas
+ 110 - 528
arch/arm/configs/pnx4008_defconfig


+ 8 - 0
arch/arm/mach-s3c2410/Kconfig

@@ -81,9 +81,17 @@ config SMDK2440_CPU2442
 	depends on ARCH_S3C2440
 	depends on ARCH_S3C2440
 	select CPU_S3C2442
 	select CPU_S3C2442
 
 
+config MACH_S3C2413
+	bool
+	help
+	  Internal node for S3C2413 verison of SMDK2413, so that
+	  machine_is_s3c2413() will work when MACH_SMDK2413 is
+	  selected
+
 config MACH_SMDK2413
 config MACH_SMDK2413
 	bool "SMDK2413"
 	bool "SMDK2413"
 	select CPU_S3C2412
 	select CPU_S3C2412
+	select MACH_S3C2413
 	select MACH_SMDK
 	select MACH_SMDK
 	help
 	help
 	  Say Y here if you are using an SMDK2413
 	  Say Y here if you are using an SMDK2413

+ 5 - 0
arch/arm/mach-s3c2410/irq.h

@@ -100,5 +100,10 @@ s3c_irqsub_ack(unsigned int irqno, unsigned int parentmask, unsigned int group)
 
 
 /* exported for use in arch/arm/mach-s3c2410 */
 /* exported for use in arch/arm/mach-s3c2410 */
 
 
+#ifdef CONFIG_PM
 extern int s3c_irq_wake(unsigned int irqno, unsigned int state);
 extern int s3c_irq_wake(unsigned int irqno, unsigned int state);
+#else
+#define s3c_irq_wake NULL
+#endif
+
 extern int s3c_irqext_type(unsigned int irq, unsigned int type);
 extern int s3c_irqext_type(unsigned int irq, unsigned int type);

+ 29 - 0
arch/arm/mach-s3c2410/s3c2412.c

@@ -35,11 +35,15 @@
 #include <asm/mach/irq.h>
 #include <asm/mach/irq.h>
 
 
 #include <asm/hardware.h>
 #include <asm/hardware.h>
+#include <asm/proc-fns.h>
 #include <asm/io.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/irq.h>
 
 
+#include <asm/arch/idle.h>
+
 #include <asm/arch/regs-clock.h>
 #include <asm/arch/regs-clock.h>
 #include <asm/arch/regs-serial.h>
 #include <asm/arch/regs-serial.h>
+#include <asm/arch/regs-power.h>
 #include <asm/arch/regs-gpio.h>
 #include <asm/arch/regs-gpio.h>
 #include <asm/arch/regs-gpioj.h>
 #include <asm/arch/regs-gpioj.h>
 #include <asm/arch/regs-dsc.h>
 #include <asm/arch/regs-dsc.h>
@@ -75,6 +79,27 @@ void __init s3c2412_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 	s3c_device_nand.name = "s3c2412-nand";
 	s3c_device_nand.name = "s3c2412-nand";
 }
 }
 
 
+/* s3c2412_idle
+ *
+ * use the standard idle call by ensuring the idle mode
+ * in power config, then issuing the idle co-processor
+ * instruction
+*/
+
+static void s3c2412_idle(void)
+{
+	unsigned long tmp;
+
+	/* ensure our idle mode is to go to idle */
+
+	tmp = __raw_readl(S3C2412_PWRCFG);
+	tmp &= ~S3C2412_PWRCFG_STANDBYWFI_MASK;
+	tmp |= S3C2412_PWRCFG_STANDBYWFI_IDLE;
+	__raw_writel(tmp, S3C2412_PWRCFG);
+
+	cpu_do_idle();
+}
+
 /* s3c2412_map_io
 /* s3c2412_map_io
  *
  *
  * register the standard cpu IO areas, and any passed in from the
  * register the standard cpu IO areas, and any passed in from the
@@ -87,6 +112,10 @@ void __init s3c2412_map_io(struct map_desc *mach_desc, int mach_size)
 
 
 	s3c24xx_va_gpio2 = S3C24XX_VA_GPIO + 0x10;
 	s3c24xx_va_gpio2 = S3C24XX_VA_GPIO + 0x10;
 
 
+	/* set our idle function */
+
+	s3c24xx_idle = s3c2412_idle;
+
 	/* register our io-tables */
 	/* register our io-tables */
 
 
 	iotable_init(s3c2412_iodesc, ARRAY_SIZE(s3c2412_iodesc));
 	iotable_init(s3c2412_iodesc, ARRAY_SIZE(s3c2412_iodesc));

+ 1 - 1
arch/arm/mm/proc-xscale.S

@@ -644,7 +644,7 @@ __80219_proc_info:
 	.type	__8032x_proc_info,#object
 	.type	__8032x_proc_info,#object
 __8032x_proc_info:
 __8032x_proc_info:
 	.long	0x69052420
 	.long	0x69052420
-	.long	0xffffffe0
+	.long	0xfffff7e0
 	.long   PMD_TYPE_SECT | \
 	.long   PMD_TYPE_SECT | \
 		PMD_SECT_BUFFERABLE | \
 		PMD_SECT_BUFFERABLE | \
 		PMD_SECT_CACHEABLE | \
 		PMD_SECT_CACHEABLE | \

+ 1 - 1
drivers/serial/s3c2410.c

@@ -1621,7 +1621,7 @@ static struct s3c24xx_uart_info s3c2412_uart_inf = {
 static int s3c2412_serial_probe(struct platform_device *dev)
 static int s3c2412_serial_probe(struct platform_device *dev)
 {
 {
 	dbg("s3c2440_serial_probe: dev=%p\n", dev);
 	dbg("s3c2440_serial_probe: dev=%p\n", dev);
-	return s3c24xx_serial_probe(dev, &s3c2440_uart_inf);
+	return s3c24xx_serial_probe(dev, &s3c2412_uart_inf);
 }
 }
 
 
 static struct platform_driver s3c2412_serial_drv = {
 static struct platform_driver s3c2412_serial_drv = {

+ 34 - 0
include/asm-arm/arch-s3c2410/regs-power.h

@@ -0,0 +1,34 @@
+/* linux/include/asm/arch-s3c2410/regs-power.h
+ *
+ * Copyright (c) 2003,2004,2005,2006 Simtec Electronics <linux@simtec.co.uk>
+ *		      http://armlinux.simtec.co.uk/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * S3C24XX power control register definitions
+*/
+
+#ifndef __ASM_ARM_REGS_PWR
+#define __ASM_ARM_REGS_PWR __FILE__
+
+#define S3C24XX_PWRREG(x) ((x) + S3C24XX_VA_CLKPWR)
+
+#define S3C2412_PWRMODECON	S3C24XX_PWRREG(0x20)
+#define S3C2412_PWRCFG		S3C24XX_PWRREG(0x24)
+
+#define S3C2412_PWRCFG_BATF_IGNORE		(0<<0)
+#define S3C2412_PWRCFG_BATF_SLEEP		(3<<0)
+#define S3C2412_PWRCFG_BATF_MASK		(3<<0)
+
+#define S3C2412_PWRCFG_STANDBYWFI_IGNORE	(0<<6)
+#define S3C2412_PWRCFG_STANDBYWFI_IDLE		(1<<6)
+#define S3C2412_PWRCFG_STANDBYWFI_STOP		(2<<6)
+#define S3C2412_PWRCFG_STANDBYWFI_SLEEP		(3<<6)
+#define S3C2412_PWRCFG_STANDBYWFI_MASK		(3<<6)
+
+#define S3C2412_PWRCFG_RTC_MASKIRQ		(1<<8)
+#define S3C2412_PWRCFG_NAND_NORST		(1<<9)
+
+#endif /* __ASM_ARM_REGS_PWR */

+ 2 - 0
include/asm-arm/elf.h

@@ -8,7 +8,9 @@
 
 
 #include <asm/ptrace.h>
 #include <asm/ptrace.h>
 #include <asm/user.h>
 #include <asm/user.h>
+#ifdef __KERNEL
 #include <asm/procinfo.h>
 #include <asm/procinfo.h>
+#endif
 
 
 typedef unsigned long elf_greg_t;
 typedef unsigned long elf_greg_t;
 typedef unsigned long elf_freg_t[3];
 typedef unsigned long elf_freg_t[3];

+ 2 - 2
include/asm-arm/page.h

@@ -193,8 +193,8 @@ extern pmd_t *top_pmd;
 #define ARCH_SLAB_MINALIGN 8
 #define ARCH_SLAB_MINALIGN 8
 #endif
 #endif
 
 
-#endif /* __KERNEL__ */
-
 #include <asm-generic/page.h>
 #include <asm-generic/page.h>
 
 
+#endif /* __KERNEL__ */
+
 #endif
 #endif

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff