Présentation du projet
Le Fairphone 6 est un appareil intéressant pour le support de Linux et de postmarketOS en raison de son matériel relativement moderne et de l'investissement de Fairphone dans le support de Linux. Cependant, deux principaux obstacles empêchent son utilisation générale : le support audio et la prise en charge de la caméra. Dans le cadre d'un projet nécessitant la lecture de codes QR, nous avons cherché à rendre au moins une caméra fonctionnelle.
Composants de la caméra
Le Fairphone 6 dispose de trois caméras : une caméra arrière Sony IMX896, une caméra frontale Samsung S5KKD1 et une caméra grand angle OmniVision OV13B10. Seule la caméra grand angle OmniVision OV13B10 dispose d'un pilote Linux mainline. La caméra est composée d'une chaîne de composants : capteur d'image, CSI-2 D-PHY, CSIPHY, CSID, ISP et mémoire.
Mise en œuvre de la prise en charge de la caméra
Pour activer la caméra grand angle, nous devions enseigner au pilote qcom-camss les blocs spécifiques du SoC, décrire le matériel dans l'arbre des périphériques et configurer libcamera pour traiter les images brutes. Nous avons commencé par rechercher les informations existantes sur le matériel et les pilotes disponibles. Le SoC Qualcomm milos (SM7635) est utilisé dans le Fairphone 6, et le noyau postmarketOS est déjà capable de démarrer sur ce matériel.
CSI-2 D-PHY -> CSIPHY -> CSID -> ISP (VFE/TFE) -> mémoire
Nous avons ajouté un nouveau fichier de code pour le pilote TFE665, basé sur le pilote TFE530 existant. Nous avons également configuré les composants CSID665 et CSIPHY v2.2.1 en réutilisant les opérations génériques existantes et en ajoutant de nouvelles tables de configuration pour les voies de données et les réglages de la D-PHY.
Résultats et analyse
Après avoir configuré les composants de la caméra, nous avons rencontré un problème avec les trames toutes noires. Nous avons découvert que le problème était dû à un manque de configuration pour les voies de données et les réglages de la D-PHY. Nous avons ajouté les configurations nécessaires et la caméra a commencé à fonctionner correctement.