Link copiato negli appunti!

Come impostare il display MIPI Riverdi 7″ in Linux?

È possibile testare e convalidare un display MSI-DSI (driver LCD EK79007AD3+EK73217BCGA) in Linux utilizzando un modello di sovrapposizione dell’albero dei dispositivi.

Un driver generico “simple-panel-dsi” disponibile nel kernel di sistema può essere utilizzato in Linux per far funzionare la maggior parte dei display MIPI che, grazie alla possibilità di assegnare una sequenza di inizializzazione nel campo “panel-init-sequence”, possono essere utilizzati per far funzionare la maggior parte dei display senza la necessità di preparare un driver dedicato. Questa soluzione permette di riconfigurare rapidamente il display, senza dover compilare ogni volta l’intero kernel del sistema: la modifica dei parametri di temporizzazione o del codice di inizializzazione è possibile ricompilando comodamente i file DeviceTree. Di seguito viene riportato un estratto della descrizione di DeviceTree relativa all’aggiunta del supporto per i display:

&dsi0 {

status = “ok”;

mipi_panel: mipi-panel {

compatibile = “simple-panel-dsi”;

reg = <0>;

enable-gpios = <&gpio6 3 GPIO_ACTIVE_LOW>;

reset-gpios = <&gpio6 4 GPIO_ACTIVE_HIGH>;

bpc = <8>;

bus-format = <0x100a>;

width-mm = <154>;

altezza-mm = <85>;

prepare-delay-ms = <10>;

reset-delay-ms = <20>;

init-delay-ms = <120>;

dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM)>;

dsi, formato = ;

dsi,corsie = <2>;

panel-init-sequence = [

15 00 02 87 5a

15 00 02 B2 10

15 00 02 80 4B

15 00 02 81 FF

15 00 02 82 1A

15 00 02 83 88

15 00 02 84 8F

15 00 02 85 35

15 00 02 86 B0

05 00 01 21

];

visualizza-tempi {

native-mode = <&timing2>;

timing2: timing2 {

frequenza di clock = <33000000>; //dclk

hactive = <1024>; //hactive

vactive = <600>; //vactive

hfront-porch = <60>; //hfp

hback-porch = <60>; //hbp

hsync-len = <10>; //hsa

vfront-porch = <5>; //vfp

vsync-len = <2>; //vsa

vback-porch = <10>; //vbp

hsync-active = <0>; /controllo dell’hync attivo

vsync-active = <0>; //controllo divsync attivo

de-active = <1>; //den controllo attivo

pixelclk-active = <0>; // controllo attivo del dclk

};

};

};

};

La descrizione di cui sopra deve essere adattata alla descrizione del DeviceTree utilizzato nel tuo sistema, nonché ai tipi di visualizzazione (parametri di temporizzazione e sequenza di inizializzazione, se necessario). Inoltre, assicurarsi di abilitare il driver nel kernel di sistema.