On 3/8/2022 9:52 pm, Heinz Junkes wrote: > We had a problem initialising the i2c devices on the MVME3100. > Unfortunately, I still don't understand the order of initialisation. > > However, the direct driver initialisation from bspstart no longer worked as > it did with older versions. > > My workaround therefore looks like this: > > rtems@rtems-dev:~/MVME3100/kernel$ git diff > bsps/powerpc/mvme3100/start/bspstart.c > diff --git a/bsps/powerpc/mvme3100/start/bspstart.c > b/bsps/powerpc/mvme3100/start/bspstart.c > index 0ec215e33b..96d6e2f9cd 100644 > --- a/bsps/powerpc/mvme3100/start/bspstart.c > +++ b/bsps/powerpc/mvme3100/start/bspstart.c > @@ -52,6 +52,8 @@ > extern unsigned long __rtems_end[]; > extern unsigned ppc_exc_lock_std, ppc_exc_gpr3_std; > > +extern bool _IO_All_drivers_initialized; > + > /* > * Copy Additional boot param passed by boot loader > */ > @@ -419,7 +421,14 @@ void bsp_start( void ) > > static void mvme3100_i2c_initialize(void) > { > + printk("-------- call BSP_i2c_initialize() with > _IO_All_drivers_initialized = true\n"); > + /* > + * we need the drivers registered as they appear, due to get > + * the i2c devices ready > + */ > + _IO_All_drivers_initialized = true; > BSP_i2c_initialize(); > + _IO_All_drivers_initialized = false; > }
Where is this being called? I cannot see it in the patch. If it is BSP start I think it is too early to make these calls. > RTEMS_SYSINIT_ITEM( > > > You can find this in cpukit/sapi/src/ioregisterdriver.c: > > > if ( _IO_All_drivers_initialized ) { > /* Other drivers have already been initialized, we initialize > * the driver directly. > */ > return rtems_io_initialize( major, 0, NULL ); > } else { > /* The driver will be initialized together with all other drivers > * in a later stage by _IO_Initialize_all_drivers(). > */ > return RTEMS_SUCCESSFUL; > } > > > I can imagine that this is not an elegant way, but it's the best I could do. > Is there any idea how to do it "right"? > Or should I submit this patch? I suspect touching that internal variable is not great. That variable could go away or be made static. There maybe another BSP hook that could be used or a SYSINIT hook maybe be needed. Chris _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel