(__force const void *)cal->base,
                       resource_size(cal->res), false);
 
-       for (i = 0; i < ARRAY_SIZE(cal->phy); ++i) {
+       for (i = 0; i < cal->data->num_csi2_phy; ++i) {
                struct cal_camerarx *phy = cal->phy[i];
 
-               if (!phy)
-                       continue;
-
                cal_info(cal, "CSI2 Core %u Registers @ %pa:\n", i,
                         &phy->res->start);
                print_hex_dump(KERN_INFO, "", DUMP_PREFIX_OFFSET, 16, 4,
                if (status & CAL_HL_IRQ_OCPO_ERR_MASK)
                        dev_err_ratelimited(cal->dev, "OCPO ERROR\n");
 
-               for (i = 0; i < CAL_NUM_CSI2_PORTS; ++i) {
+               for (i = 0; i < cal->data->num_csi2_phy; ++i) {
                        if (status & CAL_HL_IRQ_CIO_MASK(i)) {
                                u32 cio_stat = cal_read(cal,
                                                        CAL_CSI2_COMPLEXIO_IRQSTATUS(i));
        v4l2_async_notifier_init(&cal->notifier);
        cal->notifier.ops = &cal_async_notifier_ops;
 
-       for (i = 0; i < ARRAY_SIZE(cal->phy); ++i) {
+       for (i = 0; i < cal->data->num_csi2_phy; ++i) {
                struct cal_camerarx *phy = cal->phy[i];
                struct cal_v4l2_async_subdev *casd;
                struct v4l2_async_subdev *asd;
                struct fwnode_handle *fwnode;
 
-               if (!phy || !phy->sensor_node)
+               if (!phy->sensor_node)
                        continue;
 
                fwnode = of_fwnode_handle(phy->sensor_node);
        }
 
 error_camerarx:
-       for (i = 0; i < ARRAY_SIZE(cal->phy); i++)
+       for (i = 0; i < cal->data->num_csi2_phy; i++)
                cal_camerarx_destroy(cal->phy[i]);
 
        cal_media_cleanup(cal);
 
        cal_media_cleanup(cal);
 
-       for (i = 0; i < ARRAY_SIZE(cal->phy); i++)
+       for (i = 0; i < cal->data->num_csi2_phy; i++)
                cal_camerarx_destroy(cal->phy[i]);
 
        pm_runtime_put_sync(&pdev->dev);
 static int cal_runtime_resume(struct device *dev)
 {
        struct cal_dev *cal = dev_get_drvdata(dev);
+       unsigned int i;
 
        if (cal->data->flags & DRA72_CAL_PRE_ES2_LDO_DISABLE) {
                /*
                 * Apply errata on both port everytime we (re-)enable
                 * the clock
                 */
-               cal_camerarx_i913_errata(cal->phy[0]);
-               cal_camerarx_i913_errata(cal->phy[1]);
+               for (i = 0; i < cal->data->num_csi2_phy; i++)
+                       cal_camerarx_i913_errata(cal->phy[i]);
        }
 
        return 0;