media: i2c: imx258: Use v4l2_link_freq_to_bitmap helper
authorLuis Garcia <git@luigi311.com>
Wed, 1 May 2024 15:24:41 +0000 (09:24 -0600)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Tue, 4 Jun 2024 06:31:24 +0000 (08:31 +0200)
Use the v4l2_link_freq_to_bitmap() helper to figure out which
driver-supported link freq can be used on a given system.

Signed-off-by: Luis Garcia <git@luigi311.com>
Reviewed-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Tommaso Merciai <tomm.merciai@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/i2c/imx258.c

index f043200e336ef635c0f37dfdf7972487cdcb7794..a38c80342eea19aaa99b753c7f4ac951044a6780 100644 (file)
@@ -693,6 +693,7 @@ struct imx258 {
        /* Current mode */
        const struct imx258_mode *cur_mode;
 
+       unsigned long link_freq_bitmap;
        const struct imx258_link_freq_config *link_freq_configs;
        const s64 *link_freq_menu_items;
        unsigned int lane_mode_idx;
@@ -1538,6 +1539,17 @@ static int imx258_probe(struct i2c_client *client)
                return ret;
        }
 
+       ret = v4l2_link_freq_to_bitmap(&client->dev,
+                                      ep.link_frequencies,
+                                      ep.nr_of_link_frequencies,
+                                      imx258->link_freq_menu_items,
+                                      ARRAY_SIZE(link_freq_menu_items_19_2),
+                                      &imx258->link_freq_bitmap);
+       if (ret) {
+               dev_err(&client->dev, "Link frequency not supported\n");
+               goto error_endpoint_free;
+       }
+
        /* Get number of data lanes */
        switch (ep.bus.mipi_csi2.num_data_lanes) {
        case 2: