Searched refs:csi2 (Results 1 - 19 of 19) sorted by relevance

/linux-4.1.27/drivers/staging/media/omap4iss/
H A Diss_csi2.c28 static void csi2_if_enable(struct iss_csi2_device *csi2, u8 enable) csi2_if_enable() argument
30 struct iss_csi2_ctrl_cfg *currctrl = &csi2->ctrl; csi2_if_enable()
32 iss_reg_update(csi2->iss, csi2->regs1, CSI2_CTRL, CSI2_CTRL_IF_EN, csi2_if_enable()
43 static void csi2_recv_config(struct iss_csi2_device *csi2, csi2_recv_config() argument
92 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTRL, reg); csi2_recv_config()
194 * @csi2: ISS CSI2 device
198 static u16 csi2_ctx_map_format(struct iss_csi2_device *csi2) csi2_ctx_map_format() argument
200 const struct v4l2_mbus_framefmt *fmt = &csi2->formats[CSI2_PAD_SINK]; csi2_ctx_map_format()
232 if (!(csi2->output & CSI2_OUTPUT_IPIPEIF) && csi2_ctx_map_format()
233 !(csi2->output & CSI2_OUTPUT_MEMORY)) { csi2_ctx_map_format()
241 destidx = csi2->frame_skip ? 0 : !!(csi2->output & CSI2_OUTPUT_IPIPEIF); csi2_ctx_map_format()
243 return __csi2_fmt_map[fmtidx][destidx][csi2->dpcm_decompress]; csi2_ctx_map_format()
248 * @csi2: Pointer to ISS CSI2a device.
256 static void csi2_set_outaddr(struct iss_csi2_device *csi2, u32 addr) csi2_set_outaddr() argument
258 struct iss_csi2_ctx_cfg *ctx = &csi2->contexts[0]; csi2_set_outaddr()
262 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_PING_ADDR(ctx->ctxnum), csi2_set_outaddr()
264 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_PONG_ADDR(ctx->ctxnum), csi2_set_outaddr()
285 static void csi2_ctx_enable(struct iss_csi2_device *csi2, u8 ctxnum, u8 enable) csi2_ctx_enable() argument
287 struct iss_csi2_ctx_cfg *ctx = &csi2->contexts[ctxnum]; csi2_ctx_enable()
290 reg = iss_reg_read(csi2->iss, csi2->regs1, CSI2_CTX_CTRL1(ctxnum)); csi2_ctx_enable()
295 if (csi2->frame_skip) csi2_ctx_enable()
296 skip = csi2->frame_skip; csi2_ctx_enable()
297 else if (csi2->output & CSI2_OUTPUT_MEMORY) csi2_ctx_enable()
308 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_CTRL1(ctxnum), reg); csi2_ctx_enable()
317 static void csi2_ctx_config(struct iss_csi2_device *csi2, csi2_ctx_config() argument
334 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_CTRL1(ctx->ctxnum), reg); csi2_ctx_config()
346 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_CTRL2(ctx->ctxnum), reg); csi2_ctx_config()
349 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_CTRL3(ctx->ctxnum), csi2_ctx_config()
353 iss_reg_update(csi2->iss, csi2->regs1, CSI2_CTX_DAT_OFST(ctx->ctxnum), csi2_ctx_config()
356 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_PING_ADDR(ctx->ctxnum), csi2_ctx_config()
358 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_PONG_ADDR(ctx->ctxnum), csi2_ctx_config()
366 static void csi2_timing_config(struct iss_csi2_device *csi2, csi2_timing_config() argument
371 reg = iss_reg_read(csi2->iss, csi2->regs1, CSI2_TIMING); csi2_timing_config()
392 iss_reg_write(csi2->iss, csi2->regs1, CSI2_TIMING, reg); csi2_timing_config()
399 static void csi2_irq_ctx_set(struct iss_csi2_device *csi2, int enable) csi2_irq_ctx_set() argument
405 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_IRQSTATUS(i), csi2_irq_ctx_set()
408 iss_reg_set(csi2->iss, csi2->regs1, csi2_irq_ctx_set()
411 iss_reg_clr(csi2->iss, csi2->regs1, csi2_irq_ctx_set()
420 static void csi2_irq_complexio1_set(struct iss_csi2_device *csi2, int enable) csi2_irq_complexio1_set() argument
451 iss_reg_write(csi2->iss, csi2->regs1, CSI2_COMPLEXIO_IRQSTATUS, reg); csi2_irq_complexio1_set()
453 iss_reg_set(csi2->iss, csi2->regs1, CSI2_COMPLEXIO_IRQENABLE, csi2_irq_complexio1_set()
456 iss_reg_write(csi2->iss, csi2->regs1, CSI2_COMPLEXIO_IRQENABLE, csi2_irq_complexio1_set()
464 static void csi2_irq_status_set(struct iss_csi2_device *csi2, int enable) csi2_irq_status_set() argument
475 iss_reg_write(csi2->iss, csi2->regs1, CSI2_IRQSTATUS, reg); csi2_irq_status_set()
477 iss_reg_set(csi2->iss, csi2->regs1, CSI2_IRQENABLE, reg); csi2_irq_status_set()
479 iss_reg_write(csi2->iss, csi2->regs1, CSI2_IRQENABLE, 0); csi2_irq_status_set()
489 int omap4iss_csi2_reset(struct iss_csi2_device *csi2) omap4iss_csi2_reset() argument
493 if (!csi2->available) omap4iss_csi2_reset()
496 if (csi2->phy->phy_in_use) omap4iss_csi2_reset()
499 iss_reg_set(csi2->iss, csi2->regs1, CSI2_SYSCONFIG, omap4iss_csi2_reset()
503 iss_reg_read(csi2->iss, csi2->regs1, CSI2_SYSSTATUS) & omap4iss_csi2_reset()
506 dev_err(csi2->iss->dev, "CSI2: Soft reset timeout!\n"); omap4iss_csi2_reset()
510 iss_reg_set(csi2->iss, csi2->regs1, CSI2_COMPLEXIO_CFG, omap4iss_csi2_reset()
514 iss_reg_read(csi2->iss, csi2->phy->phy_regs, REGISTER1) & omap4iss_csi2_reset()
517 dev_err(csi2->iss->dev, "CSI2: CSI2_96M_FCLK reset timeout!\n"); omap4iss_csi2_reset()
521 iss_reg_update(csi2->iss, csi2->regs1, CSI2_SYSCONFIG, omap4iss_csi2_reset()
529 static int csi2_configure(struct iss_csi2_device *csi2) csi2_configure() argument
532 struct iss_csi2_timing_cfg *timing = &csi2->timing[0]; csi2_configure()
542 if (csi2->contexts[0].enabled || csi2->ctrl.if_enable) csi2_configure()
545 pad = media_entity_remote_pad(&csi2->pads[CSI2_PAD_SINK]); csi2_configure()
549 csi2->frame_skip = 0; csi2_configure()
550 v4l2_subdev_call(sensor, sensor, g_skip_frames, &csi2->frame_skip); csi2_configure()
552 csi2->ctrl.vp_out_ctrl = pdata->bus.csi2.vpclk_div; csi2_configure()
553 csi2->ctrl.frame_mode = ISS_CSI2_FRAME_IMMEDIATE; csi2_configure()
554 csi2->ctrl.ecc_enable = pdata->bus.csi2.crc; csi2_configure()
566 if (csi2->formats[CSI2_PAD_SINK].code != csi2_configure()
567 csi2->formats[CSI2_PAD_SOURCE].code) csi2_configure()
568 csi2->dpcm_decompress = true; csi2_configure()
570 csi2->dpcm_decompress = false; csi2_configure()
572 csi2->contexts[0].format_id = csi2_ctx_map_format(csi2); csi2_configure()
574 if (csi2->video_out.bpl_padding == 0) csi2_configure()
575 csi2->contexts[0].data_offset = 0; csi2_configure()
577 csi2->contexts[0].data_offset = csi2->video_out.bpl_value; csi2_configure()
586 csi2->contexts[0].eof_enabled = 1; csi2_configure()
587 csi2->contexts[0].eol_enabled = 1; csi2_configure()
589 csi2_irq_complexio1_set(csi2, 1); csi2_configure()
590 csi2_irq_ctx_set(csi2, 1); csi2_configure()
591 csi2_irq_status_set(csi2, 1); csi2_configure()
594 csi2_timing_config(csi2, timing); csi2_configure()
595 csi2_recv_config(csi2, &csi2->ctrl); csi2_configure()
596 csi2_ctx_config(csi2, &csi2->contexts[0]); csi2_configure()
608 static void csi2_print_status(struct iss_csi2_device *csi2) csi2_print_status() argument
610 struct iss_device *iss = csi2->iss; csi2_print_status()
612 if (!csi2->available) csi2_print_status()
617 CSI2_PRINT_REGISTER(iss, csi2->regs1, SYSCONFIG); csi2_print_status()
618 CSI2_PRINT_REGISTER(iss, csi2->regs1, SYSSTATUS); csi2_print_status()
619 CSI2_PRINT_REGISTER(iss, csi2->regs1, IRQENABLE); csi2_print_status()
620 CSI2_PRINT_REGISTER(iss, csi2->regs1, IRQSTATUS); csi2_print_status()
621 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTRL); csi2_print_status()
622 CSI2_PRINT_REGISTER(iss, csi2->regs1, DBG_H); csi2_print_status()
623 CSI2_PRINT_REGISTER(iss, csi2->regs1, COMPLEXIO_CFG); csi2_print_status()
624 CSI2_PRINT_REGISTER(iss, csi2->regs1, COMPLEXIO_IRQSTATUS); csi2_print_status()
625 CSI2_PRINT_REGISTER(iss, csi2->regs1, SHORT_PACKET); csi2_print_status()
626 CSI2_PRINT_REGISTER(iss, csi2->regs1, COMPLEXIO_IRQENABLE); csi2_print_status()
627 CSI2_PRINT_REGISTER(iss, csi2->regs1, DBG_P); csi2_print_status()
628 CSI2_PRINT_REGISTER(iss, csi2->regs1, TIMING); csi2_print_status()
629 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTX_CTRL1(0)); csi2_print_status()
630 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTX_CTRL2(0)); csi2_print_status()
631 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTX_DAT_OFST(0)); csi2_print_status()
632 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTX_PING_ADDR(0)); csi2_print_status()
633 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTX_PONG_ADDR(0)); csi2_print_status()
634 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTX_IRQENABLE(0)); csi2_print_status()
635 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTX_IRQSTATUS(0)); csi2_print_status()
636 CSI2_PRINT_REGISTER(iss, csi2->regs1, CTX_CTRL3(0)); csi2_print_status()
649 static void csi2_isr_buffer(struct iss_csi2_device *csi2) csi2_isr_buffer() argument
653 csi2_ctx_enable(csi2, 0, 0); csi2_isr_buffer()
655 buffer = omap4iss_video_buffer_next(&csi2->video_out); csi2_isr_buffer()
664 csi2_set_outaddr(csi2, buffer->iss_addr); csi2_isr_buffer()
665 csi2_ctx_enable(csi2, 0, 1); csi2_isr_buffer()
668 static void csi2_isr_ctx(struct iss_csi2_device *csi2, csi2_isr_ctx() argument
674 status = iss_reg_read(csi2->iss, csi2->regs1, CSI2_CTX_IRQSTATUS(n)); csi2_isr_ctx()
675 iss_reg_write(csi2->iss, csi2->regs1, CSI2_CTX_IRQSTATUS(n), status); csi2_isr_ctx()
680 to_iss_pipeline(&csi2->subdev.entity); csi2_isr_ctx()
684 frame = iss_reg_read(csi2->iss, csi2->regs1, csi2_isr_ctx()
724 if (csi2->frame_skip) { csi2_isr_ctx()
725 csi2->frame_skip--; csi2_isr_ctx()
726 if (csi2->frame_skip == 0) { csi2_isr_ctx()
727 ctx->format_id = csi2_ctx_map_format(csi2); csi2_isr_ctx()
728 csi2_ctx_config(csi2, ctx); csi2_isr_ctx()
729 csi2_ctx_enable(csi2, n, 1); csi2_isr_ctx()
734 if (csi2->output & CSI2_OUTPUT_MEMORY) csi2_isr_ctx()
735 csi2_isr_buffer(csi2); csi2_isr_ctx()
741 void omap4iss_csi2_isr(struct iss_csi2_device *csi2) omap4iss_csi2_isr() argument
743 struct iss_pipeline *pipe = to_iss_pipeline(&csi2->subdev.entity); omap4iss_csi2_isr()
745 struct iss_device *iss = csi2->iss; omap4iss_csi2_isr()
747 if (!csi2->available) omap4iss_csi2_isr()
750 csi2_irqstatus = iss_reg_read(csi2->iss, csi2->regs1, CSI2_IRQSTATUS); omap4iss_csi2_isr()
751 iss_reg_write(csi2->iss, csi2->regs1, CSI2_IRQSTATUS, csi2_irqstatus); omap4iss_csi2_isr()
755 cpxio1_irqstatus = iss_reg_read(csi2->iss, csi2->regs1, omap4iss_csi2_isr()
757 iss_reg_write(csi2->iss, csi2->regs1, CSI2_COMPLEXIO_IRQSTATUS, omap4iss_csi2_isr()
779 if (omap4iss_module_sync_is_stopping(&csi2->wait, &csi2->stopping)) omap4iss_csi2_isr()
784 csi2_isr_ctx(csi2, &csi2->contexts[0]); omap4iss_csi2_isr()
801 struct iss_csi2_device *csi2 = container_of(video, csi2_queue() local
804 csi2_set_outaddr(csi2, buffer->iss_addr); csi2_queue()
812 if (csi2->video_out.dmaqueue_flags & ISS_VIDEO_DMAQUEUE_UNDERRUN) { csi2_queue()
814 csi2_if_enable(csi2, 1); csi2_queue()
815 csi2_ctx_enable(csi2, 0, 1); csi2_queue()
816 iss_video_dmaqueue_flags_clr(&csi2->video_out); csi2_queue()
831 __csi2_get_format(struct iss_csi2_device *csi2, struct v4l2_subdev_pad_config *cfg, __csi2_get_format() argument
835 return v4l2_subdev_get_try_format(&csi2->subdev, cfg, pad); __csi2_get_format()
837 return &csi2->formats[pad]; __csi2_get_format()
841 csi2_try_format(struct iss_csi2_device *csi2, struct v4l2_subdev_pad_config *cfg, csi2_try_format() argument
871 format = __csi2_get_format(csi2, cfg, CSI2_PAD_SINK, which); csi2_try_format()
900 struct iss_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_enum_mbus_code() local
910 format = __csi2_get_format(csi2, cfg, CSI2_PAD_SINK, csi2_enum_mbus_code()
937 struct iss_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_enum_frame_size() local
946 csi2_try_format(csi2, cfg, fse->pad, &format, fse->which); csi2_enum_frame_size()
956 csi2_try_format(csi2, cfg, fse->pad, &format, fse->which); csi2_enum_frame_size()
973 struct iss_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_get_format() local
976 format = __csi2_get_format(csi2, cfg, fmt->pad, fmt->which); csi2_get_format()
994 struct iss_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_set_format() local
997 format = __csi2_get_format(csi2, cfg, fmt->pad, fmt->which); csi2_set_format()
1001 csi2_try_format(csi2, cfg, fmt->pad, &fmt->format, fmt->which); csi2_set_format()
1006 format = __csi2_get_format(csi2, cfg, CSI2_PAD_SOURCE, csi2_set_format()
1009 csi2_try_format(csi2, cfg, CSI2_PAD_SOURCE, format, fmt->which); csi2_set_format()
1019 struct iss_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_link_validate() local
1020 struct iss_pipeline *pipe = to_iss_pipeline(&csi2->subdev.entity); csi2_link_validate()
1065 struct iss_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_set_stream() local
1066 struct iss_device *iss = csi2->iss; csi2_set_stream()
1067 struct iss_video *video_out = &csi2->video_out; csi2_set_stream()
1070 if (csi2->state == ISS_PIPELINE_STREAM_STOPPED) { csi2_set_stream()
1074 omap4iss_subclk_enable(iss, csi2->subclk); csi2_set_stream()
1083 if (omap4iss_csiphy_acquire(csi2->phy) < 0) csi2_set_stream()
1085 csi2_configure(csi2); csi2_set_stream()
1086 csi2_print_status(csi2); csi2_set_stream()
1094 if (csi2->output & CSI2_OUTPUT_MEMORY && csi2_set_stream()
1098 atomic_set(&csi2->stopping, 0); csi2_set_stream()
1099 csi2_ctx_enable(csi2, 0, 1); csi2_set_stream()
1100 csi2_if_enable(csi2, 1); csi2_set_stream()
1105 if (csi2->state == ISS_PIPELINE_STREAM_STOPPED) csi2_set_stream()
1107 if (omap4iss_module_sync_idle(&sd->entity, &csi2->wait, csi2_set_stream()
1108 &csi2->stopping)) csi2_set_stream()
1110 csi2_ctx_enable(csi2, 0, 0); csi2_set_stream()
1111 csi2_if_enable(csi2, 0); csi2_set_stream()
1112 csi2_irq_ctx_set(csi2, 0); csi2_set_stream()
1113 omap4iss_csiphy_release(csi2->phy); csi2_set_stream()
1114 omap4iss_subclk_disable(iss, csi2->subclk); csi2_set_stream()
1119 csi2->state = enable; csi2_set_stream()
1165 struct iss_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_link_setup() local
1166 struct iss_csi2_ctrl_cfg *ctrl = &csi2->ctrl; csi2_link_setup()
1176 if (csi2->output & ~CSI2_OUTPUT_MEMORY) csi2_link_setup()
1178 csi2->output |= CSI2_OUTPUT_MEMORY; csi2_link_setup()
1180 csi2->output &= ~CSI2_OUTPUT_MEMORY; csi2_link_setup()
1186 if (csi2->output & ~CSI2_OUTPUT_IPIPEIF) csi2_link_setup()
1188 csi2->output |= CSI2_OUTPUT_IPIPEIF; csi2_link_setup()
1190 csi2->output &= ~CSI2_OUTPUT_IPIPEIF; csi2_link_setup()
1199 ctrl->vp_only_enable = csi2->output & CSI2_OUTPUT_MEMORY ? false : true; csi2_link_setup()
1200 ctrl->vp_clk_enable = !!(csi2->output & CSI2_OUTPUT_IPIPEIF); csi2_link_setup()
1211 void omap4iss_csi2_unregister_entities(struct iss_csi2_device *csi2) omap4iss_csi2_unregister_entities() argument
1213 v4l2_device_unregister_subdev(&csi2->subdev); omap4iss_csi2_unregister_entities()
1214 omap4iss_video_unregister(&csi2->video_out); omap4iss_csi2_unregister_entities()
1217 int omap4iss_csi2_register_entities(struct iss_csi2_device *csi2, omap4iss_csi2_register_entities() argument
1223 ret = v4l2_device_register_subdev(vdev, &csi2->subdev); omap4iss_csi2_register_entities()
1227 ret = omap4iss_video_register(&csi2->video_out, vdev); omap4iss_csi2_register_entities()
1234 omap4iss_csi2_unregister_entities(csi2); omap4iss_csi2_register_entities()
1244 * @csi2: Pointer to csi2 structure.
1247 static int csi2_init_entities(struct iss_csi2_device *csi2, const char *subname) csi2_init_entities() argument
1249 struct v4l2_subdev *sd = &csi2->subdev; csi2_init_entities()
1250 struct media_pad *pads = csi2->pads; csi2_init_entities()
1261 v4l2_set_subdevdata(sd, csi2); csi2_init_entities()
1275 csi2->video_out.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; csi2_init_entities()
1276 csi2->video_out.ops = &csi2_issvideo_ops; csi2_init_entities()
1277 csi2->video_out.bpl_alignment = 32; csi2_init_entities()
1278 csi2->video_out.bpl_zero_padding = 1; csi2_init_entities()
1279 csi2->video_out.bpl_max = 0x1ffe0; csi2_init_entities()
1280 csi2->video_out.iss = csi2->iss; csi2_init_entities()
1281 csi2->video_out.capture_mem = PAGE_ALIGN(4096 * 4096) * 3; csi2_init_entities()
1283 ret = omap4iss_video_init(&csi2->video_out, name); csi2_init_entities()
1288 ret = media_entity_create_link(&csi2->subdev.entity, CSI2_PAD_SOURCE, csi2_init_entities()
1289 &csi2->video_out.video.entity, 0, 0); csi2_init_entities()
1296 omap4iss_video_cleanup(&csi2->video_out); csi2_init_entities()
1298 media_entity_cleanup(&csi2->subdev.entity); csi2_init_entities()
H A Diss_csiphy.c122 struct iss_csi2_device *csi2 = v4l2_get_subdevdata(csi2_subdev); omap4iss_csiphy_config() local
132 lanes = &subdevs->bus.csi2.lanecfg; omap4iss_csiphy_config()
175 csi2->phy->used_data_lanes = 0; omap4iss_csiphy_config()
178 for (i = 0; i < csi2->phy->max_data_lanes; i++) { omap4iss_csiphy_config()
183 lanes->data[i].pos > (csi2->phy->max_data_lanes + 1)) omap4iss_csiphy_config()
190 csi2->phy->used_data_lanes++; omap4iss_csiphy_config()
194 lanes->clk.pos > (csi2->phy->max_data_lanes + 1)) omap4iss_csiphy_config()
201 / (2 * csi2->phy->used_data_lanes) omap4iss_csiphy_config()
214 mutex_lock(&csi2->phy->mutex); omap4iss_csiphy_config()
215 csi2->phy->dphy = csi2phy; omap4iss_csiphy_config()
216 csi2->phy->lanes = *lanes; omap4iss_csiphy_config()
217 mutex_unlock(&csi2->phy->mutex); omap4iss_csiphy_config()
228 rval = omap4iss_csi2_reset(phy->csi2); omap4iss_csiphy_acquire()
265 phy1->csi2 = &iss->csi2a; omap4iss_csiphy_init()
273 phy2->csi2 = &iss->csi2b; omap4iss_csiphy_init()
H A Diss_csi2.h151 void omap4iss_csi2_isr(struct iss_csi2_device *csi2);
152 int omap4iss_csi2_reset(struct iss_csi2_device *csi2);
155 void omap4iss_csi2_unregister_entities(struct iss_csi2_device *csi2);
156 int omap4iss_csi2_register_entities(struct iss_csi2_device *csi2,
H A Diss_csiphy.h33 struct iss_csi2_device *csi2; member in struct:iss_csiphy
/linux-4.1.27/drivers/media/platform/omap3isp/
H A Dispcsi2.c31 struct isp_csi2_device *csi2, u8 enable) csi2_if_enable()
33 struct isp_csi2_ctrl_cfg *currctrl = &csi2->ctrl; csi2_if_enable()
35 isp_reg_clr_set(isp, csi2->regs1, ISPCSI2_CTRL, ISPCSI2_CTRL_IF_EN, csi2_if_enable()
47 struct isp_csi2_device *csi2, csi2_recv_config()
52 reg = isp_reg_readl(isp, csi2->regs1, ISPCSI2_CTRL); csi2_recv_config()
77 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_CTRL); csi2_recv_config()
164 * @csi2: ISP CSI2 device
168 static u16 csi2_ctx_map_format(struct isp_csi2_device *csi2) csi2_ctx_map_format() argument
170 const struct v4l2_mbus_framefmt *fmt = &csi2->formats[CSI2_PAD_SINK]; csi2_ctx_map_format()
195 if (!(csi2->output & CSI2_OUTPUT_CCDC) && csi2_ctx_map_format()
196 !(csi2->output & CSI2_OUTPUT_MEMORY)) { csi2_ctx_map_format()
204 destidx = csi2->frame_skip ? 0 : !!(csi2->output & CSI2_OUTPUT_CCDC); csi2_ctx_map_format()
205 is_3630 = csi2->isp->revision == ISP_REVISION_15_0; csi2_ctx_map_format()
207 return __csi2_fmt_map[fmtidx][destidx][csi2->dpcm_decompress][is_3630]; csi2_ctx_map_format()
212 * @csi2: Pointer to ISP CSI2a device.
220 static void csi2_set_outaddr(struct isp_csi2_device *csi2, u32 addr) csi2_set_outaddr() argument
222 struct isp_device *isp = csi2->isp; csi2_set_outaddr()
223 struct isp_csi2_ctx_cfg *ctx = &csi2->contexts[0]; csi2_set_outaddr()
228 csi2->regs1, ISPCSI2_CTX_DAT_PING_ADDR(ctx->ctxnum)); csi2_set_outaddr()
230 csi2->regs1, ISPCSI2_CTX_DAT_PONG_ADDR(ctx->ctxnum)); csi2_set_outaddr()
251 struct isp_csi2_device *csi2, u8 ctxnum, u8 enable) csi2_ctx_enable()
253 struct isp_csi2_ctx_cfg *ctx = &csi2->contexts[ctxnum]; csi2_ctx_enable()
257 reg = isp_reg_readl(isp, csi2->regs1, ISPCSI2_CTX_CTRL1(ctxnum)); csi2_ctx_enable()
260 if (csi2->frame_skip) csi2_ctx_enable()
261 skip = csi2->frame_skip; csi2_ctx_enable()
262 else if (csi2->output & CSI2_OUTPUT_MEMORY) csi2_ctx_enable()
273 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_CTX_CTRL1(ctxnum)); csi2_ctx_enable()
283 struct isp_csi2_device *csi2, csi2_ctx_config()
289 reg = isp_reg_readl(isp, csi2->regs1, ISPCSI2_CTX_CTRL1(ctx->ctxnum)); csi2_ctx_config()
306 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_CTX_CTRL1(ctx->ctxnum)); csi2_ctx_config()
309 reg = isp_reg_readl(isp, csi2->regs1, ISPCSI2_CTX_CTRL2(ctx->ctxnum)); csi2_ctx_config()
329 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_CTX_CTRL2(ctx->ctxnum)); csi2_ctx_config()
332 reg = isp_reg_readl(isp, csi2->regs1, ISPCSI2_CTX_CTRL3(ctx->ctxnum)); csi2_ctx_config()
336 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_CTX_CTRL3(ctx->ctxnum)); csi2_ctx_config()
339 reg = isp_reg_readl(isp, csi2->regs1, csi2_ctx_config()
343 isp_reg_writel(isp, reg, csi2->regs1, csi2_ctx_config()
347 csi2->regs1, ISPCSI2_CTX_DAT_PING_ADDR(ctx->ctxnum)); csi2_ctx_config()
350 csi2->regs1, ISPCSI2_CTX_DAT_PONG_ADDR(ctx->ctxnum)); csi2_ctx_config()
358 struct isp_csi2_device *csi2, csi2_timing_config()
363 reg = isp_reg_readl(isp, csi2->regs1, ISPCSI2_TIMING); csi2_timing_config()
384 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_TIMING); csi2_timing_config()
392 struct isp_csi2_device *csi2, int enable) csi2_irq_ctx_set()
397 isp_reg_writel(isp, ISPCSI2_CTX_IRQSTATUS_FE_IRQ, csi2->regs1, csi2_irq_ctx_set()
400 isp_reg_set(isp, csi2->regs1, ISPCSI2_CTX_IRQENABLE(i), csi2_irq_ctx_set()
403 isp_reg_clr(isp, csi2->regs1, ISPCSI2_CTX_IRQENABLE(i), csi2_irq_ctx_set()
413 struct isp_csi2_device *csi2, int enable) csi2_irq_complexio1_set()
443 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_PHY_IRQSTATUS); csi2_irq_complexio1_set()
445 reg |= isp_reg_readl(isp, csi2->regs1, ISPCSI2_PHY_IRQENABLE); csi2_irq_complexio1_set()
448 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_PHY_IRQENABLE); csi2_irq_complexio1_set()
456 struct isp_csi2_device *csi2, int enable) csi2_irq_status_set()
467 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_IRQSTATUS); csi2_irq_status_set()
469 reg |= isp_reg_readl(isp, csi2->regs1, ISPCSI2_IRQENABLE); csi2_irq_status_set()
473 isp_reg_writel(isp, reg, csi2->regs1, ISPCSI2_IRQENABLE); csi2_irq_status_set()
483 int omap3isp_csi2_reset(struct isp_csi2_device *csi2) omap3isp_csi2_reset() argument
485 struct isp_device *isp = csi2->isp; omap3isp_csi2_reset()
490 if (!csi2->available) omap3isp_csi2_reset()
493 if (csi2->phy->phy_in_use) omap3isp_csi2_reset()
496 isp_reg_set(isp, csi2->regs1, ISPCSI2_SYSCONFIG, omap3isp_csi2_reset()
500 reg = isp_reg_readl(isp, csi2->regs1, ISPCSI2_SYSSTATUS) & omap3isp_csi2_reset()
515 isp_reg_set(isp, csi2->regs1, ISPCSI2_PHY_CFG, omap3isp_csi2_reset()
520 reg = isp_reg_readl(isp, csi2->phy->phy_regs, ISPCSIPHY_REG1) omap3isp_csi2_reset()
534 isp_reg_clr_set(isp, csi2->regs1, ISPCSI2_SYSCONFIG, omap3isp_csi2_reset()
541 isp_reg_clr_set(isp, csi2->regs1, ISPCSI2_SYSCONFIG, omap3isp_csi2_reset()
549 static int csi2_configure(struct isp_csi2_device *csi2) csi2_configure() argument
551 struct isp_pipeline *pipe = to_isp_pipeline(&csi2->subdev.entity); csi2_configure()
553 struct isp_device *isp = csi2->isp; csi2_configure()
554 struct isp_csi2_timing_cfg *timing = &csi2->timing[0]; csi2_configure()
564 if (csi2->contexts[0].enabled || csi2->ctrl.if_enable) csi2_configure()
567 pad = media_entity_remote_pad(&csi2->pads[CSI2_PAD_SINK]); csi2_configure()
571 csi2->frame_skip = 0; csi2_configure()
572 v4l2_subdev_call(sensor, sensor, g_skip_frames, &csi2->frame_skip); csi2_configure()
574 csi2->ctrl.vp_out_ctrl = csi2_configure()
579 csi2->ctrl.vp_out_ctrl); csi2_configure()
580 csi2->ctrl.frame_mode = ISP_CSI2_FRAME_IMMEDIATE; csi2_configure()
581 csi2->ctrl.ecc_enable = buscfg->bus.csi2.crc; csi2_configure()
594 if (csi2->formats[CSI2_PAD_SINK].code != csi2_configure()
595 csi2->formats[CSI2_PAD_SOURCE].code) csi2_configure()
596 csi2->dpcm_decompress = true; csi2_configure()
598 csi2->dpcm_decompress = false; csi2_configure()
600 csi2->contexts[0].format_id = csi2_ctx_map_format(csi2); csi2_configure()
602 if (csi2->video_out.bpl_padding == 0) csi2_configure()
603 csi2->contexts[0].data_offset = 0; csi2_configure()
605 csi2->contexts[0].data_offset = csi2->video_out.bpl_value; csi2_configure()
614 csi2->contexts[0].eof_enabled = 1; csi2_configure()
615 csi2->contexts[0].eol_enabled = 1; csi2_configure()
617 csi2_irq_complexio1_set(isp, csi2, 1); csi2_configure()
618 csi2_irq_ctx_set(isp, csi2, 1); csi2_configure()
619 csi2_irq_status_set(isp, csi2, 1); csi2_configure()
622 csi2_timing_config(isp, csi2, timing); csi2_configure()
623 csi2_recv_config(isp, csi2, &csi2->ctrl); csi2_configure()
624 csi2_ctx_config(isp, csi2, &csi2->contexts[0]); csi2_configure()
636 static void csi2_print_status(struct isp_csi2_device *csi2) csi2_print_status() argument
638 struct isp_device *isp = csi2->isp; csi2_print_status()
640 if (!csi2->available) csi2_print_status()
645 CSI2_PRINT_REGISTER(isp, csi2->regs1, SYSCONFIG); csi2_print_status()
646 CSI2_PRINT_REGISTER(isp, csi2->regs1, SYSSTATUS); csi2_print_status()
647 CSI2_PRINT_REGISTER(isp, csi2->regs1, IRQENABLE); csi2_print_status()
648 CSI2_PRINT_REGISTER(isp, csi2->regs1, IRQSTATUS); csi2_print_status()
649 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTRL); csi2_print_status()
650 CSI2_PRINT_REGISTER(isp, csi2->regs1, DBG_H); csi2_print_status()
651 CSI2_PRINT_REGISTER(isp, csi2->regs1, GNQ); csi2_print_status()
652 CSI2_PRINT_REGISTER(isp, csi2->regs1, PHY_CFG); csi2_print_status()
653 CSI2_PRINT_REGISTER(isp, csi2->regs1, PHY_IRQSTATUS); csi2_print_status()
654 CSI2_PRINT_REGISTER(isp, csi2->regs1, SHORT_PACKET); csi2_print_status()
655 CSI2_PRINT_REGISTER(isp, csi2->regs1, PHY_IRQENABLE); csi2_print_status()
656 CSI2_PRINT_REGISTER(isp, csi2->regs1, DBG_P); csi2_print_status()
657 CSI2_PRINT_REGISTER(isp, csi2->regs1, TIMING); csi2_print_status()
658 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTX_CTRL1(0)); csi2_print_status()
659 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTX_CTRL2(0)); csi2_print_status()
660 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTX_DAT_OFST(0)); csi2_print_status()
661 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTX_DAT_PING_ADDR(0)); csi2_print_status()
662 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTX_DAT_PONG_ADDR(0)); csi2_print_status()
663 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTX_IRQENABLE(0)); csi2_print_status()
664 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTX_IRQSTATUS(0)); csi2_print_status()
665 CSI2_PRINT_REGISTER(isp, csi2->regs1, CTX_CTRL3(0)); csi2_print_status()
678 static void csi2_isr_buffer(struct isp_csi2_device *csi2) csi2_isr_buffer() argument
680 struct isp_device *isp = csi2->isp; csi2_isr_buffer()
683 csi2_ctx_enable(isp, csi2, 0, 0); csi2_isr_buffer()
685 buffer = omap3isp_video_buffer_next(&csi2->video_out); csi2_isr_buffer()
694 csi2_set_outaddr(csi2, buffer->dma); csi2_isr_buffer()
695 csi2_ctx_enable(isp, csi2, 0, 1); csi2_isr_buffer()
698 static void csi2_isr_ctx(struct isp_csi2_device *csi2, csi2_isr_ctx() argument
701 struct isp_device *isp = csi2->isp; csi2_isr_ctx()
705 status = isp_reg_readl(isp, csi2->regs1, ISPCSI2_CTX_IRQSTATUS(n)); csi2_isr_ctx()
706 isp_reg_writel(isp, status, csi2->regs1, ISPCSI2_CTX_IRQSTATUS(n)); csi2_isr_ctx()
721 if (csi2->frame_skip) { csi2_isr_ctx()
722 csi2->frame_skip--; csi2_isr_ctx()
723 if (csi2->frame_skip == 0) { csi2_isr_ctx()
724 ctx->format_id = csi2_ctx_map_format(csi2); csi2_isr_ctx()
725 csi2_ctx_config(isp, csi2, ctx); csi2_isr_ctx()
726 csi2_ctx_enable(isp, csi2, n, 1); csi2_isr_ctx()
731 if (csi2->output & CSI2_OUTPUT_MEMORY) csi2_isr_ctx()
732 csi2_isr_buffer(csi2); csi2_isr_ctx()
738 void omap3isp_csi2_isr(struct isp_csi2_device *csi2) omap3isp_csi2_isr() argument
740 struct isp_pipeline *pipe = to_isp_pipeline(&csi2->subdev.entity); omap3isp_csi2_isr()
742 struct isp_device *isp = csi2->isp; omap3isp_csi2_isr()
744 if (!csi2->available) omap3isp_csi2_isr()
747 csi2_irqstatus = isp_reg_readl(isp, csi2->regs1, ISPCSI2_IRQSTATUS); omap3isp_csi2_isr()
748 isp_reg_writel(isp, csi2_irqstatus, csi2->regs1, ISPCSI2_IRQSTATUS); omap3isp_csi2_isr()
752 cpxio1_irqstatus = isp_reg_readl(isp, csi2->regs1, omap3isp_csi2_isr()
755 csi2->regs1, ISPCSI2_PHY_IRQSTATUS); omap3isp_csi2_isr()
786 if (omap3isp_module_sync_is_stopping(&csi2->wait, &csi2->stopping)) omap3isp_csi2_isr()
791 csi2_isr_ctx(csi2, &csi2->contexts[0]); omap3isp_csi2_isr()
809 struct isp_csi2_device *csi2 = &isp->isp_csi2a; csi2_queue() local
811 csi2_set_outaddr(csi2, buffer->dma); csi2_queue()
819 if (csi2->video_out.dmaqueue_flags & ISP_VIDEO_DMAQUEUE_UNDERRUN) { csi2_queue()
821 csi2_if_enable(isp, csi2, 1); csi2_queue()
822 csi2_ctx_enable(isp, csi2, 0, 1); csi2_queue()
823 isp_video_dmaqueue_flags_clr(&csi2->video_out); csi2_queue()
838 __csi2_get_format(struct isp_csi2_device *csi2, struct v4l2_subdev_pad_config *cfg, __csi2_get_format() argument
842 return v4l2_subdev_get_try_format(&csi2->subdev, cfg, pad); __csi2_get_format()
844 return &csi2->formats[pad]; __csi2_get_format()
848 csi2_try_format(struct isp_csi2_device *csi2, struct v4l2_subdev_pad_config *cfg, csi2_try_format() argument
878 format = __csi2_get_format(csi2, cfg, CSI2_PAD_SINK, which); csi2_try_format()
907 struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_enum_mbus_code() local
917 format = __csi2_get_format(csi2, cfg, CSI2_PAD_SINK, csi2_enum_mbus_code()
944 struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_enum_frame_size() local
953 csi2_try_format(csi2, cfg, fse->pad, &format, fse->which); csi2_enum_frame_size()
963 csi2_try_format(csi2, cfg, fse->pad, &format, fse->which); csi2_enum_frame_size()
980 struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_get_format() local
983 format = __csi2_get_format(csi2, cfg, fmt->pad, fmt->which); csi2_get_format()
1001 struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_set_format() local
1004 format = __csi2_get_format(csi2, cfg, fmt->pad, fmt->which); csi2_set_format()
1008 csi2_try_format(csi2, cfg, fmt->pad, &fmt->format, fmt->which); csi2_set_format()
1013 format = __csi2_get_format(csi2, cfg, CSI2_PAD_SOURCE, csi2_set_format()
1016 csi2_try_format(csi2, cfg, CSI2_PAD_SOURCE, format, fmt->which); csi2_set_format()
1055 struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_set_stream() local
1056 struct isp_device *isp = csi2->isp; csi2_set_stream()
1057 struct isp_video *video_out = &csi2->video_out; csi2_set_stream()
1061 if (omap3isp_csiphy_acquire(csi2->phy) < 0) csi2_set_stream()
1063 if (csi2->output & CSI2_OUTPUT_MEMORY) csi2_set_stream()
1065 csi2_configure(csi2); csi2_set_stream()
1066 csi2_print_status(csi2); csi2_set_stream()
1074 if (csi2->output & CSI2_OUTPUT_MEMORY && csi2_set_stream()
1078 atomic_set(&csi2->stopping, 0); csi2_set_stream()
1079 csi2_ctx_enable(isp, csi2, 0, 1); csi2_set_stream()
1080 csi2_if_enable(isp, csi2, 1); csi2_set_stream()
1085 if (csi2->state == ISP_PIPELINE_STREAM_STOPPED) csi2_set_stream()
1087 if (omap3isp_module_sync_idle(&sd->entity, &csi2->wait, csi2_set_stream()
1088 &csi2->stopping)) csi2_set_stream()
1091 csi2_ctx_enable(isp, csi2, 0, 0); csi2_set_stream()
1092 csi2_if_enable(isp, csi2, 0); csi2_set_stream()
1093 csi2_irq_ctx_set(isp, csi2, 0); csi2_set_stream()
1094 omap3isp_csiphy_release(csi2->phy); csi2_set_stream()
1100 csi2->state = enable; csi2_set_stream()
1145 struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd); csi2_link_setup() local
1146 struct isp_csi2_ctrl_cfg *ctrl = &csi2->ctrl; csi2_link_setup()
1156 if (csi2->output & ~CSI2_OUTPUT_MEMORY) csi2_link_setup()
1158 csi2->output |= CSI2_OUTPUT_MEMORY; csi2_link_setup()
1160 csi2->output &= ~CSI2_OUTPUT_MEMORY; csi2_link_setup()
1166 if (csi2->output & ~CSI2_OUTPUT_CCDC) csi2_link_setup()
1168 csi2->output |= CSI2_OUTPUT_CCDC; csi2_link_setup()
1170 csi2->output &= ~CSI2_OUTPUT_CCDC; csi2_link_setup()
1180 (csi2->output & CSI2_OUTPUT_MEMORY) ? false : true; csi2_link_setup()
1181 ctrl->vp_clk_enable = !!(csi2->output & CSI2_OUTPUT_CCDC); csi2_link_setup()
1192 void omap3isp_csi2_unregister_entities(struct isp_csi2_device *csi2) omap3isp_csi2_unregister_entities() argument
1194 v4l2_device_unregister_subdev(&csi2->subdev); omap3isp_csi2_unregister_entities()
1195 omap3isp_video_unregister(&csi2->video_out); omap3isp_csi2_unregister_entities()
1198 int omap3isp_csi2_register_entities(struct isp_csi2_device *csi2, omap3isp_csi2_register_entities() argument
1204 ret = v4l2_device_register_subdev(vdev, &csi2->subdev); omap3isp_csi2_register_entities()
1208 ret = omap3isp_video_register(&csi2->video_out, vdev); omap3isp_csi2_register_entities()
1215 omap3isp_csi2_unregister_entities(csi2); omap3isp_csi2_register_entities()
1225 * @csi2: Pointer to csi2 structure.
1228 static int csi2_init_entities(struct isp_csi2_device *csi2) csi2_init_entities() argument
1230 struct v4l2_subdev *sd = &csi2->subdev; csi2_init_entities()
1231 struct media_pad *pads = csi2->pads; csi2_init_entities()
1240 v4l2_set_subdevdata(sd, csi2); csi2_init_entities()
1255 csi2->video_out.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; csi2_init_entities()
1256 csi2->video_out.ops = &csi2_ispvideo_ops; csi2_init_entities()
1257 csi2->video_out.bpl_alignment = 32; csi2_init_entities()
1258 csi2->video_out.bpl_zero_padding = 1; csi2_init_entities()
1259 csi2->video_out.bpl_max = 0x1ffe0; csi2_init_entities()
1260 csi2->video_out.isp = csi2->isp; csi2_init_entities()
1261 csi2->video_out.capture_mem = PAGE_ALIGN(4096 * 4096) * 3; csi2_init_entities()
1263 ret = omap3isp_video_init(&csi2->video_out, "CSI2a"); csi2_init_entities()
1268 ret = media_entity_create_link(&csi2->subdev.entity, CSI2_PAD_SOURCE, csi2_init_entities()
1269 &csi2->video_out.video.entity, 0, 0); csi2_init_entities()
1276 omap3isp_video_cleanup(&csi2->video_out); csi2_init_entities()
1278 media_entity_cleanup(&csi2->subdev.entity); csi2_init_entities()
30 csi2_if_enable(struct isp_device *isp, struct isp_csi2_device *csi2, u8 enable) csi2_if_enable() argument
46 csi2_recv_config(struct isp_device *isp, struct isp_csi2_device *csi2, struct isp_csi2_ctrl_cfg *currctrl) csi2_recv_config() argument
250 csi2_ctx_enable(struct isp_device *isp, struct isp_csi2_device *csi2, u8 ctxnum, u8 enable) csi2_ctx_enable() argument
282 csi2_ctx_config(struct isp_device *isp, struct isp_csi2_device *csi2, struct isp_csi2_ctx_cfg *ctx) csi2_ctx_config() argument
357 csi2_timing_config(struct isp_device *isp, struct isp_csi2_device *csi2, struct isp_csi2_timing_cfg *timing) csi2_timing_config() argument
391 csi2_irq_ctx_set(struct isp_device *isp, struct isp_csi2_device *csi2, int enable) csi2_irq_ctx_set() argument
412 csi2_irq_complexio1_set(struct isp_device *isp, struct isp_csi2_device *csi2, int enable) csi2_irq_complexio1_set() argument
455 csi2_irq_status_set(struct isp_device *isp, struct isp_csi2_device *csi2, int enable) csi2_irq_status_set() argument
H A Dispcsiphy.c167 struct isp_csi2_device *csi2 = phy->csi2; omap3isp_csiphy_config() local
168 struct isp_pipeline *pipe = to_isp_pipeline(&csi2->subdev.entity); omap3isp_csiphy_config()
187 lanes = &buscfg->bus.csi2.lanecfg; omap3isp_csiphy_config()
219 reg = isp_reg_readl(csi2->isp, phy->phy_regs, ISPCSIPHY_REG0); omap3isp_csiphy_config()
230 isp_reg_writel(csi2->isp, reg, phy->phy_regs, ISPCSIPHY_REG0); omap3isp_csiphy_config()
232 reg = isp_reg_readl(csi2->isp, phy->phy_regs, ISPCSIPHY_REG1); omap3isp_csiphy_config()
241 isp_reg_writel(csi2->isp, reg, phy->phy_regs, ISPCSIPHY_REG1); omap3isp_csiphy_config()
244 reg = isp_reg_readl(csi2->isp, phy->cfg_regs, ISPCSI2_PHY_CFG); omap3isp_csiphy_config()
260 isp_reg_writel(csi2->isp, reg, phy->cfg_regs, ISPCSI2_PHY_CFG); omap3isp_csiphy_config()
281 rval = omap3isp_csi2_reset(phy->csi2); omap3isp_csiphy_acquire()
307 struct isp_csi2_device *csi2 = phy->csi2; omap3isp_csiphy_release() local
309 to_isp_pipeline(&csi2->subdev.entity); omap3isp_csiphy_release()
331 phy2->csi2 = &isp->isp_csi2a; omap3isp_csiphy_init()
339 phy1->csi2 = &isp->isp_csi2c; omap3isp_csiphy_init()
H A Dispcsi2.h148 void omap3isp_csi2_isr(struct isp_csi2_device *csi2);
149 int omap3isp_csi2_reset(struct isp_csi2_device *csi2);
152 void omap3isp_csi2_unregister_entities(struct isp_csi2_device *csi2);
153 int omap3isp_csi2_register_entities(struct isp_csi2_device *csi2,
H A Dispcsiphy.h29 struct isp_csi2_device *csi2; member in struct:isp_csiphy
H A Disp.c2280 buscfg->bus.csi2.lanecfg.clk.pos = vep.bus.mipi_csi2.clock_lane; isp_of_parse_node()
2281 buscfg->bus.csi2.lanecfg.clk.pol = isp_of_parse_node()
2284 buscfg->bus.csi2.lanecfg.clk.pol, isp_of_parse_node()
2285 buscfg->bus.csi2.lanecfg.clk.pos); isp_of_parse_node()
2288 buscfg->bus.csi2.lanecfg.data[i].pos = isp_of_parse_node()
2290 buscfg->bus.csi2.lanecfg.data[i].pol = isp_of_parse_node()
2293 buscfg->bus.csi2.lanecfg.data[i].pol, isp_of_parse_node()
2294 buscfg->bus.csi2.lanecfg.data[i].pos); isp_of_parse_node()
2302 buscfg->bus.csi2.crc = 1; isp_of_parse_node()
/linux-4.1.27/include/media/
H A Dsh_mobile_ceu.h24 struct sh_mobile_ceu_companion *csi2; member in struct:sh_mobile_ceu_info
H A Domap4iss.h56 struct iss_csi2_platform_data csi2; member in union:iss_v4l2_subdevs_group::__anon12573
H A Domap3isp.h143 struct isp_csi2_cfg csi2; member in union:isp_bus_cfg::__anon12572
/linux-4.1.27/drivers/media/i2c/
H A Dsmiapp-pll.h43 } csi2; member in union:smiapp_pll::__anon5605
H A Dsmiapp-pll.c418 lane_op_clock_ratio = pll->csi2.lanes; smiapp_pll_calculate()
430 * (pll->csi2.lanes / lane_op_clock_ratio); smiapp_pll_calculate()
/linux-4.1.27/drivers/media/platform/soc_camera/
H A Dsh_mobile_csi2.c392 .name = "sh-mobile-csi2",
401 MODULE_ALIAS("platform:sh-mobile-csi2");
H A Dsh_mobile_ceu_camera.c547 char name[] = "sh-mobile-csi2"; find_csi2()
1732 struct sh_mobile_ceu_companion *csi2; sh_mobile_ceu_probe() local
1833 char name[] = "sh-mobile-csi2"; sh_mobile_ceu_probe()
1861 csi2 = pcdev->pdata ? pcdev->pdata->csi2 : NULL; sh_mobile_ceu_probe()
1862 if (csi2) { sh_mobile_ceu_probe()
1865 * asynchronous CSI2 probing. If it has to be kept, csi2 sh_mobile_ceu_probe()
1870 platform_device_alloc("sh-mobile-csi2", csi2->id); sh_mobile_ceu_probe()
1871 struct sh_csi2_pdata *csi2_pdata = csi2->platform_data; sh_mobile_ceu_probe()
1885 csi2_pdev->resource = csi2->resource; sh_mobile_ceu_probe()
1886 csi2_pdev->num_resources = csi2->num_resources; sh_mobile_ceu_probe()
1934 if (csi2) { sh_mobile_ceu_probe()
1950 if (csi2) { sh_mobile_ceu_probe()
/linux-4.1.27/arch/arm/mach-shmobile/
H A Dclock-sh73a0.c631 CLKDEV_DEV_ID("sh-mobile-csi2.1", &mstp_clks[MSTP128]), /* CSI2-RX1 */
633 CLKDEV_DEV_ID("sh-mobile-csi2.0", &mstp_clks[MSTP126]), /* CSI2-RX0 */
/linux-4.1.27/drivers/clk/qcom/
H A Dmmcc-msm8960.c517 * output and csi2. The source and destination selections for each pix_rdi_set_parent()
/linux-4.1.27/drivers/media/i2c/smiapp/
H A Dsmiapp-core.c2698 pll->csi2.lanes = sensor->platform_data->lanes; smiapp_init()

Completed in 436 milliseconds