- O Kernel Linux 7.0-rc1 agora suporta nativamente multiplexadores para alternar entre eMMC e microSD em hardware Renesas.
- A atualização remove a necessidade de configurações manuais rígidas via GPIO ou macros no Device Tree para o driver SDHI.
- O desenvolvedor Josua Mayer liderou a refatoração, introduzindo funções genéricas que limpam o código e evitam logs de erro falsos.
- As melhorias no subsistema de multiplexadores (mux) tornam o gerenciamento de hardware opcional mais robusto e silencioso no dmesg.
- A novidade beneficia usuários de sistemas embarcados e módulos SoM, facilitando o boot em diferentes configurações de hardware.
O desenvolvedor Josua Mayer enviou recentemente a décima versão de uma série de patches que introduz melhorias significativas no subsistema de multiplexadores (mux) e no driver Renesas SDHI. A mudança, integrada ao Kernel Linux 7.0-rc1, permite que o sistema gerencie de forma nativa e automática a alternância de sinais entre diferentes tipos de armazenamento, como eMMC e cartões microSD, que compartilham o mesmo controlador físico.
A implementação resolve um problema comum em placas de desenvolvimento e sistemas embarcados da linha Renesas RZ/G2L, onde o hardware utiliza um “mux” para rotear as linhas de dados. Antes dessa atualização, os administradores e desenvolvedores precisavam recorrer a macros de pré-processador ou configurações manuais de GPIO no Device Tree para definir qual dispositivo seria utilizado, uma abordagem rígida e propensa a erros.
Essa melhoria reforça o fôlego da nova série de desenvolvimento, pois, como acompanhamos no SempreUpdate, o Kernel Linux 7.0-rc1 marca uma transição histórica focada em modernização e suporte massivo a novos dispositivos e arquiteturas.
O que isso significa na prática
Para o usuário de hardware embarcado ou sysadmin que trabalha com módulos SoM (System on Module), a principal vantagem é a flexibilidade de boot. Em muitas placas, existe um switch físico ou uma trilha que decide se o sistema deve ler o chip eMMC soldado na placa ou o cartão microSD inserido no slot.
Com os novos patches, o Kernel Linux agora entende essa estrutura de hardware de forma dinâmica. O driver consegue identificar o estado do multiplexador e configurar as linhas de comunicação corretamente durante a inicialização, sem a necessidade de “gambiarras” no código. Isso facilita a criação de imagens de sistema que funcionam em diferentes configurações de hardware sem modificações manuais.
Detalhes da implementação
A série de patches v10 não se limitou apenas ao hardware da Renesas. Seguindo as orientações dos mantenedores do subsistema MMC, Josua Mayer promoveu uma limpeza técnica no framework de multiplexadores do Kernel Linux. Foram introduzidas funções auxiliares genéricas (helpers) gerenciadas pelo dispositivo (devm), que agora podem ser compartilhadas por outros drivers, evitando a duplicação de código.
Entre as novas funções, destacam-se a devm_mux_state_get_optional_selected e a mux_control_get_optional. Elas permitem que um driver solicite o controle de um multiplexador apenas se ele estiver definido no Device Tree, tratando a ausência do recurso de forma silenciosa e elegante, em vez de disparar mensagens de erro que confundiam os usuários em versões anteriores.
| Recurso | Comportamento anterior | Nova implementação (v10) |
| Gerenciamento de Mux | Implementações locais em cada driver | Funções genéricas no núcleo do Kernel |
| Erros de Mux opcional | Disparava alertas de erro no log do sistema | Retorno nulo silencioso se for opcional |
| Seleção de estado | Manual e exigia limpeza manual no erro | Automática (devres) e limpa no encerramento |
| Configuração Renesas | Dependente de macros estáticas | Suporte via propriedade mux-states no DT |
Curiosidades e bastidores da discussão
A jornada deste patch pela lista de discussão (LKML) foi longa, chegando à sua décima revisão. O debate técnico evoluiu de uma simples adição de suporte para a Renesas para uma reestruturação parcial de como o Kernel Linux lida com multiplexadores opcionais.
Um ponto de atrito nas revisões anteriores era a poluição visual dos logs (dmesg). Os mantenedores notaram que o uso da função mux_get() imprimia erros mesmo quando a propriedade era opcional, o que gerava chamados de suporte desnecessários de usuários finais pensando que algo estava quebrado. A solução de Mayer foi refatorar a lógica interna para que o Kernel seja “educado”: ele só reclama se um componente obrigatório estiver faltando.
Quando isso chega no meu PC?
Como o patch já foi integrado à branch principal durante o ciclo de desenvolvimento do Kernel Linux 7.0-rc1, ele deve chegar como versão estável em aproximadamente dois meses. No entanto, o impacto imediato será sentido por desenvolvedores de sistemas embarcados e usuários de distribuições focadas em hardware ARM e RISC-V, que costumam adotar kernels mais recentes para suportar novos SoMs e placas de desenvolvimento.
