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
This commit is contained in:
@@ -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 @@
|
|||||||
|
|
||||||
#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 @@
|
|||||||
#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 @@
|
|||||||
#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)
|
|||||||
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 = {
|
|||||||
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 @@
|
|||||||
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 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
|||||||
#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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
{
|
{
|
||||||
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
|
|||||||
}
|
}
|
||||||
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)
|
|||||||
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)
|
|||||||
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 = {
|
||||||
|
Reference in New Issue
Block a user