hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// SPDX-License-Identifier: GPL-2.0
/*
 * SDK7786 FPGA IRQ Controller Support.
 *
 * Copyright (C) 2010  Matt Fleming
 * Copyright (C) 2010  Paul Mundt
 */
#include <linux/irq.h>
#include <mach/fpga.h>
#include <mach/irq.h>
 
enum {
   ATA_IRQ_BIT        = 1,
   SPI_BUSY_BIT        = 2,
   LIRQ5_BIT        = 3,
   LIRQ6_BIT        = 4,
   LIRQ7_BIT        = 5,
   LIRQ8_BIT        = 6,
   KEY_IRQ_BIT        = 7,
   PEN_IRQ_BIT        = 8,
   ETH_IRQ_BIT        = 9,
   RTC_ALARM_BIT        = 10,
   CRYSTAL_FAIL_BIT    = 12,
   ETH_PME_BIT        = 14,
};
 
void __init sdk7786_init_irq(void)
{
   unsigned int tmp;
 
   /* Enable priority encoding for all IRLs */
   fpga_write_reg(fpga_read_reg(INTMSR) | 0x0303, INTMSR);
 
   /* Clear FPGA interrupt status registers */
   fpga_write_reg(0x0000, INTASR);
   fpga_write_reg(0x0000, INTBSR);
 
   /* Unmask FPGA interrupts */
   tmp = fpga_read_reg(INTAMR);
   tmp &= ~(1 << ETH_IRQ_BIT);
   fpga_write_reg(tmp, INTAMR);
 
   plat_irq_setup_pins(IRQ_MODE_IRL7654_MASK);
   plat_irq_setup_pins(IRQ_MODE_IRL3210_MASK);
}