Hi Shane,
Yeah i manage to get cameras turning on (they respond on the i2c address when gpio is set to high), by hogging the gpios on low on the dts for the respective reset pins ( pwdn pins are not wired, thus not required ), and turning them on on the driver by setting to high the reset pin. but i am getting this now, when i try to pull an image from the camera.
[ 26.756540] imx230 30-001a: imx230_power_on: power on
[ 26.775387] imx230 30-001a: could not find device ctrl.
[ 27.399174] tegra_mipi_cal 3990000.mipical: Mipi cal timeout,val:9881, lanes:300000
[ 27.406847] tegra_mipi_cal 3990000.mipical: MIPI_CAL_CTRL 0x04 0x2a000010
[ 27.415583] tegra_mipi_cal 3990000.mipical: CIL_MIPI_CAL_STATUS 0x0c 0x00009881
[ 27.423879] tegra_mipi_cal 3990000.mipical: CIL_MIPI_CAL_STATUS_2 0x10 0x00000000
[ 27.432545] tegra_mipi_cal 3990000.mipical: CILA_MIPI_CAL_CONFIG 0x18 0x00200000
[ 27.441098] tegra_mipi_cal 3990000.mipical: CILB_MIPI_CAL_CONFIG 0x1c 0x00200000
[ 27.449661] tegra_mipi_cal 3990000.mipical: CILC_MIPI_CAL_CONFIG 0x20 0x00000000
[ 27.458215] tegra_mipi_cal 3990000.mipical: CILD_MIPI_CAL_CONFIG 0x24 0x00000000
[ 27.466917] tegra_mipi_cal 3990000.mipical: CILE_MIPI_CAL_CONFIG 0x28 0x00000000
[ 27.475473] tegra_mipi_cal 3990000.mipical: CILF_MIPI_CAL_CONFIG 0x2c 0x00000000
[ 27.483763] tegra_mipi_cal 3990000.mipical: DSIA_MIPI_CAL_CONFIG 0x3c 0x00000200
[ 27.483767] tegra_mipi_cal 3990000.mipical: DSIB_MIPI_CAL_CONFIG 0x40 0x00000200
[ 27.483770] tegra_mipi_cal 3990000.mipical: DSIC_MIPI_CAL_CONFIG 0x44 0x00000200
[ 27.483773] tegra_mipi_cal 3990000.mipical: DSID_MIPI_CAL_CONFIG 0x48 0x00000200
[ 27.483776] tegra_mipi_cal 3990000.mipical: MIPI_BIAS_PAD_CFG0 0x5c 0x00000000
[ 27.483778] tegra_mipi_cal 3990000.mipical: MIPI_BIAS_PAD_CFG1 0x60 0x00000000
[ 27.483781] tegra_mipi_cal 3990000.mipical: MIPI_BIAS_PAD_CFG2 0x64 0x00010010
[ 27.483784] tegra_mipi_cal 3990000.mipical: DSIA_MIPI_CAL_CONFIG_2 0x68 0x00000002
[ 27.483787] tegra_mipi_cal 3990000.mipical: DSIB_MIPI_CAL_CONFIG_2 0x6c 0x00000002
[ 27.483789] tegra_mipi_cal 3990000.mipical: DSIC_MIPI_CAL_CONFIG_2 0x74 0x00000002
[ 27.483793] tegra_mipi_cal 3990000.mipical: DSID_MIPI_CAL_CONFIG_2 0x78 0x00000002
[ 27.483833] imx230 30-001a: imx230_s_stream++ enable 1
[ 27.635839] imx230 30-001a: imx230_set_gain - val = -1872301073255890944
[ 27.642562] imx230 30-001a: input gain value: 73020735488
[ 27.647991] imx230 30-001a: imx230_set_gain: gain 07a3 val: 73020735488
[ 27.655222] imx230 30-001a: imx230_s_stream: error gain override
[ 27.661244] imx230 30-001a: imx230_set_frame_rate: val: -266723900232
[ 27.667691] imx230 30-001a: imx230_set_frame_length length = 0
[ 27.673532] imx230 30-001a: imx230_set_frame_length: val: 0
[ 27.680051] imx230 30-001a: imx230_s_stream: error frame length override
[ 27.686762] imx230 30-001a: imx230_set_exposure: val: 50670495149850624
[ 27.693387] imx230 30-001a: imx230_set_coarse_time
[ 27.698191] imx230 30-001a: imx230_set_coarse_time: input val: 53070561
[ 27.704826] imx230 30-001a: imx230_clamp_coarse_time: 53070561 to 4538
[ 27.711361] imx230 30-001a: imx230_set_coarse_time: set val: 12
[ 27.717912] imx230 30-001a: imx230_s_stream: error exposure override
[ 27.731701] arm-smmu 12000000.iommu: Unhandled context fault: iova=0x00000000, fsynr=0x250011, cb=19, sid=4(0x4 - VI), pgd=0, pud=0, pmd=0, pte=0
[ 27.744763] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000200, hubc_int_status=0x00000000
[ 27.754605] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000200, hubc_int_status=0x00000000
[ 27.764446] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000200, hubc_int_status=0x00000000
[ 27.774273] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000200, hubc_int_status=0x00000000
[ 27.784097] mc-err: Too many MC errors; throttling prints
[ 28.723221] tegra-vi4 15700000.vi: PXL_SOF syncpt timeout! err = -11
[ 28.762483] arm-smmu 12000000.iommu: Unhandled context fault: iova=0x00000000, fsynr=0x250011, cb=19, sid=4(0x4 - VI), pgd=0, pud=0, pmd=0, pte=0
[ 28.775574] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 28.785429] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 28.795266] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 28.805094] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 28.814916] mc-err: Too many MC errors; throttling prints
[ 29.727772] tegra-vi4 15700000.vi: PXL_SOF syncpt timeout! err = -11
[ 29.746406] arm-smmu 12000000.iommu: Unhandled context fault: iova=0x00000000, fsynr=0x250011, cb=19, sid=4(0x4 - VI), pgd=0, pud=0, pmd=0, pte=0
[ 29.759497] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 29.769331] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 29.779170] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 29.788995] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 29.798830] mc-err: Too many MC errors; throttling prints
[ 30.731208] tegra-vi4 15700000.vi: PXL_SOF syncpt timeout! err = -11
[ 30.777185] arm-smmu 12000000.iommu: Unhandled context fault: iova=0x00000000, fsynr=0x250011, cb=19, sid=4(0x4 - VI), pgd=0, pud=0, pmd=0, pte=0
[ 30.790305] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 30.800146] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 30.809991] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 30.819826] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 30.829668] mc-err: Too many MC errors; throttling prints
[ 31.735200] tegra-vi4 15700000.vi: PXL_SOF syncpt timeout! err = -11
[ 31.761110] arm-smmu 12000000.iommu: Unhandled context fault: iova=0x00000000, fsynr=0x250011, cb=19, sid=4(0x4 - VI), pgd=0, pud=0, pmd=0, pte=0
[ 31.774212] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 31.784045] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 31.793878] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 31.803706] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000000, hubc_int_status=0x00000000
[ 31.813534] mc-err: Too many MC errors; throttling prints
[ 32.739209] tegra-vi4 15700000.vi: ATOMP_FE syncpt timeout!
[ 32.745049] imx230 30-001a: imx230_s_stream++ enable 0
[ 32.768356] imx230 30-001a: imx230_power_off: power off
[b]
and I am still getting this at probe, even though i am skipping the errors and continuing[/b]
[ 3.260940] imx230 32-001a: imx230_probe
[ 3.260987] imx230 32-001a: pwdn gpios not in DT
[ 3.265642] imx230 32-001a: camera_common_parse_sensor_mode: mode 5344 x 4016:
[ 3.272875] imx230 32-001a: camera_common_parse_sensor_mode: line_length = 6024, pixel_clock = 597380000
[ 3.282366] imx230 32-001a: camera_common_parse_sensor_mode: mode 1920 x 1080:
[ 3.289601] imx230 32-001a: camera_common_parse_sensor_mode: line_length = 2800, pixel_clock = 576000000
[ 3.299083] imx230 32-001a: imx230_power_get
[ 3.299334] imx230 32-001a: imx230_power_on: power on
[ 3.303018] imx230 32-001a: imx230_probe: name imx230_e
[ 3.303037] imx230 32-001a: imx230_ctrls_init++
[ 3.303046] imx230 32-001a: Failed to init Gain ctrl
[ 3.308027] imx230 32-001a: Failed to init Exposure ctrl
[ 3.313354] imx230 32-001a: Failed to init Frame Rate ctrl
[ 3.318848] imx230 32-001a: Failed to init Fuse ID ctrl
[ 3.324082] imx230 32-001a: Failed to init Sensor Mode ctrl
[ 3.329661] imx230 32-001a: Failed to init Group Hold ctrl
[ 3.335154] imx230 32-001a: Failed to init HDR enable ctrl
[ 3.340648] imx230 32-001a: Error -34 adding controls
[ 3.345711] imx230 32-001a: imx230_power_off: power off
This is the probe code on the driver:
static int imx230_ctrls_init(struct imx230 *priv)
{
struct i2c_client *client = priv->i2c_client;
struct v4l2_ctrl *ctrl;
int num_ctrls;
int err;
int i;
dev_dbg(&client->dev, "%s++\n", __func__);
num_ctrls = ARRAY_SIZE(ctrl_config_list);
v4l2_ctrl_handler_init(&priv->ctrl_handler, num_ctrls);
for (i = 0; i < num_ctrls; i++) {
ctrl = v4l2_ctrl_new_custom(&priv->ctrl_handler,
&ctrl_config_list[i], NULL);
if (ctrl == NULL) {
dev_err(&client->dev, "Failed to init %s ctrl\n",
ctrl_config_list[i].name);
continue;
}
if (ctrl_config_list[i].type == V4L2_CTRL_TYPE_STRING &&
ctrl_config_list[i].flags & V4L2_CTRL_FLAG_READ_ONLY) {
ctrl->p_new.p_char = devm_kzalloc(&client->dev,
ctrl_config_list[i].max + 1, GFP_KERNEL);
if (!ctrl->p_new.p_char) {
dev_err(&client->dev,
"Failed to allocate otp data\n");
return -ENOMEM;
}
}
priv->ctrls[i] = ctrl;
}
priv->num_ctrls = num_ctrls;
priv->subdev->ctrl_handler = &priv->ctrl_handler;
if (priv->ctrl_handler.error) {
dev_err(&client->dev, "Error %d adding controls\n",
priv->ctrl_handler.error);
err = priv->ctrl_handler.error;
[u]//goto error;[/u] Error skipping
}
err = v4l2_ctrl_handler_setup(&priv->ctrl_handler);
if (err) {
dev_err(&client->dev,
"Error %d setting default controls\n", err);
goto error;
}
return 0;
error:
v4l2_ctrl_handler_free(&priv->ctrl_handler);
return err;
}