(sensor->csi_format->width << 8) |
sensor->csi_format->compressed);
if (rval)
- goto out;
+ goto err_pm_put;
/* Binning configuration */
if (sensor->binning_horizontal == 1 &&
rval = ccs_write(sensor, BINNING_TYPE, binning_type);
if (rval < 0)
- goto out;
+ goto err_pm_put;
binning_mode = 1;
}
rval = ccs_write(sensor, BINNING_MODE, binning_mode);
if (rval < 0)
- goto out;
+ goto err_pm_put;
/* Set up PLL */
rval = ccs_pll_configure(sensor);
if (rval)
- goto out;
+ goto err_pm_put;
/* Analog crop start coordinates */
rval = ccs_write(sensor, X_ADDR_START, sensor->pa_src.left);
if (rval < 0)
- goto out;
+ goto err_pm_put;
rval = ccs_write(sensor, Y_ADDR_START, sensor->pa_src.top);
if (rval < 0)
- goto out;
+ goto err_pm_put;
/* Analog crop end coordinates */
rval = ccs_write(sensor, X_ADDR_END,
sensor->pa_src.left + sensor->pa_src.width - 1);
if (rval < 0)
- goto out;
+ goto err_pm_put;
rval = ccs_write(sensor, Y_ADDR_END,
sensor->pa_src.top + sensor->pa_src.height - 1);
if (rval < 0)
- goto out;
+ goto err_pm_put;
/*
* Output from pixel array, including blanking, is set using
rval = ccs_write(sensor, DIGITAL_CROP_X_OFFSET,
sensor->scaler_sink.left);
if (rval < 0)
- goto out;
+ goto err_pm_put;
rval = ccs_write(sensor, DIGITAL_CROP_Y_OFFSET,
sensor->scaler_sink.top);
if (rval < 0)
- goto out;
+ goto err_pm_put;
rval = ccs_write(sensor, DIGITAL_CROP_IMAGE_WIDTH,
sensor->scaler_sink.width);
if (rval < 0)
- goto out;
+ goto err_pm_put;
rval = ccs_write(sensor, DIGITAL_CROP_IMAGE_HEIGHT,
sensor->scaler_sink.height);
if (rval < 0)
- goto out;
+ goto err_pm_put;
}
/* Scaling */
!= CCS_SCALING_CAPABILITY_NONE) {
rval = ccs_write(sensor, SCALING_MODE, sensor->scaling_mode);
if (rval < 0)
- goto out;
+ goto err_pm_put;
rval = ccs_write(sensor, SCALE_M, sensor->scale_m);
if (rval < 0)
- goto out;
+ goto err_pm_put;
}
/* Output size from sensor */
rval = ccs_write(sensor, X_OUTPUT_SIZE, sensor->src_src.width);
if (rval < 0)
- goto out;
+ goto err_pm_put;
rval = ccs_write(sensor, Y_OUTPUT_SIZE, sensor->src_src.height);
if (rval < 0)
- goto out;
+ goto err_pm_put;
if (CCS_LIM(sensor, FLASH_MODE_CAPABILITY) &
(CCS_FLASH_MODE_CAPABILITY_SINGLE_STROBE |
sensor->hwcfg.strobe_setup->trigger != 0) {
rval = ccs_setup_flash_strobe(sensor);
if (rval)
- goto out;
+ goto err_pm_put;
}
rval = ccs_call_quirk(sensor, pre_streamon);
if (rval) {
dev_err(&client->dev, "pre_streamon quirks failed\n");
- goto out;
+ goto err_pm_put;
}
rval = ccs_write(sensor, MODE_SELECT, CCS_MODE_SELECT_STREAMING);
-out:
+err_pm_put:
mutex_unlock(&sensor->mutex);
return rval;