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

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

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.