diff --git a/[refs] b/[refs] index 420803076d9e..ee6fdf426d19 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c1e08adc86f886ba0ad7c8f29c240d6e833e7ec7 +refs/heads/master: a3ff55026e59687040f00fc35680fc0e774859f4 diff --git a/trunk/arch/arm/kernel/iwmmxt.S b/trunk/arch/arm/kernel/iwmmxt.S index a3bae95e536c..af9e0ae952d5 100644 --- a/trunk/arch/arm/kernel/iwmmxt.S +++ b/trunk/arch/arm/kernel/iwmmxt.S @@ -273,7 +273,7 @@ ENTRY(iwmmxt_task_restore) * * r0 = previous task_struct pointer (must be preserved) * r1 = previous thread_info pointer - * r2 = next thread_info pointer (must be preserved) + * r2 = next thread_info.cpu_domain pointer (must be preserved) * * Called only from __switch_to with task preemption disabled. * No need to care about preserving r4 and above. diff --git a/trunk/arch/arm/mach-ep93xx/Makefile b/trunk/arch/arm/mach-ep93xx/Makefile index 05a48a21038e..5393af989e94 100644 --- a/trunk/arch/arm/mach-ep93xx/Makefile +++ b/trunk/arch/arm/mach-ep93xx/Makefile @@ -1,7 +1,7 @@ # # Makefile for the linux kernel. # -obj-y := core.o clock.o +obj-y := core.o obj-m := obj-n := obj- := diff --git a/trunk/arch/arm/mach-ep93xx/clock.c b/trunk/arch/arm/mach-ep93xx/clock.c deleted file mode 100644 index 08ad782c1649..000000000000 --- a/trunk/arch/arm/mach-ep93xx/clock.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - * arch/arm/mach-ep93xx/clock.c - * Clock control for Cirrus EP93xx chips. - * - * Copyright (C) 2006 Lennert Buytenhek - * - * 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. - */ - -#include -#include -#include -#include -#include -#include -#include - -struct clk { - char *name; - unsigned long rate; - int users; - u32 enable_reg; - u32 enable_mask; -}; - -static struct clk clk_pll1 = { - .name = "pll1", -}; -static struct clk clk_f = { - .name = "fclk", -}; -static struct clk clk_h = { - .name = "hclk", -}; -static struct clk clk_p = { - .name = "pclk", -}; -static struct clk clk_pll2 = { - .name = "pll2", -}; -static struct clk clk_usb_host = { - .name = "usb_host", - .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, - .enable_mask = EP93XX_SYSCON_CLOCK_USH_EN, -}; - - -static struct clk *clocks[] = { - &clk_pll1, - &clk_f, - &clk_h, - &clk_p, - &clk_pll2, - &clk_usb_host, -}; - -struct clk *clk_get(struct device *dev, const char *id) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(clocks); i++) { - if (!strcmp(clocks[i]->name, id)) - return clocks[i]; - } - - return ERR_PTR(-ENOENT); -} - -int clk_enable(struct clk *clk) -{ - if (!clk->users++ && clk->enable_reg) { - u32 value; - - value = __raw_readl(clk->enable_reg); - __raw_writel(value | clk->enable_mask, clk->enable_reg); - } - - return 0; -} - -void clk_disable(struct clk *clk) -{ - if (!--clk->users && clk->enable_reg) { - u32 value; - - value = __raw_readl(clk->enable_reg); - __raw_writel(value & ~clk->enable_mask, clk->enable_reg); - } -} - -unsigned long clk_get_rate(struct clk *clk) -{ - return clk->rate; -} - -void clk_put(struct clk *clk) -{ -} - - - -static char fclk_divisors[] = { 1, 2, 4, 8, 16, 1, 1, 1 }; -static char hclk_divisors[] = { 1, 2, 4, 5, 6, 8, 16, 32 }; -static char pclk_divisors[] = { 1, 2, 4, 8 }; - -/* - * PLL rate = 14.7456 MHz * (X1FBD + 1) * (X2FBD + 1) / (X2IPD + 1) / 2^PS - */ -static unsigned long calc_pll_rate(u32 config_word) -{ - unsigned long long rate; - int i; - - rate = 14745600; - rate *= ((config_word >> 11) & 0x1f) + 1; /* X1FBD */ - rate *= ((config_word >> 5) & 0x3f) + 1; /* X2FBD */ - do_div(rate, (config_word & 0x1f) + 1); /* X2IPD */ - for (i = 0; i < ((config_word >> 16) & 3); i++) /* PS */ - rate >>= 1; - - return (unsigned long)rate; -} - -void ep93xx_clock_init(void) -{ - u32 value; - - value = __raw_readl(EP93XX_SYSCON_CLOCK_SET1); - if (!(value & 0x00800000)) { /* PLL1 bypassed? */ - clk_pll1.rate = 14745600; - } else { - clk_pll1.rate = calc_pll_rate(value); - } - clk_f.rate = clk_pll1.rate / fclk_divisors[(value >> 25) & 0x7]; - clk_h.rate = clk_pll1.rate / hclk_divisors[(value >> 20) & 0x7]; - clk_p.rate = clk_h.rate / pclk_divisors[(value >> 18) & 0x3]; - - value = __raw_readl(EP93XX_SYSCON_CLOCK_SET2); - if (!(value & 0x00080000)) { /* PLL2 bypassed? */ - clk_pll2.rate = 14745600; - } else if (value & 0x00040000) { /* PLL2 enabled? */ - clk_pll2.rate = calc_pll_rate(value); - } else { - clk_pll2.rate = 0; - } - clk_usb_host.rate = clk_pll2.rate / (((value >> 28) & 0xf) + 1); - - printk(KERN_INFO "ep93xx: PLL1 running at %ld MHz, PLL2 at %ld MHz\n", - clk_pll1.rate / 1000000, clk_pll2.rate / 1000000); - printk(KERN_INFO "ep93xx: FCLK %ld MHz, HCLK %ld MHz, PCLK %ld MHz\n", - clk_f.rate / 1000000, clk_h.rate / 1000000, - clk_p.rate / 1000000); -} diff --git a/trunk/arch/arm/mach-ep93xx/core.c b/trunk/arch/arm/mach-ep93xx/core.c index 1fe73c0a9d01..bf6bd71bdd08 100644 --- a/trunk/arch/arm/mach-ep93xx/core.c +++ b/trunk/arch/arm/mach-ep93xx/core.c @@ -433,37 +433,10 @@ static struct platform_device ep93xx_rtc_device = { }; -static struct resource ep93xx_ohci_resources[] = { - [0] = { - .start = EP93XX_USB_PHYS_BASE, - .end = EP93XX_USB_PHYS_BASE + 0x0fff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_EP93XX_USB, - .end = IRQ_EP93XX_USB, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device ep93xx_ohci_device = { - .name = "ep93xx-ohci", - .id = -1, - .dev = { - .dma_mask = (void *)0xffffffff, - .coherent_dma_mask = 0xffffffff, - }, - .num_resources = ARRAY_SIZE(ep93xx_ohci_resources), - .resource = ep93xx_ohci_resources, -}; - - void __init ep93xx_init_devices(void) { unsigned int v; - ep93xx_clock_init(); - /* * Disallow access to MaverickCrunch initially. */ @@ -477,5 +450,4 @@ void __init ep93xx_init_devices(void) amba_device_register(&uart3_device, &iomem_resource); platform_device_register(&ep93xx_rtc_device); - platform_device_register(&ep93xx_ohci_device); } diff --git a/trunk/arch/arm/mach-ixp2000/core.c b/trunk/arch/arm/mach-ixp2000/core.c index ebe4391dd7f9..186f632035b8 100644 --- a/trunk/arch/arm/mach-ixp2000/core.c +++ b/trunk/arch/arm/mach-ixp2000/core.c @@ -302,7 +302,6 @@ void gpio_line_config(int line, int direction) } local_irq_restore(flags); } -EXPORT_SYMBOL(gpio_line_config); /************************************************************************* diff --git a/trunk/arch/arm/mach-s3c2410/s3c2410-gpio.c b/trunk/arch/arm/mach-s3c2410/s3c2410-gpio.c index d5e1caea1d23..17519b3281b2 100644 --- a/trunk/arch/arm/mach-s3c2410/s3c2410-gpio.c +++ b/trunk/arch/arm/mach-s3c2410/s3c2410-gpio.c @@ -18,9 +18,6 @@ * 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 - * - * Changelog - * 15-Jan-2006 LCVR Splitted from gpio.c */ #include @@ -47,7 +44,7 @@ int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on, config &= 0xff; - pin -= S3C2410_GPG8_EINT16; + pin -= S3C2410_GPG8; reg += pin & ~3; local_irq_save(flags); @@ -75,7 +72,7 @@ EXPORT_SYMBOL(s3c2410_gpio_irqfilter); int s3c2410_gpio_getirq(unsigned int pin) { - if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15_EINT23) + if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15) return -1; /* not valid interrupts */ if (pin < S3C2410_GPG0 && pin > S3C2410_GPF7) diff --git a/trunk/include/asm-arm/arch-aaec2000/io.h b/trunk/include/asm-arm/arch-aaec2000/io.h index d710204ac747..8d67907fd4f0 100644 --- a/trunk/include/asm-arm/arch-aaec2000/io.h +++ b/trunk/include/asm-arm/arch-aaec2000/io.h @@ -16,5 +16,6 @@ */ #define __io(a) ((void __iomem *)(a)) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #endif diff --git a/trunk/include/asm-arm/arch-clps711x/io.h b/trunk/include/asm-arm/arch-clps711x/io.h index 53d790202c19..62613b0e2d96 100644 --- a/trunk/include/asm-arm/arch-clps711x/io.h +++ b/trunk/include/asm-arm/arch-clps711x/io.h @@ -26,6 +26,7 @@ #define __io(a) ((void __iomem *)(a)) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) /* * We don't support ins[lb]/outs[lb]. Make them fault. diff --git a/trunk/include/asm-arm/arch-ebsa285/io.h b/trunk/include/asm-arm/arch-ebsa285/io.h index f9c729141860..776f9d377057 100644 --- a/trunk/include/asm-arm/arch-ebsa285/io.h +++ b/trunk/include/asm-arm/arch-ebsa285/io.h @@ -24,6 +24,7 @@ #define __io(a) ((void __iomem *)(PCIO_BASE + (a))) #if 1 #define __mem_pci(a) (a) +#define __mem_isa(a) ((a) + PCIMEM_BASE) #else static inline void __iomem *___mem_pci(void __iomem *p) @@ -33,7 +34,14 @@ static inline void __iomem *___mem_pci(void __iomem *p) return p; } +static inline void __iomem *___mem_isa(void __iomem *p) +{ + unsigned long a = (unsigned long)p; + BUG_ON(a >= 16*1048576); + return p + PCIMEM_BASE; +} #define __mem_pci(a) ___mem_pci(a) +#define __mem_isa(a) ___mem_isa(a) #endif #endif diff --git a/trunk/include/asm-arm/arch-ep93xx/ep93xx-regs.h b/trunk/include/asm-arm/arch-ep93xx/ep93xx-regs.h index 8c322975f96e..71cea0b5841b 100644 --- a/trunk/include/asm-arm/arch-ep93xx/ep93xx-regs.h +++ b/trunk/include/asm-arm/arch-ep93xx/ep93xx-regs.h @@ -115,8 +115,6 @@ #define EP93XX_SYSCON_CLOCK_USH_EN 0x10000000 #define EP93XX_SYSCON_HALT EP93XX_SYSCON_REG(0x08) #define EP93XX_SYSCON_STANDBY EP93XX_SYSCON_REG(0x0c) -#define EP93XX_SYSCON_CLOCK_SET1 EP93XX_SYSCON_REG(0x20) -#define EP93XX_SYSCON_CLOCK_SET2 EP93XX_SYSCON_REG(0x24) #define EP93XX_SYSCON_DEVICE_CONFIG EP93XX_SYSCON_REG(0x80) #define EP93XX_SYSCON_DEVICE_CONFIG_CRUNCH_ENABLE 0x00800000 #define EP93XX_SYSCON_SWLOCK EP93XX_SYSCON_REG(0xc0) diff --git a/trunk/include/asm-arm/arch-ep93xx/platform.h b/trunk/include/asm-arm/arch-ep93xx/platform.h index d7a34ce20293..df9cbb6ef660 100644 --- a/trunk/include/asm-arm/arch-ep93xx/platform.h +++ b/trunk/include/asm-arm/arch-ep93xx/platform.h @@ -8,7 +8,6 @@ void ep93xx_map_io(void); void ep93xx_init_irq(void); void ep93xx_init_time(unsigned long); void ep93xx_init_devices(void); -void ep93xx_clock_init(void); extern struct sys_timer ep93xx_timer; diff --git a/trunk/include/asm-arm/arch-integrator/io.h b/trunk/include/asm-arm/arch-integrator/io.h index c8f2175948bd..31f2deab51b0 100644 --- a/trunk/include/asm-arm/arch-integrator/io.h +++ b/trunk/include/asm-arm/arch-integrator/io.h @@ -32,5 +32,6 @@ #define __io(a) ((void __iomem *)(PCI_IO_VADDR + (a))) #define __mem_pci(a) (a) +#define __mem_isa(a) ((a) + PCI_MEMORY_VADDR) #endif diff --git a/trunk/include/asm-arm/arch-iop3xx/io.h b/trunk/include/asm-arm/arch-iop3xx/io.h index 36adbdf5055a..f39046a6ab14 100644 --- a/trunk/include/asm-arm/arch-iop3xx/io.h +++ b/trunk/include/asm-arm/arch-iop3xx/io.h @@ -17,5 +17,6 @@ #define __io(p) ((void __iomem *)(p)) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #endif diff --git a/trunk/include/asm-arm/arch-l7200/io.h b/trunk/include/asm-arm/arch-l7200/io.h index cd080d8384d9..cab8ad0adf09 100644 --- a/trunk/include/asm-arm/arch-l7200/io.h +++ b/trunk/include/asm-arm/arch-l7200/io.h @@ -19,6 +19,7 @@ */ #define __io_pci(a) ((void __iomem *)(PCIO_BASE + (a))) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #define __ioaddr(p) __io_pci(p) diff --git a/trunk/include/asm-arm/arch-lh7a40x/io.h b/trunk/include/asm-arm/arch-lh7a40x/io.h index 17bc94097481..bbcd4335f441 100644 --- a/trunk/include/asm-arm/arch-lh7a40x/io.h +++ b/trunk/include/asm-arm/arch-lh7a40x/io.h @@ -18,5 +18,6 @@ /* No ISA or PCI bus on this machine. */ #define __io(a) ((void __iomem *)(a)) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #endif /* __ASM_ARCH_IO_H */ diff --git a/trunk/include/asm-arm/arch-netx/io.h b/trunk/include/asm-arm/arch-netx/io.h index a7a53f80165d..81b7bc47747e 100644 --- a/trunk/include/asm-arm/arch-netx/io.h +++ b/trunk/include/asm-arm/arch-netx/io.h @@ -24,5 +24,6 @@ #define __io(a) ((void __iomem *)(a)) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #endif diff --git a/trunk/include/asm-arm/arch-omap/io.h b/trunk/include/asm-arm/arch-omap/io.h index 78f68e6a4f0c..b726acfcab14 100644 --- a/trunk/include/asm-arm/arch-omap/io.h +++ b/trunk/include/asm-arm/arch-omap/io.h @@ -44,6 +44,7 @@ */ #define __io(a) ((void __iomem *)(PCIO_BASE + (a))) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) /* * ---------------------------------------------------------------------------- diff --git a/trunk/include/asm-arm/arch-pxa/io.h b/trunk/include/asm-arm/arch-pxa/io.h index 7f8d817b446f..eb2dd58d397f 100644 --- a/trunk/include/asm-arm/arch-pxa/io.h +++ b/trunk/include/asm-arm/arch-pxa/io.h @@ -16,5 +16,6 @@ */ #define __io(a) ((void __iomem *)(a)) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #endif diff --git a/trunk/include/asm-arm/arch-realview/io.h b/trunk/include/asm-arm/arch-realview/io.h index c70f1dfbe135..d444a68ac330 100644 --- a/trunk/include/asm-arm/arch-realview/io.h +++ b/trunk/include/asm-arm/arch-realview/io.h @@ -29,5 +29,6 @@ static inline void __iomem *__io(unsigned long addr) #define __io(a) __io(a) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #endif diff --git a/trunk/include/asm-arm/arch-sa1100/io.h b/trunk/include/asm-arm/arch-sa1100/io.h index 0756269404b1..040ccde7a11e 100644 --- a/trunk/include/asm-arm/arch-sa1100/io.h +++ b/trunk/include/asm-arm/arch-sa1100/io.h @@ -22,5 +22,6 @@ static inline void __iomem *__io(unsigned long addr) } #define __io(a) __io(a) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #endif diff --git a/trunk/include/asm-arm/arch-versatile/io.h b/trunk/include/asm-arm/arch-versatile/io.h index c4d01948e00b..47e904cf25c7 100644 --- a/trunk/include/asm-arm/arch-versatile/io.h +++ b/trunk/include/asm-arm/arch-versatile/io.h @@ -28,5 +28,6 @@ static inline void __iomem *__io(unsigned long addr) } #define __io(a) __io(a) #define __mem_pci(a) (a) +#define __mem_isa(a) (a) #endif