Merge tag 'split-asm_system_h-for-linus-20120328' of git://git.kernel.org/pub/scm...
Linus Torvalds [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 0000000,9e65b23..5a85f14
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
  
  #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
  #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
@@@ -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>
@@@ -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
@@@ -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
Simple merge
index c6eac98,0000000..d4bc7f9
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 0e9a71c,0000000..7743fad
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 b7778a9,0000000..ab648ad
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);
Simple merge
Simple merge
Simple merge
  #include <linux/ioport.h>
  #include <linux/platform_device.h>
  
 +#include <video/sa1100fb.h>
 +
  #include <asm/div64.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;
@@@ -1,6 -1,13 +1,8 @@@
  #ifndef __ASM_ARCH_SYSTEM_H
  #define __ASM_ARCH_SYSTEM_H
  
+ #include <asm/system_misc.h>
 -static inline void arch_idle(void)
 -{
 -      cpu_do_idle();
 -}
 -
  static inline void arch_reset(char mode, const char *cmd)
  {
        soft_restart(0);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
  #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
@@@ -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
@@@ -17,7 -17,9 +17,9 @@@
  #include <linux/semaphore.h>
  #include <linux/oom.h>
  #include <linux/oprofile.h>
+ #include <asm/facility.h>
 -#include <asm/lowcore.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
@@@ -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>
  
@@@ -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
@@@ -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)
  #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
  #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
@@@ -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 */
  
  #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
@@@ -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
@@@ -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);
  #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
@@@ -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;
@@@ -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 */
  
@@@ -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;
@@@ -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
  #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
@@@ -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
  #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"
@@@ -3,8 -3,6 +3,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/atomic.h>
 +#include <linux/bug.h>
- #include <asm/system.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