Merge master.kernel.org:/home/rmk/linux-2.6-arm
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 17 Nov 2009 17:19:54 +0000 (09:19 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 17 Nov 2009 17:19:54 +0000 (09:19 -0800)
* master.kernel.org:/home/rmk/linux-2.6-arm:
  [ARM] pxa: ensure mfp is in correct range in mfp_{read,write}
  [ARM] pxa/hx4700: fix hx4700 touchscreen pressure values
  ARM: 5787/1: U300 COH 901 331 fixes
  ARM: Fix warning in sa1100-flash.c
  [ARM] Kirkwood: disable propagation of mbus error to the CPU local bus
  [ARM] pxa: fix incorrect mfp_to_gpio() conversion
  [ARM] pxa/colibri: fix AC97 ifdefs and add missing include
  [ARM] pxa: fix missing underscores in mfp-pxa910.h
  [ARM] pxa: fix interrupts number calculation when CONFIG_PXA_HAVE_ISA_IRQS=y

arch/arm/mach-kirkwood/common.c
arch/arm/mach-kirkwood/include/mach/bridge-regs.h
arch/arm/mach-mmp/include/mach/mfp-pxa910.h
arch/arm/mach-pxa/colibri-pxa320.c
arch/arm/mach-pxa/hx4700.c
arch/arm/mach-pxa/include/mach/entry-macro.S
arch/arm/mach-u300/core.c
arch/arm/plat-pxa/include/plat/mfp.h
arch/arm/plat-pxa/mfp.c
drivers/mtd/maps/sa1100-flash.c
drivers/rtc/rtc-coh901331.c

index 7177c4aa63421e22e5f57afcadf00e60a98a79fe..242dd077534336269804795d30c4afb04fe1739b 100644 (file)
@@ -915,6 +915,14 @@ void __init kirkwood_init(void)
        kirkwood_uart0_data[0].uartclk = kirkwood_tclk;
        kirkwood_uart1_data[0].uartclk = kirkwood_tclk;
 
+       /*
+        * Disable propagation of mbus errors to the CPU local bus,
+        * as this causes mbus errors (which can occur for example
+        * for PCI aborts) to throw CPU aborts, which we're not set
+        * up to deal with.
+        */
+       writel(readl(CPU_CONFIG) & ~CPU_CONFIG_ERROR_PROP, CPU_CONFIG);
+
        kirkwood_setup_cpu_mbus();
 
 #ifdef CONFIG_CACHE_FEROCEON_L2
index 9e80d9232c831e315783509b71a837de115b92b9..418f5017c50e1d916468ebc99e5b958a706d98f6 100644 (file)
@@ -13,6 +13,9 @@
 
 #include <mach/kirkwood.h>
 
+#define CPU_CONFIG             (BRIDGE_VIRT_BASE | 0x0100)
+#define CPU_CONFIG_ERROR_PROP  0x00000004
+
 #define CPU_CONTROL            (BRIDGE_VIRT_BASE | 0x0104)
 #define CPU_RESET              0x00000002
 
index bf1189ff9a34bd62fad9f8ab2c90c04e4703671b..7e8a80f25ddcfca47ce8817ad4f0eeeca3f6ed87 100644 (file)
 #define MMC1_WP_MMC1_WP                MFP_CFG_DRV(MMC1_WP, AF0, MEDIUM)
 
 /* PWM */
-#define GPIO27 PWM3 AF2                MFP_CFG(GPIO27, AF2)
+#define GPIO27_PWM3_AF2                MFP_CFG(GPIO27, AF2)
 #define GPIO51_PWM2_OUT                MFP_CFG(GPIO51, AF2)
 #define GPIO117_PWM1_OUT       MFP_CFG(GPIO117, AF2)
 #define GPIO118_PWM2_OUT       MFP_CFG(GPIO118, AF2)
index 494572825c7da49bf3a665adaf1b8574b9dbe9ef..ec0e14b96682a9b6117ff70420803d280d63a120 100644 (file)
@@ -27,6 +27,7 @@
 #include <mach/colibri.h>
 #include <mach/pxafb.h>
 #include <mach/ohci.h>
+#include <mach/audio.h>
 
 #include "generic.h"
 #include "devices.h"
@@ -145,7 +146,8 @@ static void __init colibri_pxa320_init_lcd(void)
 static inline void colibri_pxa320_init_lcd(void) {}
 #endif
 
-#if defined(SND_AC97_CODEC) || defined(SND_AC97_CODEC_MODULE)
+#if    defined(CONFIG_SND_AC97_CODEC) || \
+       defined(CONFIG_SND_AC97_CODEC_MODULE)
 static mfp_cfg_t colibri_pxa320_ac97_pin_config[] __initdata = {
        GPIO34_AC97_SYSCLK,
        GPIO35_AC97_SDATA_IN_0,
index abff9e1327492b42254a455c1f57dcbb0604df57..83bd3c6e3884594c2beac41e777220080865339c 100644 (file)
@@ -604,7 +604,7 @@ static struct platform_device gpio_vbus = {
 static const struct ads7846_platform_data tsc2046_info = {
        .model            = 7846,
        .vref_delay_usecs = 100,
-       .pressure_max     = 512,
+       .pressure_max     = 1024,
        .debounce_max     = 10,
        .debounce_tol     = 3,
        .debounce_rep     = 1,
index 241880608ac64d3293c8d1e2e190572589f7878d..a73bc86a3c263d238e2a7b7a82d297748857b9ce 100644 (file)
@@ -46,5 +46,6 @@
                beq     1001f
                bic     \irqstat, \irqstat, #0x80000000
                mov     \irqnr, \irqstat, lsr #16
+               add     \irqnr, \irqnr, #(PXA_IRQ(0))
 1001:
                .endm
index be60d6deee8b018c883cc547eae53f4e6d2b2a66..653e25be3dd82df532b4b3a508fb45e393b00876 100644 (file)
@@ -408,7 +408,7 @@ static struct platform_device keypad_device = {
 };
 
 static struct platform_device rtc_device = {
-       .name = "rtc0",
+       .name = "rtc-coh901331",
        .id = -1,
        .num_resources = ARRAY_SIZE(rtc_resources),
        .resource = rtc_resources,
index 22086e696e8e38f00ea8a28f68b7e618abee6b33..857a6839071cd57a36688cd4498cda34c172d927 100644 (file)
@@ -16,7 +16,7 @@
 #ifndef __ASM_PLAT_MFP_H
 #define __ASM_PLAT_MFP_H
 
-#define mfp_to_gpio(m) ((m) % 128)
+#define mfp_to_gpio(m) ((m) % 256)
 
 /* list of all the configurable MFP pins */
 enum {
index 9405d0379c850da2b39651a30ee228fb91113685..be58f9fe65b0db082b4b1c8af428dd6cca682a39 100644 (file)
@@ -207,7 +207,7 @@ unsigned long mfp_read(int mfp)
 {
        unsigned long val, flags;
 
-       BUG_ON(mfp >= MFP_PIN_MAX);
+       BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
 
        spin_lock_irqsave(&mfp_spin_lock, flags);
        val = mfpr_readl(mfp_table[mfp].mfpr_off);
@@ -220,7 +220,7 @@ void mfp_write(int mfp, unsigned long val)
 {
        unsigned long flags;
 
-       BUG_ON(mfp >= MFP_PIN_MAX);
+       BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
 
        spin_lock_irqsave(&mfp_spin_lock, flags);
        mfpr_writel(mfp_table[mfp].mfpr_off, val);
index fdb97f3d30e9afc8b0c6b07143ebba9ece6bae79..d7a47574d21e5b9d3cb69a64fba9917eca6acce3 100644 (file)
@@ -209,8 +209,8 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
        }
        subdev->mtd->owner = THIS_MODULE;
 
-       printk(KERN_INFO "SA1100 flash: CFI device at 0x%08lx, %dMiB, "
-               "%d-bit\n", phys, subdev->mtd->size >> 20,
+       printk(KERN_INFO "SA1100 flash: CFI device at 0x%08lx, %uMiB, %d-bit\n",
+               phys, (unsigned)(subdev->mtd->size >> 20),
                subdev->map.bankwidth * 8);
 
        return 0;
index 7fe1fa26c52c5e202287db14ea5cf2551f7031e2..03ea530981d1e66328625fb26567cc40e35f9f23 100644 (file)
@@ -58,7 +58,16 @@ static irqreturn_t coh901331_interrupt(int irq, void *data)
        clk_enable(rtap->clk);
        /* Ack IRQ */
        writel(1, rtap->virtbase + COH901331_IRQ_EVENT);
+       /*
+        * Disable the interrupt. This is necessary because
+        * the RTC lives on a lower-clocked line and will
+        * not release the IRQ line until after a few (slower)
+        * clock cycles. The interrupt will be re-enabled when
+        * a new alarm is set anyway.
+        */
+       writel(0, rtap->virtbase + COH901331_IRQ_MASK);
        clk_disable(rtap->clk);
+
        /* Set alarm flag */
        rtc_update_irq(rtap->rtc, 1, RTC_AF);
 
@@ -128,6 +137,8 @@ static int coh901331_alarm_irq_enable(struct device *dev, unsigned int enabled)
        else
                writel(0, rtap->virtbase + COH901331_IRQ_MASK);
        clk_disable(rtap->clk);
+
+       return 0;
 }
 
 static struct rtc_class_ops coh901331_ops = {