본문 바로가기

Programming/Linux_Kernel

linux devicetree - interrupt

원본 : liunx Documentation/devicetree/bindings/arm/gic.txt



linux document 의 설명이 애매해서 좀 더 풀어서 남긴다.


ex)

interrupt-controller@2c001000 {

compatible = "arm,cortex-a15-gic";

#interrupt-cells = <3>;

interrupt-controller;

reg = <0x2c001000 0x1000>,

      <0x2c002000 0x1000>,

      <0x2c004000 0x2000>,

      <0x2c006000 0x2000>;

interrupts = <1 9 0xf04>;

};


< #interrupt-cells 의 의미 >

#이 있다고 주석이 아니다. 3 이라는 숫자는 interrupts = < > 에 3개의 값이 들어감을 의미한다.


< interrupts 의 의미 >


The 1st cell is the interrupt type; 0 for SPI interrupts, 1 for PPI

  interrupts.


  The 2nd cell contains the interrupt number for the interrupt type.

  SPI interrupts are in the range [0-987].  PPI interrupts are in the

  range [0-15].


  The 3rd cell is the flags, encoded as follows:

bits[3:0] trigger type and level flags.

1 = low-to-high edge triggered

2 = high-to-low edge triggered (invalid for SPIs)

4 = active high level-sensitive

8 = active low level-sensitive (invalid for SPIs).

bits[15:8] PPI interrupt cpu mask.  Each bit corresponds to each of

the 8 possible cpus attached to the GIC.  A bit set to '1' indicated

the interrupt is wired to that CPU.  Only valid for PPI interrupts.

Also note that the configurability of PPI interrupts is IMPLEMENTATION

DEFINED and as such not guaranteed to be present (most SoC available

in 2014 seem to ignore the setting of this flag and use the hardware

default value). 

-> 단 flag 는 system 에 따라 의미가 크게 바뀐다.