Lines Matching refs:rkisp1

248 static void rkisp1_config_ism(struct rkisp1_device *rkisp1)  in rkisp1_config_ism()  argument
251 rkisp1_isp_get_pad_crop(&rkisp1->isp, NULL, in rkisp1_config_ism()
256 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_IS_RECENTER); in rkisp1_config_ism()
257 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_IS_MAX_DX); in rkisp1_config_ism()
258 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_IS_MAX_DY); in rkisp1_config_ism()
259 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_IS_DISPLACE); in rkisp1_config_ism()
260 rkisp1_write(rkisp1, src_crop->left, RKISP1_CIF_ISP_IS_H_OFFS); in rkisp1_config_ism()
261 rkisp1_write(rkisp1, src_crop->top, RKISP1_CIF_ISP_IS_V_OFFS); in rkisp1_config_ism()
262 rkisp1_write(rkisp1, src_crop->width, RKISP1_CIF_ISP_IS_H_SIZE); in rkisp1_config_ism()
263 rkisp1_write(rkisp1, src_crop->height, RKISP1_CIF_ISP_IS_V_SIZE); in rkisp1_config_ism()
266 rkisp1_write(rkisp1, 1, RKISP1_CIF_ISP_IS_CTRL); in rkisp1_config_ism()
267 val = rkisp1_read(rkisp1, RKISP1_CIF_ISP_CTRL); in rkisp1_config_ism()
269 rkisp1_write(rkisp1, val, RKISP1_CIF_ISP_CTRL); in rkisp1_config_ism()
275 static int rkisp1_config_isp(struct rkisp1_device *rkisp1) in rkisp1_config_isp() argument
283 sensor = rkisp1->active_sensor; in rkisp1_config_isp()
284 sink_fmt = rkisp1->isp.sink_fmt; in rkisp1_config_isp()
285 src_fmt = rkisp1->isp.src_fmt; in rkisp1_config_isp()
286 sink_frm = rkisp1_isp_get_pad_fmt(&rkisp1->isp, NULL, in rkisp1_config_isp()
289 sink_crop = rkisp1_isp_get_pad_crop(&rkisp1->isp, NULL, in rkisp1_config_isp()
301 rkisp1_write(rkisp1, RKISP1_CIF_ISP_DEMOSAIC_TH(0xc), in rkisp1_config_isp()
338 rkisp1_write(rkisp1, isp_ctrl, RKISP1_CIF_ISP_CTRL); in rkisp1_config_isp()
339 rkisp1_write(rkisp1, signal | sink_fmt->yuv_seq | in rkisp1_config_isp()
343 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_ACQ_NR_FRAMES); in rkisp1_config_isp()
346 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_ACQ_H_OFFS); in rkisp1_config_isp()
347 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_ACQ_V_OFFS); in rkisp1_config_isp()
348 rkisp1_write(rkisp1, in rkisp1_config_isp()
350 rkisp1_write(rkisp1, sink_frm->height, RKISP1_CIF_ISP_ACQ_V_SIZE); in rkisp1_config_isp()
353 rkisp1_write(rkisp1, sink_crop->left, RKISP1_CIF_ISP_OUT_H_OFFS); in rkisp1_config_isp()
354 rkisp1_write(rkisp1, sink_crop->top, RKISP1_CIF_ISP_OUT_V_OFFS); in rkisp1_config_isp()
355 rkisp1_write(rkisp1, sink_crop->width, RKISP1_CIF_ISP_OUT_H_SIZE); in rkisp1_config_isp()
356 rkisp1_write(rkisp1, sink_crop->height, RKISP1_CIF_ISP_OUT_V_SIZE); in rkisp1_config_isp()
360 rkisp1_write(rkisp1, irq_mask, RKISP1_CIF_ISP_IMSC); in rkisp1_config_isp()
363 rkisp1_params_disable(&rkisp1->params); in rkisp1_config_isp()
367 src_frm = rkisp1_isp_get_pad_fmt(&rkisp1->isp, NULL, in rkisp1_config_isp()
370 rkisp1_params_configure(&rkisp1->params, sink_fmt->bayer_pat, in rkisp1_config_isp()
377 static int rkisp1_config_dvp(struct rkisp1_device *rkisp1) in rkisp1_config_dvp() argument
379 const struct rkisp1_isp_mbus_info *sink_fmt = rkisp1->isp.sink_fmt; in rkisp1_config_dvp()
393 dev_err(rkisp1->dev, "Invalid bus width\n"); in rkisp1_config_dvp()
397 val = rkisp1_read(rkisp1, RKISP1_CIF_ISP_ACQ_PROP); in rkisp1_config_dvp()
398 rkisp1_write(rkisp1, val | input_sel, RKISP1_CIF_ISP_ACQ_PROP); in rkisp1_config_dvp()
403 static int rkisp1_config_mipi(struct rkisp1_device *rkisp1) in rkisp1_config_mipi() argument
405 const struct rkisp1_isp_mbus_info *sink_fmt = rkisp1->isp.sink_fmt; in rkisp1_config_mipi()
406 unsigned int lanes = rkisp1->active_sensor->lanes; in rkisp1_config_mipi()
417 rkisp1_write(rkisp1, mipi_ctrl, RKISP1_CIF_MIPI_CTRL); in rkisp1_config_mipi()
420 if (rkisp1->media_dev.hw_revision == RKISP1_V12) in rkisp1_config_mipi()
421 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_CSI0_CTRL0); in rkisp1_config_mipi()
424 rkisp1_write(rkisp1, in rkisp1_config_mipi()
430 rkisp1_write(rkisp1, ~0, RKISP1_CIF_MIPI_ICR); in rkisp1_config_mipi()
435 rkisp1_write(rkisp1, in rkisp1_config_mipi()
442 dev_dbg(rkisp1->dev, "\n MIPI_CTRL 0x%08x\n" in rkisp1_config_mipi()
446 rkisp1_read(rkisp1, RKISP1_CIF_MIPI_CTRL), in rkisp1_config_mipi()
447 rkisp1_read(rkisp1, RKISP1_CIF_MIPI_IMG_DATA_SEL), in rkisp1_config_mipi()
448 rkisp1_read(rkisp1, RKISP1_CIF_MIPI_STATUS), in rkisp1_config_mipi()
449 rkisp1_read(rkisp1, RKISP1_CIF_MIPI_IMSC)); in rkisp1_config_mipi()
455 static int rkisp1_config_path(struct rkisp1_device *rkisp1) in rkisp1_config_path() argument
457 struct rkisp1_sensor_async *sensor = rkisp1->active_sensor; in rkisp1_config_path()
458 u32 dpcl = rkisp1_read(rkisp1, RKISP1_CIF_VI_DPCL); in rkisp1_config_path()
463 ret = rkisp1_config_dvp(rkisp1); in rkisp1_config_path()
466 ret = rkisp1_config_mipi(rkisp1); in rkisp1_config_path()
470 rkisp1_write(rkisp1, dpcl, RKISP1_CIF_VI_DPCL); in rkisp1_config_path()
476 static int rkisp1_config_cif(struct rkisp1_device *rkisp1) in rkisp1_config_cif() argument
481 cif_id = rkisp1_read(rkisp1, RKISP1_CIF_VI_ID); in rkisp1_config_cif()
482 dev_dbg(rkisp1->dev, "CIF_ID 0x%08x\n", cif_id); in rkisp1_config_cif()
484 ret = rkisp1_config_isp(rkisp1); in rkisp1_config_cif()
487 ret = rkisp1_config_path(rkisp1); in rkisp1_config_cif()
490 rkisp1_config_ism(rkisp1); in rkisp1_config_cif()
495 static void rkisp1_isp_stop(struct rkisp1_device *rkisp1) in rkisp1_isp_stop() argument
504 rkisp1_write(rkisp1, 0, RKISP1_CIF_MIPI_IMSC); in rkisp1_isp_stop()
505 rkisp1_write(rkisp1, ~0, RKISP1_CIF_MIPI_ICR); in rkisp1_isp_stop()
507 rkisp1_write(rkisp1, 0, RKISP1_CIF_ISP_IMSC); in rkisp1_isp_stop()
508 rkisp1_write(rkisp1, ~0, RKISP1_CIF_ISP_ICR); in rkisp1_isp_stop()
510 rkisp1_write(rkisp1, 0, RKISP1_CIF_MI_IMSC); in rkisp1_isp_stop()
511 rkisp1_write(rkisp1, ~0, RKISP1_CIF_MI_ICR); in rkisp1_isp_stop()
512 val = rkisp1_read(rkisp1, RKISP1_CIF_MIPI_CTRL); in rkisp1_isp_stop()
513 rkisp1_write(rkisp1, val & (~RKISP1_CIF_MIPI_CTRL_OUTPUT_ENA), in rkisp1_isp_stop()
516 val = rkisp1_read(rkisp1, RKISP1_CIF_ISP_CTRL); in rkisp1_isp_stop()
519 rkisp1_write(rkisp1, val, RKISP1_CIF_ISP_CTRL); in rkisp1_isp_stop()
521 val = rkisp1_read(rkisp1, RKISP1_CIF_ISP_CTRL); in rkisp1_isp_stop()
522 rkisp1_write(rkisp1, val | RKISP1_CIF_ISP_CTRL_ISP_CFG_UPD, in rkisp1_isp_stop()
525 readx_poll_timeout(readl, rkisp1->base_addr + RKISP1_CIF_ISP_RIS, in rkisp1_isp_stop()
527 rkisp1_write(rkisp1, in rkisp1_isp_stop()
530 rkisp1_write(rkisp1, 0x0, RKISP1_CIF_IRCL); in rkisp1_isp_stop()
533 static void rkisp1_config_clk(struct rkisp1_device *rkisp1) in rkisp1_config_clk() argument
541 rkisp1_write(rkisp1, val, RKISP1_CIF_ICCL); in rkisp1_config_clk()
544 if (rkisp1->media_dev.hw_revision == RKISP1_V12) { in rkisp1_config_clk()
549 rkisp1_write(rkisp1, val, RKISP1_CIF_VI_ISP_CLK_CTRL_V12); in rkisp1_config_clk()
553 static void rkisp1_isp_start(struct rkisp1_device *rkisp1) in rkisp1_isp_start() argument
555 struct rkisp1_sensor_async *sensor = rkisp1->active_sensor; in rkisp1_isp_start()
558 rkisp1_config_clk(rkisp1); in rkisp1_isp_start()
562 val = rkisp1_read(rkisp1, RKISP1_CIF_MIPI_CTRL); in rkisp1_isp_start()
563 rkisp1_write(rkisp1, val | RKISP1_CIF_MIPI_CTRL_OUTPUT_ENA, in rkisp1_isp_start()
567 val = rkisp1_read(rkisp1, RKISP1_CIF_ISP_CTRL); in rkisp1_isp_start()
571 rkisp1_write(rkisp1, val, RKISP1_CIF_ISP_CTRL); in rkisp1_isp_start()
912 struct rkisp1_device *rkisp1 = in rkisp1_isp_set_selection() local
920 dev_dbg(rkisp1->dev, "%s: pad: %d sel(%d,%d)/%dx%d\n", __func__, in rkisp1_isp_set_selection()
960 struct rkisp1_device *rkisp1 = in rkisp1_mipi_csi2_start() local
967 dev_warn(rkisp1->dev, "No pixel rate control in sensor subdev\n"); in rkisp1_mipi_csi2_start()
973 dev_err(rkisp1->dev, "Invalid pixel rate value\n"); in rkisp1_mipi_csi2_start()
993 struct rkisp1_device *rkisp1 = in rkisp1_isp_s_stream() local
995 struct rkisp1_isp *isp = &rkisp1->isp; in rkisp1_isp_s_stream()
1000 rkisp1_isp_stop(rkisp1); in rkisp1_isp_s_stream()
1001 rkisp1_mipi_csi2_stop(rkisp1->active_sensor); in rkisp1_isp_s_stream()
1007 dev_warn(rkisp1->dev, "No link between isp and sensor\n"); in rkisp1_isp_s_stream()
1011 rkisp1->active_sensor = container_of(sensor_sd->asd, in rkisp1_isp_s_stream()
1014 if (rkisp1->active_sensor->mbus_type != V4L2_MBUS_CSI2_DPHY) in rkisp1_isp_s_stream()
1017 rkisp1->isp.frame_sequence = -1; in rkisp1_isp_s_stream()
1019 ret = rkisp1_config_cif(rkisp1); in rkisp1_isp_s_stream()
1023 ret = rkisp1_mipi_csi2_start(&rkisp1->isp, rkisp1->active_sensor); in rkisp1_isp_s_stream()
1027 rkisp1_isp_start(rkisp1); in rkisp1_isp_s_stream()
1066 int rkisp1_isp_register(struct rkisp1_device *rkisp1) in rkisp1_isp_register() argument
1069 .pads = rkisp1->isp.pad_cfg in rkisp1_isp_register()
1071 struct rkisp1_isp *isp = &rkisp1->isp; in rkisp1_isp_register()
1097 ret = v4l2_device_register_subdev(&rkisp1->v4l2_dev, sd); in rkisp1_isp_register()
1099 dev_err(rkisp1->dev, "Failed to register isp subdev\n"); in rkisp1_isp_register()
1112 void rkisp1_isp_unregister(struct rkisp1_device *rkisp1) in rkisp1_isp_unregister() argument
1114 struct v4l2_subdev *sd = &rkisp1->isp.sd; in rkisp1_isp_unregister()
1127 struct rkisp1_device *rkisp1 = dev_get_drvdata(dev); in rkisp1_mipi_isr() local
1130 status = rkisp1_read(rkisp1, RKISP1_CIF_MIPI_MIS); in rkisp1_mipi_isr()
1134 rkisp1_write(rkisp1, status, RKISP1_CIF_MIPI_ICR); in rkisp1_mipi_isr()
1143 val = rkisp1_read(rkisp1, RKISP1_CIF_MIPI_IMSC); in rkisp1_mipi_isr()
1144 rkisp1_write(rkisp1, val & ~RKISP1_CIF_MIPI_ERR_CTRL(0x0f), in rkisp1_mipi_isr()
1146 rkisp1->isp.is_dphy_errctrl_disabled = true; in rkisp1_mipi_isr()
1158 if (rkisp1->isp.is_dphy_errctrl_disabled) { in rkisp1_mipi_isr()
1159 val = rkisp1_read(rkisp1, RKISP1_CIF_MIPI_IMSC); in rkisp1_mipi_isr()
1161 rkisp1_write(rkisp1, val, RKISP1_CIF_MIPI_IMSC); in rkisp1_mipi_isr()
1162 rkisp1->isp.is_dphy_errctrl_disabled = false; in rkisp1_mipi_isr()
1165 rkisp1->debug.mipi_error++; in rkisp1_mipi_isr()
1184 struct rkisp1_device *rkisp1 = dev_get_drvdata(dev); in rkisp1_isp_isr() local
1187 status = rkisp1_read(rkisp1, RKISP1_CIF_ISP_MIS); in rkisp1_isp_isr()
1191 rkisp1_write(rkisp1, status, RKISP1_CIF_ISP_ICR); in rkisp1_isp_isr()
1195 rkisp1->isp.frame_sequence++; in rkisp1_isp_isr()
1196 rkisp1_isp_queue_event_sof(&rkisp1->isp); in rkisp1_isp_isr()
1199 rkisp1->debug.irq_delay++; in rkisp1_isp_isr()
1204 isp_err = rkisp1_read(rkisp1, RKISP1_CIF_ISP_ERR); in rkisp1_isp_isr()
1206 rkisp1->debug.inform_size_error++; in rkisp1_isp_isr()
1208 rkisp1->debug.img_stabilization_size_error++; in rkisp1_isp_isr()
1210 rkisp1->debug.outform_size_error++; in rkisp1_isp_isr()
1211 rkisp1_write(rkisp1, isp_err, RKISP1_CIF_ISP_ERR_CLR); in rkisp1_isp_isr()
1214 rkisp1->debug.data_loss++; in rkisp1_isp_isr()
1221 isp_ris = rkisp1_read(rkisp1, RKISP1_CIF_ISP_RIS); in rkisp1_isp_isr()
1223 rkisp1_stats_isr(&rkisp1->stats, isp_ris); in rkisp1_isp_isr()
1229 rkisp1_params_isr(rkisp1); in rkisp1_isp_isr()