Blame view

kernel/linux-imx6_3.14.28/arch/powerpc/sysdev/ipic.h 1.54 KB
6b13f685e   김민수   BSP 최초 추가
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  /*
   * IPIC private definitions and structure.
   *
   * Maintainer: Kumar Gala <galak@kernel.crashing.org>
   *
   * Copyright 2005 Freescale Semiconductor, Inc
   *
   * This program is free software; you can redistribute  it and/or modify it
   * under  the terms of  the GNU General  Public License as published by the
   * Free Software Foundation;  either version 2 of the  License, or (at your
   * option) any later version.
   */
  #ifndef __IPIC_H__
  #define __IPIC_H__
  
  #include <asm/ipic.h>
  
  #define NR_IPIC_INTS 128
  
  /* External IRQS */
  #define IPIC_IRQ_EXT0 48
  #define IPIC_IRQ_EXT1 17
  #define IPIC_IRQ_EXT7 23
  
  /* Default Priority Registers */
  #define IPIC_PRIORITY_DEFAULT 0x05309770
  
  /* System Global Interrupt Configuration Register */
  #define	SICFR_IPSA	0x00010000
  #define	SICFR_IPSB	0x00020000
  #define	SICFR_IPSC	0x00040000
  #define	SICFR_IPSD	0x00080000
  #define	SICFR_MPSA	0x00200000
  #define	SICFR_MPSB	0x00400000
  
  /* System External Interrupt Mask Register */
  #define	SEMSR_SIRQ0	0x00008000
  
  /* System Error Control Register */
  #define SERCR_MCPR	0x00000001
  
  struct ipic {
  	volatile u32 __iomem	*regs;
  
  	/* The remapper for this IPIC */
  	struct irq_domain		*irqhost;
  };
  
  struct ipic_info {
  	u8	ack;		/* pending register offset from base if the irq
  				   supports ack operation */
  	u8	mask;		/* mask register offset from base */
  	u8	prio;		/* priority register offset from base */
  	u8	force;		/* force register offset from base */
  	u8	bit;		/* register bit position (as per doc)
  				   bit mask = 1 << (31 - bit) */
  	u8	prio_mask;	/* priority mask value */
  };
  
  #endif /* __IPIC_H__ */