@@ -149,6 +149,10 @@ int rp2040_common_bringup(void)
149149 struct mtd_dev_s * mtd_dev ;
150150#endif
151151
152+ #ifdef CONFIG_RP2040_SPI0
153+ struct i2c_master_s * i2c ;
154+ #endif
155+
152156#ifdef CONFIG_RP2040_I2C_DRIVER
153157 #ifdef CONFIG_RP2040_I2C0
154158 ret = board_i2cdev_initialize (0 );
@@ -478,17 +482,21 @@ int rp2040_common_bringup(void)
478482 {
479483 syslog (LOG_ERR , "Failed to initialize SPI bus 0\n" );
480484 }
481-
482- struct adc_dev_s * mcp3008 = mcp3008_initialize (spi );
483- if (mcp3008 == NULL )
484- {
485- syslog (LOG_ERR , "Failed to initialize MCP3008\n" );
486- }
487-
488- ret = adc_register ("/dev/adc1" , mcp3008 );
489- if (ret < 0 )
485+ else
490486 {
491- syslog (LOG_ERR , "Failed to register MCP3008 device driver: %d\n" , ret );
487+ struct adc_dev_s * mcp3008 = mcp3008_initialize (spi );
488+ if (mcp3008 == NULL )
489+ {
490+ syslog (LOG_ERR , "Failed to initialize MCP3008\n" );
491+ }
492+ else
493+ {
494+ ret = adc_register ("/dev/adc1" , mcp3008 );
495+ if (ret < 0 )
496+ {
497+ syslog (LOG_ERR , "Failed to register MCP3008: %d\n" , ret );
498+ }
499+ }
492500 }
493501#endif
494502
@@ -546,43 +554,72 @@ int rp2040_common_bringup(void)
546554
547555 /* Try to register SHT4X device on I2C0 */
548556
549- ret = sht4x_register (rp2040_i2cbus_initialize (0 ), 0 ,
550- CONFIG_SHT4X_I2C_ADDR );
551- if (ret < 0 )
557+ i2c = rp2040_i2cbus_initialize (0 );
558+ if (i2c == NULL )
552559 {
553- syslog (LOG_ERR , "ERROR: couldn't initialize SHT4x: %d\n" , ret );
560+ syslog (LOG_ERR , "ERROR: failed to initialize I2C0: %d\n" );
561+ }
562+ else
563+ {
564+ ret = sht4x_register (i2c , 0 , CONFIG_SHT4X_I2C_ADDR );
565+ if (ret < 0 )
566+ {
567+ syslog (LOG_ERR , "ERROR: couldn't initialize SHT4x: %d\n" , ret );
568+ }
554569 }
555570#endif
556571
557572#ifdef CONFIG_SENSORS_MCP9600
558573 /* Try to register MCP9600 device as /dev/therm0 at I2C0. */
559574
560- ret = mcp9600_register ( rp2040_i2cbus_initialize (0 ), 0x60 , 1 , 2 , 3 );
561- if (ret < 0 )
575+ i2c = rp2040_i2cbus_initialize (0 );
576+ if (i2c == NULL )
562577 {
563- syslog (LOG_ERR , "ERROR: couldn't initialize MCP9600: %d\n" , ret );
578+ syslog (LOG_ERR , "ERROR: failed to initialize I2C0: %d\n" );
579+ }
580+ else
581+ {
582+ ret = mcp9600_register (i2c , 0x60 , 1 , 2 , 3 );
583+ if (ret < 0 )
584+ {
585+ syslog (LOG_ERR , "ERROR: couldn't initialize MCP9600: %d\n" , ret );
586+ }
564587 }
565588#endif
566589
567590#ifdef CONFIG_SENSORS_MS56XX
568591 /* Try to register MS56xx device at I2C0 */
569592
570- ret = ms56xx_register (rp2040_i2cbus_initialize (0 ), 0 , MS56XX_ADDR0 ,
571- MS56XX_MODEL_MS5611 );
572- if (ret < 0 )
593+ i2c = rp2040_i2cbus_initialize (0 );
594+ if (i2c == NULL )
573595 {
574- syslog (LOG_ERR , "ERROR: couldn't register MS5611: %d\n" , ret );
596+ syslog (LOG_ERR , "ERROR: failed to initialize I2C0: %d\n" );
597+ }
598+ else
599+ {
600+ ret = ms56xx_register (i2c , 0 , MS56XX_ADDR0 , MS56XX_MODEL_MS5611 );
601+ if (ret < 0 )
602+ {
603+ syslog (LOG_ERR , "ERROR: couldn't register MS5611: %d\n" , ret );
604+ }
575605 }
576606#endif
577607
578608#ifdef CONFIG_SENSORS_TMP112
579609 /* Try to register TMP112 device at I2C0 with a common address */
580610
581- ret = board_tmp112_initialize (rp2040_i2cbus_initialize (0 ), 0 ,
582- TMP112_ADDR_1 );
583- if (ret < 0 )
611+ i2c = rp2040_i2cbus_initialize (0 );
612+ if (i2c == NULL )
613+ {
614+ syslog (LOG_ERR , "ERROR: failed to initialize I2C0: %d\n" );
615+ }
616+ else
584617 {
585- syslog (LOG_ERR , "Failed to initialize TMP112 driver: %d\n" , ret );
618+ ret = board_tmp112_initialize (i2c , 0 , TMP112_ADDR_1 );
619+ if (ret < 0 )
620+ {
621+ syslog (LOG_ERR , "Failed to initialize TMP112 driver: %d\n" , ret );
622+ }
586623 }
587624#endif
588625
0 commit comments