diff options
28 files changed, 77 insertions, 88 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index a2008bd587c2..06e03913d2d3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -692,6 +692,13 @@ M: kernel@wantstofly.org | |||
| 692 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | 692 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) |
| 693 | S: Maintained | 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 | ARPD SUPPORT | 702 | ARPD SUPPORT |
| 696 | P: Jonathan Layes | 703 | P: Jonathan Layes |
| 697 | L: netdev@vger.kernel.org | 704 | L: netdev@vger.kernel.org |
diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260ek_defconfig index e0ee7060f9aa..98e2f3de4bc5 100644 --- a/arch/arm/configs/at91sam9260ek_defconfig +++ b/arch/arm/configs/at91sam9260ek_defconfig | |||
| @@ -608,7 +608,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y | |||
| 608 | # Watchdog Device Drivers | 608 | # Watchdog Device Drivers |
| 609 | # | 609 | # |
| 610 | # CONFIG_SOFT_WATCHDOG is not set | 610 | # CONFIG_SOFT_WATCHDOG is not set |
| 611 | CONFIG_AT91SAM9_WATCHDOG=y | 611 | CONFIG_AT91SAM9X_WATCHDOG=y |
| 612 | 612 | ||
| 613 | # | 613 | # |
| 614 | # USB-based Watchdog Cards | 614 | # USB-based Watchdog Cards |
diff --git a/arch/arm/configs/at91sam9261ek_defconfig b/arch/arm/configs/at91sam9261ek_defconfig index 01d1ef97d8be..149456142392 100644 --- a/arch/arm/configs/at91sam9261ek_defconfig +++ b/arch/arm/configs/at91sam9261ek_defconfig | |||
| @@ -700,7 +700,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y | |||
| 700 | # Watchdog Device Drivers | 700 | # Watchdog Device Drivers |
| 701 | # | 701 | # |
| 702 | # CONFIG_SOFT_WATCHDOG is not set | 702 | # CONFIG_SOFT_WATCHDOG is not set |
| 703 | CONFIG_AT91SAM9_WATCHDOG=y | 703 | CONFIG_AT91SAM9X_WATCHDOG=y |
| 704 | 704 | ||
| 705 | # | 705 | # |
| 706 | # USB-based Watchdog Cards | 706 | # USB-based Watchdog Cards |
diff --git a/arch/arm/configs/at91sam9263ek_defconfig b/arch/arm/configs/at91sam9263ek_defconfig index 036a126725c1..21599f3c6275 100644 --- a/arch/arm/configs/at91sam9263ek_defconfig +++ b/arch/arm/configs/at91sam9263ek_defconfig | |||
| @@ -710,7 +710,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y | |||
| 710 | # Watchdog Device Drivers | 710 | # Watchdog Device Drivers |
| 711 | # | 711 | # |
| 712 | # CONFIG_SOFT_WATCHDOG is not set | 712 | # CONFIG_SOFT_WATCHDOG is not set |
| 713 | CONFIG_AT91SAM9_WATCHDOG=y | 713 | CONFIG_AT91SAM9X_WATCHDOG=y |
| 714 | 714 | ||
| 715 | # | 715 | # |
| 716 | # USB-based Watchdog Cards | 716 | # USB-based Watchdog Cards |
diff --git a/arch/arm/configs/at91sam9rlek_defconfig b/arch/arm/configs/at91sam9rlek_defconfig index 237a2a6a8517..e2df81a3e804 100644 --- a/arch/arm/configs/at91sam9rlek_defconfig +++ b/arch/arm/configs/at91sam9rlek_defconfig | |||
| @@ -606,7 +606,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y | |||
| 606 | # Watchdog Device Drivers | 606 | # Watchdog Device Drivers |
| 607 | # | 607 | # |
| 608 | # CONFIG_SOFT_WATCHDOG is not set | 608 | # CONFIG_SOFT_WATCHDOG is not set |
| 609 | CONFIG_AT91SAM9_WATCHDOG=y | 609 | CONFIG_AT91SAM9X_WATCHDOG=y |
| 610 | 610 | ||
| 611 | # | 611 | # |
| 612 | # Sonics Silicon Backplane | 612 | # Sonics Silicon Backplane |
diff --git a/arch/arm/configs/qil-a9260_defconfig b/arch/arm/configs/qil-a9260_defconfig index cd1d717903ac..9b32d0eb89ba 100644 --- a/arch/arm/configs/qil-a9260_defconfig +++ b/arch/arm/configs/qil-a9260_defconfig | |||
| @@ -727,7 +727,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y | |||
| 727 | # Watchdog Device Drivers | 727 | # Watchdog Device Drivers |
| 728 | # | 728 | # |
| 729 | # CONFIG_SOFT_WATCHDOG is not set | 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 | # USB-based Watchdog Cards | 733 | # USB-based Watchdog Cards |
diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c index 84849098c8e8..d4a0da1e48f4 100644 --- a/arch/arm/kernel/elf.c +++ b/arch/arm/kernel/elf.c | |||
| @@ -74,9 +74,9 @@ EXPORT_SYMBOL(elf_set_personality); | |||
| 74 | */ | 74 | */ |
| 75 | int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack) | 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 | return 1; | 78 | return 1; |
| 79 | if (cpu_architecture() <= CPU_ARCH_ARMv6) | 79 | if (cpu_architecture() < CPU_ARCH_ARMv6) |
| 80 | return 1; | 80 | return 1; |
| 81 | return 0; | 81 | return 0; |
| 82 | } | 82 | } |
diff --git a/arch/arm/mach-at91/at91cap9_devices.c b/arch/arm/mach-at91/at91cap9_devices.c index 9eca2209cde6..412aa49ad2fb 100644 --- a/arch/arm/mach-at91/at91cap9_devices.c +++ b/arch/arm/mach-at91/at91cap9_devices.c | |||
| @@ -697,7 +697,7 @@ static void __init at91_add_device_rtt(void) | |||
| 697 | * Watchdog | 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 | static struct platform_device at91cap9_wdt_device = { | 701 | static struct platform_device at91cap9_wdt_device = { |
| 702 | .name = "at91_wdt", | 702 | .name = "at91_wdt", |
| 703 | .id = -1, | 703 | .id = -1, |
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index fdde1ea21b07..d74c9ac007e7 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
| @@ -643,7 +643,7 @@ static void __init at91_add_device_rtt(void) | |||
| 643 | * Watchdog | 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 | static struct platform_device at91sam9260_wdt_device = { | 647 | static struct platform_device at91sam9260_wdt_device = { |
| 648 | .name = "at91_wdt", | 648 | .name = "at91_wdt", |
| 649 | .id = -1, | 649 | .id = -1, |
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 17289756f80f..59fc48311fb0 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
| @@ -621,7 +621,7 @@ static void __init at91_add_device_rtt(void) | |||
| 621 | * Watchdog | 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 | static struct platform_device at91sam9261_wdt_device = { | 625 | static struct platform_device at91sam9261_wdt_device = { |
| 626 | .name = "at91_wdt", | 626 | .name = "at91_wdt", |
| 627 | .id = -1, | 627 | .id = -1, |
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index b753cb879d8e..134af97ff340 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
| @@ -854,7 +854,7 @@ static void __init at91_add_device_rtt(void) | |||
| 854 | * Watchdog | 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 | static struct platform_device at91sam9263_wdt_device = { | 858 | static struct platform_device at91sam9263_wdt_device = { |
| 859 | .name = "at91_wdt", | 859 | .name = "at91_wdt", |
| 860 | .id = -1, | 860 | .id = -1, |
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index 145324f4ec56..728186515cdf 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
| @@ -609,7 +609,7 @@ static void __init at91_add_device_rtt(void) | |||
| 609 | * Watchdog | 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 | static struct platform_device at91sam9rl_wdt_device = { | 613 | static struct platform_device at91sam9rl_wdt_device = { |
| 614 | .name = "at91_wdt", | 614 | .name = "at91_wdt", |
| 615 | .id = -1, | 615 | .id = -1, |
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index 9b0447c3d59b..2f7d4977dce9 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c | |||
| @@ -490,7 +490,8 @@ postcore_initcall(at91_gpio_debugfs_init); | |||
| 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 | * category than their parents, so it won't report false recursion. | 495 | * category than their parents, so it won't report false recursion. |
| 495 | */ | 496 | */ |
| 496 | static struct lock_class_key gpio_lock_class; | 497 | static struct lock_class_key gpio_lock_class; |
| @@ -509,9 +510,6 @@ void __init at91_gpio_irq_setup(void) | |||
| 509 | unsigned id = this->id; | 510 | unsigned id = this->id; |
| 510 | unsigned i; | 511 | unsigned i; |
| 511 | 512 | ||
| 512 | /* enable PIO controller's clock */ | ||
| 513 | clk_enable(this->clock); | ||
| 514 | |||
| 515 | __raw_writel(~0, this->regbase + PIO_IDR); | 513 | __raw_writel(~0, this->regbase + PIO_IDR); |
| 516 | 514 | ||
| 517 | for (i = 0, pin = this->chipbase; i < 32; i++, pin++) { | 515 | for (i = 0, pin = this->chipbase; i < 32; i++, pin++) { |
| @@ -556,7 +554,14 @@ void __init at91_gpio_init(struct at91_gpio_bank *data, int nr_banks) | |||
| 556 | data->chipbase = PIN_BASE + i * 32; | 554 | data->chipbase = PIN_BASE + i * 32; |
| 557 | data->regbase = data->offset + (void __iomem *)AT91_VA_BASE_SYS; | 555 | data->regbase = data->offset + (void __iomem *)AT91_VA_BASE_SYS; |
| 558 | 556 | ||
| 559 | /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */ | 557 | /* enable PIO controller's clock */ |
| 558 | clk_enable(data->clock); | ||
| 559 | |||
| 560 | /* | ||
| 561 | * Some processors share peripheral ID between multiple GPIO banks. | ||
| 562 | * SAM9263 (PIOC, PIOD, PIOE) | ||
| 563 | * CAP9 (PIOA, PIOB, PIOC, PIOD) | ||
| 564 | */ | ||
| 560 | if (last && last->id == data->id) | 565 | if (last && last->id == data->id) |
| 561 | last->next = data; | 566 | last->next = data; |
| 562 | } | 567 | } |
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h index fb51f0e0a83f..0b3ae21b4565 100644 --- a/arch/arm/mach-at91/include/mach/board.h +++ b/arch/arm/mach-at91/include/mach/board.h | |||
| @@ -93,6 +93,7 @@ struct atmel_nand_data { | |||
| 93 | u8 enable_pin; /* chip enable */ | 93 | u8 enable_pin; /* chip enable */ |
| 94 | u8 det_pin; /* card detect */ | 94 | u8 det_pin; /* card detect */ |
| 95 | u8 rdy_pin; /* ready/busy */ | 95 | u8 rdy_pin; /* ready/busy */ |
| 96 | u8 rdy_pin_active_low; /* rdy_pin value is inverted */ | ||
| 96 | u8 ale; /* address line number connected to ALE */ | 97 | u8 ale; /* address line number connected to ALE */ |
| 97 | u8 cle; /* address line number connected to CLE */ | 98 | u8 cle; /* address line number connected to CLE */ |
| 98 | u8 bus_width_16; /* buswidth is 16 bit */ | 99 | u8 bus_width_16; /* buswidth is 16 bit */ |
diff --git a/arch/arm/mach-ep93xx/include/mach/gesbc9312.h b/arch/arm/mach-ep93xx/include/mach/gesbc9312.h deleted file mode 100644 index 21fe2b922aa5..000000000000 --- a/arch/arm/mach-ep93xx/include/mach/gesbc9312.h +++ /dev/null | |||
| @@ -1,3 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-ep93xx/include/mach/gesbc9312.h | ||
| 3 | */ | ||
diff --git a/arch/arm/mach-ep93xx/include/mach/hardware.h b/arch/arm/mach-ep93xx/include/mach/hardware.h index 529807d182bf..2866297310b7 100644 --- a/arch/arm/mach-ep93xx/include/mach/hardware.h +++ b/arch/arm/mach-ep93xx/include/mach/hardware.h | |||
| @@ -10,7 +10,6 @@ | |||
| 10 | 10 | ||
| 11 | #include "platform.h" | 11 | #include "platform.h" |
| 12 | 12 | ||
| 13 | #include "gesbc9312.h" | ||
| 14 | #include "ts72xx.h" | 13 | #include "ts72xx.h" |
| 15 | 14 | ||
| 16 | #endif | 15 | #endif |
diff --git a/arch/arm/mach-kirkwood/irq.c b/arch/arm/mach-kirkwood/irq.c index efb86b700276..06083b23bb44 100644 --- a/arch/arm/mach-kirkwood/irq.c +++ b/arch/arm/mach-kirkwood/irq.c | |||
| @@ -42,7 +42,7 @@ void __init kirkwood_init_irq(void) | |||
| 42 | writel(0, GPIO_EDGE_CAUSE(32)); | 42 | writel(0, GPIO_EDGE_CAUSE(32)); |
| 43 | 43 | ||
| 44 | for (i = IRQ_KIRKWOOD_GPIO_START; i < NR_IRQS; i++) { | 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 | set_irq_handler(i, handle_level_irq); | 46 | set_irq_handler(i, handle_level_irq); |
| 47 | irq_desc[i].status |= IRQ_LEVEL; | 47 | irq_desc[i].status |= IRQ_LEVEL; |
| 48 | set_irq_flags(i, IRQF_VALID); | 48 | set_irq_flags(i, IRQF_VALID); |
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c index e273418797b4..30b7e4bcdbc7 100644 --- a/arch/arm/mach-mv78xx0/irq.c +++ b/arch/arm/mach-mv78xx0/irq.c | |||
| @@ -40,7 +40,7 @@ void __init mv78xx0_init_irq(void) | |||
| 40 | writel(0, GPIO_EDGE_CAUSE(0)); | 40 | writel(0, GPIO_EDGE_CAUSE(0)); |
| 41 | 41 | ||
| 42 | for (i = IRQ_MV78XX0_GPIO_START; i < NR_IRQS; i++) { | 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 | set_irq_handler(i, handle_level_irq); | 44 | set_irq_handler(i, handle_level_irq); |
| 45 | irq_desc[i].status |= IRQ_LEVEL; | 45 | irq_desc[i].status |= IRQ_LEVEL; |
| 46 | set_irq_flags(i, IRQF_VALID); | 46 | set_irq_flags(i, IRQF_VALID); |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index ad721e0cbf7a..ce4d46a4a838 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
| @@ -565,7 +565,7 @@ u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val) | |||
| 565 | * | 565 | * |
| 566 | * Given a struct clk of a rate-selectable clksel clock, and a clock divisor, | 566 | * Given a struct clk of a rate-selectable clksel clock, and a clock divisor, |
| 567 | * find the corresponding register field value. The return register value is | 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 | u32 omap2_divisor_to_clksel(struct clk *clk, u32 div) | 570 | u32 omap2_divisor_to_clksel(struct clk *clk, u32 div) |
| 571 | { | 571 | { |
| @@ -577,7 +577,7 @@ u32 omap2_divisor_to_clksel(struct clk *clk, u32 div) | |||
| 577 | 577 | ||
| 578 | clks = omap2_get_clksel_by_parent(clk, clk->parent); | 578 | clks = omap2_get_clksel_by_parent(clk, clk->parent); |
| 579 | if (clks == NULL) | 579 | if (clks == NULL) |
| 580 | return 0; | 580 | return ~0; |
| 581 | 581 | ||
| 582 | for (clkr = clks->rates; clkr->div; clkr++) { | 582 | for (clkr = clks->rates; clkr->div; clkr++) { |
| 583 | if ((clkr->flags & cpu_mask) && (clkr->div == div)) | 583 | if ((clkr->flags & cpu_mask) && (clkr->div == div)) |
| @@ -588,7 +588,7 @@ u32 omap2_divisor_to_clksel(struct clk *clk, u32 div) | |||
| 588 | printk(KERN_ERR "clock: Could not find divisor %d for " | 588 | printk(KERN_ERR "clock: Could not find divisor %d for " |
| 589 | "clock %s parent %s\n", div, clk->name, | 589 | "clock %s parent %s\n", div, clk->name, |
| 590 | clk->parent->name); | 590 | clk->parent->name); |
| 591 | return 0; | 591 | return ~0; |
| 592 | } | 592 | } |
| 593 | 593 | ||
| 594 | return clkr->val; | 594 | return clkr->val; |
| @@ -708,7 +708,7 @@ static u32 omap2_clksel_get_src_field(void __iomem **src_addr, | |||
| 708 | return 0; | 708 | return 0; |
| 709 | 709 | ||
| 710 | for (clkr = clks->rates; clkr->div; clkr++) { | 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 | break; /* Found the default rate for this platform */ | 712 | break; /* Found the default rate for this platform */ |
| 713 | } | 713 | } |
| 714 | 714 | ||
| @@ -746,7 +746,7 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) | |||
| 746 | return -EINVAL; | 746 | return -EINVAL; |
| 747 | 747 | ||
| 748 | if (clk->usecount > 0) | 748 | if (clk->usecount > 0) |
| 749 | _omap2_clk_disable(clk); | 749 | omap2_clk_disable(clk); |
| 750 | 750 | ||
| 751 | /* Set new source value (previous dividers if any in effect) */ | 751 | /* Set new source value (previous dividers if any in effect) */ |
| 752 | reg_val = __raw_readl(src_addr) & ~field_mask; | 752 | reg_val = __raw_readl(src_addr) & ~field_mask; |
| @@ -759,11 +759,11 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) | |||
| 759 | wmb(); | 759 | wmb(); |
| 760 | } | 760 | } |
| 761 | 761 | ||
| 762 | if (clk->usecount > 0) | ||
| 763 | _omap2_clk_enable(clk); | ||
| 764 | |||
| 765 | clk->parent = new_parent; | 762 | clk->parent = new_parent; |
| 766 | 763 | ||
| 764 | if (clk->usecount > 0) | ||
| 765 | omap2_clk_enable(clk); | ||
| 766 | |||
| 767 | /* CLKSEL clocks follow their parents' rates, divided by a divisor */ | 767 | /* CLKSEL clocks follow their parents' rates, divided by a divisor */ |
| 768 | clk->rate = new_parent->rate; | 768 | clk->rate = new_parent->rate; |
| 769 | 769 | ||
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c index 0caae43301e5..e03f7b45cb0d 100644 --- a/arch/arm/mach-orion5x/irq.c +++ b/arch/arm/mach-orion5x/irq.c | |||
| @@ -44,7 +44,7 @@ void __init orion5x_init_irq(void) | |||
| 44 | * User can use set_type() if he wants to use edge types handlers. | 44 | * User can use set_type() if he wants to use edge types handlers. |
| 45 | */ | 45 | */ |
| 46 | for (i = IRQ_ORION5X_GPIO_START; i < NR_IRQS; i++) { | 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 | set_irq_handler(i, handle_level_irq); | 48 | set_irq_handler(i, handle_level_irq); |
| 49 | irq_desc[i].status |= IRQ_LEVEL; | 49 | irq_desc[i].status |= IRQ_LEVEL; |
| 50 | set_irq_flags(i, IRQF_VALID); | 50 | set_irq_flags(i, IRQF_VALID); |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 9b36c5cb5e9f..d4d082c5c2d4 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
| @@ -693,7 +693,8 @@ static void __init sanity_check_meminfo(void) | |||
| 693 | * Check whether this memory bank would entirely overlap | 693 | * Check whether this memory bank would entirely overlap |
| 694 | * the vmalloc area. | 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 | printk(KERN_NOTICE "Ignoring RAM at %.8lx-%.8lx " | 698 | printk(KERN_NOTICE "Ignoring RAM at %.8lx-%.8lx " |
| 698 | "(vmalloc region overlap).\n", | 699 | "(vmalloc region overlap).\n", |
| 699 | bank->start, bank->start + bank->size - 1); | 700 | bank->start, bank->start + bank->size - 1); |
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c index 967186425ca1..0d12c2164766 100644 --- a/arch/arm/plat-orion/gpio.c +++ b/arch/arm/plat-orion/gpio.c | |||
| @@ -265,51 +265,36 @@ EXPORT_SYMBOL(orion_gpio_set_blink); | |||
| 265 | * polarity LEVEL mask | 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 | |||
| 272 | writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin)); | ||
| 273 | } | ||
| 274 | |||
| 275 | static void gpio_irq_edge_mask(u32 irq) | ||
| 276 | { | ||
| 277 | int pin = irq_to_gpio(irq); | ||
| 278 | u32 u; | ||
| 279 | |||
| 280 | u = readl(GPIO_EDGE_MASK(pin)); | ||
| 281 | u &= ~(1 << (pin & 31)); | ||
| 282 | writel(u, GPIO_EDGE_MASK(pin)); | ||
| 283 | } | ||
| 284 | 268 | ||
| 285 | static void gpio_irq_edge_unmask(u32 irq) | 269 | static void gpio_irq_ack(u32 irq) |
| 286 | { | 270 | { |
| 287 | int pin = irq_to_gpio(irq); | 271 | int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK; |
| 288 | u32 u; | 272 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { |
| 289 | 273 | int pin = irq_to_gpio(irq); | |
| 290 | u = readl(GPIO_EDGE_MASK(pin)); | 274 | writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin)); |
| 291 | u |= 1 << (pin & 31); | 275 | } |
| 292 | writel(u, GPIO_EDGE_MASK(pin)); | ||
| 293 | } | 276 | } |
| 294 | 277 | ||
| 295 | static void gpio_irq_level_mask(u32 irq) | 278 | static void gpio_irq_mask(u32 irq) |
| 296 | { | 279 | { |
| 297 | int pin = irq_to_gpio(irq); | 280 | int pin = irq_to_gpio(irq); |
| 298 | u32 u; | 281 | int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK; |
| 299 | 282 | u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ? | |
| 300 | u = readl(GPIO_LEVEL_MASK(pin)); | 283 | GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin); |
| 284 | u32 u = readl(reg); | ||
| 301 | u &= ~(1 << (pin & 31)); | 285 | u &= ~(1 << (pin & 31)); |
| 302 | writel(u, GPIO_LEVEL_MASK(pin)); | 286 | writel(u, reg); |
| 303 | } | 287 | } |
| 304 | 288 | ||
| 305 | static void gpio_irq_level_unmask(u32 irq) | 289 | static void gpio_irq_unmask(u32 irq) |
| 306 | { | 290 | { |
| 307 | int pin = irq_to_gpio(irq); | 291 | int pin = irq_to_gpio(irq); |
| 308 | u32 u; | 292 | int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK; |
| 309 | 293 | u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ? | |
| 310 | u = readl(GPIO_LEVEL_MASK(pin)); | 294 | GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin); |
| 295 | u32 u = readl(reg); | ||
| 311 | u |= 1 << (pin & 31); | 296 | u |= 1 << (pin & 31); |
| 312 | writel(u, GPIO_LEVEL_MASK(pin)); | 297 | writel(u, reg); |
| 313 | } | 298 | } |
| 314 | 299 | ||
| 315 | static int gpio_irq_set_type(u32 irq, u32 type) | 300 | static int gpio_irq_set_type(u32 irq, u32 type) |
| @@ -331,9 +316,9 @@ static int gpio_irq_set_type(u32 irq, u32 type) | |||
| 331 | * Set edge/level type. | 316 | * Set edge/level type. |
| 332 | */ | 317 | */ |
| 333 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { | 318 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { |
| 334 | desc->chip = &orion_gpio_irq_edge_chip; | 319 | desc->handle_irq = handle_edge_irq; |
| 335 | } else if (type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) { | 320 | } else if (type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) { |
| 336 | desc->chip = &orion_gpio_irq_level_chip; | 321 | desc->handle_irq = handle_level_irq; |
| 337 | } else { | 322 | } else { |
| 338 | printk(KERN_ERR "failed to set irq=%d (type=%d)\n", irq, type); | 323 | printk(KERN_ERR "failed to set irq=%d (type=%d)\n", irq, type); |
| 339 | return -EINVAL; | 324 | return -EINVAL; |
| @@ -371,19 +356,11 @@ static int gpio_irq_set_type(u32 irq, u32 type) | |||
| 371 | return 0; | 356 | return 0; |
| 372 | } | 357 | } |
| 373 | 358 | ||
| 374 | struct irq_chip orion_gpio_irq_edge_chip = { | 359 | struct irq_chip orion_gpio_irq_chip = { |
| 375 | .name = "orion_gpio_irq_edge", | 360 | .name = "orion_gpio", |
| 376 | .ack = gpio_irq_edge_ack, | 361 | .ack = gpio_irq_ack, |
| 377 | .mask = gpio_irq_edge_mask, | 362 | .mask = gpio_irq_mask, |
| 378 | .unmask = gpio_irq_edge_unmask, | 363 | .unmask = gpio_irq_unmask, |
| 379 | .set_type = gpio_irq_set_type, | ||
| 380 | }; | ||
| 381 | |||
| 382 | struct irq_chip orion_gpio_irq_level_chip = { | ||
| 383 | .name = "orion_gpio_irq_level", | ||
| 384 | .mask = gpio_irq_level_mask, | ||
| 385 | .mask_ack = gpio_irq_level_mask, | ||
| 386 | .unmask = gpio_irq_level_unmask, | ||
| 387 | .set_type = gpio_irq_set_type, | 364 | .set_type = gpio_irq_set_type, |
| 388 | }; | 365 | }; |
| 389 | 366 | ||
diff --git a/arch/arm/plat-orion/include/plat/gpio.h b/arch/arm/plat-orion/include/plat/gpio.h index 54deaf274b52..ec743e82c876 100644 --- a/arch/arm/plat-orion/include/plat/gpio.h +++ b/arch/arm/plat-orion/include/plat/gpio.h | |||
| @@ -31,8 +31,7 @@ void orion_gpio_set_blink(unsigned pin, int blink); | |||
| 31 | /* | 31 | /* |
| 32 | * GPIO interrupt handling. | 32 | * GPIO interrupt handling. |
| 33 | */ | 33 | */ |
| 34 | extern struct irq_chip orion_gpio_irq_edge_chip; | 34 | extern struct irq_chip orion_gpio_irq_chip; |
| 35 | extern struct irq_chip orion_gpio_irq_level_chip; | ||
| 36 | void orion_gpio_irq_handler(int irqoff); | 35 | void orion_gpio_irq_handler(int irqoff); |
| 37 | 36 | ||
| 38 | 37 | ||
diff --git a/arch/avr32/mach-at32ap/include/mach/board.h b/arch/avr32/mach-at32ap/include/mach/board.h index aafaf7a78886..cff8e84f78f2 100644 --- a/arch/avr32/mach-at32ap/include/mach/board.h +++ b/arch/avr32/mach-at32ap/include/mach/board.h | |||
| @@ -116,6 +116,7 @@ struct atmel_nand_data { | |||
| 116 | int enable_pin; /* chip enable */ | 116 | int enable_pin; /* chip enable */ |
| 117 | int det_pin; /* card detect */ | 117 | int det_pin; /* card detect */ |
| 118 | int rdy_pin; /* ready/busy */ | 118 | int rdy_pin; /* ready/busy */ |
| 119 | u8 rdy_pin_active_low; /* rdy_pin value is inverted */ | ||
| 119 | u8 ale; /* address line number connected to ALE */ | 120 | u8 ale; /* address line number connected to ALE */ |
| 120 | u8 cle; /* address line number connected to CLE */ | 121 | u8 cle; /* address line number connected to CLE */ |
| 121 | u8 bus_width_16; /* buswidth is 16 bit */ | 122 | u8 bus_width_16; /* buswidth is 16 bit */ |
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c index c98c1570a40b..47a33cec3793 100644 --- a/drivers/mtd/nand/atmel_nand.c +++ b/drivers/mtd/nand/atmel_nand.c | |||
| @@ -139,7 +139,8 @@ static int atmel_nand_device_ready(struct mtd_info *mtd) | |||
| 139 | struct nand_chip *nand_chip = mtd->priv; | 139 | struct nand_chip *nand_chip = mtd->priv; |
| 140 | struct atmel_nand_host *host = nand_chip->priv; | 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 | /* |
diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c index 9b36205c5759..0ce4e2819847 100644 --- a/drivers/usb/gadget/pxa25x_udc.c +++ b/drivers/usb/gadget/pxa25x_udc.c | |||
| @@ -904,8 +904,8 @@ static void pxa25x_ep_fifo_flush(struct usb_ep *_ep) | |||
| 904 | 904 | ||
| 905 | /* most IN status is the same, but ISO can't stall */ | 905 | /* most IN status is the same, but ISO can't stall */ |
| 906 | *ep->reg_udccs = UDCCS_BI_TPC|UDCCS_BI_FTF|UDCCS_BI_TUR | 906 | *ep->reg_udccs = UDCCS_BI_TPC|UDCCS_BI_FTF|UDCCS_BI_TUR |
| 907 | | (ep->bmAttributes == USB_ENDPOINT_XFER_ISOC) | 907 | | (ep->bmAttributes == USB_ENDPOINT_XFER_ISOC |
| 908 | ? 0 : UDCCS_BI_SST; | 908 | ? 0 : UDCCS_BI_SST); |
| 909 | } | 909 | } |
| 910 | 910 | ||
| 911 | 911 | ||
diff --git a/drivers/watchdog/at91rm9200_wdt.c b/drivers/watchdog/at91rm9200_wdt.c index 5531691f46ea..e35d54589232 100644 --- a/drivers/watchdog/at91rm9200_wdt.c +++ b/drivers/watchdog/at91rm9200_wdt.c | |||
| @@ -107,10 +107,10 @@ static int at91_wdt_close(struct inode *inode, struct file *file) | |||
| 107 | static int at91_wdt_settimeout(int new_time) | 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 | * Since WDV is a 16-bit counter, the maximum period is | 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 | if ((new_time <= 0) || (new_time > WDT_MAX_TIME)) | 115 | if ((new_time <= 0) || (new_time > WDT_MAX_TIME)) |
| 116 | return -EINVAL; | 116 | return -EINVAL; |
diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c index b1da287f90ec..a56ac84381b1 100644 --- a/drivers/watchdog/at91sam9_wdt.c +++ b/drivers/watchdog/at91sam9_wdt.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/errno.h> | 18 | #include <linux/errno.h> |
| 19 | #include <linux/fs.h> | 19 | #include <linux/fs.h> |
| 20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
| 21 | #include <linux/io.h> | ||
| 21 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
| 22 | #include <linux/miscdevice.h> | 23 | #include <linux/miscdevice.h> |
| 23 | #include <linux/module.h> | 24 | #include <linux/module.h> |
