git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq
[pandora-kernel.git]
/
arch
/
arm
/
mach-ixp23xx
/
core.c
diff --git
a/arch/arm/mach-ixp23xx/core.c
b/arch/arm/mach-ixp23xx/core.c
index
092ee12
..
566a078
100644
(file)
--- a/
arch/arm/mach-ixp23xx/core.c
+++ b/
arch/arm/mach-ixp23xx/core.c
@@
-14,7
+14,6
@@
* warranty of any kind, whether express or implied.
*/
* warranty of any kind, whether express or implied.
*/
-#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/spinlock.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/spinlock.h>
@@
-178,8
+177,12
@@
static int ixp23xx_irq_set_type(unsigned int irq, unsigned int type)
static void ixp23xx_irq_mask(unsigned int irq)
{
static void ixp23xx_irq_mask(unsigned int irq)
{
- volatile unsigned long *intr_reg
= IXP23XX_INTR_EN1 + (irq / 32)
;
+ volatile unsigned long *intr_reg;
+ if (irq >= 56)
+ irq += 8;
+
+ intr_reg = IXP23XX_INTR_EN1 + (irq / 32);
*intr_reg &= ~(1 << (irq % 32));
}
*intr_reg &= ~(1 << (irq % 32));
}
@@
-199,17
+202,25
@@
static void ixp23xx_irq_ack(unsigned int irq)
*/
static void ixp23xx_irq_level_unmask(unsigned int irq)
{
*/
static void ixp23xx_irq_level_unmask(unsigned int irq)
{
- volatile unsigned long *intr_reg
= IXP23XX_INTR_EN1 + (irq / 32)
;
+ volatile unsigned long *intr_reg;
ixp23xx_irq_ack(irq);
ixp23xx_irq_ack(irq);
+ if (irq >= 56)
+ irq += 8;
+
+ intr_reg = IXP23XX_INTR_EN1 + (irq / 32);
*intr_reg |= (1 << (irq % 32));
}
static void ixp23xx_irq_edge_unmask(unsigned int irq)
{
*intr_reg |= (1 << (irq % 32));
}
static void ixp23xx_irq_edge_unmask(unsigned int irq)
{
- volatile unsigned long *intr_reg = IXP23XX_INTR_EN1 + (irq / 32);
+ volatile unsigned long *intr_reg;
+
+ if (irq >= 56)
+ irq += 8;
+ intr_reg = IXP23XX_INTR_EN1 + (irq / 32);
*intr_reg |= (1 << (irq % 32));
}
*intr_reg |= (1 << (irq % 32));
}
@@
-260,7
+271,7
@@
static void pci_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *
}
int_desc = irq_desc + irqno;
}
int_desc = irq_desc + irqno;
-
int_desc->handle
(irqno, int_desc, regs);
+
desc_handle_irq
(irqno, int_desc, regs);
desc->chip->unmask(irq);
}
desc->chip->unmask(irq);
}
@@
-322,7
+333,7
@@
void __init ixp23xx_init_irq(void)
/*************************************************************************
* Timer-tick functions for IXP23xx
*************************************************************************/
/*************************************************************************
* Timer-tick functions for IXP23xx
*************************************************************************/
-#define CLOCK_TICKS_PER_USEC
CLOCK_TICK_RATE / (
USEC_PER_SEC)
+#define CLOCK_TICKS_PER_USEC
(CLOCK_TICK_RATE /
USEC_PER_SEC)
static unsigned long next_jiffy_time;
static unsigned long next_jiffy_time;
@@
-341,7
+352,7
@@
ixp23xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
/* Clear Pending Interrupt by writing '1' to it */
*IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND;
{
/* Clear Pending Interrupt by writing '1' to it */
*IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND;
- while ((
*IXP23XX_TIMER_CONT - next_jiffy_time) >
LATCH) {
+ while ((
signed long)(*IXP23XX_TIMER_CONT - next_jiffy_time) >=
LATCH) {
timer_tick(regs);
next_jiffy_time += LATCH;
}
timer_tick(regs);
next_jiffy_time += LATCH;
}
@@
-352,7
+363,7
@@
ixp23xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
static struct irqaction ixp23xx_timer_irq = {
.name = "IXP23xx Timer Tick",
.handler = ixp23xx_timer_interrupt,
static struct irqaction ixp23xx_timer_irq = {
.name = "IXP23xx Timer Tick",
.handler = ixp23xx_timer_interrupt,
- .flags =
SA_INTERRUPT | SA
_TIMER,
+ .flags =
IRQF_DISABLED | IRQF
_TIMER,
};
void __init ixp23xx_init_timer(void)
};
void __init ixp23xx_init_timer(void)
@@
-427,5
+438,6
@@
static struct platform_device *ixp23xx_devices[] __initdata = {
void __init ixp23xx_sys_init(void)
{
void __init ixp23xx_sys_init(void)
{
+ *IXP23XX_EXP_UNIT_FUSE |= 0xf;
platform_add_devices(ixp23xx_devices, ARRAY_SIZE(ixp23xx_devices));
}
platform_add_devices(ixp23xx_devices, ARRAY_SIZE(ixp23xx_devices));
}