summaryrefslogtreecommitdiffstats
path: root/bsps
diff options
context:
space:
mode:
authorVijay Kumar Banerjee <vijaykumar9597@gmail.com>2019-09-18 02:16:05 +0530
committerChristian Mauderer <oss@c-mauderer.de>2019-09-19 21:27:16 +0200
commita4e96cfb0abab1e563734e6a91da05effec8aecc (patch)
tree6f2982a6a87f7e6087dcf6dceb62f736436be410 /bsps
parentAdd rtems_version_control_key_is_valid() (diff)
downloadrtems-a4e96cfb0abab1e563734e6a91da05effec8aecc.tar.bz2
bsps/beagle: register i2c device at initialization
Diffstat (limited to 'bsps')
-rw-r--r--bsps/arm/beagle/i2c/bbb-i2c.c6
-rw-r--r--bsps/arm/beagle/include/bsp/i2c.h10
-rw-r--r--bsps/arm/beagle/start/bspstart.c21
3 files changed, 24 insertions, 13 deletions
diff --git a/bsps/arm/beagle/i2c/bbb-i2c.c b/bsps/arm/beagle/i2c/bbb-i2c.c
index 37b88864b9..4153063a34 100644
--- a/bsps/arm/beagle/i2c/bbb-i2c.c
+++ b/bsps/arm/beagle/i2c/bbb-i2c.c
@@ -186,16 +186,16 @@ static int am335x_i2c_reset( bbb_i2c_bus *bus )
bus->con_reg = 0;
regs->BBB_I2C_CON = bus->con_reg;
- udelay( 50000 );
+ rtems_counter_delay_nanoseconds(50000000);
regs->BBB_I2C_SYSC = AM335X_I2C_SYSC_SRST;
- udelay( 1000 );
+ rtems_counter_delay_nanoseconds(1000000);
regs->BBB_I2C_CON = AM335X_I2C_CON_I2C_EN;
while ( !( regs->BBB_I2C_SYSS & AM335X_I2C_SYSS_RDONE )
&& timeout >= 0 ) {
--timeout;
- udelay( 100 );
+ rtems_counter_delay_nanoseconds(100000);
}
if ( timeout <= 0 ) {
diff --git a/bsps/arm/beagle/include/bsp/i2c.h b/bsps/arm/beagle/include/bsp/i2c.h
index 9d253406bf..60f71194bf 100644
--- a/bsps/arm/beagle/include/bsp/i2c.h
+++ b/bsps/arm/beagle/include/bsp/i2c.h
@@ -94,16 +94,6 @@ int am335x_i2c_bus_register(
rtems_vector_number irq
);
-static inline int bbb_register_i2c_0( void )
-{
- return am335x_i2c_bus_register(
- BBB_I2C_0_BUS_PATH,
- AM335X_I2C0_BASE,
- I2C_BUS_CLOCK_DEFAULT,
- BBB_I2C0_IRQ
- );
-}
-
static inline int bbb_register_i2c_1( void )
{
return am335x_i2c_bus_register(
diff --git a/bsps/arm/beagle/start/bspstart.c b/bsps/arm/beagle/start/bspstart.c
index 224f9ecf3b..1eecdc24a0 100644
--- a/bsps/arm/beagle/start/bspstart.c
+++ b/bsps/arm/beagle/start/bspstart.c
@@ -17,6 +17,8 @@
#include <bsp/irq-generic.h>
#include <bsp/fdt.h>
#include <bsp/linker-symbols.h>
+#include <bsp/i2c.h>
+#include <rtems/sysinit.h>
#include "bspdebug.h"
@@ -41,3 +43,22 @@ uint32_t bsp_fdt_map_intr(const uint32_t *intr, size_t icells)
{
return intr[0];
}
+
+static void bbb_i2c_0_initialize(void)
+{
+ int err;
+
+ err = am335x_i2c_bus_register(BBB_I2C_0_BUS_PATH,
+ AM335X_I2C0_BASE,
+ I2C_BUS_CLOCK_DEFAULT,
+ BBB_I2C0_IRQ);
+ if (err != 0) {
+ printk("rtems i2c-0: Device could not be registered (%d)", err);
+ }
+}
+
+RTEMS_SYSINIT_ITEM(
+ bbb_i2c_0_initialize,
+ RTEMS_SYSINIT_LAST,
+ RTEMS_SYSINIT_ORDER_LAST
+);