Fairphone 4 no Linux Mainline: Câmera avança com suporte CAMSS para o SM6350

Foco no open source: câmera do Fairphone 4 avança no kernel Linux!

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 nativo: a versão 3 dos patches adiciona o subsistema de câmera (CAMSS) do Snapdragon SM6350 diretamente ao Linux mainline.
  • Hardware real: o código já foi validado com sucesso no smartphone sustentável Fairphone 4, controlando o fluxo de dados dos sensores Sony IMX576 e IMX582.
  • Correção colaborativa: um falso alerta de falha no relógio mestre da câmera foi diagnosticado pela comunidade como um problema de sincronia de votos no subsistema NoC, já encaminhado para solução.
  • Transição segura: mantenedores concordaram em aprovar o código na arquitetura atual para não atrasar o suporte, deixando grandes reestruturações do driver para o ciclo do kernel 6.20 ou 7.0.

Luca Weiss enviou a versão 3 (v3) de uma série de patches que adiciona suporte ao subsistema de câmera (CAMSS) do Qualcomm SM6350. Este é o processador que equipa o Fairphone 4, um marco importante para a comunidade que busca rodar o kernel Linux “mainline” em dispositivos móveis focados em sustentabilidade e longevidade.

Os patches incluem os bindings da árvore de dispositivos (Device Tree), o driver de hardware e a configuração para ativar os nós do CAMSS. Weiss testou o código com sucesso no Fairphone 4 usando drivers em desenvolvimento para os sensores Sony IMX576 e IMX582, confirmando que o “pipeline” de captura de imagem está funcional.

O que é CAMSS e por que é importante?

O CAMSS (Camera Subsystem) é o bloco de hardware dentro dos processadores Snapdragon responsável por receber os dados crus (raw) do sensor de imagem, processá-los (usando componentes como VFE/ISP) e entregá-los ao sistema operacional. Sem o suporte adequado do CAMSS no kernel, a câmera do smartphone simplesmente não funciona.

Neste patch, o suporte foi adicionado à família de drivers qcom/camss, mapeando os recursos de hardware do SM6350, incluindo os receptores de interface (CSIPHY e CSID) e os processadores de imagem (VFE).

O mistério do relógio travado

Durante os testes, Weiss notou um comportamento peculiar. Ao parar o fluxo da câmera, o kernel emitia um aviso:

gcc_camera_axi_clk status stuck at 'on'

Apesar do aviso assustador na tela (um stack trace completo do kernel), a câmera continuava funcionando perfeitamente, e a ferramenta de debug indicava que o relógio realmente desligava quando devia.

O mantenedor Konrad Dybcio e o desenvolvedor Imran Shaik mergulharam no problema. Shaik explicou que o relógio mestre (RCG) é controlado por outro subsistema (o Network on Chip – NoC). Quando o driver tenta desligar o relógio da câmera, ele não tem o “voto” necessário no NoC, causando uma falha temporária na verificação de status.

A solução sugerida foi alterar a forma como o kernel verifica o desligamento (usando BRANCH_HALT_SKIP ou BRANCH_HALT_VOTED), evitando que o sistema entre em pânico por um falso positivo.

Evolução da arquitetura e o futuro dos sensores

A revisão dos patches também trouxe à tona uma discussão antiga sobre a arquitetura do driver. Krzysztof Kozlowski questionou se a comunidade havia abandonado a ideia de separar os dispositivos CSIPHY (camada física do sensor) do bloco principal do CAMSS no código.

Bryan O’Donoghue esclareceu que a separação não foi abandonada, mas está aguardando as próximas janelas de merge do kernel (6.20 ou 7.0) para ser implementada. Enquanto isso, é seguro adicionar novos chips (como o SM6350) usando a estrutura atual, garantindo que o Fairphone 4 e outros dispositivos não fiquem bloqueados por uma reestruturação de código.

Status da implementação

Com a versão 3, os bindings foram aprovados (Reviewed-by: Krzysztof Kozlowski) e o driver principal recebeu o selo verde de Bryan O’Donoghue. Assim que o problema do relógio for alinhado com a equipe de gerenciamento de energia, o suporte à câmera do SM6350 deve ser integrado ao Linux mainline.

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.