Thanks again for the suggestions!
I made some progress. I looked at the lcdc_drv.c file and it looks like the
framebuffer inode is created in the 'init' function.
I'm still trying to wrap my head around this but it seems that there are
three kernel modules that are loaded and they are order dependent.
- DRM: Direct Render Manager
- TILCDC DRM: TI's DRM Interface
- TILCDC Panel: The LCD Panels
The DRM is loaded first. It queries the DTS for, among other things, TILCDC
DRM and TILCDC Panel. In my case it loaded the TILCDC DRM first. The TILCDC
DRM needed a reference to the TILCDC Panel before it would create the fb0
inode.
Within tilcdc_drv.c line 255 this function is called which determines if
there is a TILCDC Panel declared within the DTS:
priv->is_componentized
<https://elixir.bootlin.com/linux/v4.14.67/ident/is_componentized> =
tilcdc_get_external_components
<https://elixir.bootlin.com/linux/v4.14.67/ident/tilcdc_get_external_components>(dev,
NULL) > 0;
This line does two things, it sets 'is_componentized to false and sets
external_connector
to true.
This is tested on line 386 of the same file, the other test
priv->num_encoders and priv->num_connectors, I think, relate to things like
HDMI encoders for an off chip device.
if (!priv->external_connector &&
((priv->num_encoders == 0) || (priv->num_connectors == 0))) {
dev_err
<https://elixir.bootlin.com/linux/v4.14.67/ident/dev_err>(dev, "no
encoders/connectors found\n");
ret = -ENXIO
<https://elixir.bootlin.com/linux/v4.14.67/ident/ENXIO>;
goto init_failed
<https://elixir.bootlin.com/linux/v4.14.67/ident/init_failed>;
}
In my case, this test fails and the framebuffer is not created because it
seems like the TILCDC Panel was loaded after the TILCDC DRM.
I'm not sure if I did the right solution but I modified the kernel config
to make TILCDC DRM an external kernel module that would be loaded after the
initial boot. Perhaps there is a better way to do this. I heard of
something called a deferred probe but I'm don't know if that is applicable.
Maybe I'm doing something wrong.
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/fd79eacb-d083-4925-8ac6-2e8956a018dd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.