/linux-4.1.27/drivers/staging/media/omap4iss/ |
H A D | iss_csi2.c | 28 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 D | iss_csiphy.c | 122 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 D | iss_csi2.h | 151 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 D | iss_csiphy.h | 33 struct iss_csi2_device *csi2; member in struct:iss_csiphy
|
/linux-4.1.27/drivers/media/platform/omap3isp/ |
H A D | ispcsi2.c | 31 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 D | ispcsiphy.c | 167 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 D | ispcsi2.h | 148 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 D | ispcsiphy.h | 29 struct isp_csi2_device *csi2; member in struct:isp_csiphy
|
H A D | isp.c | 2280 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 D | sh_mobile_ceu.h | 24 struct sh_mobile_ceu_companion *csi2; member in struct:sh_mobile_ceu_info
|
H A D | omap4iss.h | 56 struct iss_csi2_platform_data csi2; member in union:iss_v4l2_subdevs_group::__anon12573
|
H A D | omap3isp.h | 143 struct isp_csi2_cfg csi2; member in union:isp_bus_cfg::__anon12572
|
/linux-4.1.27/drivers/media/i2c/ |
H A D | smiapp-pll.h | 43 } csi2; member in union:smiapp_pll::__anon5605
|
H A D | smiapp-pll.c | 418 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 D | sh_mobile_csi2.c | 392 .name = "sh-mobile-csi2", 401 MODULE_ALIAS("platform:sh-mobile-csi2");
|
H A D | sh_mobile_ceu_camera.c | 547 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 D | clock-sh73a0.c | 631 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 D | mmcc-msm8960.c | 517 * output and csi2. The source and destination selections for each pix_rdi_set_parent()
|
/linux-4.1.27/drivers/media/i2c/smiapp/ |
H A D | smiapp-core.c | 2698 pll->csi2.lanes = sensor->platform_data->lanes; smiapp_init()
|