Merge tag 'split-asm_system_h-for-linus-20120328' of git://git.kernel.org/pub/scm...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Mar 2012 22:58:21 +0000 (15:58 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Mar 2012 22:58:21 +0000 (15:58 -0700)
Pull "Disintegrate and delete asm/system.h" from David Howells:
 "Here are a bunch of patches to disintegrate asm/system.h into a set of
  separate bits to relieve the problem of circular inclusion
  dependencies.

  I've built all the working defconfigs from all the arches that I can
  and made sure that they don't break.

  The reason for these patches is that I recently encountered a circular
  dependency problem that came about when I produced some patches to
  optimise get_order() by rewriting it to use ilog2().

  This uses bitops - and on the SH arch asm/bitops.h drags in
  asm-generic/get_order.h by a circuituous route involving asm/system.h.

  The main difficulty seems to be asm/system.h.  It holds a number of
  low level bits with no/few dependencies that are commonly used (eg.
  memory barriers) and a number of bits with more dependencies that
  aren't used in many places (eg.  switch_to()).

  These patches break asm/system.h up into the following core pieces:

    (1) asm/barrier.h

        Move memory barriers here.  This already done for MIPS and Alpha.

    (2) asm/switch_to.h

        Move switch_to() and related stuff here.

    (3) asm/exec.h

        Move arch_align_stack() here.  Other process execution related bits
        could perhaps go here from asm/processor.h.

    (4) asm/cmpxchg.h

        Move xchg() and cmpxchg() here as they're full word atomic ops and
        frequently used by atomic_xchg() and atomic_cmpxchg().

    (5) asm/bug.h

        Move die() and related bits.

    (6) asm/auxvec.h

        Move AT_VECTOR_SIZE_ARCH here.

  Other arch headers are created as needed on a per-arch basis."

Fixed up some conflicts from other header file cleanups and moving code
around that has happened in the meantime, so David's testing is somewhat
weakened by that.  We'll find out anything that got broken and fix it..

* tag 'split-asm_system_h-for-linus-20120328' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-asm_system: (38 commits)
  Delete all instances of asm/system.h
  Remove all #inclusions of asm/system.h
  Add #includes needed to permit the removal of asm/system.h
  Move all declarations of free_initmem() to linux/mm.h
  Disintegrate asm/system.h for OpenRISC
  Split arch_align_stack() out from asm-generic/system.h
  Split the switch_to() wrapper out of asm-generic/system.h
  Move the asm-generic/system.h xchg() implementation to asm-generic/cmpxchg.h
  Create asm-generic/barrier.h
  Make asm-generic/cmpxchg.h #include asm-generic/cmpxchg-local.h
  Disintegrate asm/system.h for Xtensa
  Disintegrate asm/system.h for Unicore32 [based on ver #3, changed by gxt]
  Disintegrate asm/system.h for Tile
  Disintegrate asm/system.h for Sparc
  Disintegrate asm/system.h for SH
  Disintegrate asm/system.h for Score
  Disintegrate asm/system.h for S390
  Disintegrate asm/system.h for PowerPC
  Disintegrate asm/system.h for PA-RISC
  Disintegrate asm/system.h for MN10300
  ...

155 files changed:
1  2 
arch/alpha/kernel/sys_marvel.c
arch/alpha/kernel/sys_titan.c
arch/arm/include/asm/system_misc.h
arch/arm/kernel/entry-armv.S
arch/arm/kernel/process.c
arch/arm/mach-at91/at91rm9200.c
arch/arm/mach-at91/at91sam9260.c
arch/arm/mach-at91/at91sam9261.c
arch/arm/mach-at91/at91sam9263.c
arch/arm/mach-at91/at91sam9g45.c
arch/arm/mach-at91/at91sam9rl.c
arch/arm/mach-clps711x/common.c
arch/arm/mach-ebsa110/core.c
arch/arm/mach-ebsa110/leds.c
arch/arm/mach-footbridge/dc21285.c
arch/arm/mach-imx/mach-imx6q.c
arch/arm/mach-integrator/core.c
arch/arm/mach-integrator/pci_v3.c
arch/arm/mach-ixp2000/ixdp2400.c
arch/arm/mach-ixp2000/ixdp2800.c
arch/arm/mach-ixp2000/ixdp2x00.c
arch/arm/mach-ixp2000/pci.c
arch/arm/mach-ixp23xx/core.c
arch/arm/mach-ixp23xx/pci.c
arch/arm/mach-ixp4xx/common-pci.c
arch/arm/mach-mmp/pxa168.c
arch/arm/mach-mxs/system.c
arch/arm/mach-omap1/id.c
arch/arm/mach-omap1/time.c
arch/arm/mach-omap1/timer32k.c
arch/arm/mach-omap2/board-omap3touchbook.c
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/mux.c
arch/arm/mach-omap2/omap-mpuss-lowpower.c
arch/arm/mach-omap2/pm24xx.c
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-omap2/pm44xx.c
arch/arm/mach-pxa/magician.c
arch/arm/mach-rpc/riscpc.c
arch/arm/mach-s3c24xx/s3c2410.c
arch/arm/mach-s3c24xx/s3c2412.c
arch/arm/mach-s3c24xx/s3c2416.c
arch/arm/mach-s3c24xx/s3c2443.c
arch/arm/mach-s3c24xx/s3c244x.c
arch/arm/mach-s5p64x0/common.c
arch/arm/mach-s5pc100/common.c
arch/arm/mach-sa1100/generic.c
arch/arm/mach-shmobile/include/mach/system.h
arch/arm/mach-versatile/core.c
arch/arm/mach-versatile/pci.c
arch/arm/plat-iop/pci.c
arch/arm/plat-mxc/system.c
arch/arm/plat-omap/dma.c
arch/arm/plat-s3c24xx/cpu.c
arch/ia64/include/asm/pci.h
arch/ia64/kernel/acpi.c
arch/ia64/kernel/mca.c
arch/ia64/pci/pci.c
arch/ia64/sn/kernel/tiocx.c
arch/microblaze/include/asm/page.h
arch/microblaze/include/asm/setup.h
arch/microblaze/kernel/setup.c
arch/microblaze/kernel/timer.c
arch/openrisc/kernel/ptrace.c
arch/openrisc/kernel/setup.c
arch/openrisc/kernel/traps.c
arch/openrisc/mm/init.c
arch/parisc/kernel/pci.c
arch/powerpc/include/asm/rtas.h
arch/powerpc/kernel/irq.c
arch/powerpc/kernel/prom_init.c
arch/powerpc/kernel/rtas.c
arch/powerpc/kernel/setup_64.c
arch/powerpc/kernel/vdso.c
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/platforms/wsp/wsp_pci.c
arch/s390/kernel/vdso.c
arch/s390/kvm/kvm-s390.c
arch/s390/oprofile/hwsampler.c
arch/tile/mm/elf.c
arch/unicore32/kernel/process.c
arch/x86/include/asm/processor.h
arch/x86/kernel/irqinit.c
arch/x86/kernel/kgdb.c
arch/x86/kernel/paravirt.c
drivers/cpufreq/omap-cpufreq.c
drivers/input/serio/rpckbd.c
drivers/input/serio/sa1111ps2.c
drivers/media/media-devnode.c
drivers/media/video/ivtv/ivtv-driver.h
drivers/media/video/v4l2-dev.c
drivers/mfd/mcp-core.c
drivers/mfd/mcp-sa11x0.c
drivers/net/bonding/bond_main.c
drivers/net/ethernet/broadcom/tg3.c
drivers/net/ethernet/cirrus/cs89x0.c
drivers/parisc/dino.c
drivers/parisc/lba_pci.c
drivers/pcmcia/pxa2xx_base.c
drivers/pcmcia/sa11xx_base.c
drivers/pcmcia/soc_common.c
drivers/s390/char/sclp_cmd.c
drivers/staging/media/go7007/go7007-v4l2.c
drivers/staging/media/lirc/lirc_serial.c
drivers/usb/gadget/at91_udc.c
drivers/usb/host/ohci-hcd.c
drivers/watchdog/advantechwdt.c
drivers/watchdog/alim7101_wdt.c
drivers/watchdog/booke_wdt.c
drivers/watchdog/eurotechwdt.c
drivers/watchdog/ib700wdt.c
drivers/watchdog/it87_wdt.c
drivers/watchdog/machzwd.c
drivers/watchdog/pc87413_wdt.c
drivers/watchdog/sbc60xxwdt.c
drivers/watchdog/sbc7240_wdt.c
drivers/watchdog/sbc8360.c
drivers/watchdog/sbc_fitpc2_wdt.c
drivers/watchdog/sc520_wdt.c
drivers/watchdog/smsc37b787_wdt.c
drivers/watchdog/w83627hf_wdt.c
drivers/watchdog/w83697hf_wdt.c
drivers/watchdog/w83697ug_wdt.c
drivers/watchdog/w83877f_wdt.c
drivers/watchdog/w83977f_wdt.c
drivers/watchdog/wdt.c
drivers/watchdog/wdt285.c
drivers/watchdog/wdt977.c
drivers/watchdog/wdt_pci.c
fs/binfmt_elf.c
fs/binfmt_flat.c
fs/eventpoll.c
fs/jbd2/commit.c
fs/jbd2/journal.c
fs/nfs/client.c
fs/nfs/direct.c
fs/nfs/file.c
fs/nfs/inode.c
fs/nfs/read.c
fs/nfs/super.c
include/linux/debug_locks.h
include/linux/ide.h
include/linux/mm.h
include/linux/sched.h
include/linux/skbuff.h
include/linux/spinlock.h
init/main.c
kernel/debug/debug_core.c
kernel/signal.c
kernel/sysctl.c
lib/llist.c
net/core/dev.c
net/core/skbuff.c
net/ipv4/devinet.c
net/sunrpc/clnt.c

Simple merge
Simple merge
index 0000000000000000000000000000000000000000,9e65b23be145ecf78854f2eca8355b33c542e1fd..5a85f148b607aa25704f10b2f825a2910a42834a
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,28 +1,29 @@@
+ #ifndef __ASM_ARM_SYSTEM_MISC_H
+ #define __ASM_ARM_SYSTEM_MISC_H
+ #ifndef __ASSEMBLY__
+ #include <linux/compiler.h>
+ #include <linux/linkage.h>
+ #include <linux/irqflags.h>
+ extern void cpu_init(void);
+ void soft_restart(unsigned long);
+ extern void (*arm_pm_restart)(char str, const char *cmd);
++extern void (*arm_pm_idle)(void);
+ #define UDBG_UNDEFINED        (1 << 0)
+ #define UDBG_SYSCALL  (1 << 1)
+ #define UDBG_BADABORT (1 << 2)
+ #define UDBG_SEGV     (1 << 3)
+ #define UDBG_BUS      (1 << 4)
+ extern unsigned int user_debug;
+ extern void disable_hlt(void);
+ extern void enable_hlt(void);
+ #endif /* !__ASSEMBLY__ */
+ #endif /* __ASM_ARM_SYSTEM_MISC_H */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index d43121a30aa783065e52dd7f87a5f09cbcc277a9,101a3204438bc36473d9fc3b00b393a5da527b5a..99e14e3625003568f46f42bf1da6720163b1f588
  
  #include <mach/hardware.h>
  #include <asm/leds.h>
- #include <asm/system.h>
  #include <asm/mach-types.h>
  
 +#include "core.h"
 +
  static spinlock_t leds_lock;
  
  static void ebsa110_leds_event(led_event_t ledevt)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index f24c1e2c5044a37022ceee1f86ca774b6c257067,b3f3363cd457acb89330372c867d13dae02b70e6..2b28e1da14b09fa6c4e4d089b4895c36dee1606f
  #include <linux/kernel.h>
  #include <linux/init.h>
  #include <linux/io.h>
+ #include <asm/system_info.h>
 +
  #include <plat/cpu.h>
  
 +#include <mach/hardware.h>
 +
  #define OMAP_DIE_ID_0         0xfffe1800
  #define OMAP_DIE_ID_1         0xfffe1804
  #define OMAP_PRODUCTION_ID_0  0xfffe2000
index 2fae6a2740f18e0e1b2fa6c910adccd48dae3d7b,7595e0ac22507579ccf0d10820170adf482c99ae..4d8dd9a1b04cedc07fb1a1e0689ae610e3188480
@@@ -44,7 -44,7 +44,6 @@@
  #include <linux/clockchips.h>
  #include <linux/io.h>
  
- #include <asm/system.h>
 -#include <mach/hardware.h>
  #include <asm/leds.h>
  #include <asm/irq.h>
  #include <asm/sched_clock.h>
index a2e6d0709df25386b3c1f4cabb348ad9b08b3190,10bcd1364cd2feff97f76dbc0e80828153b0e34c..325b9a0aa4a00c9d71bdcf4d3f13dc7732ebe136
@@@ -46,7 -46,7 +46,6 @@@
  #include <linux/clockchips.h>
  #include <linux/io.h>
  
- #include <asm/system.h>
 -#include <mach/hardware.h>
  #include <asm/leds.h>
  #include <asm/irq.h>
  #include <asm/mach/irq.h>
Simple merge
index 5ca45ca76946fa777a046e45443b74395d4e0238,730bb009587f14dd97a28023f2da63c9098021d8..95442b69ae27111fc4bf5dba66eaaa8e01c6547a
@@@ -33,7 -34,9 +33,8 @@@
  #include <asm/mach/time.h>
  #include <asm/mach/irq.h>
  #include <asm/mach-types.h>
+ #include <asm/system_misc.h>
  
 -#include <mach/irqs.h>
  #include <plat/clock.h>
  #include <plat/sram.h>
  #include <plat/dma.h>
Simple merge
Simple merge
Simple merge
Simple merge
index 061b6bb1a557015d051b65388951da535f900665,0000000000000000000000000000000000000000..a3c5cb086ee23a736843f6e50ca5d075986885f2
mode 100644,000000..100644
--- /dev/null
@@@ -1,206 -1,0 +1,207 @@@
 +/* linux/arch/arm/mach-s3c2410/s3c2410.c
 + *
 + * Copyright (c) 2003-2005 Simtec Electronics
 + *    Ben Dooks <ben@simtec.co.uk>
 + *
 + * http://www.simtec.co.uk/products/EB2410ITX/
 + *
 + * 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.
 +*/
 +
 +#include <linux/kernel.h>
 +#include <linux/types.h>
 +#include <linux/interrupt.h>
 +#include <linux/list.h>
 +#include <linux/timer.h>
 +#include <linux/init.h>
 +#include <linux/gpio.h>
 +#include <linux/clk.h>
 +#include <linux/device.h>
 +#include <linux/syscore_ops.h>
 +#include <linux/serial_core.h>
 +#include <linux/platform_device.h>
 +#include <linux/io.h>
 +
 +#include <asm/mach/arch.h>
 +#include <asm/mach/map.h>
 +#include <asm/mach/irq.h>
 +
 +#include <mach/hardware.h>
 +#include <asm/irq.h>
++#include <asm/system_misc.h>
 +
 +#include <plat/cpu-freq.h>
 +
 +#include <mach/regs-clock.h>
 +#include <plat/regs-serial.h>
 +
 +#include <plat/s3c2410.h>
 +#include <plat/cpu.h>
 +#include <plat/devs.h>
 +#include <plat/clock.h>
 +#include <plat/pll.h>
 +#include <plat/pm.h>
 +#include <plat/watchdog-reset.h>
 +
 +#include <plat/gpio-core.h>
 +#include <plat/gpio-cfg.h>
 +#include <plat/gpio-cfg-helpers.h>
 +
 +/* Initial IO mappings */
 +
 +static struct map_desc s3c2410_iodesc[] __initdata = {
 +      IODESC_ENT(CLKPWR),
 +      IODESC_ENT(TIMER),
 +      IODESC_ENT(WATCHDOG),
 +};
 +
 +/* our uart devices */
 +
 +/* uart registration process */
 +
 +void __init s3c2410_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 +{
 +      s3c24xx_init_uartdevs("s3c2410-uart", s3c2410_uart_resources, cfg, no);
 +}
 +
 +/* s3c2410_map_io
 + *
 + * register the standard cpu IO areas, and any passed in from the
 + * machine specific initialisation.
 +*/
 +
 +void __init s3c2410_map_io(void)
 +{
 +      s3c24xx_gpiocfg_default.set_pull = s3c24xx_gpio_setpull_1up;
 +      s3c24xx_gpiocfg_default.get_pull = s3c24xx_gpio_getpull_1up;
 +
 +      iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));
 +}
 +
 +void __init_or_cpufreq s3c2410_setup_clocks(void)
 +{
 +      struct clk *xtal_clk;
 +      unsigned long tmp;
 +      unsigned long xtal;
 +      unsigned long fclk;
 +      unsigned long hclk;
 +      unsigned long pclk;
 +
 +      xtal_clk = clk_get(NULL, "xtal");
 +      xtal = clk_get_rate(xtal_clk);
 +      clk_put(xtal_clk);
 +
 +      /* now we've got our machine bits initialised, work out what
 +       * clocks we've got */
 +
 +      fclk = s3c24xx_get_pll(__raw_readl(S3C2410_MPLLCON), xtal);
 +
 +      tmp = __raw_readl(S3C2410_CLKDIVN);
 +
 +      /* work out clock scalings */
 +
 +      hclk = fclk / ((tmp & S3C2410_CLKDIVN_HDIVN) ? 2 : 1);
 +      pclk = hclk / ((tmp & S3C2410_CLKDIVN_PDIVN) ? 2 : 1);
 +
 +      /* print brieft summary of clocks, etc */
 +
 +      printk("S3C2410: core %ld.%03ld MHz, memory %ld.%03ld MHz, peripheral %ld.%03ld MHz\n",
 +             print_mhz(fclk), print_mhz(hclk), print_mhz(pclk));
 +
 +      /* initialise the clocks here, to allow other things like the
 +       * console to use them
 +       */
 +
 +      s3c24xx_setup_clocks(fclk, hclk, pclk);
 +}
 +
 +/* fake ARMCLK for use with cpufreq, etc. */
 +
 +static struct clk s3c2410_armclk = {
 +      .name   = "armclk",
 +      .parent = &clk_f,
 +      .id     = -1,
 +};
 +
 +static struct clk_lookup s3c2410_clk_lookup[] = {
 +      CLKDEV_INIT(NULL, "clk_uart_baud0", &clk_p),
 +      CLKDEV_INIT(NULL, "clk_uart_baud1", &s3c24xx_uclk),
 +};
 +
 +void __init s3c2410_init_clocks(int xtal)
 +{
 +      s3c24xx_register_baseclocks(xtal);
 +      s3c2410_setup_clocks();
 +      s3c2410_baseclk_add();
 +      s3c24xx_register_clock(&s3c2410_armclk);
 +      clkdev_add_table(s3c2410_clk_lookup, ARRAY_SIZE(s3c2410_clk_lookup));
 +}
 +
 +struct bus_type s3c2410_subsys = {
 +      .name = "s3c2410-core",
 +      .dev_name = "s3c2410-core",
 +};
 +
 +/* Note, we would have liked to name this s3c2410-core, but we cannot
 + * register two subsystems with the same name.
 + */
 +struct bus_type s3c2410a_subsys = {
 +      .name = "s3c2410a-core",
 +      .dev_name = "s3c2410a-core",
 +};
 +
 +static struct device s3c2410_dev = {
 +      .bus            = &s3c2410_subsys,
 +};
 +
 +/* need to register the subsystem before we actually register the device, and
 + * we also need to ensure that it has been initialised before any of the
 + * drivers even try to use it (even if not on an s3c2410 based system)
 + * as a driver which may support both 2410 and 2440 may try and use it.
 +*/
 +
 +static int __init s3c2410_core_init(void)
 +{
 +      return subsys_system_register(&s3c2410_subsys, NULL);
 +}
 +
 +core_initcall(s3c2410_core_init);
 +
 +static int __init s3c2410a_core_init(void)
 +{
 +      return subsys_system_register(&s3c2410a_subsys, NULL);
 +}
 +
 +core_initcall(s3c2410a_core_init);
 +
 +int __init s3c2410_init(void)
 +{
 +      printk("S3C2410: Initialising architecture\n");
 +
 +#ifdef CONFIG_PM
 +      register_syscore_ops(&s3c2410_pm_syscore_ops);
 +#endif
 +      register_syscore_ops(&s3c24xx_irq_syscore_ops);
 +
 +      return device_register(&s3c2410_dev);
 +}
 +
 +int __init s3c2410a_init(void)
 +{
 +      s3c2410_dev.bus = &s3c2410a_subsys;
 +      return s3c2410_init();
 +}
 +
 +void s3c2410_restart(char mode, const char *cmd)
 +{
 +      if (mode == 's') {
 +              soft_restart(0);
 +      }
 +
 +      arch_wdt_reset();
 +
 +      /* we'll take a jump through zero as a poor second */
 +      soft_restart(0);
 +}
index c6eac98710934b23bd7a91a29826f1a600de34d0,0000000000000000000000000000000000000000..d4bc7f960bbbe2fa047696258979f2c69190b73a
mode 100644,000000..100644
--- /dev/null
@@@ -1,251 -1,0 +1,252 @@@
 +/* linux/arch/arm/mach-s3c2412/s3c2412.c
 + *
 + * Copyright (c) 2006 Simtec Electronics
 + *    Ben Dooks <ben@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.
 +*/
 +
 +#include <linux/kernel.h>
 +#include <linux/types.h>
 +#include <linux/interrupt.h>
 +#include <linux/list.h>
 +#include <linux/timer.h>
 +#include <linux/init.h>
 +#include <linux/clk.h>
 +#include <linux/delay.h>
 +#include <linux/device.h>
 +#include <linux/syscore_ops.h>
 +#include <linux/serial_core.h>
 +#include <linux/platform_device.h>
 +#include <linux/io.h>
 +
 +#include <asm/mach/arch.h>
 +#include <asm/mach/map.h>
 +#include <asm/mach/irq.h>
 +
 +#include <mach/hardware.h>
 +#include <asm/proc-fns.h>
 +#include <asm/irq.h>
++#include <asm/system_misc.h>
 +
 +#include <plat/cpu-freq.h>
 +
 +#include <mach/regs-clock.h>
 +#include <plat/regs-serial.h>
 +#include <mach/regs-power.h>
 +#include <mach/regs-gpio.h>
 +#include <mach/regs-gpioj.h>
 +#include <mach/regs-dsc.h>
 +#include <plat/regs-spi.h>
 +#include <mach/regs-s3c2412.h>
 +
 +#include <plat/s3c2412.h>
 +#include <plat/cpu.h>
 +#include <plat/devs.h>
 +#include <plat/clock.h>
 +#include <plat/pm.h>
 +#include <plat/pll.h>
 +#include <plat/nand-core.h>
 +
 +#ifndef CONFIG_CPU_S3C2412_ONLY
 +void __iomem *s3c24xx_va_gpio2 = S3C24XX_VA_GPIO;
 +
 +static inline void s3c2412_init_gpio2(void)
 +{
 +      s3c24xx_va_gpio2 = S3C24XX_VA_GPIO + 0x10;
 +}
 +#else
 +#define s3c2412_init_gpio2() do { } while(0)
 +#endif
 +
 +/* Initial IO mappings */
 +
 +static struct map_desc s3c2412_iodesc[] __initdata = {
 +      IODESC_ENT(CLKPWR),
 +      IODESC_ENT(TIMER),
 +      IODESC_ENT(WATCHDOG),
 +      {
 +              .virtual = (unsigned long)S3C2412_VA_SSMC,
 +              .pfn     = __phys_to_pfn(S3C2412_PA_SSMC),
 +              .length  = SZ_1M,
 +              .type    = MT_DEVICE,
 +      },
 +      {
 +              .virtual = (unsigned long)S3C2412_VA_EBI,
 +              .pfn     = __phys_to_pfn(S3C2412_PA_EBI),
 +              .length  = SZ_1M,
 +              .type    = MT_DEVICE,
 +      },
 +};
 +
 +/* uart registration process */
 +
 +void __init s3c2412_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 +{
 +      s3c24xx_init_uartdevs("s3c2412-uart", s3c2410_uart_resources, cfg, no);
 +
 +      /* rename devices that are s3c2412/s3c2413 specific */
 +      s3c_device_sdi.name  = "s3c2412-sdi";
 +      s3c_device_lcd.name  = "s3c2412-lcd";
 +      s3c_nand_setname("s3c2412-nand");
 +
 +      /* alter IRQ of SDI controller */
 +
 +      s3c_device_sdi.resource[1].start = IRQ_S3C2412_SDI;
 +      s3c_device_sdi.resource[1].end   = IRQ_S3C2412_SDI;
 +
 +      /* spi channel related changes, s3c2412/13 specific */
 +      s3c_device_spi0.name = "s3c2412-spi";
 +      s3c_device_spi0.resource[0].end = S3C24XX_PA_SPI + 0x24;
 +      s3c_device_spi1.name = "s3c2412-spi";
 +      s3c_device_spi1.resource[0].start = S3C24XX_PA_SPI + S3C2412_SPI1;
 +      s3c_device_spi1.resource[0].end = S3C24XX_PA_SPI + S3C2412_SPI1 + 0x24;
 +
 +}
 +
 +/* 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();
 +}
 +
 +void s3c2412_restart(char mode, const char *cmd)
 +{
 +      if (mode == 's')
 +              soft_restart(0);
 +
 +      /* errata "Watch-dog/Software Reset Problem" specifies that
 +       * this reset must be done with the SYSCLK sourced from
 +       * EXTCLK instead of FOUT to avoid a glitch in the reset
 +       * mechanism.
 +       *
 +       * See the watchdog section of the S3C2412 manual for more
 +       * information on this fix.
 +       */
 +
 +      __raw_writel(0x00, S3C2412_CLKSRC);
 +      __raw_writel(S3C2412_SWRST_RESET, S3C2412_SWRST);
 +
 +      mdelay(1);
 +}
 +
 +/* s3c2412_map_io
 + *
 + * register the standard cpu IO areas, and any passed in from the
 + * machine specific initialisation.
 +*/
 +
 +void __init s3c2412_map_io(void)
 +{
 +      /* move base of IO */
 +
 +      s3c2412_init_gpio2();
 +
 +      /* set our idle function */
 +
 +      arm_pm_idle = s3c2412_idle;
 +
 +      /* register our io-tables */
 +
 +      iotable_init(s3c2412_iodesc, ARRAY_SIZE(s3c2412_iodesc));
 +}
 +
 +void __init_or_cpufreq s3c2412_setup_clocks(void)
 +{
 +      struct clk *xtal_clk;
 +      unsigned long tmp;
 +      unsigned long xtal;
 +      unsigned long fclk;
 +      unsigned long hclk;
 +      unsigned long pclk;
 +
 +      xtal_clk = clk_get(NULL, "xtal");
 +      xtal = clk_get_rate(xtal_clk);
 +      clk_put(xtal_clk);
 +
 +      /* now we've got our machine bits initialised, work out what
 +       * clocks we've got */
 +
 +      fclk = s3c24xx_get_pll(__raw_readl(S3C2410_MPLLCON), xtal * 2);
 +
 +      clk_mpll.rate = fclk;
 +
 +      tmp = __raw_readl(S3C2410_CLKDIVN);
 +
 +      /* work out clock scalings */
 +
 +      hclk = fclk / ((tmp & S3C2412_CLKDIVN_HDIVN_MASK) + 1);
 +      hclk /= ((tmp & S3C2412_CLKDIVN_ARMDIVN) ? 2 : 1);
 +      pclk = hclk / ((tmp & S3C2412_CLKDIVN_PDIVN) ? 2 : 1);
 +
 +      /* print brieft summary of clocks, etc */
 +
 +      printk("S3C2412: core %ld.%03ld MHz, memory %ld.%03ld MHz, peripheral %ld.%03ld MHz\n",
 +             print_mhz(fclk), print_mhz(hclk), print_mhz(pclk));
 +
 +      s3c24xx_setup_clocks(fclk, hclk, pclk);
 +}
 +
 +void __init s3c2412_init_clocks(int xtal)
 +{
 +      /* initialise the clocks here, to allow other things like the
 +       * console to use them
 +       */
 +
 +      s3c24xx_register_baseclocks(xtal);
 +      s3c2412_setup_clocks();
 +      s3c2412_baseclk_add();
 +}
 +
 +/* need to register the subsystem before we actually register the device, and
 + * we also need to ensure that it has been initialised before any of the
 + * drivers even try to use it (even if not on an s3c2412 based system)
 + * as a driver which may support both 2410 and 2440 may try and use it.
 +*/
 +
 +struct bus_type s3c2412_subsys = {
 +      .name = "s3c2412-core",
 +      .dev_name = "s3c2412-core",
 +};
 +
 +static int __init s3c2412_core_init(void)
 +{
 +      return subsys_system_register(&s3c2412_subsys, NULL);
 +}
 +
 +core_initcall(s3c2412_core_init);
 +
 +static struct device s3c2412_dev = {
 +      .bus            = &s3c2412_subsys,
 +};
 +
 +int __init s3c2412_init(void)
 +{
 +      printk("S3C2412: Initialising architecture\n");
 +
 +#ifdef CONFIG_PM
 +      register_syscore_ops(&s3c2412_pm_syscore_ops);
 +#endif
 +      register_syscore_ops(&s3c24xx_irq_syscore_ops);
 +
 +      return device_register(&s3c2412_dev);
 +}
index 0e9a71c90ed7343f86ed077d820926b8f2b03741,0000000000000000000000000000000000000000..7743fade50dfa59e1c3d669d5aa55478adb993e1
mode 100644,000000..100644
--- /dev/null
@@@ -1,148 -1,0 +1,149 @@@
 +/* linux/arch/arm/mach-s3c2416/s3c2416.c
 + *
 + * Copyright (c) 2009 Yauhen Kharuzhy <jekhor@gmail.com>,
 + *    as part of OpenInkpot project
 + * Copyright (c) 2009 Promwad Innovation Company
 + *    Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
 + *
 + * Samsung S3C2416 Mobile CPU support
 + *
 + * 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 <linux/kernel.h>
 +#include <linux/types.h>
 +#include <linux/interrupt.h>
 +#include <linux/list.h>
 +#include <linux/timer.h>
 +#include <linux/init.h>
 +#include <linux/gpio.h>
 +#include <linux/platform_device.h>
 +#include <linux/serial_core.h>
 +#include <linux/device.h>
 +#include <linux/syscore_ops.h>
 +#include <linux/clk.h>
 +#include <linux/io.h>
 +
 +#include <asm/mach/arch.h>
 +#include <asm/mach/map.h>
 +#include <asm/mach/irq.h>
 +
 +#include <mach/hardware.h>
 +#include <asm/proc-fns.h>
 +#include <asm/irq.h>
++#include <asm/system_misc.h>
 +
 +#include <mach/regs-s3c2443-clock.h>
 +
 +#include <plat/gpio-core.h>
 +#include <plat/gpio-cfg.h>
 +#include <plat/gpio-cfg-helpers.h>
 +#include <plat/s3c2416.h>
 +#include <plat/devs.h>
 +#include <plat/cpu.h>
 +#include <plat/sdhci.h>
 +#include <plat/pm.h>
 +
 +#include <plat/iic-core.h>
 +#include <plat/fb-core.h>
 +#include <plat/nand-core.h>
 +#include <plat/adc-core.h>
 +#include <plat/rtc-core.h>
 +
 +static struct map_desc s3c2416_iodesc[] __initdata = {
 +      IODESC_ENT(WATCHDOG),
 +      IODESC_ENT(CLKPWR),
 +      IODESC_ENT(TIMER),
 +};
 +
 +struct bus_type s3c2416_subsys = {
 +      .name = "s3c2416-core",
 +      .dev_name = "s3c2416-core",
 +};
 +
 +static struct device s3c2416_dev = {
 +      .bus            = &s3c2416_subsys,
 +};
 +
 +void s3c2416_restart(char mode, const char *cmd)
 +{
 +      if (mode == 's')
 +              soft_restart(0);
 +
 +      __raw_writel(S3C2443_SWRST_RESET, S3C2443_SWRST);
 +}
 +
 +int __init s3c2416_init(void)
 +{
 +      printk(KERN_INFO "S3C2416: Initializing architecture\n");
 +
 +      /* change WDT IRQ number */
 +      s3c_device_wdt.resource[1].start = IRQ_S3C2443_WDT;
 +      s3c_device_wdt.resource[1].end   = IRQ_S3C2443_WDT;
 +
 +      /* the i2c devices are directly compatible with s3c2440 */
 +      s3c_i2c0_setname("s3c2440-i2c");
 +      s3c_i2c1_setname("s3c2440-i2c");
 +
 +      s3c_fb_setname("s3c2443-fb");
 +
 +      s3c_adc_setname("s3c2416-adc");
 +      s3c_rtc_setname("s3c2416-rtc");
 +
 +#ifdef CONFIG_PM
 +      register_syscore_ops(&s3c2416_pm_syscore_ops);
 +#endif
 +      register_syscore_ops(&s3c24xx_irq_syscore_ops);
 +
 +      return device_register(&s3c2416_dev);
 +}
 +
 +void __init s3c2416_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 +{
 +      s3c24xx_init_uartdevs("s3c2440-uart", s3c2410_uart_resources, cfg, no);
 +
 +      s3c_nand_setname("s3c2412-nand");
 +}
 +
 +/* s3c2416_map_io
 + *
 + * register the standard cpu IO areas, and any passed in from the
 + * machine specific initialisation.
 + */
 +
 +void __init s3c2416_map_io(void)
 +{
 +      s3c24xx_gpiocfg_default.set_pull = samsung_gpio_setpull_updown;
 +      s3c24xx_gpiocfg_default.get_pull = samsung_gpio_getpull_updown;
 +
 +      /* initialize device information early */
 +      s3c2416_default_sdhci0();
 +      s3c2416_default_sdhci1();
 +
 +      iotable_init(s3c2416_iodesc, ARRAY_SIZE(s3c2416_iodesc));
 +}
 +
 +/* need to register the subsystem before we actually register the device, and
 + * we also need to ensure that it has been initialised before any of the
 + * drivers even try to use it (even if not on an s3c2416 based system)
 + * as a driver which may support both 2443 and 2440 may try and use it.
 +*/
 +
 +static int __init s3c2416_core_init(void)
 +{
 +      return subsys_system_register(&s3c2416_subsys, NULL);
 +}
 +
 +core_initcall(s3c2416_core_init);
index b7778a9dafaff8e05946119d8c9ffaf0b2ceec90,0000000000000000000000000000000000000000..ab648ad8fa508651624054ca2d9693f9d34fb1e5
mode 100644,000000..100644
--- /dev/null
@@@ -1,116 -1,0 +1,117 @@@
 +/* linux/arch/arm/mach-s3c2443/s3c2443.c
 + *
 + * Copyright (c) 2007 Simtec Electronics
 + *   Ben Dooks <ben@simtec.co.uk>
 + *
 + * Samsung S3C2443 Mobile CPU support
 + *
 + * 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.
 +*/
 +
 +#include <linux/kernel.h>
 +#include <linux/types.h>
 +#include <linux/interrupt.h>
 +#include <linux/list.h>
 +#include <linux/timer.h>
 +#include <linux/init.h>
 +#include <linux/gpio.h>
 +#include <linux/platform_device.h>
 +#include <linux/serial_core.h>
 +#include <linux/device.h>
 +#include <linux/clk.h>
 +#include <linux/io.h>
 +
 +#include <asm/mach/arch.h>
 +#include <asm/mach/map.h>
 +#include <asm/mach/irq.h>
 +
 +#include <mach/hardware.h>
 +#include <asm/irq.h>
++#include <asm/system_misc.h>
 +
 +#include <mach/regs-s3c2443-clock.h>
 +
 +#include <plat/gpio-core.h>
 +#include <plat/gpio-cfg.h>
 +#include <plat/gpio-cfg-helpers.h>
 +#include <plat/s3c2443.h>
 +#include <plat/devs.h>
 +#include <plat/cpu.h>
 +#include <plat/fb-core.h>
 +#include <plat/nand-core.h>
 +#include <plat/adc-core.h>
 +#include <plat/rtc-core.h>
 +
 +static struct map_desc s3c2443_iodesc[] __initdata = {
 +      IODESC_ENT(WATCHDOG),
 +      IODESC_ENT(CLKPWR),
 +      IODESC_ENT(TIMER),
 +};
 +
 +struct bus_type s3c2443_subsys = {
 +      .name = "s3c2443-core",
 +      .dev_name = "s3c2443-core",
 +};
 +
 +static struct device s3c2443_dev = {
 +      .bus            = &s3c2443_subsys,
 +};
 +
 +void s3c2443_restart(char mode, const char *cmd)
 +{
 +      if (mode == 's')
 +              soft_restart(0);
 +
 +      __raw_writel(S3C2443_SWRST_RESET, S3C2443_SWRST);
 +}
 +
 +int __init s3c2443_init(void)
 +{
 +      printk("S3C2443: Initialising architecture\n");
 +
 +      s3c_nand_setname("s3c2412-nand");
 +      s3c_fb_setname("s3c2443-fb");
 +
 +      s3c_adc_setname("s3c2443-adc");
 +      s3c_rtc_setname("s3c2443-rtc");
 +
 +      /* change WDT IRQ number */
 +      s3c_device_wdt.resource[1].start = IRQ_S3C2443_WDT;
 +      s3c_device_wdt.resource[1].end   = IRQ_S3C2443_WDT;
 +
 +      return device_register(&s3c2443_dev);
 +}
 +
 +void __init s3c2443_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 +{
 +      s3c24xx_init_uartdevs("s3c2440-uart", s3c2410_uart_resources, cfg, no);
 +}
 +
 +/* s3c2443_map_io
 + *
 + * register the standard cpu IO areas, and any passed in from the
 + * machine specific initialisation.
 + */
 +
 +void __init s3c2443_map_io(void)
 +{
 +      s3c24xx_gpiocfg_default.set_pull = s3c2443_gpio_setpull;
 +      s3c24xx_gpiocfg_default.get_pull = s3c2443_gpio_getpull;
 +
 +      iotable_init(s3c2443_iodesc, ARRAY_SIZE(s3c2443_iodesc));
 +}
 +
 +/* need to register the subsystem before we actually register the device, and
 + * we also need to ensure that it has been initialised before any of the
 + * drivers even try to use it (even if not on an s3c2443 based system)
 + * as a driver which may support both 2443 and 2440 may try and use it.
 +*/
 +
 +static int __init s3c2443_core_init(void)
 +{
 +      return subsys_system_register(&s3c2443_subsys, NULL);
 +}
 +
 +core_initcall(s3c2443_core_init);
index d15852f642b7db8ca5fe5169a36a02fe29eb067a,0000000000000000000000000000000000000000..6f74118f60c60f66ffbd46f6f0c72821ea2bbc4d
mode 100644,000000..100644
--- /dev/null
@@@ -1,210 -1,0 +1,211 @@@
 +/* linux/arch/arm/plat-s3c24xx/s3c244x.c
 + *
 + * Copyright (c) 2004-2006 Simtec Electronics
 + *   Ben Dooks <ben@simtec.co.uk>
 + *
 + * Samsung S3C2440 and S3C2442 Mobile CPU support (not S3C2443)
 + *
 + * 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.
 +*/
 +
 +#include <linux/kernel.h>
 +#include <linux/types.h>
 +#include <linux/interrupt.h>
 +#include <linux/list.h>
 +#include <linux/timer.h>
 +#include <linux/init.h>
 +#include <linux/serial_core.h>
 +#include <linux/platform_device.h>
 +#include <linux/device.h>
 +#include <linux/syscore_ops.h>
 +#include <linux/clk.h>
 +#include <linux/io.h>
 +
++#include <asm/system_misc.h>
 +#include <asm/mach/arch.h>
 +#include <asm/mach/map.h>
 +#include <asm/mach/irq.h>
 +
 +#include <mach/hardware.h>
 +#include <asm/irq.h>
 +
 +#include <plat/cpu-freq.h>
 +
 +#include <mach/regs-clock.h>
 +#include <plat/regs-serial.h>
 +#include <mach/regs-gpio.h>
 +#include <mach/regs-gpioj.h>
 +#include <mach/regs-dsc.h>
 +
 +#include <plat/s3c2410.h>
 +#include <plat/s3c244x.h>
 +#include <plat/clock.h>
 +#include <plat/devs.h>
 +#include <plat/cpu.h>
 +#include <plat/pm.h>
 +#include <plat/pll.h>
 +#include <plat/nand-core.h>
 +#include <plat/watchdog-reset.h>
 +
 +static struct map_desc s3c244x_iodesc[] __initdata = {
 +      IODESC_ENT(CLKPWR),
 +      IODESC_ENT(TIMER),
 +      IODESC_ENT(WATCHDOG),
 +};
 +
 +/* uart initialisation */
 +
 +void __init s3c244x_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 +{
 +      s3c24xx_init_uartdevs("s3c2440-uart", s3c2410_uart_resources, cfg, no);
 +}
 +
 +void __init s3c244x_map_io(void)
 +{
 +      /* register our io-tables */
 +
 +      iotable_init(s3c244x_iodesc, ARRAY_SIZE(s3c244x_iodesc));
 +
 +      /* rename any peripherals used differing from the s3c2410 */
 +
 +      s3c_device_sdi.name  = "s3c2440-sdi";
 +      s3c_device_i2c0.name  = "s3c2440-i2c";
 +      s3c_nand_setname("s3c2440-nand");
 +      s3c_device_ts.name = "s3c2440-ts";
 +      s3c_device_usbgadget.name = "s3c2440-usbgadget";
 +}
 +
 +void __init_or_cpufreq s3c244x_setup_clocks(void)
 +{
 +      struct clk *xtal_clk;
 +      unsigned long clkdiv;
 +      unsigned long camdiv;
 +      unsigned long xtal;
 +      unsigned long hclk, fclk, pclk;
 +      int hdiv = 1;
 +
 +      xtal_clk = clk_get(NULL, "xtal");
 +      xtal = clk_get_rate(xtal_clk);
 +      clk_put(xtal_clk);
 +
 +      fclk = s3c24xx_get_pll(__raw_readl(S3C2410_MPLLCON), xtal) * 2;
 +
 +      clkdiv = __raw_readl(S3C2410_CLKDIVN);
 +      camdiv = __raw_readl(S3C2440_CAMDIVN);
 +
 +      /* work out clock scalings */
 +
 +      switch (clkdiv & S3C2440_CLKDIVN_HDIVN_MASK) {
 +      case S3C2440_CLKDIVN_HDIVN_1:
 +              hdiv = 1;
 +              break;
 +
 +      case S3C2440_CLKDIVN_HDIVN_2:
 +              hdiv = 2;
 +              break;
 +
 +      case S3C2440_CLKDIVN_HDIVN_4_8:
 +              hdiv = (camdiv & S3C2440_CAMDIVN_HCLK4_HALF) ? 8 : 4;
 +              break;
 +
 +      case S3C2440_CLKDIVN_HDIVN_3_6:
 +              hdiv = (camdiv & S3C2440_CAMDIVN_HCLK3_HALF) ? 6 : 3;
 +              break;
 +      }
 +
 +      hclk = fclk / hdiv;
 +      pclk = hclk / ((clkdiv & S3C2440_CLKDIVN_PDIVN) ? 2 : 1);
 +
 +      /* print brief summary of clocks, etc */
 +
 +      printk("S3C244X: core %ld.%03ld MHz, memory %ld.%03ld MHz, peripheral %ld.%03ld MHz\n",
 +             print_mhz(fclk), print_mhz(hclk), print_mhz(pclk));
 +
 +      s3c24xx_setup_clocks(fclk, hclk, pclk);
 +}
 +
 +void __init s3c244x_init_clocks(int xtal)
 +{
 +      /* initialise the clocks here, to allow other things like the
 +       * console to use them, and to add new ones after the initialisation
 +       */
 +
 +      s3c24xx_register_baseclocks(xtal);
 +      s3c244x_setup_clocks();
 +      s3c2410_baseclk_add();
 +}
 +
 +/* Since the S3C2442 and S3C2440 share items, put both subsystems here */
 +
 +struct bus_type s3c2440_subsys = {
 +      .name           = "s3c2440-core",
 +      .dev_name       = "s3c2440-core",
 +};
 +
 +struct bus_type s3c2442_subsys = {
 +      .name           = "s3c2442-core",
 +      .dev_name       = "s3c2442-core",
 +};
 +
 +/* need to register the subsystem before we actually register the device, and
 + * we also need to ensure that it has been initialised before any of the
 + * drivers even try to use it (even if not on an s3c2440 based system)
 + * as a driver which may support both 2410 and 2440 may try and use it.
 +*/
 +
 +static int __init s3c2440_core_init(void)
 +{
 +      return subsys_system_register(&s3c2440_subsys, NULL);
 +}
 +
 +core_initcall(s3c2440_core_init);
 +
 +static int __init s3c2442_core_init(void)
 +{
 +      return subsys_system_register(&s3c2442_subsys, NULL);
 +}
 +
 +core_initcall(s3c2442_core_init);
 +
 +
 +#ifdef CONFIG_PM
 +static struct sleep_save s3c244x_sleep[] = {
 +      SAVE_ITEM(S3C2440_DSC0),
 +      SAVE_ITEM(S3C2440_DSC1),
 +      SAVE_ITEM(S3C2440_GPJDAT),
 +      SAVE_ITEM(S3C2440_GPJCON),
 +      SAVE_ITEM(S3C2440_GPJUP)
 +};
 +
 +static int s3c244x_suspend(void)
 +{
 +      s3c_pm_do_save(s3c244x_sleep, ARRAY_SIZE(s3c244x_sleep));
 +      return 0;
 +}
 +
 +static void s3c244x_resume(void)
 +{
 +      s3c_pm_do_restore(s3c244x_sleep, ARRAY_SIZE(s3c244x_sleep));
 +}
 +#else
 +#define s3c244x_suspend NULL
 +#define s3c244x_resume  NULL
 +#endif
 +
 +struct syscore_ops s3c244x_pm_syscore_ops = {
 +      .suspend        = s3c244x_suspend,
 +      .resume         = s3c244x_resume,
 +};
 +
 +void s3c244x_restart(char mode, const char *cmd)
 +{
 +      if (mode == 's')
 +              soft_restart(0);
 +
 +      arch_wdt_reset();
 +
 +      /* we'll take a jump through zero as a poor second */
 +      soft_restart(0);
 +}
Simple merge
Simple merge
index 1d0f71b17a2670a9ac30aed6bcfc163bf810afc1,9ad94691743e085ec545add7cb86722c2f583852..7c524b4e415d7ec7843dcbd7987c663d2f447bd9
  #include <linux/ioport.h>
  #include <linux/platform_device.h>
  
 +#include <video/sa1100fb.h>
 +
  #include <asm/div64.h>
- #include <asm/system.h>
 -#include <mach/hardware.h>
  #include <asm/mach/map.h>
  #include <asm/mach/flash.h>
  #include <asm/irq.h>
+ #include <asm/system_misc.h>
  
 +#include <mach/hardware.h>
 +#include <mach/irqs.h>
 +
  #include "generic.h"
  
  unsigned int reset_status;
index 3bbcb3fa077566113cc23c23ad5f9bd1837cf8ca,92042703b94df6e46f34242b84a93673ec453b21..540eaff08f34b614d487f4605ab266b3fd06da73
@@@ -1,6 -1,13 +1,8 @@@
  #ifndef __ASM_ARCH_SYSTEM_H
  #define __ASM_ARCH_SYSTEM_H
  
 -static inline void arch_idle(void)
 -{
 -      cpu_do_idle();
 -}
 -
+ #include <asm/system_misc.h>
  static inline void arch_reset(char mode, const char *cmd)
  {
        soft_restart(0);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 32a09931350c16ebc5d0d7bc0d823d5ccc0dbfbc,ded64318fcce3ea89f1d194f6bdbcbed6877f9e4..0db73ae646bcfb616242b04340eb528ca70551bb
  #include <linux/io.h>
  
  #include <mach/hardware.h>
 +#include <mach/regs-clock.h>
  #include <asm/irq.h>
  #include <asm/cacheflush.h>
+ #include <asm/system_info.h>
  
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 352cc2352bd5109982a879e3571d9b541d6f46a6,a25e6b5e2ad454ec08020b3307ed02fbd89991b6..287c5485d286ec4336d2dcdebe7e61c2735aae3a
@@@ -135,9 -135,9 +135,11 @@@ extern unsigned long min_low_pfn
  extern unsigned long max_pfn;
  
  extern unsigned long memory_start;
 -extern unsigned long memory_end;
  extern unsigned long memory_size;
 +extern unsigned long lowmem_size;
 +
++extern unsigned long kernel_tlb;
  extern int page_is_ram(unsigned long pfn);
  
  # define phys_to_pfn(phys)    (PFN_DOWN(phys))
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index f097d516d8c5ab0555d5d393c9d34eb6b688fa1e,59c9278befc9a88965caf7ebf6e52fec53d749be..c6646de07bf455acb80c3c94674cdc61c535677c
@@@ -17,7 -17,9 +17,9 @@@
  #include <linux/semaphore.h>
  #include <linux/oom.h>
  #include <linux/oprofile.h>
 -#include <asm/lowcore.h>
+ #include <asm/facility.h>
 +#include <asm/cpu_mf.h>
  #include <asm/irq.h>
  
  #include "hwsampler.h"
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 67bbb06d046081cd9d0f3786b7fdecd2b23ab955,3093ca6152c9db3af51ff344b681080d0562a22d..17fa04d08be9cc0af181e5f20398128d8b4d5234
@@@ -25,9 -25,7 +25,8 @@@
  #include <linux/opp.h>
  #include <linux/cpu.h>
  #include <linux/module.h>
 +#include <linux/regulator/consumer.h>
  
- #include <asm/system.h>
  #include <asm/smp_plat.h>
  #include <asm/cpu.h>
  
index 58b224498b35ad7d3fc6c2b034780f67921f7f9f,d8aac177307f741743a1eb6e76cd2fe067c61a21..2af5df6a8fba76855f5a354fafaeb958459feecc
@@@ -36,9 -36,9 +36,8 @@@
  #include <linux/io.h>
  #include <linux/slab.h>
  
 -#include <asm/irq.h>
  #include <mach/hardware.h>
  #include <asm/hardware/iomd.h>
- #include <asm/system.h>
  
  MODULE_AUTHOR("Vojtech Pavlik, Russell King");
  MODULE_DESCRIPTION("Acorn RiscPC PS/2 keyboard controller driver");
Simple merge
Simple merge
Simple merge
index 6acf2e03f2baa935039690637ff8b3c0f793ff2b,32c82de81adad810e1893b4e527ae78d7abc68f6..62e5e3617eb0e34b2bc0bb8985b31da5f39aa2d7
@@@ -19,8 -19,8 +19,6 @@@
  #include <linux/string.h>
  #include <linux/mfd/mcp.h>
  
- #include <asm/system.h>
 -#include <mach/dma.h>
--
  
  #define to_mcp(d)             container_of(d, struct mcp, attached_device)
  #define to_mcp_driver(d)      container_of(d, struct mcp_driver, drv)
index 1c0ceacaa1f6463db20cf2a275df68747c9cf80f,4a27c2b9a89152541db07f26b18d904d79c56b32..c54e244ca0cfa28b40a6182c65e6f8f3d81c1da6
  #include <linux/delay.h>
  #include <linux/spinlock.h>
  #include <linux/platform_device.h>
 +#include <linux/pm.h>
  #include <linux/mfd/mcp.h>
  
 -#include <mach/dma.h>
  #include <mach/hardware.h>
  #include <asm/mach-types.h>
- #include <asm/system.h>
  #include <mach/mcp.h>
  
 -#include <mach/assabet.h>
 -
 +#define DRIVER_NAME "sa11x0-mcp"
  
  struct mcp_sa11x0 {
 -      u32     mccr0;
 -      u32     mccr1;
 +      void __iomem    *base0;
 +      void __iomem    *base1;
 +      u32             mccr0;
 +      u32             mccr1;
  };
  
 +/* Register offsets */
 +#define MCCR0(m)      ((m)->base0 + 0x00)
 +#define MCDR0(m)      ((m)->base0 + 0x08)
 +#define MCDR1(m)      ((m)->base0 + 0x0c)
 +#define MCDR2(m)      ((m)->base0 + 0x10)
 +#define MCSR(m)               ((m)->base0 + 0x18)
 +#define MCCR1(m)      ((m)->base1 + 0x00)
 +
  #define priv(mcp)     ((struct mcp_sa11x0 *)mcp_priv(mcp))
  
  static void
Simple merge
Simple merge
index 30fee428c4891efe65eee52337f7e54061e5eb5d,98c171b3a45e4d1723cc9b2892e2ab5367c45f1f..b9406cbfc1808a85678734c56a011eb3c41fe309
  #include <linux/delay.h>
  #include <linux/gfp.h>
  
- #include <asm/system.h>
  #include <asm/io.h>
  #include <asm/irq.h>
 +#include <linux/atomic.h>
  #if ALLOW_DMA
  #include <asm/dma.h>
  #endif
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 72e81058176ae796b41da55b1b166b13c091d003,6112bef2e8d680a5e5a5019f3102a03c387ac9fd..64ae9e9fed94acdddab23d0d20ea50f771685ef3
@@@ -42,9 -40,9 +42,8 @@@
  #include <linux/io.h>
  #include <linux/uaccess.h>
  
- #include <asm/system.h>
  
  #define DRV_NAME "advantechwdt"
 -#define PFX DRV_NAME ": "
  #define WATCHDOG_NAME "Advantech WDT"
  #define WATCHDOG_TIMEOUT 60           /* 60 sec default timeout */
  
index b9e9558ab218c56228e27355dc4535add1e14f17,486841895e9f04c2540d229c01bec01dea422360..5eee55012e3375915b769e2bbcf05da9adbeff60
  #include <linux/io.h>
  #include <linux/uaccess.h>
  
- #include <asm/system.h>
  
 -#define OUR_NAME "alim7101_wdt"
 -#define PFX OUR_NAME ": "
 -
  #define WDT_ENABLE 0x9C
  #define WDT_DISABLE 0x8C
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 8ab757d3df5fba9c8867c3901298a19b76faa465,80f39a357de345161f74b2cde1ddbf69839eaf93..719edc8fdeb39c083d797fa72010b79bb50e728b
@@@ -32,8 -30,9 +32,7 @@@
  #include <linux/io.h>
  #include <linux/uaccess.h>
  #include <linux/atomic.h>
- #include <asm/system.h>
  
 -#define SBC7240_PREFIX "sbc7240_wdt: "
 -
  #define SBC7240_ENABLE_PORT           0x443
  #define SBC7240_DISABLE_PORT          0x043
  #define SBC7240_SET_TIMEOUT_PORT      SBC7240_ENABLE_PORT
Simple merge
index 840428529227f9a4e4292dbd9283c416cf6f2148,07d59b33c48b3ef666c8ede2ee966017c7507621..90d5527ca8863663cbd951ae2a656423eff3fb1e
@@@ -25,9 -25,8 +25,8 @@@
  #include <linux/io.h>
  #include <linux/uaccess.h>
  
- #include <asm/system.h>
  
 -static int nowayout = WATCHDOG_NOWAYOUT;
 +static bool nowayout = WATCHDOG_NOWAYOUT;
  static unsigned int margin = 60;      /* (secs) Default is 1 minute */
  static unsigned long wdt_status;
  static DEFINE_MUTEX(wdt_lock);
index d1ef58579a3718d05016fb8017c9095e97ac0308,c794803e7089ff9e39a339d65d7a0b1d1269c257..707e027e50025f4fbff1c73215ede8a3ee4491df
  #include <linux/io.h>
  #include <linux/uaccess.h>
  
- #include <asm/system.h>
  
 -#define OUR_NAME "sc520_wdt"
 -#define PFX OUR_NAME ": "
 -
  /*
   * The AMD Elan SC520 timeout value is 492us times a power of 2 (0-7)
   *
Simple merge
index 452980361c6333ad036094cc3f8067ca11b6c66d,1283d0671c70d473ed542f1e2d3b28be6b53955d..92f1326f0cfc30dd24b0d829a02548ac42e0d33b
@@@ -42,9 -40,9 +42,8 @@@
  #include <linux/io.h>
  #include <linux/uaccess.h>
  
- #include <asm/system.h>
  
  #define WATCHDOG_NAME "w83627hf/thf/hg/dhg WDT"
 -#define PFX WATCHDOG_NAME ": "
  #define WATCHDOG_TIMEOUT 60           /* 60 sec default timeout */
  
  static unsigned long wdt_is_open;
index f5c9d9901acce293c5d1fa9d22b9454ea298d2e7,e5cb768f5b56dd510fbfb8c22d2744468a3676b9..cd9f3c1e1af44bc14cdd5b116176b9262a783a96
@@@ -41,9 -39,9 +41,8 @@@
  #include <linux/io.h>
  #include <linux/uaccess.h>
  
- #include <asm/system.h>
  
  #define WATCHDOG_NAME "w83697hf/hg WDT"
 -#define PFX WATCHDOG_NAME ": "
  #define WATCHDOG_TIMEOUT 60           /* 60 sec default timeout */
  #define WATCHDOG_EARLY_DISABLE 1      /* Disable until userland kicks in */
  
index ab45bfdf935caaba25131701b9688a043064b4e4,24a46ff62a353b9674a30ac4b7a744c41c2655d4..274be0bfaf244878438411fb025063352cb51f91
@@@ -46,9 -44,9 +46,8 @@@
  #include <linux/io.h>
  #include <linux/uaccess.h>
  
- #include <asm/system.h>
  
  #define WATCHDOG_NAME "w83697ug/uf WDT"
 -#define PFX WATCHDOG_NAME ": "
  #define WATCHDOG_TIMEOUT 60           /* 60 sec default timeout */
  
  static unsigned long wdt_is_open;
index e76e7e3093015595b4c1caaa57b7f887847c0a49,5f3b9455f294b994151ad60c89c1fa29f4c4afa0..7874ae06232b3648757c1529c8df5aaa10729d16
@@@ -58,9 -56,9 +58,8 @@@
  #include <linux/init.h>
  #include <linux/io.h>
  #include <linux/uaccess.h>
- #include <asm/system.h>
  
  #define OUR_NAME "w83877f_wdt"
 -#define PFX OUR_NAME ": "
  
  #define ENABLE_W83877F_PORT 0x3F0
  #define ENABLE_W83877F 0x87
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/binfmt_elf.c
Simple merge
Simple merge
diff --cc fs/eventpoll.c
Simple merge
Simple merge
Simple merge
diff --cc fs/nfs/client.c
index 4a108a0a2a6085e75c4cb42a2564d32013e28bce,ad5565acbf3b88e5e77f1e1cfafc634b8cead9a6..da7b5e4ff9ec19adc0c7e53452a87d7cd35a609b
  #include <net/ipv6.h>
  #include <linux/nfs_xdr.h>
  #include <linux/sunrpc/bc_xprt.h>
 +#include <linux/nsproxy.h>
 +#include <linux/pid_namespace.h>
  
- #include <asm/system.h>
  
  #include "nfs4_fs.h"
  #include "callback.h"
diff --cc fs/nfs/direct.c
Simple merge
diff --cc fs/nfs/file.c
Simple merge
diff --cc fs/nfs/inode.c
index 7bb4d13c1cd5ecaa10bbab88b8942ccbd9f9b444,c2ce8196912cabd25bece1b4a5f4e145ac5f3a24..e8bbfa5b35009ae6ff7b2ac576d23615dec1c1c7
@@@ -39,9 -39,7 +39,8 @@@
  #include <linux/slab.h>
  #include <linux/compat.h>
  #include <linux/freezer.h>
 +#include <linux/crc32.h>
  
- #include <asm/system.h>
  #include <asm/uaccess.h>
  
  #include "nfs4_fs.h"
diff --cc fs/nfs/read.c
Simple merge
diff --cc fs/nfs/super.c
index ccc4cdb1efe9a9e7842718ef24407557b73b382d,e3f6b234941184c35712da9f222ee2453a069f5a..37412f706b32c83d5e0b3a95ae8665038ef43d68
  #include <linux/nfs_xdr.h>
  #include <linux/magic.h>
  #include <linux/parser.h>
 +#include <linux/nsproxy.h>
 +#include <linux/rcupdate.h>
  
- #include <asm/system.h>
  #include <asm/uaccess.h>
  
  #include "nfs4_fs.h"
index 94f20c1488a19cff3b21e9da5e58d3114c23ffcf,75cae8bf2028db750974488d9989cd1febb8c6c6..3bd46f766751caa9b143adcc5ce546441f6b868d
@@@ -3,8 -3,6 +3,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/atomic.h>
- #include <asm/system.h>
 +#include <linux/bug.h>
  
  struct task_struct;
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc init/main.c
Simple merge
Simple merge
diff --cc kernel/signal.c
Simple merge
diff --cc kernel/sysctl.c
Simple merge
diff --cc lib/llist.c
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
Simple merge