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.

Reply via email to