- O patch habilita os controladores Synopsys DWCMSHC no SoC K230, corrigindo a falta de acesso nativo ao armazenamento interno.
- O suporte permite o uso de memórias eMMC 5.0 a 200 MHz, garantindo alta performance de leitura e escrita em sistemas RISC-V.
- A solução foi enviada por Jiayu Du e resolve a necessidade de clocks programáveis específicos exigidos pelo hardware da Canaan.
- A implementação separa as funções de eMMC e SDIO em controladores distintos para otimizar o consumo e evitar conflitos de hardware.
- A novidade está integrada ao ciclo do Kernel Linux 7.0-rc1, com chegada às distribuições estáveis prevista para os próximos meses.
O desenvolvedor Jiayu Du enviou uma nova série de patches que introduz o suporte oficial aos controladores SDHCI (Secure Digital Host Controller Interface) para o SoC Canaan K230. Essa atualização é fundamental para habilitar o armazenamento interno e a conectividade de periféricos em dispositivos baseados nesta arquitetura RISC-V. O patch foca na integração dos controladores Synopsys DWCMSHC, garantindo que o Kernel Linux 7.0-rc1 gerencie nativamente tanto memórias eMMC quanto módulos SDIO.
O que isso significa na prática
Na prática, essa implementação permite que placas de desenvolvimento e dispositivos equipados com o processador K230 utilizem armazenamento de alta velocidade (eMMC 5.0) e expansões via cartões SD ou módulos de rede. Sem esse suporte, o sistema operacional teria dificuldades em acessar arquivos de forma eficiente ou até mesmo em realizar a inicialização (boot) a partir da memória interna. A separação dos controladores garante que cada tipo de hardware opere em sua capacidade máxima, com o MMC0 focado em estabilidade para o sistema e o MMC1 para flexibilidade de periféricos.
Detalhes da implementação
A mudança foi aplicada no subsistema MMC, afetando especificamente o driver sdhci-of-dwcmshc.c. Tecnicamente, os controladores MMC0 e MMC1 do SoC K230 possuem designs de hardware distintos, o que exigiu a criação de compatíveis separados no Device Tree. Um ponto crítico resolvido pelo patch é a ativação do modo de clock programável (SDHCI_PROG_CLOCK_MODE), um ajuste específico do fabricante necessário para que a memória eMMC consiga realizar operações de leitura e escrita sem erros.
| Recurso | MMC0 (eMMC) | MMC1 (SDIO) |
| Protocolo suportado | eMMC 5.0 / SDIO 3.0 | SDIO 3.0 (4/1-bit) |
| Frequência máxima | 200 MHz (HS200) | 50 MHz |
| Tensão de operação | 1.8V fixa | 3.3V (Sem suporte a 1.8V) |
| Finalidade principal | Armazenamento interno | Módulos Wi-Fi / Cartão SD |
Essa evolução técnica reforça o amadurecimento do suporte à 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.
Curiosidades e bastidores da discussão
Durante a revisão do patch em sua segunda versão (v2), a comunidade focou na limpeza do código de inicialização do PHY. Houve uma mudança significativa na forma como o driver acessa o PHY USB do K230, substituindo buscas genéricas por referências diretas via phandles no Device Tree. Além disso, a lógica de seleção de energia foi simplificada para evitar loops de atraso manuais, optando-se por funções padrão do Kernel Linux como read_poll_timeout, o que torna o processo de detecção do hardware mais robusto e menos propenso a falhas de temporização em diferentes ambientes.
Quando isso chega no meu PC?
Como o suporte foi integrado para o ciclo do Kernel Linux 7.0-rc1, a versão estável final deve ser lançada em aproximadamente oito a dez semanas. Para usuários de distribuições focadas em RISC-V, como o Fedora ou Debian RISC-V, o suporte deve aparecer assim que as imagens forem atualizadas para a base 7.0. Desenvolvedores que utilizam a placa CanMV-K230 já podem testar a funcionalidade compilando o kernel a partir da árvore mainline.
