]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: intel/ipu6: Obtain link frequency from the remote subdev pad
authorSakari Ailus <sakari.ailus@linux.intel.com>
Mon, 29 Apr 2024 09:19:40 +0000 (12:19 +0300)
committerHans Verkuil <hverkuil@xs4all.nl>
Sat, 15 Feb 2025 14:22:55 +0000 (15:22 +0100)
Obtain the link frequency from the sub-device's pad instead of a control
handler. This allows obtaining it using the get_mbus_config() sub-device
pad op which is the only method supported by the IVSC driver.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c

index 051898ce53f439a68aff72c6c01978f7ce1de6fa..da8581a37e220484faa0c867aeb3c0b8dfa6376b 100644 (file)
@@ -80,25 +80,19 @@ static const struct ipu6_csi2_error dphy_rx_errors[] = {
 s64 ipu6_isys_csi2_get_link_freq(struct ipu6_isys_csi2 *csi2)
 {
        struct media_pad *src_pad;
-       struct v4l2_subdev *ext_sd;
-       struct device *dev;
 
        if (!csi2)
                return -EINVAL;
 
-       dev = &csi2->isys->adev->auxdev.dev;
        src_pad = media_entity_remote_source_pad_unique(&csi2->asd.sd.entity);
        if (IS_ERR(src_pad)) {
-               dev_err(dev, "can't get source pad of %s (%ld)\n",
+               dev_err(&csi2->isys->adev->auxdev.dev,
+                       "can't get source pad of %s (%ld)\n",
                        csi2->asd.sd.name, PTR_ERR(src_pad));
                return PTR_ERR(src_pad);
        }
 
-       ext_sd = media_entity_to_v4l2_subdev(src_pad->entity);
-       if (WARN(!ext_sd, "Failed to get subdev for %s\n", csi2->asd.sd.name))
-               return -ENODEV;
-
-       return v4l2_get_link_freq(ext_sd->ctrl_handler, 0, 0);
+       return v4l2_get_link_freq(src_pad, 0, 0);
 }
 
 static int csi2_subscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh,