Skip to content

Instantly share code, notes, and snippets.

@artizirk
Created June 11, 2020 10:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save artizirk/636e3fe9320bb0f6af9c419a79157346 to your computer and use it in GitHub Desktop.
Save artizirk/636e3fe9320bb0f6af9c419a79157346 to your computer and use it in GitHub Desktop.
Cubietruck Allwinner A20 VGA output on mainline Armbian
/dts-v1/;
/plugin/;
/* Based on https://github.com/wens/linux/commits/sun4i-drm-tve-vga-wip */
/* Tested with Cubetruck */
/* save it somewhere and run sudo armbian-add-overlay vga.dts */
/ {
compatible = "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5";
fragment@0 {
target-path = "/soc";
__overlay__ {
tve0: tv-encoder@1c0a000 {
compatible = "allwinner,sun4i-a10-tv-encoder";
reg = <0x01c0a000 0x1000>;
clocks = <&ccu 54>; /* #define CLK_AHB_TVE0 54 */
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
tve0_in_tcon0: endpoint {
remote-endpoint = <&tcon0_out_tve0>;
};
};
tve0_out: port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
/* endpoint number denotes the TVOUT on the SoC used */
tve0_out_g: endpoint@0 {
reg = <0>; /* TVOUT 0 */
allwinner,tve-source = <4>; /* Y/G */
remote-endpoint = <&vga_connector_in_g>;
};
tve0_out_b: endpoint@1 {
reg = <1>; /* TVOUT 1 */
allwinner,tve-source = <5>; /* U/Pb/B */
remote-endpoint = <&vga_connector_in_b>;
};
tve0_out_r: endpoint@2 {
reg = <2>; /* TVOUT 2 */
allwinner,tve-source = <6>; /* V/Pr/R */
remote-endpoint = <&vga_connector_in_r>;
};
};
};
};
};
};
fragment@1 {
target-path = "/soc/lcd-controller@1c0c000/ports/port@1";
__overlay__ {
tcon0_out_tve0: endpoint@2 {
reg = <2>;
remote-endpoint = <&tve0_in_tcon0>;
allwinner,tcon-channel = <1>;
};
};
};
fragment@2 {
target-path = "/";
__overlay__ {
vga-connector {
compatible = "vga-connector";
label = "vga";
ddc-i2c-bus = <&i2c2>;
port {
#address-cells = <1>;
#size-cells = <0>;
vga_connector_in_r: endpoint@0 {
reg = <0>;
remote-endpoint = <&tve0_out_r>;
};
vga_connector_in_g: endpoint@1 {
reg = <1>;
remote-endpoint = <&tve0_out_g>;
};
vga_connector_in_b: endpoint@2 {
reg = <2>;
remote-endpoint = <&tve0_out_r>;
};
/* usage of tve0 implies h/v sync from tcon0 */
};
};
};
};
};
@pingvincible
Copy link

Hi, can you help me with this script? I've installed Armbian_21.02.3_Cubietruck_buster_current_5.10.21 on sdcard. HDMI works great, after running sudo armbian-add-overlay vga.dts HDMI stops to work. So both HDMI and VGA displays shows nothing after u-boot loaded.

Any help will be appreciated!
Thanks in advance!

@artizirk
Copy link
Author

artizirk commented Apr 8, 2021

Its quite possible that device tree has changed and this overlay no longer works. I dont have access to the hardware to test it out.

To recover your Armbian install you have to mount your SD card and remove the vga overlay from the /boot folder. Or use uart serial console.

@pingvincible
Copy link

I've restored settings through SSH. No problem with that.
Can you tell me please, what version of Armbian have you used with this script?

@artizirk
Copy link
Author

artizirk commented Apr 9, 2021

It was probably Armbian 20.05 buster with 5.4 kernel, tho im not sure. The devicetree overlay itself is based on 5.2 kernel. There has been quite some activity around Display Engine driver in linux-sunxi mailinglist, probably thats why it no longer works.
(I should probably find some free time to fix it and push it to upstream as my first patch to linux kernel...)

@pingvincible
Copy link

Thank you, it would be great!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment