Red de conocimiento del abogados - Preguntas y respuestas sobre la Ley de patentes - Interrupción del kernel de Linux obteniendo el número de interrupción

Interrupción del kernel de Linux obteniendo el número de interrupción

La función platform_get_irq() se puede utilizar en el kernel de Linux para obtener el número de interrupción establecido en el archivo dts.

Prototipo de función: int platform_get_irq(struct platform_device *dev, unsigned int num)

Archivo de definición: drivers\base\platform.c

Función de adquisición de números de interrupción El proceso de llamada a platform_get_irq() es el siguiente:

rk3399 usa GICv3, correspondiente a irq_domain-gt;name.

Archivo: drivers/irqchip/irq-gic-v3.c.

La función traducir() se implementa de la siguiente manera:

Tome como ejemplo la adquisición del número de interrupción HDMI en el kernel Linux 4.4 del sistema Debian de la placa RockPI 4A.

1. Encuentre el número de interrupción

En el manual "Rockchip RK3399 TRM V1.3 Part1.pdf", puede encontrar el número de interrupción HDMI_IRQ, que es 55.

2. configuración dts

Archivo: arch/arm64/boot/dts/rockchip/rk3399.dtsi

hdmi usa la interrupción GIC_SPI, según gic_irq_domain_translate() función, debe restar 32 del número de interrupción 55 para obtener el número de interrupción 23 en dts.

Nota: interrupciones = lt; tipo de interrupción, número de interrupción, tipo de activador de interrupción, partición de interrupción (correspondiente a qué grupo de CPU, exclusiva de la interrupción de tipo PPI)

3. Controlador function

Archivo: drivers\gpu\drm\rockchip\dw_hdmi-rockchip.c

En este momento, el valor de retorno de irq es 55.

Las funciones de implementación como GIC y el registro de interrupciones se introducirán más adelante.