Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'mvebu_fixes_for_v3.9_round3' of git://git.infradead.org/users/jcooper/linux into fixes

From Jason Cooper <jason@lakedaemon.net>:

mvebu fixes for v3.9 round 3

- Kirkwood
- a couple of small fixes for the Iomega ix2-200 board (ether and led)
- mvebu
- allow GPIO button to work on Mirabox when running SMP

* tag 'mvebu_fixes_for_v3.9_round3' of git://git.infradead.org/users/jcooper/linux:
arm: mvebu: Fix the irq map function in SMP mode
Fix GE0/GE1 init on ix2-200 as GE0 has no PHY
ARM: Kirkwood: Fix typo in the definition of ix2-200 rebuild LED

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+18 -19
+7 -7
arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
··· 96 96 marvell,function = "gpio"; 97 97 }; 98 98 pmx_led_rebuild_brt_ctrl_1: pmx-led-rebuild-brt-ctrl-1 { 99 - marvell,pins = "mpp44"; 99 + marvell,pins = "mpp46"; 100 100 marvell,function = "gpio"; 101 101 }; 102 102 pmx_led_rebuild_brt_ctrl_2: pmx-led-rebuild-brt-ctrl-2 { 103 - marvell,pins = "mpp45"; 103 + marvell,pins = "mpp47"; 104 104 marvell,function = "gpio"; 105 105 }; 106 106 ··· 157 157 gpios = <&gpio0 16 0>; 158 158 linux,default-trigger = "default-on"; 159 159 }; 160 - health_led1 { 160 + rebuild_led { 161 + label = "status:white:rebuild_led"; 162 + gpios = <&gpio1 4 0>; 163 + }; 164 + health_led { 161 165 label = "status:red:health_led"; 162 166 gpios = <&gpio1 5 0>; 163 - }; 164 - health_led2 { 165 - label = "status:white:health_led"; 166 - gpios = <&gpio1 4 0>; 167 167 }; 168 168 backup_led { 169 169 label = "status:blue:backup_led";
+6 -1
arch/arm/mach-kirkwood/board-iomega_ix2_200.c
··· 20 20 .duplex = DUPLEX_FULL, 21 21 }; 22 22 23 + static struct mv643xx_eth_platform_data iomega_ix2_200_ge01_data = { 24 + .phy_addr = MV643XX_ETH_PHY_ADDR(11), 25 + }; 26 + 23 27 void __init iomega_ix2_200_init(void) 24 28 { 25 29 /* 26 30 * Basic setup. Needs to be called early. 27 31 */ 28 - kirkwood_ge01_init(&iomega_ix2_200_ge00_data); 32 + kirkwood_ge00_init(&iomega_ix2_200_ge00_data); 33 + kirkwood_ge01_init(&iomega_ix2_200_ge01_data); 29 34 }
+5 -11
arch/arm/mach-mvebu/irq-armada-370-xp.c
··· 61 61 */ 62 62 static void armada_370_xp_irq_mask(struct irq_data *d) 63 63 { 64 - #ifdef CONFIG_SMP 65 64 irq_hw_number_t hwirq = irqd_to_hwirq(d); 66 65 67 66 if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ) ··· 69 70 else 70 71 writel(hwirq, per_cpu_int_base + 71 72 ARMADA_370_XP_INT_SET_MASK_OFFS); 72 - #else 73 - writel(irqd_to_hwirq(d), 74 - per_cpu_int_base + ARMADA_370_XP_INT_SET_MASK_OFFS); 75 - #endif 76 73 } 77 74 78 75 static void armada_370_xp_irq_unmask(struct irq_data *d) 79 76 { 80 - #ifdef CONFIG_SMP 81 77 irq_hw_number_t hwirq = irqd_to_hwirq(d); 82 78 83 79 if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ) ··· 81 87 else 82 88 writel(hwirq, per_cpu_int_base + 83 89 ARMADA_370_XP_INT_CLEAR_MASK_OFFS); 84 - #else 85 - writel(irqd_to_hwirq(d), 86 - per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS); 87 - #endif 88 90 } 89 91 90 92 #ifdef CONFIG_SMP ··· 136 146 unsigned int virq, irq_hw_number_t hw) 137 147 { 138 148 armada_370_xp_irq_mask(irq_get_irq_data(virq)); 139 - writel(hw, main_int_base + ARMADA_370_XP_INT_SET_ENABLE_OFFS); 149 + if (hw != ARMADA_370_XP_TIMER0_PER_CPU_IRQ) 150 + writel(hw, per_cpu_int_base + 151 + ARMADA_370_XP_INT_CLEAR_MASK_OFFS); 152 + else 153 + writel(hw, main_int_base + ARMADA_370_XP_INT_SET_ENABLE_OFFS); 140 154 irq_set_status_flags(virq, IRQ_LEVEL); 141 155 142 156 if (hw == ARMADA_370_XP_TIMER0_PER_CPU_IRQ) {