提交 a044a1b1 编写于 作者: L Linus Torvalds

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

* 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
...@@ -915,6 +915,14 @@ void __init kirkwood_init(void) ...@@ -915,6 +915,14 @@ void __init kirkwood_init(void)
kirkwood_uart0_data[0].uartclk = kirkwood_tclk; kirkwood_uart0_data[0].uartclk = kirkwood_tclk;
kirkwood_uart1_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(); kirkwood_setup_cpu_mbus();
#ifdef CONFIG_CACHE_FEROCEON_L2 #ifdef CONFIG_CACHE_FEROCEON_L2
......
...@@ -13,6 +13,9 @@ ...@@ -13,6 +13,9 @@
#include <mach/kirkwood.h> #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_CONTROL (BRIDGE_VIRT_BASE | 0x0104)
#define CPU_RESET 0x00000002 #define CPU_RESET 0x00000002
......
...@@ -160,7 +160,7 @@ ...@@ -160,7 +160,7 @@
#define MMC1_WP_MMC1_WP MFP_CFG_DRV(MMC1_WP, AF0, MEDIUM) #define MMC1_WP_MMC1_WP MFP_CFG_DRV(MMC1_WP, AF0, MEDIUM)
/* PWM */ /* 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 GPIO51_PWM2_OUT MFP_CFG(GPIO51, AF2)
#define GPIO117_PWM1_OUT MFP_CFG(GPIO117, AF2) #define GPIO117_PWM1_OUT MFP_CFG(GPIO117, AF2)
#define GPIO118_PWM2_OUT MFP_CFG(GPIO118, AF2) #define GPIO118_PWM2_OUT MFP_CFG(GPIO118, AF2)
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <mach/colibri.h> #include <mach/colibri.h>
#include <mach/pxafb.h> #include <mach/pxafb.h>
#include <mach/ohci.h> #include <mach/ohci.h>
#include <mach/audio.h>
#include "generic.h" #include "generic.h"
#include "devices.h" #include "devices.h"
...@@ -145,7 +146,8 @@ static void __init colibri_pxa320_init_lcd(void) ...@@ -145,7 +146,8 @@ static void __init colibri_pxa320_init_lcd(void)
static inline void colibri_pxa320_init_lcd(void) {} static inline void colibri_pxa320_init_lcd(void) {}
#endif #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 = { static mfp_cfg_t colibri_pxa320_ac97_pin_config[] __initdata = {
GPIO34_AC97_SYSCLK, GPIO34_AC97_SYSCLK,
GPIO35_AC97_SDATA_IN_0, GPIO35_AC97_SDATA_IN_0,
......
...@@ -604,7 +604,7 @@ static struct platform_device gpio_vbus = { ...@@ -604,7 +604,7 @@ static struct platform_device gpio_vbus = {
static const struct ads7846_platform_data tsc2046_info = { static const struct ads7846_platform_data tsc2046_info = {
.model = 7846, .model = 7846,
.vref_delay_usecs = 100, .vref_delay_usecs = 100,
.pressure_max = 512, .pressure_max = 1024,
.debounce_max = 10, .debounce_max = 10,
.debounce_tol = 3, .debounce_tol = 3,
.debounce_rep = 1, .debounce_rep = 1,
......
...@@ -46,5 +46,6 @@ ...@@ -46,5 +46,6 @@
beq 1001f beq 1001f
bic \irqstat, \irqstat, #0x80000000 bic \irqstat, \irqstat, #0x80000000
mov \irqnr, \irqstat, lsr #16 mov \irqnr, \irqstat, lsr #16
add \irqnr, \irqnr, #(PXA_IRQ(0))
1001: 1001:
.endm .endm
...@@ -408,7 +408,7 @@ static struct platform_device keypad_device = { ...@@ -408,7 +408,7 @@ static struct platform_device keypad_device = {
}; };
static struct platform_device rtc_device = { static struct platform_device rtc_device = {
.name = "rtc0", .name = "rtc-coh901331",
.id = -1, .id = -1,
.num_resources = ARRAY_SIZE(rtc_resources), .num_resources = ARRAY_SIZE(rtc_resources),
.resource = rtc_resources, .resource = rtc_resources,
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#ifndef __ASM_PLAT_MFP_H #ifndef __ASM_PLAT_MFP_H
#define __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 */ /* list of all the configurable MFP pins */
enum { enum {
......
...@@ -207,7 +207,7 @@ unsigned long mfp_read(int mfp) ...@@ -207,7 +207,7 @@ unsigned long mfp_read(int mfp)
{ {
unsigned long val, flags; 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); spin_lock_irqsave(&mfp_spin_lock, flags);
val = mfpr_readl(mfp_table[mfp].mfpr_off); val = mfpr_readl(mfp_table[mfp].mfpr_off);
...@@ -220,7 +220,7 @@ void mfp_write(int mfp, unsigned long val) ...@@ -220,7 +220,7 @@ void mfp_write(int mfp, unsigned long val)
{ {
unsigned long flags; unsigned long flags;
BUG_ON(mfp >= MFP_PIN_MAX); BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
spin_lock_irqsave(&mfp_spin_lock, flags); spin_lock_irqsave(&mfp_spin_lock, flags);
mfpr_writel(mfp_table[mfp].mfpr_off, val); mfpr_writel(mfp_table[mfp].mfpr_off, val);
......
...@@ -209,8 +209,8 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r ...@@ -209,8 +209,8 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
} }
subdev->mtd->owner = THIS_MODULE; subdev->mtd->owner = THIS_MODULE;
printk(KERN_INFO "SA1100 flash: CFI device at 0x%08lx, %dMiB, " printk(KERN_INFO "SA1100 flash: CFI device at 0x%08lx, %uMiB, %d-bit\n",
"%d-bit\n", phys, subdev->mtd->size >> 20, phys, (unsigned)(subdev->mtd->size >> 20),
subdev->map.bankwidth * 8); subdev->map.bankwidth * 8);
return 0; return 0;
......
...@@ -58,7 +58,16 @@ static irqreturn_t coh901331_interrupt(int irq, void *data) ...@@ -58,7 +58,16 @@ static irqreturn_t coh901331_interrupt(int irq, void *data)
clk_enable(rtap->clk); clk_enable(rtap->clk);
/* Ack IRQ */ /* Ack IRQ */
writel(1, rtap->virtbase + COH901331_IRQ_EVENT); 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); clk_disable(rtap->clk);
/* Set alarm flag */ /* Set alarm flag */
rtc_update_irq(rtap->rtc, 1, RTC_AF); rtc_update_irq(rtap->rtc, 1, RTC_AF);
...@@ -128,6 +137,8 @@ static int coh901331_alarm_irq_enable(struct device *dev, unsigned int enabled) ...@@ -128,6 +137,8 @@ static int coh901331_alarm_irq_enable(struct device *dev, unsigned int enabled)
else else
writel(0, rtap->virtbase + COH901331_IRQ_MASK); writel(0, rtap->virtbase + COH901331_IRQ_MASK);
clk_disable(rtap->clk); clk_disable(rtap->clk);
return 0;
} }
static struct rtc_class_ops coh901331_ops = { static struct rtc_class_ops coh901331_ops = {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册