static int   write_byte        (uchar byte);
 static uchar read_byte (int);
 
-
 /*-----------------------------------------------------------------------
  * Send a reset sequence consisting of 9 clocks with the data signal high
  * to clock any confused device back into an idle state.  Also send a
  */
 static void send_reset(void)
 {
-#ifdef CONFIG_MPC8260
-       volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, I2C_PORT);
-#endif
-#ifdef CONFIG_8xx
-       volatile immap_t *immr = (immap_t *)CFG_IMMR;
-#endif
+       I2C_SOFT_DECLARATIONS   /* intentional without ';' */
        int j;
 
        I2C_SCL(1);
  */
 static void send_start(void)
 {
-#ifdef CONFIG_MPC8260
-       volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, I2C_PORT);
-#endif
-#ifdef CONFIG_8xx
-       volatile immap_t *immr = (immap_t *)CFG_IMMR;
-#endif
+       I2C_SOFT_DECLARATIONS   /* intentional without ';' */
 
        I2C_DELAY;
        I2C_SDA(1);
  */
 static void send_stop(void)
 {
-#ifdef CONFIG_MPC8260
-       volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, I2C_PORT);
-#endif
-#ifdef CONFIG_8xx
-       volatile immap_t *immr = (immap_t *)CFG_IMMR;
-#endif
+       I2C_SOFT_DECLARATIONS   /* intentional without ';' */
 
        I2C_SCL(0);
        I2C_DELAY;
  */
 static void send_ack(int ack)
 {
-#ifdef CONFIG_MPC8260
-       volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, I2C_PORT);
-#endif
-#ifdef CONFIG_8xx
-       volatile immap_t *immr = (immap_t *)CFG_IMMR;
-#endif
+       I2C_SOFT_DECLARATIONS   /* intentional without ';' */
 
        I2C_SCL(0);
        I2C_DELAY;
  */
 static int write_byte(uchar data)
 {
-#ifdef CONFIG_MPC8260
-       volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, I2C_PORT);
-#endif
-#ifdef CONFIG_8xx
-       volatile immap_t *immr = (immap_t *)CFG_IMMR;
-#endif
+       I2C_SOFT_DECLARATIONS   /* intentional without ';' */
        int j;
        int nack;
 
  */
 static uchar read_byte(int ack)
 {
-#ifdef CONFIG_MPC8260
-       volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, I2C_PORT);
-#endif
-#ifdef CONFIG_8xx
-       volatile immap_t *immr = (immap_t *)CFG_IMMR;
-#endif
+       I2C_SOFT_DECLARATIONS   /* intentional without ';' */
        int  data;
        int  j;
 
 
 #define CFG_SPD_BUS_NUM                0
 #endif
 
+#ifndef I2C_SOFT_DECLARATIONS
+# if defined(CONFIG_MPC8260)
+#  define I2C_SOFT_DECLARATIONS volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, I2C_PORT);
+# elif defined(CONFIG_8xx)
+#  define I2C_SOFT_DECLARATIONS        volatile immap_t *immr = (immap_t *)CFG_IMMR;
+# else
+#  define I2C_SOFT_DECLARATIONS
+# endif
+#endif
 /*
  * Initialization, must be called once on start up, may be called
  * repeatedly to change the speed and slave addresses.