[PATCH 6/6] fbd : Port to RTEMS

Christian Mauderer list at c-mauderer.de
Sun Jun 30 19:41:57 UTC 2019


On 30/06/2019 21:38, Vijay Kumar Banerjee wrote:
> 
> 
> 
> On Mon, Jul 1, 2019 at 12:46 AM Christian Mauderer <list at c-mauderer.de
> <mailto:list at c-mauderer.de>> wrote:
> 
>     On 30/06/2019 19:57, Vijay Kumar Banerjee wrote:
>     >
>     > On Sun, Jun 30, 2019 at 10:17 PM Christian Mauderer
>     <list at c-mauderer.de <mailto:list at c-mauderer.de>
>     > <mailto:list at c-mauderer.de <mailto:list at c-mauderer.de>>> wrote:
>     >
>     >     On 30/06/2019 18:29, Vijay Kumar Banerjee wrote:
>     >     >     > @@ -366,6 +374,9 @@ driver_t fbd_driver = {
>     >     >     >  devclass_t   fbd_devclass;
>     >     >     > 
>     >     >     >  DRIVER_MODULE(fbd, fb, fbd_driver, fbd_devclass, 0, 0);
>     >     >     > +#ifdef __rtems__
>     >     >     > +DRIVER_MODULE(fbd, am335x_lcd, fbd_driver,
>     fbd_devclass, 0, 0);
>     >     >
>     >     >     Why is this necessary in this case? I don't see a similar
>     >     connection in
>     >     >     FreeBSD.
>     >     >
>     >     > the fbd needs to be linked to the am335x_lcd which provides the
>     >     fb0 device
>     >     > and the fbd needs to attach to fb0. 
>     >
>     >     It seems that this connection (or a similar one) hasn't been
>     there on
>     >     FreeBSD. So I wonder why it should be necessary on RTEMS.
>     >
>     >     Note that the situation is a bit different from the one of the
>     i2c bus.
>     >     There your driver implemented a base for a bus system.
>     Therefore the
>     >     generic bus had been connected to a device specific driver.
>     I'm not sure
>     >     that's the case here.
>     >
>     >     It's quite possible that you just have to link the fbd with a
>     line like
>     >     the following in nexus-devices.h:
>     >
>     >         SYSINIT_MODULE_REFERENCE(fbd);
>     >
>     > This is not working :
>     > ```
>     > fb0: failed to attach fbd device
>     > ``` 
>     >
>     >     Best regards
>     >
>     >     Christian
>     >
> 
>     OK. I had a more detailed look: In FreeBSD it's the following
>     connection:
> 
>     fbd->fb->fb_mod
> 
>     For some devices (like freescale/imx/imx51_ipuv3_fbd.c) a specialized fb
>     is connected to simplebus. So one of the following should work and
>     should be most likely more correct:
> 
>     Either
> 
>         SYSINIT_DRIVER_REFERENCE(fbd, fb);
>         SYSINIT_DRIVER_REFERENCE(fb, fb_mod);
>         SYSINIT_MODULE_REFERENCE(fb_mod);
> 
> This worked! 

OK. Then I would suggest to use this one. It's the one most similar to
FreeBSD.

> 
>     or
> 
>         SYSINIT_DRIVER_REFERENCE(fbd, fb);
>         SYSINIT_DRIVER_REFERENCE(fb, simplebus);
> 
>     For the second one the following line will be necessary in fbd.c
> 
>         DRIVER_MODULE(fbd, simplebus, fbd_driver, fbd_devclass, 0, 0);
> 
>     Can you try whether one of these two works? It's just odd to connect the
>     frame buffer device driver to a specialized device instead of the
>     general frame buffer where it is connected in FreeBSD. I would expect
>     problems later with the current construction.
> 



More information about the devel mailing list