[ARM] Merge individual ARM sub-trees
Russell King [Thu, 7 Dec 2006 23:07:26 +0000 (23:07 +0000)]
Merge:
 Atmel AT91RM9200 and AT91SAM9260 changes
 General ARM developments
 Disconfiguous memory cleanups
 64-bit/32-bit division and sched_clock extension patches
 EP93xx support changes
 IOP support changes

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

12 files changed:
1  2  3  4  5  6  7 
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/configs/at91rm9200dk_defconfig
arch/arm/configs/at91rm9200ek_defconfig
arch/arm/configs/csb637_defconfig
arch/arm/configs/ep93xx_defconfig
arch/arm/configs/kb9202_defconfig
arch/arm/kernel/setup.c
arch/arm/mach-at91rm9200/gpio.c
arch/arm/mach-at91rm9200/irq.c
arch/arm/mach-versatile/core.c
arch/arm/mm/Kconfig

diff --combined arch/arm/Kconfig
@@@@@@@@ -223,6 -223,6 -223,6 -223,6 -223,6 -223,6 -223,12 +223,12 @@@@@@@@ config ARCH_IOP33
        help
          Support for Intel's IOP33X (XScale) family of processors.
       
++++++ config ARCH_IOP13XX
++++++  bool "IOP13xx-based"
++++++  select PCI
++++++  help
++++++    Support for Intel's IOP13XX (XScale) family of processors.
++++++ 
       config ARCH_IXP4XX
        bool "IXP4xx-based"
        depends on MMU
@@@@@@@@ -331,6 -331,6 -331,6 -331,6 -331,6 -331,6 -337,8 +337,8 @@@@@@@@ source "arch/arm/mach-iop32x/Kconfig
       
       source "arch/arm/mach-iop33x/Kconfig"
       
++++++ source "arch/arm/mach-iop13xx/Kconfig"
++++++ 
       source "arch/arm/mach-ixp4xx/Kconfig"
       
       source "arch/arm/mach-ixp2000/Kconfig"
@@@@@@@@ -374,6 -374,6 -374,14 -374,6 -374,6 -374,6 -382,6 +382,14 @@@@@@@@ config PLAT_IO
       
       source arch/arm/mm/Kconfig
       
++ ++++config IWMMXT
++ ++++ bool "Enable iWMMXt support"
++ ++++ depends CPU_XSCALE || CPU_XSC3
++ ++++ default y if PXA27x
++ ++++ help
++ ++++   Enable support for iWMMXt context switching at run time if
++ ++++   running on a CPU that supports it.
++ ++++
       #  bool 'Use XScale PMU as timer source' CONFIG_XSCALE_PMU_TIMER
       config XSCALE_PMU
        bool
@@@@@@@@ -583,7 -583,7 -591,7 -583,7 -583,7 -583,7 -591,7 +599,7 @@@@@@@@ config LED
                   ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \
                   ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \
                   ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \
- -----            ARCH_AT91RM9200 || MACH_TRIZEPS4
+ +++++            ARCH_AT91 || MACH_TRIZEPS4
        help
          If you say Y here, the LEDs on your machine will be used
          to provide useful information about your current system status.
diff --combined arch/arm/Makefile
@@@@@@@@ -15,6 -15,6 -15,8 -15,6 -15,6 -15,6 -15,6 +15,8 @@@@@@@@ CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(
       OBJCOPYFLAGS     :=-O binary -R .note -R .comment -S
       GZFLAGS          :=-9
       #CFLAGS          +=-pipe
++ ++++# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb:
++ ++++CFLAGS           +=$(call cc-option,-marm,)
       
       # Do not use arch/arm/defconfig - it's always outdated.
       # Select a platform tht is kept up-to-date
        machine-$(CONFIG_ARCH_CLPS711X)   := clps711x
        machine-$(CONFIG_ARCH_IOP32X)      := iop32x
        machine-$(CONFIG_ARCH_IOP33X)      := iop33x
++++++  machine-$(CONFIG_ARCH_IOP13XX)     := iop13xx
        machine-$(CONFIG_ARCH_IXP4XX)      := ixp4xx
        machine-$(CONFIG_ARCH_IXP2000)    := ixp2000
        machine-$(CONFIG_ARCH_IXP23XX)    := ixp23xx
@@@@@@@@ -357,9 -357,9 -357,9 -357,9 -357,9 -357,9 -357,9 +357,9 @@@@@@@@ CONFIG_MTD_CFI_UTIL=
       #
       # CONFIG_MTD_COMPLEX_MAPPINGS is not set
       CONFIG_MTD_PHYSMAP=y
- -----CONFIG_MTD_PHYSMAP_START=0x10000000
- -----CONFIG_MTD_PHYSMAP_LEN=0x200000
- -----CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+ +++++CONFIG_MTD_PHYSMAP_START=0
+ +++++CONFIG_MTD_PHYSMAP_LEN=0
+ +++++CONFIG_MTD_PHYSMAP_BANKWIDTH=0
       # CONFIG_MTD_ARM_INTEGRATOR is not set
       # CONFIG_MTD_IMPA7 is not set
       # CONFIG_MTD_PLATRAM is not set
@@@@@@@@ -585,7 -585,9 -585,7 -585,7 -585,7 -585,7 -585,7 +585,9 @@@@@@@@ CONFIG_AT91RM9200_WATCHDOG=
       # CONFIG_USBPCWATCHDOG is not set
       # CONFIG_NVRAM is not set
       # CONFIG_RTC is not set
- -----CONFIG_AT91_RTC=y
+ +++++CONFIG_RTC_LIB=y
+ +++++CONFIG_RTC_CLASS=y
+ +++++CONFIG_RTC_DRV_AT91RM9200=y
       # CONFIG_DTLK is not set
       # CONFIG_R3964 is not set
       
@@@@@@@@ -979,7 -981,7 -979,6 -979,7 -979,7 -979,7 -979,7 +981,6 @@@@@@@@ CONFIG_DEBUG_BUGVERBOSE=
       CONFIG_FRAME_POINTER=y
       # CONFIG_RCU_TORTURE_TEST is not set
       CONFIG_DEBUG_USER=y
-- ----# CONFIG_DEBUG_WAITQ is not set
       # CONFIG_DEBUG_ERRORS is not set
       CONFIG_DEBUG_LL=y
       # CONFIG_DEBUG_ICEDCC is not set
@@@@@@@@ -348,9 -348,9 -348,9 -348,9 -348,9 -348,9 -348,9 +348,9 @@@@@@@@ CONFIG_MTD_CFI_UTIL=
       #
       # CONFIG_MTD_COMPLEX_MAPPINGS is not set
       CONFIG_MTD_PHYSMAP=y
- -----CONFIG_MTD_PHYSMAP_START=0x10000000
- -----CONFIG_MTD_PHYSMAP_LEN=0x800000
- -----CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+ +++++CONFIG_MTD_PHYSMAP_START=0
+ +++++CONFIG_MTD_PHYSMAP_LEN=0
+ +++++CONFIG_MTD_PHYSMAP_BANKWIDTH=0
       # CONFIG_MTD_ARM_INTEGRATOR is not set
       # CONFIG_MTD_IMPA7 is not set
       # CONFIG_MTD_PLATRAM is not set
@@@@@@@@ -566,7 -566,9 -566,7 -566,7 -566,7 -566,7 -566,7 +566,9 @@@@@@@@ CONFIG_AT91RM9200_WATCHDOG=
       # CONFIG_USBPCWATCHDOG is not set
       # CONFIG_NVRAM is not set
       # CONFIG_RTC is not set
- -----CONFIG_AT91_RTC=y
+ +++++CONFIG_RTC_LIB=y
+ +++++CONFIG_RTC_CLASS=y
+ +++++CONFIG_RTC_DRV_AT91RM9200=y
       # CONFIG_DTLK is not set
       # CONFIG_R3964 is not set
       
@@@@@@@@ -968,7 -970,7 -968,6 -968,7 -968,7 -968,7 -968,7 +970,6 @@@@@@@@ CONFIG_DEBUG_BUGVERBOSE=
       CONFIG_FRAME_POINTER=y
       # CONFIG_RCU_TORTURE_TEST is not set
       CONFIG_DEBUG_USER=y
-- ----# CONFIG_DEBUG_WAITQ is not set
       # CONFIG_DEBUG_ERRORS is not set
       CONFIG_DEBUG_LL=y
       # CONFIG_DEBUG_ICEDCC is not set
@@@@@@@@ -623,7 -623,7 -623,7 -623,7 -623,7 -623,7 -623,7 +623,7 @@@@@@@@ CONFIG_AT91RM9200_WATCHDOG=
       # CONFIG_USBPCWATCHDOG is not set
       # CONFIG_NVRAM is not set
       CONFIG_RTC=y
- -----# CONFIG_AT91_RTC is not set
+ +++++# CONFIG_AT91RM9200_RTC is not set
       # CONFIG_DTLK is not set
       # CONFIG_R3964 is not set
       
@@@@@@@@ -1062,7 -1062,7 -1062,6 -1062,7 -1062,7 -1062,7 -1062,7 +1062,6 @@@@@@@@ CONFIG_DEBUG_BUGVERBOSE=
       CONFIG_FRAME_POINTER=y
       # CONFIG_RCU_TORTURE_TEST is not set
       CONFIG_DEBUG_USER=y
-- ----# CONFIG_DEBUG_WAITQ is not set
       # CONFIG_DEBUG_ERRORS is not set
       CONFIG_DEBUG_LL=y
       # CONFIG_DEBUG_ICEDCC is not set
@@@@@@@@ -125,6 -125,6 -125,6 -125,6 -125,6 -125,7 -125,6 +125,7 @@@@@@@@ CONFIG_CRUNCH=
       #
       # EP93xx Platforms
       #
+++++ +CONFIG_MACH_ADSSPHERE=y
       CONFIG_MACH_EDB9302=y
       CONFIG_MACH_EDB9312=y
       CONFIG_MACH_EDB9315=y
@@@@@@@@ -1134,7 -1134,7 -1134,6 -1134,7 -1134,7 -1135,7 -1134,7 +1135,6 @@@@@@@@ CONFIG_FRAME_POINTER=
       CONFIG_FORCED_INLINING=y
       # CONFIG_RCU_TORTURE_TEST is not set
       CONFIG_DEBUG_USER=y
-- ----CONFIG_DEBUG_WAITQ=y
       CONFIG_DEBUG_ERRORS=y
       CONFIG_DEBUG_LL=y
       # CONFIG_DEBUG_ICEDCC is not set
@@@@@@@@ -437,7 -437,7 -437,7 -437,7 -437,7 -437,7 -437,7 +437,7 @@@@@@@@ CONFIG_LEGACY_PTY_COUNT=25
       # CONFIG_WATCHDOG is not set
       # CONFIG_NVRAM is not set
       # CONFIG_RTC is not set
- -----# CONFIG_AT91_RTC is not set
+ +++++# CONFIG_AT91RM9200_RTC is not set
       # CONFIG_DTLK is not set
       # CONFIG_R3964 is not set
       
@@@@@@@@ -753,7 -753,7 -753,6 -753,7 -753,7 -753,7 -753,7 +753,6 @@@@@@@@ CONFIG_DEBUG_BUGVERBOSE=
       # CONFIG_DEBUG_FS is not set
       CONFIG_FRAME_POINTER=y
       CONFIG_DEBUG_USER=y
-- ----# CONFIG_DEBUG_WAITQ is not set
       CONFIG_DEBUG_ERRORS=y
       CONFIG_DEBUG_LL=y
       # CONFIG_DEBUG_ICEDCC is not set
diff --combined arch/arm/kernel/setup.c
@@@@@@@@ -357,9 -357,9 -357,6 -357,9 -357,9 -357,9 -357,9 +357,6 @@@@@@@@ static void __init setup_processor(void
       #ifndef CONFIG_VFP
        elf_hwcap &= ~HWCAP_VFP;
       #endif
-- ----#ifndef CONFIG_IWMMXT
-- ---- elf_hwcap &= ~HWCAP_IWMMXT;
-- ----#endif
       
        cpu_proc_init();
       }
@@@@@@@@ -441,16 -441,16 -438,16 -441,19 -441,16 -441,16 -441,16 +438,19 @@@@@@@@ __early_param("initrd=", early_initrd)
       
       static void __init arm_add_memory(unsigned long start, unsigned long size)
       {
+++ +++ struct membank *bank;
+++ +++
        /*
         * Ensure that start/size are aligned to a page boundary.
         * Size is appropriately rounded down, start is rounded up.
         */
        size -= start & ~PAGE_MASK;
       
--- --- meminfo.bank[meminfo.nr_banks].start = PAGE_ALIGN(start);
--- --- meminfo.bank[meminfo.nr_banks].size  = size & PAGE_MASK;
--- --- meminfo.bank[meminfo.nr_banks].node  = PHYS_TO_NID(start);
--- --- meminfo.nr_banks += 1;
+++ +++ bank = &meminfo.bank[meminfo.nr_banks++];
+++ +++
+++ +++ bank->start = PAGE_ALIGN(start);
+++ +++ bank->size  = size & PAGE_MASK;
+++ +++ bank->node  = PHYS_TO_NID(start);
       }
       
       /*
       
       #include <asm/io.h>
       #include <asm/hardware.h>
+ +++++#include <asm/arch/at91_pio.h>
+ +++++#include <asm/arch/at91_pmc.h>
       #include <asm/arch/gpio.h>
       
       #include "generic.h"
@@@@@@@@ -332,10 -334,10 -332,10 -332,10 -332,10 -332,10 -332,10 +334,10 @@@@@@@@ static struct irq_chip gpio_irqchip = 
        .set_wake       = gpio_irq_set_wake,
       };
       
-- ----static void gpio_irq_handler(unsigned irq, struct irqdesc *desc)
++ ++++static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
       {
        unsigned        pin;
-- ---- struct irqdesc  *gpio;
++ ++++ struct irq_desc *gpio;
        void __iomem    *pio;
        u32             isr;
       
@@@@@@@@ -396,7 -398,7 -396,7 -396,7 -396,7 -396,7 -396,7 +398,7 @@@@@@@@ void __init at91_gpio_irq_setup(void
                __raw_writel(~0, controller + PIO_IDR);
       
                set_irq_data(id, (void *) pin);
-- ----         set_irq_chipdata(id, controller);
++ ++++         set_irq_chip_data(id, controller);
       
                for (i = 0; i < 32; i++, pin++) {
                        /*
                         * shorter, and the AIC handles interupts sanely.
                         */
                        set_irq_chip(pin, &gpio_irqchip);
-- ----                 set_irq_handler(pin, do_simple_IRQ);
++ ++++                 set_irq_handler(pin, handle_simple_irq);
                        set_irq_flags(pin, IRQF_VALID);
                }
       
@@@@@@@@ -47,6 -47,10 -47,6 -47,6 -47,6 -47,6 -47,6 +47,10 @@@@@@@@ static void at91_aic_unmask_irq(unsigne
        at91_sys_write(AT91_AIC_IECR, 1 << irq);
       }
       
+ +++++unsigned int at91_extern_irq;
+ +++++
+ +++++#define is_extern_irq(irq) ((1 << (irq)) & at91_extern_irq)
+ +++++
       static int at91_aic_set_type(unsigned irq, unsigned type)
       {
        unsigned int smr, srctype;
                srctype = AT91_AIC_SRCTYPE_RISING;
                break;
        case IRQT_LOW:
- -----         if ((irq > AT91_ID_FIQ) && (irq < AT91RM9200_ID_IRQ0))  /* only supported on external interrupts */
+ +++++         if ((irq == AT91_ID_FIQ) || is_extern_irq(irq))         /* only supported on external interrupts */
+ +++++                 srctype = AT91_AIC_SRCTYPE_LOW;
+ +++++         else
                        return -EINVAL;
- -----         srctype = AT91_AIC_SRCTYPE_LOW;
                break;
        case IRQT_FALLING:
- -----         if ((irq > AT91_ID_FIQ) && (irq < AT91RM9200_ID_IRQ0))  /* only supported on external interrupts */
+ +++++         if ((irq == AT91_ID_FIQ) || is_extern_irq(irq))         /* only supported on external interrupts */
+ +++++                 srctype = AT91_AIC_SRCTYPE_FALLING;
+ +++++         else
                        return -EINVAL;
- -----         srctype = AT91_AIC_SRCTYPE_FALLING;
                break;
        default:
                return -EINVAL;
@@@@@@@@ -139,7 -145,7 -139,7 -139,7 -139,7 -139,7 -139,7 +145,7 @@@@@@@@ void __init at91_aic_init(unsigned int 
                at91_sys_write(AT91_AIC_SMR(i), AT91_AIC_SRCTYPE_LOW | priority[i]);
       
                set_irq_chip(i, &at91_aic_chip);
-- ----         set_irq_handler(i, do_level_IRQ);
++ ++++         set_irq_handler(i, handle_level_irq);
                set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
       
                /* Perform 8 End Of Interrupt Command to make sure AIC will not Lock out nIRQ */
       #include <linux/amba/bus.h>
       #include <linux/amba/clcd.h>
       
++++ ++#include <asm/cnt32_to_63.h>
       #include <asm/system.h>
       #include <asm/hardware.h>
       #include <asm/io.h>
@@@@@@@@ -77,7 -77,7 -77,7 -77,7 -78,7 -77,7 -77,7 +78,7 @@@@@@@@ static struct irq_chip sic_chip = 
       };
       
       static void
-- ----sic_handle_irq(unsigned int irq, struct irqdesc *desc)
++ ++++sic_handle_irq(unsigned int irq, struct irq_desc *desc)
       {
        unsigned long status = readl(VA_SIC_BASE + SIC_IRQ_STATUS);
       
@@@@@@@@ -123,7 -123,7 -123,7 -123,7 -124,7 -123,7 -123,7 +124,7 @@@@@@@@ void __init versatile_init_irq(void
        for (i = IRQ_SIC_START; i <= IRQ_SIC_END; i++) {
                if ((PIC_MASK & (1 << (i - IRQ_SIC_START))) == 0) {
                        set_irq_chip(i, &sic_chip);
-- ----                 set_irq_handler(i, do_level_IRQ);
++ ++++                 set_irq_handler(i, handle_level_irq);
                        set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
                }
        }
@@@@@@@@ -228,14 -228,14 -228,14 -228,14 -229,19 -228,14 -228,14 +229,19 @@@@@@@@ void __init versatile_map_io(void
       
       /*
        * This is the Versatile sched_clock implementation.  This has
---- -- * a resolution of 41.7ns, and a maximum value of about 179s.
++++ ++ * a resolution of 41.7ns, and a maximum value of about 35583 days.
++++ ++ *
++++ ++ * The return value is guaranteed to be monotonic in that range as
++++ ++ * long as there is always less than 89 seconds between successive
++++ ++ * calls to this function.
        */
       unsigned long long sched_clock(void)
       {
---- -- unsigned long long v;
++++ ++ unsigned long long v = cnt32_to_63(readl(VERSATILE_REFCOUNTER));
       
---- -- v = (unsigned long long)readl(VERSATILE_REFCOUNTER) * 125;
---- -- do_div(v, 3);
++++ ++ /* the <<1 gets rid of the cnt_32_to_63 top bit saving on a bic insn */
++++ ++ v *= 125<<1;
++++ ++ do_div(v, 3<<1);
       
        return v;
       }
diff --combined arch/arm/mm/Kconfig
@@@@@@@@ -333,7 -333,7 -333,7 -333,7 -333,7 -333,7 -333,7 +333,7 @@@@@@@@ config CPU_XSCAL
       # XScale Core Version 3
       config CPU_XSC3
        bool
------  depends on ARCH_IXP23XX
++++++  depends on ARCH_IXP23XX || ARCH_IOP13XX
        default y
        select CPU_32v5
        select CPU_ABRT_EV5T
@@@@@@@@ -580,7 -580,7 -580,7 -580,7 -580,7 -580,7 -580,7 +580,7 @@@@@@@@ config CPU_CACHE_ROUND_ROBI
       
       config CPU_BPREDICT_DISABLE
        bool "Disable branch prediction"
-- ---- depends on CPU_ARM1020 || CPU_V6
++ ++++ depends on CPU_ARM1020 || CPU_V6 || CPU_XSC3
        help
          Say Y here to disable branch prediction.  If unsure, say N.