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

* master.kernel.org:/home/rmk/linux-2.6-arm:
[ARM] 5405/1: ep93xx: remove unused gesbc9312.h header
[ARM] 5404/1: Fix condition in arm_elf_read_implies_exec() to set READ_IMPLIES_EXEC
[ARM] omap: fix clock reparenting in omap2_clk_set_parent()
[ARM] 5403/1: pxa25x_ep_fifo_flush() *ep->reg_udccs always set to 0
[ARM] 5402/1: fix a case of wrap-around in sanity_check_meminfo()
[ARM] 5401/1: Orion: fix edge triggered GPIO interrupt support
[ARM] 5400/1: Add support for inverted rdy_busy pin for Atmel nand device controller
[ARM] 5391/1: AT91: Enable GPIO clocks earlier
[ARM] 5390/1: AT91: Watchdog fixes
[ARM] 5398/1: Add Wan ZongShun to MAINTAINERS for W90P910
[ARM] omap: fix _omap2_clksel_get_src_field()
[ARM] omap: fix omap2_divisor_to_clksel() error return value

+78 -89
+7
MAINTAINERS
··· 692 692 L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 693 693 S: Maintained 694 694 695 + ARM/NUVOTON W90X900 ARM ARCHITECTURE 696 + P: Wan ZongShun 697 + M: mcuos.com@gmail.com 698 + L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 699 + W: http://www.mcuos.com 700 + S: Maintained 701 + 695 702 ARPD SUPPORT 696 703 P: Jonathan Layes 697 704 L: netdev@vger.kernel.org
+1 -1
arch/arm/configs/at91sam9260ek_defconfig
··· 608 608 # Watchdog Device Drivers 609 609 # 610 610 # CONFIG_SOFT_WATCHDOG is not set 611 - CONFIG_AT91SAM9_WATCHDOG=y 611 + CONFIG_AT91SAM9X_WATCHDOG=y 612 612 613 613 # 614 614 # USB-based Watchdog Cards
+1 -1
arch/arm/configs/at91sam9261ek_defconfig
··· 700 700 # Watchdog Device Drivers 701 701 # 702 702 # CONFIG_SOFT_WATCHDOG is not set 703 - CONFIG_AT91SAM9_WATCHDOG=y 703 + CONFIG_AT91SAM9X_WATCHDOG=y 704 704 705 705 # 706 706 # USB-based Watchdog Cards
+1 -1
arch/arm/configs/at91sam9263ek_defconfig
··· 710 710 # Watchdog Device Drivers 711 711 # 712 712 # CONFIG_SOFT_WATCHDOG is not set 713 - CONFIG_AT91SAM9_WATCHDOG=y 713 + CONFIG_AT91SAM9X_WATCHDOG=y 714 714 715 715 # 716 716 # USB-based Watchdog Cards
+1 -1
arch/arm/configs/at91sam9rlek_defconfig
··· 606 606 # Watchdog Device Drivers 607 607 # 608 608 # CONFIG_SOFT_WATCHDOG is not set 609 - CONFIG_AT91SAM9_WATCHDOG=y 609 + CONFIG_AT91SAM9X_WATCHDOG=y 610 610 611 611 # 612 612 # Sonics Silicon Backplane
+1 -1
arch/arm/configs/qil-a9260_defconfig
··· 727 727 # Watchdog Device Drivers 728 728 # 729 729 # CONFIG_SOFT_WATCHDOG is not set 730 - # CONFIG_AT91SAM9_WATCHDOG is not set 730 + # CONFIG_AT91SAM9X_WATCHDOG is not set 731 731 732 732 # 733 733 # USB-based Watchdog Cards
+2 -2
arch/arm/kernel/elf.c
··· 74 74 */ 75 75 int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack) 76 76 { 77 - if (executable_stack != EXSTACK_ENABLE_X) 77 + if (executable_stack != EXSTACK_DISABLE_X) 78 78 return 1; 79 - if (cpu_architecture() <= CPU_ARCH_ARMv6) 79 + if (cpu_architecture() < CPU_ARCH_ARMv6) 80 80 return 1; 81 81 return 0; 82 82 }
+1 -1
arch/arm/mach-at91/at91cap9_devices.c
··· 697 697 * Watchdog 698 698 * -------------------------------------------------------------------- */ 699 699 700 - #if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE) 700 + #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) 701 701 static struct platform_device at91cap9_wdt_device = { 702 702 .name = "at91_wdt", 703 703 .id = -1,
+1 -1
arch/arm/mach-at91/at91sam9260_devices.c
··· 643 643 * Watchdog 644 644 * -------------------------------------------------------------------- */ 645 645 646 - #if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE) 646 + #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) 647 647 static struct platform_device at91sam9260_wdt_device = { 648 648 .name = "at91_wdt", 649 649 .id = -1,
+1 -1
arch/arm/mach-at91/at91sam9261_devices.c
··· 621 621 * Watchdog 622 622 * -------------------------------------------------------------------- */ 623 623 624 - #if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE) 624 + #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) 625 625 static struct platform_device at91sam9261_wdt_device = { 626 626 .name = "at91_wdt", 627 627 .id = -1,
+1 -1
arch/arm/mach-at91/at91sam9263_devices.c
··· 854 854 * Watchdog 855 855 * -------------------------------------------------------------------- */ 856 856 857 - #if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE) 857 + #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) 858 858 static struct platform_device at91sam9263_wdt_device = { 859 859 .name = "at91_wdt", 860 860 .id = -1,
+1 -1
arch/arm/mach-at91/at91sam9rl_devices.c
··· 609 609 * Watchdog 610 610 * -------------------------------------------------------------------- */ 611 611 612 - #if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE) 612 + #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) 613 613 static struct platform_device at91sam9rl_wdt_device = { 614 614 .name = "at91_wdt", 615 615 .id = -1,
+10 -5
arch/arm/mach-at91/gpio.c
··· 490 490 491 491 /*--------------------------------------------------------------------------*/ 492 492 493 - /* This lock class tells lockdep that GPIO irqs are in a different 493 + /* 494 + * This lock class tells lockdep that GPIO irqs are in a different 494 495 * category than their parents, so it won't report false recursion. 495 496 */ 496 497 static struct lock_class_key gpio_lock_class; ··· 509 508 prev = this, this++) { 510 509 unsigned id = this->id; 511 510 unsigned i; 512 - 513 - /* enable PIO controller's clock */ 514 - clk_enable(this->clock); 515 511 516 512 __raw_writel(~0, this->regbase + PIO_IDR); 517 513 ··· 554 556 data->chipbase = PIN_BASE + i * 32; 555 557 data->regbase = data->offset + (void __iomem *)AT91_VA_BASE_SYS; 556 558 557 - /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */ 559 + /* enable PIO controller's clock */ 560 + clk_enable(data->clock); 561 + 562 + /* 563 + * Some processors share peripheral ID between multiple GPIO banks. 564 + * SAM9263 (PIOC, PIOD, PIOE) 565 + * CAP9 (PIOA, PIOB, PIOC, PIOD) 566 + */ 558 567 if (last && last->id == data->id) 559 568 last->next = data; 560 569 }
+1
arch/arm/mach-at91/include/mach/board.h
··· 93 93 u8 enable_pin; /* chip enable */ 94 94 u8 det_pin; /* card detect */ 95 95 u8 rdy_pin; /* ready/busy */ 96 + u8 rdy_pin_active_low; /* rdy_pin value is inverted */ 96 97 u8 ale; /* address line number connected to ALE */ 97 98 u8 cle; /* address line number connected to CLE */ 98 99 u8 bus_width_16; /* buswidth is 16 bit */
-3
arch/arm/mach-ep93xx/include/mach/gesbc9312.h
··· 1 - /* 2 - * arch/arm/mach-ep93xx/include/mach/gesbc9312.h 3 - */
-1
arch/arm/mach-ep93xx/include/mach/hardware.h
··· 10 10 11 11 #include "platform.h" 12 12 13 - #include "gesbc9312.h" 14 13 #include "ts72xx.h" 15 14 16 15 #endif
+1 -1
arch/arm/mach-kirkwood/irq.c
··· 42 42 writel(0, GPIO_EDGE_CAUSE(32)); 43 43 44 44 for (i = IRQ_KIRKWOOD_GPIO_START; i < NR_IRQS; i++) { 45 - set_irq_chip(i, &orion_gpio_irq_level_chip); 45 + set_irq_chip(i, &orion_gpio_irq_chip); 46 46 set_irq_handler(i, handle_level_irq); 47 47 irq_desc[i].status |= IRQ_LEVEL; 48 48 set_irq_flags(i, IRQF_VALID);
+1 -1
arch/arm/mach-mv78xx0/irq.c
··· 40 40 writel(0, GPIO_EDGE_CAUSE(0)); 41 41 42 42 for (i = IRQ_MV78XX0_GPIO_START; i < NR_IRQS; i++) { 43 - set_irq_chip(i, &orion_gpio_irq_level_chip); 43 + set_irq_chip(i, &orion_gpio_irq_chip); 44 44 set_irq_handler(i, handle_level_irq); 45 45 irq_desc[i].status |= IRQ_LEVEL; 46 46 set_irq_flags(i, IRQF_VALID);
+8 -8
arch/arm/mach-omap2/clock.c
··· 565 565 * 566 566 * Given a struct clk of a rate-selectable clksel clock, and a clock divisor, 567 567 * find the corresponding register field value. The return register value is 568 - * the value before left-shifting. Returns 0xffffffff on error 568 + * the value before left-shifting. Returns ~0 on error 569 569 */ 570 570 u32 omap2_divisor_to_clksel(struct clk *clk, u32 div) 571 571 { ··· 577 577 578 578 clks = omap2_get_clksel_by_parent(clk, clk->parent); 579 579 if (clks == NULL) 580 - return 0; 580 + return ~0; 581 581 582 582 for (clkr = clks->rates; clkr->div; clkr++) { 583 583 if ((clkr->flags & cpu_mask) && (clkr->div == div)) ··· 588 588 printk(KERN_ERR "clock: Could not find divisor %d for " 589 589 "clock %s parent %s\n", div, clk->name, 590 590 clk->parent->name); 591 - return 0; 591 + return ~0; 592 592 } 593 593 594 594 return clkr->val; ··· 708 708 return 0; 709 709 710 710 for (clkr = clks->rates; clkr->div; clkr++) { 711 - if (clkr->flags & (cpu_mask | DEFAULT_RATE)) 711 + if (clkr->flags & cpu_mask && clkr->flags & DEFAULT_RATE) 712 712 break; /* Found the default rate for this platform */ 713 713 } 714 714 ··· 746 746 return -EINVAL; 747 747 748 748 if (clk->usecount > 0) 749 - _omap2_clk_disable(clk); 749 + omap2_clk_disable(clk); 750 750 751 751 /* Set new source value (previous dividers if any in effect) */ 752 752 reg_val = __raw_readl(src_addr) & ~field_mask; ··· 759 759 wmb(); 760 760 } 761 761 762 - if (clk->usecount > 0) 763 - _omap2_clk_enable(clk); 764 - 765 762 clk->parent = new_parent; 763 + 764 + if (clk->usecount > 0) 765 + omap2_clk_enable(clk); 766 766 767 767 /* CLKSEL clocks follow their parents' rates, divided by a divisor */ 768 768 clk->rate = new_parent->rate;
+1 -1
arch/arm/mach-orion5x/irq.c
··· 44 44 * User can use set_type() if he wants to use edge types handlers. 45 45 */ 46 46 for (i = IRQ_ORION5X_GPIO_START; i < NR_IRQS; i++) { 47 - set_irq_chip(i, &orion_gpio_irq_level_chip); 47 + set_irq_chip(i, &orion_gpio_irq_chip); 48 48 set_irq_handler(i, handle_level_irq); 49 49 irq_desc[i].status |= IRQ_LEVEL; 50 50 set_irq_flags(i, IRQF_VALID);
+2 -1
arch/arm/mm/mmu.c
··· 693 693 * Check whether this memory bank would entirely overlap 694 694 * the vmalloc area. 695 695 */ 696 - if (__va(bank->start) >= VMALLOC_MIN) { 696 + if (__va(bank->start) >= VMALLOC_MIN || 697 + __va(bank->start) < PAGE_OFFSET) { 697 698 printk(KERN_NOTICE "Ignoring RAM at %.8lx-%.8lx " 698 699 "(vmalloc region overlap).\n", 699 700 bank->start, bank->start + bank->size - 1);
+26 -49
arch/arm/plat-orion/gpio.c
··· 265 265 * polarity LEVEL mask 266 266 * 267 267 ****************************************************************************/ 268 - static void gpio_irq_edge_ack(u32 irq) 269 - { 270 - int pin = irq_to_gpio(irq); 271 268 272 - writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin)); 269 + static void gpio_irq_ack(u32 irq) 270 + { 271 + int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK; 272 + if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { 273 + int pin = irq_to_gpio(irq); 274 + writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin)); 275 + } 273 276 } 274 277 275 - static void gpio_irq_edge_mask(u32 irq) 278 + static void gpio_irq_mask(u32 irq) 276 279 { 277 280 int pin = irq_to_gpio(irq); 278 - u32 u; 279 - 280 - u = readl(GPIO_EDGE_MASK(pin)); 281 + int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK; 282 + u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ? 283 + GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin); 284 + u32 u = readl(reg); 281 285 u &= ~(1 << (pin & 31)); 282 - writel(u, GPIO_EDGE_MASK(pin)); 286 + writel(u, reg); 283 287 } 284 288 285 - static void gpio_irq_edge_unmask(u32 irq) 289 + static void gpio_irq_unmask(u32 irq) 286 290 { 287 291 int pin = irq_to_gpio(irq); 288 - u32 u; 289 - 290 - u = readl(GPIO_EDGE_MASK(pin)); 292 + int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK; 293 + u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ? 294 + GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin); 295 + u32 u = readl(reg); 291 296 u |= 1 << (pin & 31); 292 - writel(u, GPIO_EDGE_MASK(pin)); 293 - } 294 - 295 - static void gpio_irq_level_mask(u32 irq) 296 - { 297 - int pin = irq_to_gpio(irq); 298 - u32 u; 299 - 300 - u = readl(GPIO_LEVEL_MASK(pin)); 301 - u &= ~(1 << (pin & 31)); 302 - writel(u, GPIO_LEVEL_MASK(pin)); 303 - } 304 - 305 - static void gpio_irq_level_unmask(u32 irq) 306 - { 307 - int pin = irq_to_gpio(irq); 308 - u32 u; 309 - 310 - u = readl(GPIO_LEVEL_MASK(pin)); 311 - u |= 1 << (pin & 31); 312 - writel(u, GPIO_LEVEL_MASK(pin)); 297 + writel(u, reg); 313 298 } 314 299 315 300 static int gpio_irq_set_type(u32 irq, u32 type) ··· 316 331 * Set edge/level type. 317 332 */ 318 333 if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { 319 - desc->chip = &orion_gpio_irq_edge_chip; 334 + desc->handle_irq = handle_edge_irq; 320 335 } else if (type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) { 321 - desc->chip = &orion_gpio_irq_level_chip; 336 + desc->handle_irq = handle_level_irq; 322 337 } else { 323 338 printk(KERN_ERR "failed to set irq=%d (type=%d)\n", irq, type); 324 339 return -EINVAL; ··· 356 371 return 0; 357 372 } 358 373 359 - struct irq_chip orion_gpio_irq_edge_chip = { 360 - .name = "orion_gpio_irq_edge", 361 - .ack = gpio_irq_edge_ack, 362 - .mask = gpio_irq_edge_mask, 363 - .unmask = gpio_irq_edge_unmask, 364 - .set_type = gpio_irq_set_type, 365 - }; 366 - 367 - struct irq_chip orion_gpio_irq_level_chip = { 368 - .name = "orion_gpio_irq_level", 369 - .mask = gpio_irq_level_mask, 370 - .mask_ack = gpio_irq_level_mask, 371 - .unmask = gpio_irq_level_unmask, 374 + struct irq_chip orion_gpio_irq_chip = { 375 + .name = "orion_gpio", 376 + .ack = gpio_irq_ack, 377 + .mask = gpio_irq_mask, 378 + .unmask = gpio_irq_unmask, 372 379 .set_type = gpio_irq_set_type, 373 380 }; 374 381
+1 -2
arch/arm/plat-orion/include/plat/gpio.h
··· 31 31 /* 32 32 * GPIO interrupt handling. 33 33 */ 34 - extern struct irq_chip orion_gpio_irq_edge_chip; 35 - extern struct irq_chip orion_gpio_irq_level_chip; 34 + extern struct irq_chip orion_gpio_irq_chip; 36 35 void orion_gpio_irq_handler(int irqoff); 37 36 38 37
+1
arch/avr32/mach-at32ap/include/mach/board.h
··· 116 116 int enable_pin; /* chip enable */ 117 117 int det_pin; /* card detect */ 118 118 int rdy_pin; /* ready/busy */ 119 + u8 rdy_pin_active_low; /* rdy_pin value is inverted */ 119 120 u8 ale; /* address line number connected to ALE */ 120 121 u8 cle; /* address line number connected to CLE */ 121 122 u8 bus_width_16; /* buswidth is 16 bit */
+2 -1
drivers/mtd/nand/atmel_nand.c
··· 139 139 struct nand_chip *nand_chip = mtd->priv; 140 140 struct atmel_nand_host *host = nand_chip->priv; 141 141 142 - return gpio_get_value(host->board->rdy_pin); 142 + return gpio_get_value(host->board->rdy_pin) ^ 143 + !!host->board->rdy_pin_active_low; 143 144 } 144 145 145 146 /*
+2 -2
drivers/usb/gadget/pxa25x_udc.c
··· 904 904 905 905 /* most IN status is the same, but ISO can't stall */ 906 906 *ep->reg_udccs = UDCCS_BI_TPC|UDCCS_BI_FTF|UDCCS_BI_TUR 907 - | (ep->bmAttributes == USB_ENDPOINT_XFER_ISOC) 908 - ? 0 : UDCCS_BI_SST; 907 + | (ep->bmAttributes == USB_ENDPOINT_XFER_ISOC 908 + ? 0 : UDCCS_BI_SST); 909 909 } 910 910 911 911
+2 -2
drivers/watchdog/at91rm9200_wdt.c
··· 107 107 static int at91_wdt_settimeout(int new_time) 108 108 { 109 109 /* 110 - * All counting occurs at SLOW_CLOCK / 128 = 0.256 Hz 110 + * All counting occurs at SLOW_CLOCK / 128 = 256 Hz 111 111 * 112 112 * Since WDV is a 16-bit counter, the maximum period is 113 - * 65536 / 0.256 = 256 seconds. 113 + * 65536 / 256 = 256 seconds. 114 114 */ 115 115 if ((new_time <= 0) || (new_time > WDT_MAX_TIME)) 116 116 return -EINVAL;
+1
drivers/watchdog/at91sam9_wdt.c
··· 18 18 #include <linux/errno.h> 19 19 #include <linux/fs.h> 20 20 #include <linux/init.h> 21 + #include <linux/io.h> 21 22 #include <linux/kernel.h> 22 23 #include <linux/miscdevice.h> 23 24 #include <linux/module.h>