Quais são os valores da propriedade de interrupções da árvore de dispositivos?

1

Estou tentando entender a propriedade interrupts da árvore de dispositivos e não consigo encontrar uma boa explicação.

Por exemplo, se houver um nó com as seguintes linhas:

interrupt-parent = <&gpio5>;
interrupts = <9 0>;

Como descubro com que números mágicos <9 0> estão relacionados? É um bitmask, número de porta do gpio, número de pinos, prioridade, borda ou outra coisa?

O nó interrupt-parent se parece com isso (eu acho que seria semelhante para a maioria dos dispositivos ARM):

gpio5: gpio@1234 {
   compatible = "fsl,imx7d-gpio", "fsl,imx35-gpio";  
   reg = <0x30240000 0x10000>;  
   interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
           <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
   gpio-controller;
   #gpio-cells = <2>;
   interrupt-controller;
   #interrupt-cells = <2>;
};
    
por sfrank 25.09.2017 / 14:29

2 respostas

2

Você pode obter algumas informações da documentação do kernel que descreve a propriedade de interrupções.

Continua com o exemplo do Controlador de interrupção OpenPIC que tem 2 células:

The first cell defines the interrupt number. The second cell defines the sense and level information. Sense and level information should be encoded as follows:

  0 = low to high edge sensitive type enabled
  ...

Seu caso é provavelmente semelhante, mas geralmente é necessário que você tenha conhecimento profundo do chipset e do driver.

    
por 25.09.2017 / 19:27
1

Como meuh sugeriu , esta informação deve estar disponível no documentação de bindings de árvore de dispositivos kernel . No entanto, pode não ser óbvio qual arquivo analisar, então aqui estão alguns conselhos:

Primeiro, verifique a (s) cadeia (s) de propriedade compatible no nó interrupt-parent (por exemplo, gpio5 neste caso). Se tiver sorte, a documentação terá uma lista de todas as sequências de propriedades compatíveis às quais as informações estão relacionadas e o arquivo será exibido diretamente ao pesquisar por qualquer uma dessas cadeias.
Se esse não for o caso, você terá que navegar pelos diretórios da documentação e procurar por arquivos com um nome semelhante à cadeia de propriedades compatível. Muitas vezes, a mesma documentação se aplica a vários dispositivos e itens como número do modelo foram omitidos no nome do arquivo. Você também pode procurar números de modelo mais antigos.

Verifique primeiro os subdiretórios relevantes (neste caso, ele está localizado no diretório "gpio").

Esteja ciente das alterações de nome. Por exemplo, o Freescale ("fsl") é agora propriedade do NXP, portanto, os nomes dos arquivos contendo "fsl" e "nxp" podem fornecer informações úteis.

    
por 26.09.2017 / 12:10