- O novo driver sun8i-pwm resolve a falta de controle nativo de sinais em processadores Allwinner modernos.
- A mudança permite o ajuste preciso de ventoinhas, motores e brilho de tela em placas RISC-V e ARM.
- A solução foi desenvolvida por Aleksandr Shubin com revisões técnicas rigorosas da comunidade LKML.
- O driver utiliza uma fórmula matemática otimizada para garantir maior estabilidade no sinal de hardware.
- O suporte oficial chega com o Kernel Linux 7.0, eliminando a necessidade de patches externos.
O desenvolvedor Aleksandr Shubin enviou a 13ª versão de um conjunto de patches que introduz o driver sun8i-pwm, expandindo significativamente as capacidades de hardware para dispositivos baseados em SoCs Allwinner. O foco desta atualização no Kernel Linux 7.0 é habilitar o suporte oficial ao controlador de modulação por largura de pulso (PWM) nos processadores D1, T113-S3 e R329.
O patch resolve a ausência de suporte nativo para o gerenciamento de sinais em dispositivos que utilizam essas arquiteturas, permitindo que o sistema operacional controle com precisão componentes externos, como sistemas de iluminação, motores e controladores de brilho de tela em placas de desenvolvimento e hardware embarcado.
O que isso significa na prática
Para o usuário final e integradores de sistemas, o novo driver remove a necessidade de utilizar kernels customizados ou patches de terceiros para gerenciar funções básicas de hardware. Na prática, isso permite que uma placa RISC-V como a Allwinner D1 consiga, por exemplo, controlar a velocidade de uma ventoinha de forma dinâmica ou ajustar o brilho de um painel LCD de maneira muito mais suave. O driver agora é capaz de selecionar automaticamente a fonte de clock mais rápida disponível, o que resulta em um sinal de saída mais estável e com maior resolução de ajustes.
Detalhes da implementação
A implementação introduz o arquivo pwm-sun8i.c, um driver totalmente novo dentro do subsistema PWM. Diferente do antigo driver pwm-sun4i, esta versão foi projetada para lidar com a arquitetura moderna dos controladores da Allwinner, que agrupam canais em pares e compartilham fontes de clock e divisores.
Uma das inovações técnicas mais importantes é a lógica de seleção de clock dinâmico. O driver avalia se o “canal irmão” (sibling channel) está ativo; caso não esteja, ele tem a liberdade de alternar entre o oscilador de alta frequência (HOSC) e o clock de barramento (APB) para maximizar a precisão do ciclo de trabalho (duty cycle).
| Recurso | Antigo (sun4i) | Novo (sun8i/sun20i) |
| Canais Suportados | Configuração fixa | De 1 a 16 canais (conforme o SoC) |
| Seleção de Clock | Estática | Dinâmica entre APB e HOSC |
| Arquitetura de CPU | Foco em ARM 32-bit | RISC-V (D1) e ARM 64-bit (R329) |
| Precisão | Limitada por loops simples | Otimizada por fórmula de divisores |
Curiosidades e bastidores da discussão
A jornada deste patch na LKML foi longa, chegando agora à sua 13ª revisão, o que evidencia o rigor técnico aplicado. Durante o processo, houve uma colaboração direta de mantenedores influentes como Uwe Kleine-König, que sugeriu uma “fórmula mágica” matemática para calcular os divisores de clock (div_m e prescale_k).
Essa abordagem substituiu loops de busca exaustiva, tornando o driver mais leve para o processador e eliminando o risco de instabilidade no sinal durante o cálculo de novos períodos. Outro ponto de debate foi a nomenclatura: o driver foi renomeado de sun20i para sun8i para refletir uma compatibilidade mais ampla, abrangendo diferentes gerações de SoCs Allwinner que compartilham o mesmo design de hardware.
Essa evolução técnica reforça o amadurecimento do suporte a essa arquitetura. Vale lembrar que, como acompanhamos recentemente no SempreUpdate, o Kernel Linux 7.0 também introduziu proteções críticas de segurança CFI para RISC-V, consolidando esta versão como um marco para o hardware aberto.
Quando isso chega no meu PC?
Como o código está sendo refinado para o ciclo do Kernel Linux 7.0, a previsão é que ele seja integrado à árvore principal (mainline) nos próximos meses. Distribuições focadas em hardware embarcado e RISC-V, como Armbian e Fedora RISC-V, devem ser as primeiras a adotar a novidade. Para o usuário comum de desktop, essa mudança será transparente, mas fundamental para a estabilidade de novos dispositivos de baixo custo que chegarem ao mercado no segundo semestre de 2026.
