diff options
author | Jonas Gorski <jogo@openwrt.org> | 2013-03-21 10:03:17 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2013-05-07 19:19:03 -0400 |
commit | 2c8aaf71b0a4738ae8cb70d9367089bdb892aea3 (patch) | |
tree | 5ed40900de84142b9c4ed3812001154538f7cdde /arch/mips/bcm63xx/irq.c | |
parent | 13be798c57ebe5df09254832330f48c936ac39fd (diff) |
MIPS: BCM63XX: add basic BCM6362 support
Add basic support for detecting and booting the BCM6362.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/5009/
Acked-by: John Crispin <blogic@openwrt.org>
Diffstat (limited to 'arch/mips/bcm63xx/irq.c')
-rw-r--r-- | arch/mips/bcm63xx/irq.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/mips/bcm63xx/irq.c b/arch/mips/bcm63xx/irq.c index da24c2bd9b7c..c0ab3887f42e 100644 --- a/arch/mips/bcm63xx/irq.c +++ b/arch/mips/bcm63xx/irq.c | |||
@@ -82,6 +82,17 @@ static void __internal_irq_unmask_64(unsigned int irq) __maybe_unused; | |||
82 | #define ext_irq_cfg_reg1 PERF_EXTIRQ_CFG_REG_6358 | 82 | #define ext_irq_cfg_reg1 PERF_EXTIRQ_CFG_REG_6358 |
83 | #define ext_irq_cfg_reg2 0 | 83 | #define ext_irq_cfg_reg2 0 |
84 | #endif | 84 | #endif |
85 | #ifdef CONFIG_BCM63XX_CPU_6362 | ||
86 | #define irq_stat_reg PERF_IRQSTAT_6362_REG | ||
87 | #define irq_mask_reg PERF_IRQMASK_6362_REG | ||
88 | #define irq_bits 64 | ||
89 | #define is_ext_irq_cascaded 1 | ||
90 | #define ext_irq_start (BCM_6362_EXT_IRQ0 - IRQ_INTERNAL_BASE) | ||
91 | #define ext_irq_end (BCM_6362_EXT_IRQ3 - IRQ_INTERNAL_BASE) | ||
92 | #define ext_irq_count 4 | ||
93 | #define ext_irq_cfg_reg1 PERF_EXTIRQ_CFG_REG_6362 | ||
94 | #define ext_irq_cfg_reg2 0 | ||
95 | #endif | ||
85 | #ifdef CONFIG_BCM63XX_CPU_6368 | 96 | #ifdef CONFIG_BCM63XX_CPU_6368 |
86 | #define irq_stat_reg PERF_IRQSTAT_6368_REG | 97 | #define irq_stat_reg PERF_IRQSTAT_6368_REG |
87 | #define irq_mask_reg PERF_IRQMASK_6368_REG | 98 | #define irq_mask_reg PERF_IRQMASK_6368_REG |
@@ -170,6 +181,16 @@ static void bcm63xx_init_irq(void) | |||
170 | ext_irq_end = BCM_6358_EXT_IRQ3 - IRQ_INTERNAL_BASE; | 181 | ext_irq_end = BCM_6358_EXT_IRQ3 - IRQ_INTERNAL_BASE; |
171 | ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6358; | 182 | ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6358; |
172 | break; | 183 | break; |
184 | case BCM6362_CPU_ID: | ||
185 | irq_stat_addr += PERF_IRQSTAT_6362_REG; | ||
186 | irq_mask_addr += PERF_IRQMASK_6362_REG; | ||
187 | irq_bits = 64; | ||
188 | ext_irq_count = 4; | ||
189 | is_ext_irq_cascaded = 1; | ||
190 | ext_irq_start = BCM_6362_EXT_IRQ0 - IRQ_INTERNAL_BASE; | ||
191 | ext_irq_end = BCM_6362_EXT_IRQ3 - IRQ_INTERNAL_BASE; | ||
192 | ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6362; | ||
193 | break; | ||
173 | case BCM6368_CPU_ID: | 194 | case BCM6368_CPU_ID: |
174 | irq_stat_addr += PERF_IRQSTAT_6368_REG; | 195 | irq_stat_addr += PERF_IRQSTAT_6368_REG; |
175 | irq_mask_addr += PERF_IRQMASK_6368_REG; | 196 | irq_mask_addr += PERF_IRQMASK_6368_REG; |
@@ -458,6 +479,7 @@ static int bcm63xx_external_irq_set_type(struct irq_data *d, | |||
458 | case BCM6338_CPU_ID: | 479 | case BCM6338_CPU_ID: |
459 | case BCM6345_CPU_ID: | 480 | case BCM6345_CPU_ID: |
460 | case BCM6358_CPU_ID: | 481 | case BCM6358_CPU_ID: |
482 | case BCM6362_CPU_ID: | ||
461 | case BCM6368_CPU_ID: | 483 | case BCM6368_CPU_ID: |
462 | if (levelsense) | 484 | if (levelsense) |
463 | reg |= EXTIRQ_CFG_LEVELSENSE(irq); | 485 | reg |= EXTIRQ_CFG_LEVELSENSE(irq); |