Index: c/src/lib/libbsp/powerpc/mpc55xxevb/i2c/i2c_init.c
===================================================================
--- c/src/lib/libbsp/powerpc/mpc55xxevb/i2c/i2c_init.c	(revision 2f5435a42fbca8d6845c06fca77ec1dfeb831e12)
+++ c/src/lib/libbsp/powerpc/mpc55xxevb/i2c/i2c_init.c	(revision dbb3211a29ee258a58e853f5c0fe9274907d8642)
@@ -17,96 +17,54 @@
 | this file contains the low level MPC5516 I2C driver parameters  |
 \*===============================================================*/
-#if 0 /* FIXME: make this work... */
-#include <mpc55xx/mpc55xx_i2cdrv.h>
+
 #include <libchip/i2c-2b-eeprom.h>
+
+#include <bsp.h>
 #include <bsp/irq.h>
-#include <bsp.h>
+#include <bsp/mpc83xx_i2cdrv.h>
 
-static mpc55xx_i2c_desc_t mpc55xx_i2c_bus_tbl[] = {
-  /* first channel */
+#ifdef MPC55XX_IRQ_I2C
+  static mpc83xx_i2c_desc_t mpc55xx_i2c_bus = {
+    .bus_desc = {
+      .ops = &mpc83xx_i2c_ops,
+      .size = sizeof(mpc55xx_i2c_bus),
+    },
+    .softc = {
+      .reg_ptr = (m83xxI2CRegisters_t *) 0xfff88000,
+      .initialized = FALSE,
+      .irq_number = MPC55XX_IRQ_I2C,
+      .base_frq = 0
+    }
+  };
+
+  rtems_status_code bsp_register_i2c(void)
   {
-    {/* public fields */
-      .ops = &mpc55xx_i2c_ops,
-      .size = sizeof(mpc55xx_i2c_bus_tbl[0]),
-    },
-    { /* our private fields */
-      .reg_ptr = &mpc55xx.i2c[0],
-      .initialized = FALSE,
-      .irq_number = BSP_IPIC_IRQ_I2C1,
-      .base_frq = 0 /* will be set during initiailization */
+    int rv = 0;
+    int busno = 0;
+  
+    rtems_libi2c_initialize ();
+  
+    mpc55xx_i2c_bus.softc.base_frq = bsp_clock_speed;
+    busno = rtems_libi2c_register_bus(
+      "/dev/i2c1",
+      &mpc55xx_i2c_bus.bus_desc
+    );
+    if (busno < 0) {
+      return RTEMS_IO_ERROR;
     }
-  }
-};
 
-rtems_libi2c_bus_t *mpc55xx_i2c_bus_descriptor[] = {
-  &mpc55xx_i2c_bus_tbl[0].bus_desc
-};
-
-/*=========================================================================*\
-| Function:                                                                 |
-\*-------------------------------------------------------------------------*/
-rtems_status_code bsp_register_i2c
-(
-/*-------------------------------------------------------------------------*\
-| Purpose:                                                                  |
-|   register I2C busses and devices                                         |
-+---------------------------------------------------------------------------+
-| Input Parameters:                                                         |
-\*-------------------------------------------------------------------------*/
- void                                    /* <none>                         */
-)
-/*-------------------------------------------------------------------------*\
-| Return Value:                                                             |
-|    0 or error code                                                        |
-\*=========================================================================*/
-
-{
-  int ret_code;
-  int i2c1_busno,i2c2_busno;
-
-  /*
-   * init I2C library (if not already done)
-   */
-  rtems_libi2c_initialize ();
-
-  /*
-   * FIXME: update input frequency of I2c modules into descriptor
-   */
-#if 0
-  /*
-   * I2C1 is clocked with TSEC 1
-   */
-  if (((mpc55xx.clk.sccr >> (31-1)) & 0x03) > 0) {
-    mpc55xx_i2c_bus_tbl[0].softc.base_frq =
-      (BSP_bus_frequency
-       /((mpc55xx.clk.sccr >> (31-1)) & 0x03));
+    #ifdef RTEMS_BSP_I2C_EEPROM_DEVICE_NAME
+      rv = rtems_libi2c_register_drv(
+        RTEMS_BSP_I2C_EEPROM_DEVICE_NAME,
+        i2c_2b_eeprom_driver_descriptor,
+        busno,
+        0x51
+      );
+      if (rv < 0) {
+        return RTEMS_IO_ERROR;
+      }
+    #endif
+  
+    return RTEMS_SUCCESSFUL;
   }
 #endif
-  mpc55xx_i2c_bus_tbl[1].softc.base_frq = BSP_bus_frequency;
-  /*
-   * register first I2C bus
-   */
-  ret_code = rtems_libi2c_register_bus("/dev/i2c1",
-				       mpc55xx_i2c_bus_descriptor[0]);
-  if (ret_code < 0) {
-    return -ret_code;
-  }
-  i2c1_busno = ret_code;
-
-#ifdef RTEMS_BSP_I2C_EEPROM_DEVICE_NAME
-
-  /*
-   * register EEPROM to bus 1, Address 0x50
-   */
-  ret_code = rtems_libi2c_register_drv(RTEMS_BSP_I2C_EEPROM_DEVICE_NAME,
-				       i2c_2b_eeprom_driver_descriptor,
-				       i2c1_busno,0x50);
-
-  if (ret_code < 0) {
-    return -ret_code;
-  }
-
-#endif /* RTEMS_BSP_I2C_EEPROM_DEVICE_NAME */
-  return 0;
-}
-#endif /* 0 */
