irq_set_handler_data(port->irq, port);
  
        err = bgpio_init(&port->bgc, &pdev->dev, 4,
-                        port->base + PINCTRL_DIN(port->id),
-                        port->base + PINCTRL_DOUT(port->id), NULL,
-                        port->base + PINCTRL_DOE(port->id), NULL, 0);
+                        port->base + PINCTRL_DIN(port),
+                        port->base + PINCTRL_DOUT(port), NULL,
 -                       port->base + PINCTRL_DOE(port), NULL, false);
++                       port->base + PINCTRL_DOE(port), NULL, 0);
        if (err)
-               goto out_iounmap;
+               return err;
  
        port->bgc.gc.to_irq = mxs_gpio_to_irq;
        port->bgc.gc.base = port->id * 32;
 
  #include <linux/jiffies.h>
  #include <linux/io.h>
  #include <linux/pinctrl/consumer.h>
 +#include <linux/stmp_device.h>
+ #include <linux/of.h>
+ #include <linux/of_device.h>
+ #include <linux/of_i2c.h>
  
 -#include <mach/common.h>
 -
  #define DRIVER_NAME "mxs-i2c"
  
  #define MXS_I2C_CTRL0         (0x00)