Topic: Force LCD enable with custom EDID on disk

Hi,

Not sure if this should go into hardware or software, but ...
  I am trying to get a pixelQi 1024x600 LCD panel hooked up to the LVDS headers on the board. All the connections have been double-checked, and the LCD works fine through a HDMI-to-LVDS external controller board. But when hooked up directly, the LCD lights up with a penguin splash in the top left corner during boot, but very quickly goes dark. The boot messages (through UART debug port) indicate that the panel is not being detected, and HDMI is being defaulted to instead. A grep of dmesg output for the term "display" reveals the following:

[    0.920494] lcd-display-power: 3300 mV
[    0.920565] reg-fixed-voltage display-regulator: lcd-display-power supplying 3300000uV
[    2.485454] imx-drm display-subsystem: bound imx-ipuv3-crtc.0 (ops ipu_crtc_ops)
[    2.492967] imx-drm display-subsystem: bound imx-ipuv3-crtc.4 (ops ipu_crtc_ops)
[    2.500436] imx-drm display-subsystem: bound imx-ipuv3-crtc.5 (ops ipu_crtc_ops)
[    2.507927] imx-drm display-subsystem: bound imx-ipuv3-crtc.1 (ops ipu_crtc_ops)
[    2.523233] imx-drm display-subsystem: bound 120000.hdmi (ops hdmi_ops)
[    2.530065] imx-drm display-subsystem: No connectors reported connected with modes
[    2.568543] imx-drm display-subsystem: fb0:  frame buffer device
[    2.574580] imx-drm display-subsystem: registered panic notifier
[   11.992234] lcd-display-power: disabling
[   26.043674] systemd-default-display-manager-generator[218]: /etc/X11/default-display-manager points at lightdm while the default systemd unit is . Reconfiguring lightdm as default.


And a grep search for "lcd" returned these:

[    0.710804] lcd-lvds-power: 3300 mV
[    0.710899] reg-fixed-voltage lcd-regulator: lcd-lvds-power supplying 3300000uV
[    0.920494] lcd-display-power: 3300 mV
[    0.920565] reg-fixed-voltage display-regulator: lcd-display-power supplying 3300000uV
[   11.992234] lcd-display-power: disabling


I cut the EDID data and clock lines going to the LCD and the results were the same. I suspect that most of the pixelQi LCD panels floating around on the internet never got the EDID uploaded into their EEPROMs since the company sunk (I intend to confirm this by trying to read the EDID data from the LCD soon). The external HDMI-to-LVDS controller board did not have EDID clock and data lines going into the LCD, as it had pixelQi specific EDID loaded into its firmware. I got the full 128 bytes of EDID data from the pixelQi datasheet (it had a couple of errors that were easy to spot), and am right now trying to use the "drm_kms_helper.edid_firmware=<name>.bin" feature in the kernel command line, but not having any success. I am trying to find the name for the lvds connector (the lvds equivalent to HDMI-A-1) so I can force it to remain enabled, but I don't see it inside /sys/class/drm/.

Does anyone know how to go about doing this? I want to solve this through linux instead of having to upload the EDID firmware into my LCD.

Re: Force LCD enable with custom EDID on disk

Ouch.  I see what's going on.  There's a regulator called lcd-lvds-power that enables/disables that whole port.  It's defined at:

https://github.com/xobs/novena-linux/bl … na.dts#L86

The only thing using it is the it6251, which is understandably not detected by your setup because it doesn't exist.  Linux sees that it's not in use, so it disables it.  Helpful.

The "correct" solution would be to set the backlight regulator to be parented by the lvds regulator, and I'll go about fixing that.

If you can modify the device tree file, try just deleting lcd-display-power, or try making this modification to reg_lvds_lcd:

diff --git a/arch/arm/boot/dts/imx6qdl-novena.dtsi b/arch/arm/boot/dts/imx6qdl-novena.dtsi
index 973fed1..74422db 100644
--- a/arch/arm/boot/dts/imx6qdl-novena.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-novena.dtsi
@@ -71,6 +71,7 @@
                        regulator-name = "lcd-lvds-power";
                        regulator-min-microvolt = <3300000>;
                        regulator-max-microvolt = <3300000>;
+                       parent-supply = <&reg_display>;
 
                        gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
                        enable-active-high;

Or I'll have a new kernel for you to try shortly.

Re: Force LCD enable with custom EDID on disk

Can you try installing https://nas.xobs.io/novena/20150826/lin … _armhf.deb and see if that helps?

Re: Force LCD enable with custom EDID on disk

Barely related question: where did you get the pixelQi display from?

Re: Force LCD enable with custom EDID on disk

Hi singpolyma, I got the screen from adafruit. They sell it with a HDMI-to-LVDS controller board. You can get the bare LCD from ebay though.

Hi Sean,

  So I tried the three recommendations. The issue is not resolved, but there are changes.

First: adding the "parent-supply" line. This caused the same behavior, but this time, the backlight for the LCD didn't turn on. Since pixelQi is a transreflective LCD, I could see that the penguin splash was still being displayed at the beginning of boot, without the backlight. Removing the "parent-supply" line from the device tree reverts everything back.

Second: Deleting the "reg_display" definition results in a complaint during creation of device tree file because something else somewhere is refering to it (note, parent-supply line had been removed).

Third: Installing the new kernel package that you linked to in this thread. The display subsystem once again complains "No connectors reported connected with modes". However, there are new folders inside /sys/class/drm/. The contents are:

card0  card0-HDMI-A-1  card1  controlD64  renderD128  version

All except "version" are folders. "card1" and "renderD128" are new, so this is what the new kernel changed. If only there were something like "card0-LVDS-A-1", then I could use "video=LVDS-A-1:e" inside /boot/uEnv.txt and force lvds to stay enabled.
Here is my dmesg in full:

http://pages.uoregon.edu/dileep/dmesg.dump.log


BTW, unrelated but, I had to do all this with an unencrypted SDcard installation, as the kernel in the *.deb package doesn't load dm_mod. I am using luks encrypted root in my SATA disk. Thought I'd mention this.

Re: Force LCD enable with custom EDID on disk

Since you have a different panel, you'll need to manually specify the timings.  Delete the "it6251" entry, as it's referring to that power supply.

If you're hooking it directly up to the LVDS line, you'll need to make some changes to the &ldb node.  Specifically, that panel is 18-bits not 24-bits, and uses SPWG mapping not JEIDA.  Something like this (numbers taken from http://www.adafruit.com/datasheets/3Qi- … 0524.pdf):

&ldb {
        status = "okay";
        lvds-channel@0 {
                fsl,data-mapping = "spwg";
                fsl,data-width = <18>;
                status = "okay";
                display-timings {
                        1024x600p60 {
                                clock-frequency = <43970000>;
                                hactive = <1024>;
                                vactive = <600>;
                                hback-porch = <1>;
                                hfront-porch = <1>;
                                hsync-len = <158>;
                                vback-porch = <1>;
                                vfront-porch = <1>;
                                vsync-len = <19>;
                                hsync-active = <1>;
                                vsync-active = <1>;
                        };
                };
        };
};

The clock might not go at the right frequency -- that PLL is faily imprecise if I remember right.  But hopefully that'll be good enough for your panel to work.

7 (edited by dileepvr 2015-08-28 03:21:48)

Re: Force LCD enable with custom EDID on disk

So I made the ldb modifications as suggested. I also deleted "it6251" and "reg_display" entries.

Now the LCD backlight stays on forever. So Yay! In fact, the LCD goes into factory testing mode and cycles between various blank color screens and some greyscale patterns.

However, since the EDID data inside my LCD is corrupt (this has been verified using a MCU to read it), no panel is detected during boot.
And since lvds doesn't have a "connector" (unlike the hdmi, which has a connector named HDMI-A-1), I can't use some uboot magic to force-feed my own EDID to linux and command it to assume that a panel has indeed been connected.

In short, can Novena display on an LCD through the lvds port when the EDID Data and Clock lines (to the LCD panel) have been disconnected?

I am looking into just using an eeprom chip and getting the board to read that instead. Then hopefully, it interpretes that as a sign that a panel is indeed connected.

Re: Force LCD enable with custom EDID on disk

The EDID is, in fact, ignored completely.  If it's going into factory testing mode, then what's probably going on is the timing isn't correct.

You can use the Xrandr code to query the state.  There may be command-line DRM tools, but I haven't found them.

Connect via SSH and run:

systemctl stop lightdm
startx &
xrandr --display :0 --verbose

It should show you timing data for the current panel.  You might be able to set up a new mode using that interface, but it hasn't worked for me.

Another thing you might check is the clock speed.  It says one number, but it might give you a totally different frequency.  Run this to figure out what the ldb lines are actually doing:

grep ldb_ /sys/kernel/debug/clk/clk_summary

Re: Force LCD enable with custom EDID on disk

I am away from work right now. I'll try that ASAP.

The adafruit datasheet has timing information for 40 Hz and 30 Hz on pages 34 and 35. Perhaps the screen can't be run at 60 fps?

Also, everything I've been doing so far is through the UART debug port. As I understand it, that shouldn't even give me a shell if a screen was detected. Right?

At the beginning of boot, I recall seeing a line that said "No panel detected. Defaulting to HDMI..." or some such thing. How does Novena know if a panel has been connected if EDID is indeed ignored? Or does it always try to display something on the LVDS port irregardless of whether something is drawing current thorugh there?

Re: Force LCD enable with custom EDID on disk

Here is the output of the "parse-edid" script for the EDID from the datasheet (with some error correction):

Checksum Correct

Section "Monitor"
    Identifier "PQ3Qi-01"
    ModelName "PQ3Qi-01"
    VendorName "PQI"
    # Monitor Manufactured week 40 of 2009
    # EDID version 1.3
    # Digital Display
    DisplaySize 220 120
    Gamma 2.20
    Option "DPMS" "false"
    Modeline     "Mode 0" 43.97 1024 1072 1104 1184 600 603 613 619 -hsync -vsync 
    Modeline     "Mode 1" 29.32 1024 1072 1104 1184 600 603 613 619 -hsync -vsync 
    Modeline     "Mode 2" 21.99 1024 1072 1104 1184 600 603 613 619 -hsync -vsync 
EndSection

So the clock should be set for 44 fps?

I will be away from my project desk running a relay race for the next two days. Will update results of modification on Sunday.

Re: Force LCD enable with custom EDID on disk

The datasheet says the pixclk (i.e. the frequency that the LVDS bus runs at) is 21.74-46.15 MHz, with a typical rate of 43.97.  That's the "Mode 0" listed there.

I've redone the device-tree entry to match the timings you pulled there, but it looks like the panel just sums up the sync pulses and ignores the particular distinctions of front and back porches and sync lengths.

You can try fiddling with clock-frequency to get something that works.  Maybe cut it down to 30 or 35 MHz rather than 43.97.  That number will be the least critical number, and especially with LCD panels (and in particular this one) can vary by a lot.  This panel, as I said, has a huge range from 21 - 46 MHz that it'll accept.

                        1024x600p30ish {
                                clock-frequency = <43970000>;
                                hactive = <1024>;
                                vactive = <600>;
                                hback-porch = <80>;
                                hfront-porch = <48>;
                                hsync-len = <32>;
                                vback-porch = <6>;
                                vfront-porch = <3>;
                                vsync-len = <10>;
                                hsync-active = <0>;
                                vsync-active = <0>;
                        };

Re: Force LCD enable with custom EDID on disk

I have updated the device tree and tried to push the clock-frequency down to 30Mhz with no success.

Here is the unchanging grep ldb_ result:

                 ldb_di1_sel               0            0   480000000          0 0  
                    ldb_di1_div_3_5           0            0   137142857          0 0  
                       ldb_di1_podf           0            0    68571429          0 0  
                          ldb_di1           0            0    68571429          0 0  
                 ldb_di0_sel               0            0   480000000          0 0  
                    ldb_di0_div_3_5           0            0   137142857          0 0  
                       ldb_di0_podf           0            0   137142857          0 0  
                          ldb_di0           0            0   137142857          0 0  

It always reads 480000000. Here is the output of

xrandr --display :0 --verbose

command:

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
HDMI-0 disconnected (normal left inverted right x axis y axis)
    Identifier: 0x43
    Timestamp:  168161
    Subpixel:   unknown
    Clones:    
    CRTCs:      0 1 2 3
    Transform:  1.000000 0.000000 0.000000
                0.000000 1.000000 0.000000
                0.000000 0.000000 1.000000
               filter: 


Here is the opening to my screen session for the debug UART (this part doesn't get recorded by dmesg, as its really early):

U-Boot SPL 2015.04-rc1-02837-g0e39e8c (May 18 2015 - 19:11:36)
Running post-config memory test... Pass
Internal SD card
reading u-boot.img
reading u-boot.img


U-Boot 2015.04-rc1-02837-g0e39e8c (May 18 2015 - 19:11:36)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: Novena 4x
I2C:   ready
DRAM:  3.8 GiB
PMIC: PFUZE100 ID=0x10
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Using default environment

No panel detected: default to HDMI
Display: HDMI (1024x768)
In:    serial
Out:   serial
Err:   serial
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0 
reading uEnv.txt
349 bytes read in 17 ms (19.5 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
Running earlyhook ...
No video detected, using serial port
gpio: pin 110 (gpio 110) value is 1
Hold recovery button to boot to recovery, or to enter U-Boot shell.
reading zImage
5418656 bytes read in 502 ms (10.3 MiB/s)
reading novena.dtb
38866 bytes read in 27 ms (1.4 MiB/s)
Running finalhook ...
reading uInitrd
6615395 bytes read in 611 ms (10.3 MiB/s)
Kernel image @ 0x12000000 [ 0x000000 - 0x52aea0 ]
## Loading init Ramdisk from Legacy Image at 119a0000 ...
   Image Name:   Initial Ram Disk
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    6615331 Bytes = 6.3 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 11ff0000
   Booting using the fdt blob at 0x11ff0000
   Using Device Tree in place at 11ff0000, end 11ffc7d1

Starting kernel ...

Here is the full screen log : http://pages.uoregon.edu/dileep/screenlog.0

Re: Force LCD enable with custom EDID on disk

What is the output of "novena-eeprom"?  Make sure you have the "edp" flag.  If not, chances are U-Boot is deleting some things it shouldn't be.

Also, while it isn't technically used, you should still enable channel 1.  This is a feature I half-started but never completely implemented.  If it were implemented, this would be much easier.  The actual numbers are ignored, but channel_present is checked, and if it isn't there it will delete that LVDS channel.

Run something like:

novena-eeprom -1 'Modeline     "Mode 0" 43.97 1024 1072 1104 1184 600 603 613 619 -hsync -vsync' -f es8328,senoko,edp,pcie,gbit,hdmi,eepromoops,sataroot -w

Re: Force LCD enable with custom EDID on disk

No luck:(

My edp flag was missing from the eeprom, so I added it. (note: I don't have the battery board yet)

Current EEPROM settings:
    Signature:        Novena
    Version:          2
    Serial:           334
    MAC:              00:1f:11:02:16:4d
    Features:         0x1f5 (es8328,edp,pcie,gbit,hdmi,eepromoops,sataroot)
    EEPROM size:      65536
    EEPROM page size: 128
    Oops offset:      4096
    Oops length:      61440
    LVDS channel 1:
        Modeline "lvds1" 43.970  1024 1072 1104 1184   600 603 613 619 -HSync -VSync
        Flags: 0x23 (channel_present,dual_channel,data_width_8bit)
    LVDS channel 2:
        Modeline "lvds2" 4294.967  65535 131070 196605 262140   65535 131070 196605 262140 +HSync +VSync
        Flags: 0xffffffff (channel_present,dual_channel,vsync_polarity,hsync_polarity,mapping_jeida,data_width_8bit,ignore_settings) Unrecognized flags: 0xffffff80
    HDMI channel:
        Modeline "hdmi" 4294.967  65535 131070 196605 262140   65535 131070 196605 262140 -HSync -VSync
        Flags: 0x61 (channel_present,data_width_8bit,ignore_settings)

The latest screen tty dump: http://pages.uoregon.edu/dileep/screenlog.1.txt

So the problem might just be with something uboot is doing before the linux kernel and device tree even come into play?
Am I the only one having a problem with this? Is everyone else using the edp adapter?

Interesting titbit: I tried hooking up a 24LC01B EEPROM chip (with the pixel qi firmware loaded in the first 128 bytes) to the V_EDID, GND, SDA, and SCLK pins of the LVDS port to see if uboot was indeed trying to read EDID data to determine what has been connected, and it resulted in an unable to set ethernet MAC address type error before it was supposed to say "Starting Kernel ...". Disconnecting the GND pin from the chip restored normal behavior. This effect is reproducible. Let me know if that specific error message is important for this, or any other reason.

Re: Force LCD enable with custom EDID on disk

There is a "personality EEPROM" that contains things like the MAC address.  If I2C wasn't working, or if your 24LC01B is at address 0x56, it would be unable to read the EEPROM, and would fall back to using defaults.

One more thing.  Add this to your uEnv.txt:

rmlcd=true
keep_lcd true

It could also be due to a workaround we put in place where it uses the presence of the eDP board to determine if there's an LCD present.  In your case, you have no eDP board (since the Qi display speaks LVDS natively), so it will try removing the LCD entirely.  This pattern will override that, and keep the LCD around.  rmlcd=true is for the older U-Boot, keep_lcd is for the new U-Boot that we'll be releasing soon.

I'll look into what it takes to handle this in a better way.  I'll see if I can't get my hands on some Qi displays myself for testing.

16 (edited by dileepvr 2015-09-03 07:34:03)

Re: Force LCD enable with custom EDID on disk

Some good news! But still some work to be done.

Throwing those two lines into uEnv.txt caused four large tux penguins to splash on my LCD as the boot messages continued to roll out on the UART. After entering my LuKs rootsystem passphrase the boot continued, and I got the GUI login screen on my Qi LCD and simultaneously a CUI login prompt on my UART. This is cool. But not everything.

Firstly, the opening u-boot message says:

No panel detected: default to HDMI
Display: HDMI (1024x768)
In:    serial
Out:   serial
Err:   serial
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0 
reading uEnv.txt
419 bytes read in 17 ms (23.4 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
Running earlyhook ...
No video detected, using serial port

This means that I can't use a USB keyboard to enter my LukS passphrase during boot. I can't even know when to enter it since the boot messages only appear in UART, and not on the LCD screen. The LCD simply shows the Tux splashes until the boot is complete. I am fully able to use the USB keyboard (and mouse) once the GUI login screen appears on the LCD screen.

For help, here is a grep of dmesg output for 'display':

[    2.220621] imx-drm display-subsystem: bound imx-ipuv3-crtc.0 (ops ipu_crtc_ops)
[    2.228139] imx-drm display-subsystem: bound imx-ipuv3-crtc.4 (ops ipu_crtc_ops)
[    2.235630] imx-drm display-subsystem: bound imx-ipuv3-crtc.5 (ops ipu_crtc_ops)
[    2.243120] imx-drm display-subsystem: bound imx-ipuv3-crtc.1 (ops ipu_crtc_ops)
[    2.258436] imx-drm display-subsystem: bound 120000.hdmi (ops hdmi_ops)
[    2.265359] imx-drm display-subsystem: bound 2000000.aips-bus:ldb@020e0008 (ops imx_ldb_ops)
[    2.295690] imx-drm display-subsystem: fb0:  frame buffer device
[    2.301708] imx-drm display-subsystem: registered panic notifier

Note the new ldb line which earlier used to complain about not finding any connectors.
Regarding connectors, here are the contents of /sys/class/drm/:

card0  card0-HDMI-A-1  card0-LVDS-1  controlD64  version

The LVDS-1 connector is new. Using

video=LVDS-1:e

in the kernel command line doesn't resolve the remaining issue though.

I have tried adding the following lines to uEnv.txt:

preboot=usb start
stdin=usbkbd
stdout=serial,vga
stderr=serial,vga

This will cause the initial few uboot startup lines (everything up to reading the device tree) to be mirrored in both LCD and UART. But the line "Starting Kernel ..." and everything else that follows will only display in UART console, and the LCD reverts to the splash screen.

Nearly there though ^_^

Re: Force LCD enable with custom EDID on disk

Try adding this to uEnv.txt:

finalhook=setenv console-bootarg tty0

Again, it's querying i2c to determine if the edp chip is actually present to decide where to send console output.  This will override that setting.

Re: Force LCD enable with custom EDID on disk

Success! With a side of minor issues ....

The finalhook worked, but console was still eventually being set to ttymxc1 at a later stage. So all systemd messages and the cryptsetup passphrase prompt would only show up in UART. So I bruteforced bootarg settings in uEnv.txt:

rmlcd=true
keep_lcd true
preboot=usb start
stdout=serial,vga
stderr=serial,vga
earlyhook=if test "$rootdev" = "PARTUUID=4e6f7653-03"; then setenv rootdev /dev/mapper/crypt-root ; fi
finalhook=setenv console-bootarg tty0; if test "$rootdev" = "/dev/mapper/crypt-root"; then setenv initrd_addr_r 0x119a0000 ; fatload ${bootsrc} ${bootdev} ${initrd_addr_r} uInitrd ; setenv bootargs resume=/dev/mapper/crypt-swap root=/dev/mapper/crypt-root console=tty0,115200 ; fi

Now everything displays on the LCD! There is a small quirk where the first time I enter the luks passphrase for my root partition, cryptsetup complaints about it and asks for it again. But it works the second time every time.

However, since I generated my device tree file from the source files by changing some entries in a *.dtsi file, I had to use

make novena_defconfig

before running

make dtbs

. This may have been a mistake (or I was on the wrong branch), as my network card isn't being detected. This is most likely a device tree pcie issue. Here is the output of dmesg piped through grep for 'pci':

[    1.530584] ehci-pci: EHCI PCI platform driver
[   44.677825] imx6q-pcie 1ffc000.pcie: Looking up vdd3p3-supply from device tree
[   44.677838] imx6q-pcie 1ffc000.pcie: Looking up vdd3p3-supply property in node /soc/pcie@0x01000000 failed
[   44.677859] imx6q-pcie 1ffc000.pcie: Looking up vdd1p5-supply from device tree
[   44.677870] imx6q-pcie 1ffc000.pcie: Looking up vdd1p5-supply property in node /soc/pcie@0x01000000 failed
[   44.677952] imx6q-pcie 1ffc000.pcie: missing *config* reg space
[   44.986391] imx6q-pcie 1ffc000.pcie: phy link never came up
[   44.987928] imx6q-pcie 1ffc000.pcie: PCI host bridge to bus 0000:00
[   44.989260] pci_bus 0000:00: root bus resource [io  0x1000-0xffff]
[   44.990537] pci_bus 0000:00: root bus resource [mem 0x01000000-0x01efffff]
[   44.991770] pci_bus 0000:00: root bus resource [bus 00-ff]
[   44.992972] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400
[   44.992996] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
[   44.993013] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[   44.993057] pci 0000:00:00.0: supports D1
[   44.993066] pci 0000:00:00.0: PME# supported from D0 D1 D3hot D3cold
[   44.995578] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[   44.995646] pci 0000:00:00.0: BAR 0: assigned [mem 0x01000000-0x010fffff]
[   44.996698] pci 0000:00:00.0: BAR 6: assigned [mem 0x01100000-0x0110ffff pref]
[   44.997674] pci 0000:00:00.0: PCI bridge to [bus 01]
[   44.998818] pcieport 0000:00:00.0: Signaling PME through PCIe PME interrupt
[   44.999807] pcie_pme 0000:00:00.0:pcie01: service driver pcie_pme loaded
[   84.987136] vgaarb: this pci device is not a vga device
[   84.999300] vgaarb: this pci device is not a vga device
[   99.367976] vgaarb: this pci device is not a vga device

Those

property in node /soc/pcie@0x01000000 failed

messages are new, and do not appear when using in recovery mode.

Any easy way to fix that?

Thanks for all your help!

Re: Force LCD enable with custom EDID on disk

You're probably running a different device tree from what kernel you're using.  Previous device trees didn't define the vdd1p5-supply, and in fact used a gpio for vdd3p3-supply.  There were problems with PCIe moving to newer kernels, so they were turned into regulators.

I'm using the v3.19-novena-etnadrm-r3 branch, which I'm planning on pushing once I've got things sorted out.

Re: Force LCD enable with custom EDID on disk

Okay. Switched to v3.19-novena branch, re-modified the device tree, and now everything works. I learnt ten new things just trying to get my LCD to work. Thanks again!

21 (edited by pff000 2017-01-12 05:26:08)

Re: Force LCD enable with custom EDID on disk

I am trying to reproduce this setup although I have the newer 4.4 kernel. 

I have the pixel QI LVDS screen connected  to the LVDS port on the main board. 
When the computer powers on I see the linux logo and some uboot messages on the screen.  But then the screen goes into factory test mode. 

In dmesg I see:
imx-drm display-subsystem: No connectors reported with modes

So uboot can display stuff on the screen, but not linux.
I wonder if I am not making the right changes to the dbs/dbt file, could some of the options be different for the 4.4 kernel?

my uEnv.txt is:
rmlcd=true
keep_lcd true

Any ideas???

Re: Force LCD enable with custom EDID on disk

Hey. I had this happen too. Have you tried adding the finalhook line to uEnv.txt where the console-bootarg is explicitly set to tty0 ?

Re: Force LCD enable with custom EDID on disk

Yes, I tried the console-bootarg set to tty0, but it didn't help.

Did you get this to work with the newer kernel in the repo (4.4)?
If so, could you share the dts/dtb files?

Re: Force LCD enable with custom EDID on disk

I got it to work!  I just had to use the following in uEnv.txt:
keep_lcd=true
instead of
keep_lcd true
I had copied and pasted what was above, which had rmlcd=true for the old u-boot and the wrong command for the new u-boot.

So, good news!
Thanks for all the work on getting this running!