Using LVDS in a iMX6Q/D from Barebox

gianluca gianlucarenzi at eurekelettronica.it
Wed Feb 15 06:34:55 PST 2017


On 02/15/2017 12:51 PM, Sascha Hauer wrote:
> On Tue, Feb 14, 2017 at 11:32:44AM +0100, gianluca wrote:
>> On 02/10/2017 08:35 AM, Sascha Hauer wrote:
>>> Hi Gianluca,
>>>
>>> On Thu, Feb 09, 2017 at 03:37:41PM +0100, gianluca wrote:
>>>> Hello,
>>>> I would like to know if there is a clear way on using the lvds pins to drive
>>>> a LVDS display in a custom made board, based on iMX6Q (in the near future
>>>> the iMX6Dual).
>>>
>>> I think what you are looking for is of_device_enable_and_register() or
>>> of_device_enable_and_register_by_name(). You can call it on either the
>>> lvds device node or the hdmi device node, depending on whether you found
>>> an EEPROM or not.
>>>
>>
>> I think this is not necessary as during boot I can see clearly:
>>
>>> imx-ipuv3 2400000.ipu: IPUv3H probed
>>> imx-ipuv3 2800000.ipu: IPUv3H probed
>>> imx-ldb ldb.10: probe failed: Invalid argument
>>> imx-hdmi 120000.hdmi: Detected HDMI controller 0x13:0xa:0xa0:0xc1
>>
>> So barebox is trying to bring-up the imx-ldb but fails.
>>
>> So I suppose something is wrong in my device tree structure.
>
> Nope, there's everything right.
>
> I can reproduce this here on a GuF Santaro board. LVDS works fine on
> current barebox as long as I leave hdmi disabled in the device tree.
> When I enable hdmi I also get a "failed to get modes".
>
> Normally when different outputs are available then one would expect
> that each one of them is routed to some framebuffer, maybe with some
> sane default and configurable during runtime. The current code falls
> short here.
> What happens is each framebuffer looks around for outputs, all finding
> hdmi and lvds. Now the hdmi output may not have a monitor connected
> and returns no valid mode. In this case the lvds is not even asked for
> modes.
> Also in the current code it can happen that the lvds is asked for modes
> which are then applied to hdmi.
> Where we currently are is that it should work when exactly one output
> is enabled. Does lvds work properly when hdmi is disabled? In this
> case I would suggest that you manipulate your devicetree so that exactly
> one output is enabled.
>


That's works. Thank you!

Now I am planning to adapt the (internal) and external device-tree to 
match the hardware.

First of all hdmi and ldb node are "disabled" by default.

Then I am looking for any eeprom in the lvds connector I have.
If it is found, check the phandle "native-mode" of the display-timings 
node to match the value found in eeprom. If not matches the native-mode, 
it should change the native-mode phandle accordingly with the value 
found. (I was thinking about of_find_node_by_name() and then change its 
value using of_set_property_to_child_phandle(display, "native-mode")). 
And finally change the status of ldb node from "disabled" to "okay". Is 
this the correct way of doing this?

If no eeprom is found activate the status of the hdmi node from 
"disabled" to "okay". So with the same algorithm as above,

Those operations will be done in the coredevice_initcall() level. Is 
this correct?

Regards,
-- 
Eurek s.r.l.                          |
Electronic Engineering                | http://www.eurek.it
via Celletta 8/B, 40026 Imola, Italy  | Phone: +39-(0)542-609120
p.iva 00690621206 - c.f. 04020030377  | Fax:   +39-(0)542-609212



More information about the barebox mailing list