if (!dev || !dev->platform_data)
                return -ENODEV;
 
-       /* Non-gmin platforms use the legacy callback */
-       if (dev->platform_data->gpio_ctrl)
-               return dev->platform_data->gpio_ctrl(sd, flag);
-
        /* GPIO0 == "reset" (active low), GPIO1 == "power down" */
        if (flag) {
                /* Pulse reset, then release power down */
 
        if (!dev || !dev->platform_data)
                return -ENODEV;
 
-       /* Non-gmin platforms use the legacy callback */
-       if (dev->platform_data->gpio_ctrl)
-               return dev->platform_data->gpio_ctrl(sd, flag);
-
        ret |= dev->platform_data->gpio1_ctrl(sd, !flag);
        usleep_range(60, 90);
        return dev->platform_data->gpio0_ctrl(sd, flag);
 
        if (!dev || !dev->platform_data)
                return -ENODEV;
 
-       /* Non-gmin platforms use the legacy callback */
-       if (dev->platform_data->gpio_ctrl)
-               return dev->platform_data->gpio_ctrl(sd, flag);
-
        /* Note: current modules wire only one GPIO signal (RESET#),
         * but the schematic wires up two to the connector.  BIOS
         * versions have been unfortunately inconsistent with which
 
        if (!dev || !dev->platform_data)
                return -ENODEV;
 
-       /* Non-gmin platforms use the legacy callback */
-       if (dev->platform_data->gpio_ctrl)
-               return dev->platform_data->gpio_ctrl(sd, flag);
-
        /* The OV2680 documents only one GPIO input (#XSHUTDN), but
         * existing integrations often wire two (reset/power_down)
         * because that is the way other sensors work.  There is no
 
        if (!dev || !dev->platform_data)
                return -ENODEV;
 
-       /* Non-gmin platforms use the legacy callback */
-       if (dev->platform_data->gpio_ctrl)
-               return dev->platform_data->gpio_ctrl(sd, flag);
-
        /* Note: the GPIO order is asymmetric: always RESET#
         * before PWDN# when turning it on or off.
         */
 
        if (!dev || !dev->platform_data)
                return -ENODEV;
 
-       /* Non-gmin platforms use the legacy callback */
-       if (dev->platform_data->gpio_ctrl)
-               return dev->platform_data->gpio_ctrl(sd, flag);
-
        return dev->platform_data->gpio0_ctrl(sd, flag);
 }
 
 
        if (!client || !dev || !dev->platform_data)
                return -ENODEV;
 
-       /* Non-gmin platforms use the legacy callback */
-       if (dev->platform_data->gpio_ctrl)
-               return dev->platform_data->gpio_ctrl(sd, flag);
-
        if (dev->platform_data->gpio0_ctrl)
                return dev->platform_data->gpio0_ctrl(sd, flag);
 
 
 };
 
 struct camera_sensor_platform_data {
-       int (*gpio_ctrl)(struct v4l2_subdev *subdev, int flag);
        int (*flisclk_ctrl)(struct v4l2_subdev *subdev, int flag);
        int (*power_ctrl)(struct v4l2_subdev *subdev, int flag);
        int (*csi_cfg)(struct v4l2_subdev *subdev, int flag);
        int (*platform_deinit)(void);
        char *(*msr_file_name)(void);
        struct atomisp_camera_caps *(*get_camera_caps)(void);
-       int (*gpio_intr_ctrl)(struct v4l2_subdev *subdev);
 
        /* New G-Min power and GPIO interface, replaces
         * power/gpio_ctrl with methods to control individual