SoundWire no kernel linux 7.0-rc1: novos drivers e código mais limpo

Som sem falhas: kernel linux 7.0 refina o soundwire e ativa o áudio em novos laptops!

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...
  • Suporte para avell b.on: o kernel linux 7.0 traz correções específicas para garantir que o áudio e o microfone funcionem perfeitamente nos laptops da marca avell e seus equivalentes intel nuc.
  • Qualcomm v2.2.0: o subsistema foi atualizado para suportar a nova versão do protocolo de áudio da qualcomm, preparando o terreno para a próxima geração de processadores snapdragon.
  • Limpeza de api: uma refatoração no código removeu o retorno de valores em funções de remoção de drivers, alinhando o soundwire às práticas modernas e seguras do kernel.
  • Wake-on-voice: o codec cs42l45 agora é capaz de acordar o sistema do modo de suspensão, permitindo o uso de comandos de voz com baixo consumo de energia.
  • Código mais seguro: a adoção de macros de travamento automático (guard mutex) no driver da qualcomm reduz a complexidade do código e previne erros de travamento do sistema.

Linus Torvalds realizou a integração das atualizações do subsistema SoundWire para o kernel linux 7.0-rc1, enviadas pelo mantenedor Vinod Koul. Este ciclo traz uma refatoração significativa na API interna de drivers, modernizando como o kernel lida com a remoção de dispositivos de áudio, além de adicionar suporte para novas controladoras Qualcomm e laptops Avell.

O SoundWire é um padrão de interface de áudio cada vez mais comum em laptops modernos e dispositivos móveis, substituindo conexões legadas para permitir áudio de alta fidelidade com menor consumo de energia.

O impacto real no uso diário

Para usuários de notebooks modernos, especialmente modelos Avell e aqueles com chips Qualcomm de última geração, essa atualização garante que o som funcione corretamente, sem falhas de detecção ou microfones mudos. A limpeza do código, embora invisível para o usuário final, torna o sistema mais estável e fácil de manter para os desenvolvedores.

Mudanças na API e refatoração para desenvolvedores

A mudança mais extensa neste ciclo é estrutural. O subsistema SoundWire abandonou o retorno de valores inteiros nas funções de remoção dos drivers, adotando o retorno void.

O motivo dessa alteração é que, no modelo de drivers do Linux, falhar em uma função de remover raramente faz sentido, pois o dispositivo está sendo desconectado ou o driver descarregado de qualquer maneira. O kernel está migrando subsistemas para void para refletir que a remoção não deve falhar. Isso exigiu a atualização de dezenas de drivers de codecs, incluindo Realtek, Cirrus Logic e Maxim, para remover o retorno zero e ajustar a assinatura da função.

Além disso, o código agora utiliza métodos de barramento diretos para funções de sondagem, remoção e desligamento, simplificando o registro de drivers.

Novos suportes de hardware

Suporte para Qualcomm SoundWire v2.2.0: o suporte para a versão mais recente do IP de SoundWire da Qualcomm foi adicionado. Isso prepara o terreno para a próxima geração de SoCs Snapdragon que utilizam essa revisão do controlador de áudio.

Suporte para Avell B.ON: foi adicionado um ajuste específico para o laptop Avell B.ON. Identificado como uma remarcação do Intel NUC 15 “Bishop County”, este ajuste garante que o mapeamento dos pinos de áudio funcione corretamente, resolvendo problemas de som mudo ou microfone não detectado neste modelo específico.

Wake-on-Voice para CS42L45: o codec Cirrus Logic CS42L45 foi adicionado à lista de dispositivos capazes de acordar o sistema. Isso é essencial para funcionalidades de detecção de voz de baixo consumo em estado de suspensão.

Modernização de código e limpeza

Uma mudança interessante para entusiastas de programação C no kernel é o uso da macro guard no driver da Qualcomm. Isso reduz o risco de deadlocks e simplifica a leitura do código, evitando a mistura de lógica de limpeza com instruções goto, adotando um estilo de travamento automático similar ao RAII.

Compartilhe este artigo
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre GNU/Linux, Software Livre e Código Aberto, dedica-se a descomplicar o universo tecnológico para entusiastas e profissionais. Seu foco é em notícias, tutoriais e análises aprofundadas, promovendo o conhecimento e a liberdade digital no Brasil.