- Novos recursos no radar: a série de patches introduz suporte vital para Fixed PLLs, System PLLs e o controlador eMMC no SoC Amlogic T7, com foco na placa Khadas VIM4.
- A importância da organização: o envio destacou como a falta de uma "Cover Letter" e mensagens de commit repetidas podem atrasar a adoção de um código funcional.
- Regras de convivência: a quebra do encadeamento de e-mails (threading) e o suposto desrespeito ao feedback inicial geraram atritos com mantenedores experientes da LKML.
- Debate arquitetural: desenvolvedores veteranos apontaram inconsistências na nomenclatura oficial dos manuais e questionaram se o controle dos relógios não deveria ser delegado ao firmware seguro via SCMI.
- Próximos passos: o código passará por uma reestruturação completa (v3) antes de ser considerado para inclusão nas árvores oficiais do kernel.
Ronald Claveau submeteu uma série de sete patches visando expandir o suporte ao SoC Amlogic T7 (especificamente focado na placa Khadas VIM4) no kernel Linux. As atualizações introduzem suporte para Fixed PLLs (Phase-Locked Loops), relógios do sistema (SYS PLL) e ativam o armazenamento eMMC.
Embora o código traga adições importantes para o ecossistema Amlogic, a submissão foi recebida com frustração pelos mantenedores devido a falhas na organização, formatação e comunicação dos patches.
O que são PLLs e por que o eMMC importa?
Para entender a importância da atualização, precisamos olhar para os componentes que estão sendo adicionados:
- PLLs (Phase-Locked Loops): Em um processador, os PLLs são circuitos responsáveis por gerar e estabilizar as frequências de relógio (clocks) que ditam a velocidade de operação de diferentes partes do chip. O Amlogic T7 precisa de “Fixed PLLs” (FPLL) e “System PLLs” (SYS PLL) para sincronizar corretamente seus núcleos, barramentos e periféricos. Sem isso, o processador não consegue operar em suas frequências ideais.
- eMMC (embedded Multi-Media Controller): É o chip de memória de armazenamento principal de placas como a Khadas VIM4 (uma alternativa poderosa ao Raspberry Pi). A ativação do eMMC no Device Tree (arquivos
.dtse.dtsi) permite que o Linux reconheça a memória interna, essencial para dar boot no sistema e armazenar arquivos em alta velocidade.
Detalhes técnicos da implementação
Os patches incluem modificações em três áreas principais:
- Drivers de Clock: Adição das estruturas
clk_regmapno arquivot7-pll.cpara gerenciar os registradores do FPLL (comoFPLL_CTRL0aFPLL_STS). O driver também implementa divisores de frequência (fdiv2,fdiv2p5,fdiv3, etc.) críticos para derivar clocks menores a partir do cristal oscilador base (xtal). - Device Tree Bindings (dt-bindings): Atualização dos arquivos YAML e headers C para definir os novos identificadores de clock (
CLKID_FPLL,CLKID_SYS_A_SEL, etc.) de forma que o hardware possa ser descrito corretamente. - Device Tree Source (DTS/DTSI): Configuração do controlador de clock, definição dos pinos (pinctrl) para o eMMC (comandos, dados e relógio) e a configuração dos reguladores de tensão (como
emmc_1v8evcc_3v3) necessários para que o chip de memória opere com segurança.
Curiosidades e bastidores da discussão: A importância do processo
O aspecto mais notável desta submissão não foi o código em si, mas a reação da comunidade à forma como ele foi enviado. A lista de discussão (LKML) possui regras estritas para manter a organização, e a série de Ronald falhou em vários pontos cruciais.
O problema do “Cover Letter” e mensagens genéricas
Jerome Brunet e Ferass El Hafidi apontaram rapidamente que a série carecia de um “cover letter” (carta de apresentação). No desenvolvimento do kernel, quando você envia vários patches de uma vez, a mensagem 0/X serve para explicar a visão geral do projeto.
Além disso, Ferass notou que Ronald usou exatamente a mesma mensagem de commit genérica (“Add Amlogic T7 sys pll support”) em patches diferentes, dificultando o trabalho dos revisores em entender o que cada pedaço de código realmente fazia.
O caos das versões e o “threading” quebrado
A situação piorou com a intervenção do mantenedor Krzysztof Kozlowski. Ele notou que Ronald havia quebrado as regras de “threading” (encadeamento de e-mails). Em vez de agrupar os patches em uma única “conversa” de e-mail e aplicar as correções sugeridas em uma “Versão 2” oficial, Ronald enviou os patches de forma fragmentada e repetida.
Krzysztof foi incisivo ao apontar que o desenvolvedor ignorou seus comentários iniciais, reenviando patches quase idênticos poucos minutos após ter recebido feedback, o que gerou confusão sobre qual versão estava sendo revisada. Jerome Brunet tentou apaziguar, sugerindo que não houve “malícia”, apenas erros de um contribuidor de primeira viagem, mas Krzysztof demonstrou com logs de tempo que os envios foram conscientes.
Questões arquiteturais: FPLL vs MPLL e SCMI
No campo do código, Jerome Brunet fez observações técnicas vitais. Ele notou que a documentação oficial da Amlogic se refere ao componente como MPLL, mas o desenvolvedor o chamou de FPLL. No Linux, inventar nomes que não existem nos manuais de hardware é desencorajado, pois confunde futuros desenvolvedores.
Além disso, Jerome levantou a hipótese de que esses relógios específicos (PLLs fixos e divisores) deveriam, na verdade, ser fornecidos através de SCMI (System Control and Management Interface) pelo firmware seguro (como o ARM Trusted Firmware), e não gerenciados diretamente por este driver no Linux.
Próximos passos
Devido às violações de formatação de submissão e às dúvidas arquiteturais sobre o uso do SCMI e a nomenclatura correta do hardware, a série foi virtualmente rejeitada nesta iteração.
Ronald Claveau respondeu agradecendo a ajuda e prometendo corrigir a estrutura (combinando headers e documentação YAML) na próxima versão. A expectativa é que uma “Versão 3” organizada, com mensagens de commit detalhadas e, possivelmente, uma revisão sobre a delegação do clock para o SCMI, seja necessária para que o suporte do eMMC da Khadas VIM4 entre no kernel oficial.
