ucb->gc.can_sleep = true;
 
        err = devm_gpiochip_add_data(&dev->dev, &ucb->gc, ucb);
-       if (err)
-               goto err;
-
-       if (ucb->gpio_setup)
-               err = ucb->gpio_setup(&dev->dev, ucb->gc.ngpio);
 
 err:
        return err;
 
 }
 
-static int ucb1400_gpio_remove(struct platform_device *dev)
-{
-       int err = 0;
-       struct ucb1400_gpio *ucb = platform_get_drvdata(dev);
-
-       if (ucb && ucb->gpio_teardown) {
-               err = ucb->gpio_teardown(&dev->dev, ucb->gc.ngpio);
-               if (err)
-                       return err;
-       }
-
-       return err;
-}
-
 static struct platform_driver ucb1400_gpio_driver = {
        .probe  = ucb1400_gpio_probe,
-       .remove = ucb1400_gpio_remove,
        .driver = {
                .name   = "ucb1400_gpio"
        },
 
 
        /* GPIO */
        ucb_gpio.ac97 = ac97;
-       if (pdata) {
-               ucb_gpio.gpio_setup = pdata->gpio_setup;
-               ucb_gpio.gpio_teardown = pdata->gpio_teardown;
+       if (pdata)
                ucb_gpio.gpio_offset = pdata->gpio_offset;
-       }
+
        ucb->ucb1400_gpio = platform_device_alloc("ucb1400_gpio", -1);
        if (!ucb->ucb1400_gpio) {
                err = -ENOMEM;