struct mutex input_lock;
        bool is_streaming;
 
-       struct fwnode_handle *ep_fwnode;
        struct gpio_desc *reset;
        struct gpio_desc *powerdown;
 
        media_entity_cleanup(&dev->sd.entity);
        v4l2_ctrl_handler_free(&dev->ctrls.handler);
        mutex_destroy(&dev->input_lock);
-       fwnode_handle_put(dev->ep_fwnode);
        pm_runtime_disable(&client->dev);
 }
 
 static int gc0310_probe(struct i2c_client *client)
 {
+       struct fwnode_handle *ep_fwnode;
        struct gc0310_device *dev;
        int ret;
 
-       dev = devm_kzalloc(&client->dev, sizeof(*dev), GFP_KERNEL);
-       if (!dev)
-               return -ENOMEM;
-
        /*
         * Sometimes the fwnode graph is initialized by the bridge driver.
         * Bridge drivers doing this may also add GPIO mappings, wait for this.
         */
-       dev->ep_fwnode = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev), NULL);
-       if (!dev->ep_fwnode)
+       ep_fwnode = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev), NULL);
+       if (!ep_fwnode)
                return dev_err_probe(&client->dev, -EPROBE_DEFER, "waiting for fwnode graph endpoint\n");
 
+       fwnode_handle_put(ep_fwnode);
+
+       dev = devm_kzalloc(&client->dev, sizeof(*dev), GFP_KERNEL);
+       if (!dev)
+               return -ENOMEM;
+
        dev->reset = devm_gpiod_get(&client->dev, "reset", GPIOD_OUT_HIGH);
        if (IS_ERR(dev->reset)) {
-               fwnode_handle_put(dev->ep_fwnode);
                return dev_err_probe(&client->dev, PTR_ERR(dev->reset),
                                     "getting reset GPIO\n");
        }
 
        dev->powerdown = devm_gpiod_get(&client->dev, "powerdown", GPIOD_OUT_HIGH);
        if (IS_ERR(dev->powerdown)) {
-               fwnode_handle_put(dev->ep_fwnode);
                return dev_err_probe(&client->dev, PTR_ERR(dev->powerdown),
                                     "getting powerdown GPIO\n");
        }
        dev->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
        dev->pad.flags = MEDIA_PAD_FL_SOURCE;
        dev->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
-       dev->sd.fwnode = dev->ep_fwnode;
 
        ret = gc0310_init_controls(dev);
        if (ret) {