diff options
Diffstat (limited to 'arch/arm/plat-orion')
-rw-r--r-- | arch/arm/plat-orion/irq.c | 3 | ||||
-rw-r--r-- | arch/arm/plat-orion/pcie.c | 6 | ||||
-rw-r--r-- | arch/arm/plat-orion/time.c | 6 |
3 files changed, 11 insertions, 4 deletions
diff --git a/arch/arm/plat-orion/irq.c b/arch/arm/plat-orion/irq.c index c5b669d234bc..fe66a1835169 100644 --- a/arch/arm/plat-orion/irq.c +++ b/arch/arm/plat-orion/irq.c | |||
@@ -36,8 +36,8 @@ static void orion_irq_unmask(u32 irq) | |||
36 | 36 | ||
37 | static struct irq_chip orion_irq_chip = { | 37 | static struct irq_chip orion_irq_chip = { |
38 | .name = "orion_irq", | 38 | .name = "orion_irq", |
39 | .ack = orion_irq_mask, | ||
40 | .mask = orion_irq_mask, | 39 | .mask = orion_irq_mask, |
40 | .mask_ack = orion_irq_mask, | ||
41 | .unmask = orion_irq_unmask, | 41 | .unmask = orion_irq_unmask, |
42 | }; | 42 | }; |
43 | 43 | ||
@@ -59,6 +59,7 @@ void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr) | |||
59 | set_irq_chip(irq, &orion_irq_chip); | 59 | set_irq_chip(irq, &orion_irq_chip); |
60 | set_irq_chip_data(irq, maskaddr); | 60 | set_irq_chip_data(irq, maskaddr); |
61 | set_irq_handler(irq, handle_level_irq); | 61 | set_irq_handler(irq, handle_level_irq); |
62 | irq_desc[irq].status |= IRQ_LEVEL; | ||
62 | set_irq_flags(irq, IRQF_VALID); | 63 | set_irq_flags(irq, IRQF_VALID); |
63 | } | 64 | } |
64 | } | 65 | } |
diff --git a/arch/arm/plat-orion/pcie.c b/arch/arm/plat-orion/pcie.c index abfda53f1800..ca32c60e14d7 100644 --- a/arch/arm/plat-orion/pcie.c +++ b/arch/arm/plat-orion/pcie.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #define PCIE_CONF_DATA_OFF 0x18fc | 39 | #define PCIE_CONF_DATA_OFF 0x18fc |
40 | #define PCIE_MASK_OFF 0x1910 | 40 | #define PCIE_MASK_OFF 0x1910 |
41 | #define PCIE_CTRL_OFF 0x1a00 | 41 | #define PCIE_CTRL_OFF 0x1a00 |
42 | #define PCIE_CTRL_X1_MODE 0x0001 | ||
42 | #define PCIE_STAT_OFF 0x1a04 | 43 | #define PCIE_STAT_OFF 0x1a04 |
43 | #define PCIE_STAT_DEV_OFFS 20 | 44 | #define PCIE_STAT_DEV_OFFS 20 |
44 | #define PCIE_STAT_DEV_MASK 0x1f | 45 | #define PCIE_STAT_DEV_MASK 0x1f |
@@ -62,6 +63,11 @@ int orion_pcie_link_up(void __iomem *base) | |||
62 | return !(readl(base + PCIE_STAT_OFF) & PCIE_STAT_LINK_DOWN); | 63 | return !(readl(base + PCIE_STAT_OFF) & PCIE_STAT_LINK_DOWN); |
63 | } | 64 | } |
64 | 65 | ||
66 | int __init orion_pcie_x4_mode(void __iomem *base) | ||
67 | { | ||
68 | return !(readl(base + PCIE_CTRL_OFF) & PCIE_CTRL_X1_MODE); | ||
69 | } | ||
70 | |||
65 | int orion_pcie_get_local_bus_nr(void __iomem *base) | 71 | int orion_pcie_get_local_bus_nr(void __iomem *base) |
66 | { | 72 | { |
67 | u32 stat = readl(base + PCIE_STAT_OFF); | 73 | u32 stat = readl(base + PCIE_STAT_OFF); |
diff --git a/arch/arm/plat-orion/time.c b/arch/arm/plat-orion/time.c index 28b5285446e8..93c4ef9f0067 100644 --- a/arch/arm/plat-orion/time.c +++ b/arch/arm/plat-orion/time.c | |||
@@ -74,7 +74,7 @@ orion_clkevt_next_event(unsigned long delta, struct clock_event_device *dev) | |||
74 | /* | 74 | /* |
75 | * Clear and enable clockevent timer interrupt. | 75 | * Clear and enable clockevent timer interrupt. |
76 | */ | 76 | */ |
77 | writel(~BRIDGE_INT_TIMER1, BRIDGE_CAUSE); | 77 | writel(BRIDGE_INT_TIMER1_CLR, BRIDGE_CAUSE); |
78 | 78 | ||
79 | u = readl(BRIDGE_MASK); | 79 | u = readl(BRIDGE_MASK); |
80 | u |= BRIDGE_INT_TIMER1; | 80 | u |= BRIDGE_INT_TIMER1; |
@@ -138,7 +138,7 @@ orion_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) | |||
138 | /* | 138 | /* |
139 | * ACK pending timer interrupt. | 139 | * ACK pending timer interrupt. |
140 | */ | 140 | */ |
141 | writel(~BRIDGE_INT_TIMER1, BRIDGE_CAUSE); | 141 | writel(BRIDGE_INT_TIMER1_CLR, BRIDGE_CAUSE); |
142 | 142 | ||
143 | } | 143 | } |
144 | local_irq_restore(flags); | 144 | local_irq_restore(flags); |
@@ -159,7 +159,7 @@ static irqreturn_t orion_timer_interrupt(int irq, void *dev_id) | |||
159 | /* | 159 | /* |
160 | * ACK timer interrupt and call event handler. | 160 | * ACK timer interrupt and call event handler. |
161 | */ | 161 | */ |
162 | writel(~BRIDGE_INT_TIMER1, BRIDGE_CAUSE); | 162 | writel(BRIDGE_INT_TIMER1_CLR, BRIDGE_CAUSE); |
163 | orion_clkevt.event_handler(&orion_clkevt); | 163 | orion_clkevt.event_handler(&orion_clkevt); |
164 | 164 | ||
165 | return IRQ_HANDLED; | 165 | return IRQ_HANDLED; |