Skip to content

Instantly share code, notes, and snippets.

@artizirk

artizirk/vga.dts

Created Jun 11, 2020
Embed
What would you like to do?
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

This comment has been minimized.

Copy link

@pingvincible pingvincible commented Apr 8, 2021

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

This comment has been minimized.

Copy link
Owner Author

@artizirk 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

This comment has been minimized.

Copy link

@pingvincible pingvincible commented Apr 9, 2021

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

This comment has been minimized.

Copy link
Owner Author

@artizirk 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

This comment has been minimized.

Copy link

@pingvincible pingvincible commented Apr 9, 2021

Thank you, it would be great!

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