Estou em uma placa personalizada usando um i.MX6. Estou usando Yocto (Pyro) para construir meu kernel (4.14.16).
Estou usando a entrada de árvore de dispositivo imx6qdl.dtsi genérica para PWM2 para acionar o ventilador e parece funcionar bem. O ventilador possui uma entrada Tacômetro, que é conectada ao GPIO2_7. Como faço para ler a velocidade do ventilador? Eu vi blobs de árvore de dispositivos para dispositivos de refrigeração, mas nenhum dos exemplos parece ter um tacômetro para monitorar a velocidade do ventilador.
Não consegui encontrar uma solução de árvore de dispositivos, mas encontrei trechos de código suficientes para fazer um aplicativo para lê-lo. Basicamente eu apenas configurei uma interrupção no GPIO e usei
clock_gettime
para medir o período entre as bordas. Requer muita filtragem, mas estou usando apenas para garantir que o ventilador esteja funcionando, então está tudo bem.