i2c initialization MVME3100

Heinz Junkes junkes at fhi-berlin.mpg.de
Mon Feb 7 18:20:11 UTC 2022


I'll answer my question myself ;-)

I changed

> RTEMS_SYSINIT_ITEM{
>  mvme3100_i2c_initialize,
>  RTEMS_SYSINIT_BSP_PRE_DRIVERS,
>  RTEMS_SYSINIT_ORDER_MIDDLE
> );

to

RTEMS_SYSINIT_ITEM{
   mvme3100_i2c_initialize,
   RTEMS_SYSINIT_BSP_DRVMGR_LEVEL_2,
   RTEMS_SYSINIT_ORDER_MIDDLE
);

Heinz

> On 7. Feb 2022, at 14:42, Heinz Junkes <junkes at fhi-berlin.mpg.de> wrote:
> 
> in bsps/powerpc/mvme3100/start/bspstart.c I can find
> 
> RTEMS_SYSINIT_ITEM{
>  mvme3100_i2c_initialize,
>  RTEMS_SYSINIT_BSP_PRE_DRIVERS,
>  RTEMS_SYSINIT_ORDER_MIDDLE
> );
> 
> mvme3100_i2c_initialize calls BSP_i2c_initialize
> 
> This can be found in bsps/powerpc/mvme3100/i2c/i2c_init.c
> This function calls rtems_libi2c_initialize() from cpukit/libi2c/libi2c.c
> 
> and here rtems_io_register_driver gets called:
> 
> sc = rtems_io_register_driver (0, &rtems_libi2c_io_ops, &rtems_libi2c_major);
> 
> But in cpukit/sapi/src/ioregisterdriver.c
> 
> in rtems_io_register_driver () the call of the associated init routine gets postponed to
> a later stage because _IO_All_drivers_initializes is not true in this early of bspstart.
> so
> } else {
>  /* The driver will be initialized together with all other drivers
>   * in a later stage by _IO_Initialize_all_drivers();
>   */
>  return RTEMS_SUCCESSFUL;
> }
> 
> Now in 
> bsps/powerpc/mvme3100/i2c/i2c_init.c
> 
> the following calls e.g.
> busno=rtems_libi2c_register_bus(
>                                             BSP_I2C_BUS0_NAME,
>> must fail?
> 
> I hope I have analysed this correctly. I may be wrong, but the output of the mvme3100 looks like this:
> 
> Registering mpc8540 i2c bus driver :No such file or directory
> Registering /dev/console as minor 0 (==/dev/ttyS0)
> ds1375_probe (open): No such file or directory
> 
> This happens during initialization in EPICS. The test suite programmes do not produce this output.
> 
> In the test programmes, however, the initialisation probably fails because the MAXIMUM_DRIVER is default 4.
> e.g. TEST I2C 1
> 
> libi2c: Claiming driver slot failed (rtems status code 10)
> Initializing I2C library failed
> 
> Danke Heinz
> 
> 
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel



More information about the devel mailing list