]> git.itanic.dy.fi Git - linux-stable/commitdiff
media: ov2740: Check hwcfg after allocating the ov2740 struct
authorHans de Goede <hdegoede@redhat.com>
Mon, 4 Dec 2023 12:39:43 +0000 (13:39 +0100)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 13 Dec 2023 12:21:20 +0000 (13:21 +0100)
Alloc ov2740_data and set up the drvdata pointer before calling
ov2740_check_hwcfg().

This is a preparation patch to allow ov2740_check_hwcfg()
to store some of the parsed data in the ov2740 struct.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/i2c/ov2740.c

index 759e91f4169b284d610d549665f07eaa0e8fa16f..54e6f62414ff4f8ff9db3ae92732a427e38ffd46 100644 (file)
@@ -1098,14 +1098,17 @@ static int ov2740_probe(struct i2c_client *client)
        bool full_power;
        int ret;
 
-       ret = ov2740_check_hwcfg(&client->dev);
-       if (ret)
-               return dev_err_probe(dev, ret, "failed to check HW configuration\n");
-
        ov2740 = devm_kzalloc(&client->dev, sizeof(*ov2740), GFP_KERNEL);
        if (!ov2740)
                return -ENOMEM;
 
+       v4l2_i2c_subdev_init(&ov2740->sd, client, &ov2740_subdev_ops);
+       ov2740->sd.internal_ops = &ov2740_internal_ops;
+
+       ret = ov2740_check_hwcfg(dev);
+       if (ret)
+               return dev_err_probe(dev, ret, "failed to check HW configuration\n");
+
        ov2740->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
        if (IS_ERR(ov2740->reset_gpio))
                return dev_err_probe(dev, PTR_ERR(ov2740->reset_gpio),
@@ -1116,8 +1119,6 @@ static int ov2740_probe(struct i2c_client *client)
                return dev_err_probe(dev, PTR_ERR(ov2740->clk),
                                     "failed to get clock\n");
 
-       v4l2_i2c_subdev_init(&ov2740->sd, client, &ov2740_subdev_ops);
-       ov2740->sd.internal_ops = &ov2740_internal_ops;
        full_power = acpi_dev_state_d0(&client->dev);
        if (full_power) {
                /* ACPI does not always clear the reset GPIO / enable the clock */